summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.mk7
-rw-r--r--AndroidManifest.xml53
-rw-r--r--proguard.flags4
-rw-r--r--res/drawable-hdpi/ic_call_incoming_holo_dark.pngbin0 -> 574 bytes
-rw-r--r--res/drawable-hdpi/ic_call_missed_holo_dark.pngbin0 -> 569 bytes
-rw-r--r--res/drawable-hdpi/ic_call_outgoing_holo_dark.pngbin0 -> 585 bytes
-rw-r--r--res/drawable-mdpi/ic_call_incoming_holo_dark.pngbin0 -> 458 bytes
-rw-r--r--res/drawable-mdpi/ic_call_missed_holo_dark.pngbin0 -> 456 bytes
-rw-r--r--res/drawable-mdpi/ic_call_outgoing_holo_dark.pngbin0 -> 446 bytes
-rw-r--r--res/drawable-xhdpi/ic_call_incoming_holo_dark.pngbin0 -> 662 bytes
-rw-r--r--res/drawable-xhdpi/ic_call_missed_holo_dark.pngbin0 -> 657 bytes
-rw-r--r--res/drawable-xhdpi/ic_call_outgoing_holo_dark.pngbin0 -> 701 bytes
-rw-r--r--res/drawable-xxhdpi/ic_call_incoming_holo_dark.pngbin0 -> 1272 bytes
-rw-r--r--res/drawable-xxhdpi/ic_call_missed_holo_dark.pngbin0 -> 1272 bytes
-rw-r--r--res/drawable-xxhdpi/ic_call_outgoing_holo_dark.pngbin0 -> 1295 bytes
-rw-r--r--res/layout-land/group_editor_view.xml23
-rw-r--r--res/layout-land/quickcontact_title.xml59
-rw-r--r--res/layout-sw600dp/group_editor_view.xml21
-rw-r--r--res/layout/contact_memory_list.xml72
-rwxr-xr-x[-rw-r--r--]res/layout/editor_account_selector.xml2
-rw-r--r--res/layout/group_account_header_horizontal.xml4
-rw-r--r--res/layout/group_account_header_vertical.xml4
-rw-r--r--res/layout/group_browse_list_fragment.xml7
-rw-r--r--res/layout/group_browse_list_item.xml6
-rw-r--r--res/layout/group_editor_autocomplete_view.xml3
-rw-r--r--res/layout/group_editor_view.xml21
-rw-r--r--res/layout/memory_account_list_item.xml129
-rw-r--r--res/layout/pick_calls_item.xml120
-rw-r--r--res/layout/pick_contact_item.xml44
-rw-r--r--res/layout/quickcontact_title.xml45
-rw-r--r--res/menu/multi_contact_picker_options.xml25
-rw-r--r--res/menu/people_options.xml8
-rw-r--r--res/menu/quickcontact.xml20
-rw-r--r--res/menu/view_group.xml4
-rw-r--r--res/values-af/cm_plurals.xml39
-rw-r--r--res/values-af/cm_strings.xml66
-rw-r--r--res/values-am/cm_strings.xml27
-rw-r--r--res/values-ar/cm_plurals.xml59
-rw-r--r--res/values-ar/cm_strings.xml67
-rw-r--r--res/values-as-rIN/cm_strings.xml27
-rw-r--r--res/values-ast-rES/cm_plurals.xml39
-rw-r--r--res/values-ast-rES/cm_strings.xml66
-rw-r--r--res/values-ast-rES/strings.xml502
-rw-r--r--res/values-az-rAZ/cm_plurals.xml39
-rw-r--r--res/values-az-rAZ/cm_strings.xml66
-rw-r--r--res/values-be/cm_plurals.xml44
-rw-r--r--res/values-be/cm_strings.xml66
-rw-r--r--res/values-be/strings.xml301
-rw-r--r--res/values-bg/cm_plurals.xml39
-rw-r--r--res/values-bg/cm_strings.xml66
-rw-r--r--res/values-bn-rBD/cm_plurals.xml39
-rw-r--r--res/values-bn-rBD/cm_strings.xml29
-rw-r--r--res/values-br-rFR/cm_strings.xml27
-rw-r--r--res/values-br-rFR/strings.xml301
-rw-r--r--res/values-ca/cm_plurals.xml39
-rw-r--r--res/values-ca/cm_strings.xml66
-rw-r--r--res/values-cs/cm_plurals.xml44
-rw-r--r--res/values-cs/cm_strings.xml66
-rw-r--r--res/values-cy/cm_strings.xml27
-rw-r--r--res/values-cy/strings.xml301
-rw-r--r--res/values-da/cm_plurals.xml39
-rw-r--r--res/values-da/cm_strings.xml66
-rw-r--r--res/values-de/cm_plurals.xml39
-rw-r--r--res/values-de/cm_strings.xml66
-rw-r--r--res/values-el/cm_plurals.xml39
-rw-r--r--res/values-el/cm_strings.xml66
-rw-r--r--res/values-en-rAU/cm_plurals.xml35
-rw-r--r--res/values-en-rAU/cm_strings.xml65
-rw-r--r--res/values-en-rGB/cm_strings.xml27
-rw-r--r--res/values-en-rIN/cm_plurals.xml39
-rw-r--r--res/values-en-rIN/cm_strings.xml66
-rw-r--r--res/values-en-rPT/cm_strings.xml27
-rw-r--r--res/values-en-rPT/strings.xml301
-rw-r--r--res/values-eo/cm_plurals.xml35
-rw-r--r--res/values-eo/cm_strings.xml65
-rw-r--r--res/values-eo/strings.xml301
-rw-r--r--res/values-es-rMX/cm_strings.xml27
-rw-r--r--res/values-es-rMX/strings.xml301
-rw-r--r--res/values-es-rUS/cm_strings.xml32
-rw-r--r--res/values-es/cm_plurals.xml39
-rw-r--r--res/values-es/cm_strings.xml66
-rw-r--r--res/values-et-rEE/cm_plurals.xml35
-rw-r--r--res/values-et-rEE/cm_strings.xml66
-rw-r--r--res/values-eu-rES/cm_plurals.xml39
-rw-r--r--res/values-eu-rES/cm_strings.xml66
-rw-r--r--res/values-fa/cm_plurals.xml34
-rw-r--r--res/values-fa/cm_strings.xml66
-rw-r--r--res/values-fi/cm_plurals.xml39
-rw-r--r--res/values-fi/cm_strings.xml66
-rw-r--r--res/values-fil-rPH/cm_strings.xml27
-rw-r--r--res/values-fr-rCA/cm_strings.xml27
-rw-r--r--res/values-fr/cm_plurals.xml39
-rw-r--r--res/values-fr/cm_strings.xml66
-rw-r--r--res/values-fy-rNL/cm_strings.xml27
-rw-r--r--res/values-fy-rNL/strings.xml301
-rw-r--r--res/values-gd-rGB/cm_strings.xml27
-rw-r--r--res/values-gd-rGB/strings.xml301
-rw-r--r--res/values-gl-rES/cm_plurals.xml39
-rw-r--r--res/values-gl-rES/cm_strings.xml66
-rw-r--r--res/values-gu-rIN/cm_strings.xml27
-rw-r--r--res/values-hi/cm_plurals.xml35
-rw-r--r--res/values-hi/cm_strings.xml65
-rw-r--r--res/values-hr/cm_plurals.xml44
-rw-r--r--res/values-hr/cm_strings.xml66
-rw-r--r--res/values-hu/cm_plurals.xml39
-rw-r--r--res/values-hu/cm_strings.xml66
-rw-r--r--res/values-hy-rAM/cm_strings.xml27
-rw-r--r--res/values-in/cm_plurals.xml31
-rw-r--r--res/values-in/cm_strings.xml65
-rw-r--r--res/values-is-rIS/cm_strings.xml27
-rw-r--r--res/values-it/cm_plurals.xml39
-rw-r--r--res/values-it/cm_strings.xml66
-rw-r--r--res/values-iw/cm_plurals.xml39
-rw-r--r--res/values-iw/cm_strings.xml66
-rw-r--r--res/values-ja/cm_plurals.xml34
-rw-r--r--res/values-ja/cm_strings.xml66
-rw-r--r--res/values-ka-rGE/cm_strings.xml27
-rw-r--r--res/values-kk-rKZ/cm_strings.xml27
-rw-r--r--res/values-km-rKH/cm_strings.xml27
-rw-r--r--res/values-kn-rIN/cm_plurals.xml39
-rw-r--r--res/values-kn-rIN/cm_strings.xml66
-rw-r--r--res/values-ko/cm_plurals.xml34
-rw-r--r--res/values-ko/cm_strings.xml66
-rw-r--r--res/values-ku/cm_strings.xml65
-rw-r--r--res/values-ku/strings.xml465
-rw-r--r--res/values-ky-rKG/cm_strings.xml27
-rw-r--r--res/values-lb/cm_plurals.xml39
-rw-r--r--res/values-lb/cm_strings.xml66
-rw-r--r--res/values-lb/strings.xml520
-rw-r--r--res/values-lo-rLA/cm_strings.xml27
-rw-r--r--res/values-lt/cm_plurals.xml44
-rw-r--r--res/values-lt/cm_strings.xml66
-rw-r--r--res/values-lv/cm_strings.xml65
-rw-r--r--res/values-mk-rMK/cm_strings.xml27
-rw-r--r--res/values-ml-rIN/cm_strings.xml27
-rw-r--r--res/values-mn-rMN/cm_strings.xml27
-rw-r--r--res/values-mr-rIN/cm_strings.xml27
-rw-r--r--res/values-ms-rMY/cm_strings.xml27
-rw-r--r--res/values-my-rMM/cm_strings.xml27
-rw-r--r--res/values-nb/cm_plurals.xml39
-rw-r--r--res/values-nb/cm_strings.xml66
-rw-r--r--res/values-ne-rNP/cm_strings.xml27
-rw-r--r--res/values-nl/cm_plurals.xml39
-rw-r--r--res/values-nl/cm_strings.xml66
-rw-r--r--res/values-oc-rFR/cm_strings.xml27
-rw-r--r--res/values-oc-rFR/strings.xml301
-rw-r--r--res/values-or-rIN/cm_strings.xml27
-rw-r--r--res/values-pa-rIN/cm_strings.xml27
-rw-r--r--res/values-pl/cm_plurals.xml34
-rw-r--r--res/values-pl/cm_strings.xml66
-rw-r--r--res/values-pt-rBR/cm_plurals.xml39
-rw-r--r--res/values-pt-rBR/cm_strings.xml66
-rw-r--r--res/values-pt-rPT/cm_plurals.xml39
-rw-r--r--res/values-pt-rPT/cm_strings.xml66
-rw-r--r--res/values-rm/cm_strings.xml27
-rw-r--r--res/values-ro/cm_plurals.xml44
-rw-r--r--res/values-ro/cm_strings.xml65
-rw-r--r--res/values-ru/cm_plurals.xml44
-rw-r--r--res/values-ru/cm_strings.xml66
-rw-r--r--res/values-si-rLK/cm_strings.xml50
-rw-r--r--res/values-sk/cm_plurals.xml44
-rw-r--r--res/values-sk/cm_strings.xml66
-rw-r--r--res/values-sl/cm_plurals.xml49
-rw-r--r--res/values-sl/cm_strings.xml66
-rw-r--r--res/values-sq-rAL/cm_strings.xml27
-rw-r--r--res/values-sr/cm_plurals.xml44
-rw-r--r--res/values-sr/cm_strings.xml66
-rw-r--r--res/values-sv/cm_plurals.xml39
-rw-r--r--res/values-sv/cm_strings.xml66
-rw-r--r--res/values-sw/cm_strings.xml27
-rw-r--r--res/values-ta-rIN/cm_strings.xml27
-rw-r--r--res/values-te-rIN/cm_strings.xml27
-rw-r--r--res/values-th/cm_plurals.xml34
-rw-r--r--res/values-th/cm_strings.xml66
-rw-r--r--res/values-tr/cm_plurals.xml39
-rw-r--r--res/values-tr/cm_strings.xml66
-rw-r--r--res/values-ug/cm_plurals.xml31
-rw-r--r--res/values-ug/cm_strings.xml65
-rw-r--r--res/values-ug/strings.xml456
-rw-r--r--res/values-uk/cm_plurals.xml39
-rw-r--r--res/values-uk/cm_strings.xml66
-rw-r--r--res/values-ur-rPK/cm_strings.xml27
-rw-r--r--res/values-uz-rUZ/cm_strings.xml27
-rw-r--r--res/values-vi/cm_plurals.xml25
-rw-r--r--res/values-vi/cm_strings.xml66
-rw-r--r--res/values-zh-rCN/cm_plurals.xml34
-rw-r--r--res/values-zh-rCN/cm_strings.xml66
-rw-r--r--res/values-zh-rHK/cm_plurals.xml25
-rw-r--r--res/values-zh-rHK/cm_strings.xml62
-rw-r--r--res/values-zh-rTW/cm_plurals.xml31
-rw-r--r--res/values-zh-rTW/cm_strings.xml65
-rw-r--r--res/values-zu/cm_strings.xml27
-rw-r--r--res/values/cm_colors.xml19
-rw-r--r--res/values/cm_plurals.xml41
-rw-r--r--res/values/cm_strings.xml76
-rw-r--r--res/values/colors.xml4
-rw-r--r--res/values/ids.xml4
-rw-r--r--res/values/styles.xml20
-rw-r--r--src/com/android/contacts/ContactSaveService.java246
-rw-r--r--src/com/android/contacts/GroupListLoader.java4
-rw-r--r--src/com/android/contacts/GroupMetaDataLoader.java4
-rw-r--r--src/com/android/contacts/activities/ActionBarAdapter.java3
-rw-r--r--src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java33
-rw-r--r--src/com/android/contacts/activities/ContactEditorBaseActivity.java5
-rw-r--r--src/com/android/contacts/activities/MemoryStatusActivity.java285
-rw-r--r--src/com/android/contacts/activities/MultiPickContactActivity.java1965
-rw-r--r--src/com/android/contacts/activities/PeopleActivity.java298
-rw-r--r--src/com/android/contacts/editor/CompactPhotoEditorView.java5
-rwxr-xr-x[-rw-r--r--]src/com/android/contacts/editor/CompactRawContactsEditorView.java61
-rw-r--r--src/com/android/contacts/editor/ContactEditorBaseFragment.java96
-rw-r--r--src/com/android/contacts/editor/ContactEditorFragment.java2
-rw-r--r--src/com/android/contacts/editor/ContactEditorUtils.java8
-rwxr-xr-x[-rw-r--r--]src/com/android/contacts/editor/EditorUiUtils.java0
-rw-r--r--src/com/android/contacts/editor/PhotoEditorView.java5
-rwxr-xr-x[-rw-r--r--]src/com/android/contacts/editor/RawContactEditorView.java47
-rw-r--r--src/com/android/contacts/editor/TextFieldsEditorView.java19
-rw-r--r--src/com/android/contacts/group/GroupBrowseListAdapter.java8
-rw-r--r--src/com/android/contacts/group/GroupBrowseListFragment.java11
-rw-r--r--src/com/android/contacts/group/GroupDetailFragment.java21
-rw-r--r--src/com/android/contacts/group/GroupEditorFragment.java88
-rw-r--r--src/com/android/contacts/group/SuggestedMemberListAdapter.java10
-rw-r--r--src/com/android/contacts/list/ContactPickerFragment.java2
-rw-r--r--src/com/android/contacts/list/EmailAddressListAdapter.java21
-rw-r--r--src/com/android/contacts/list/JoinContactListAdapter.java15
-rw-r--r--src/com/android/contacts/list/PostalAddressListAdapter.java20
-rw-r--r--src/com/android/contacts/quickcontact/ExpandingEntryCardView.java15
-rw-r--r--src/com/android/contacts/quickcontact/QuickContactActivity.java820
-rw-r--r--src/com/android/contacts/util/ImageViewDrawableSetter.java27
-rw-r--r--src/com/android/contacts/widget/MultiShrinkScroller.java73
229 files changed, 16094 insertions, 216 deletions
diff --git a/Android.mk b/Android.mk
index 8f34bb902..b9bcf90c3 100644
--- a/Android.mk
+++ b/Android.mk
@@ -28,7 +28,8 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
android-support-v7-cardview \
android-support-v7-palette \
android-support-v4 \
- libphonenumber
+ libphonenumber \
+ contacts-picaso
LOCAL_PACKAGE_NAME := Contacts
LOCAL_CERTIFICATE := shared
@@ -36,7 +37,9 @@ LOCAL_PRIVILEGED_MODULE := true
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
-LOCAL_SDK_VERSION := current
+# utilize ContactsCommon's phone-number-based contact-info lookup
+CONTACTS_COMMON_LOOKUP_PROVIDER ?= $(LOCAL_PATH)/$(contacts_common_dir)/info_lookup
+include $(CONTACTS_COMMON_LOOKUP_PROVIDER)/phonenumber_lookup_provider.mk
include $(BUILD_PACKAGE)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 69ab23129..319857c04 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -45,6 +45,9 @@
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" />
+ <!-- Blacklist -->
+ <uses-permission android:name="android.permission.READ_PHONE_BLACKLIST" />
+ <uses-permission android:name="android.permission.CHANGE_PHONE_BLACKLIST" />
<application
android:name="com.android.contacts.ContactsApplication"
@@ -53,8 +56,7 @@
android:taskAffinity="android.task.contacts"
android:hardwareAccelerated="true"
android:supportsRtl="true"
- android:usesCleartextTraffic="false"
- >
+ android:usesCleartextTraffic="true" >
<!-- The main Contacts activity with the contact list, favorites, and groups. -->
<activity android:name=".activities.PeopleActivity"
@@ -209,6 +211,11 @@
android:label="@string/activity_title_contacts_filter"
android:theme="@style/ContactListFilterTheme" />
+ <activity
+ android:name=".activities.MemoryStatusActivity"
+ android:label="@string/menu_memory_status"
+ android:theme="@style/ContactListFilterTheme" />
+
<!-- Used to select display and sync groups -->
<activity
android:name=".common.list.CustomContactListFilterActivity"
@@ -269,6 +276,12 @@
</intent-filter>
<intent-filter>
+ <action android:name="com.android.contacts.action.QUICK_CONTACT" />
+ <action android:name="android.provider.action.QUICK_CONTACT" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+
+ <intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/person" />
@@ -448,6 +461,42 @@
android:label="@string/launcherActivityLabel"
android:theme="@style/BackgroundOnlyTheme" />
+ <activity
+ android:name=".activities.MultiPickContactActivity"
+ android:windowSoftInputMode="stateHidden|adjustResize"
+ android:screenOrientation="nosensor"
+ android:theme="@style/ContactPickerTheme"
+ android:configChanges="orientation|keyboardHidden|layoutDirection">
+ <intent-filter>
+ <action android:name="com.android.contacts.action.MULTI_PICK" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:mimeType="vnd.android.cursor.dir/person"/>
+ <data android:mimeType="vnd.android.cursor.dir/contact"/>
+ <data android:mimeType="vnd.android.cursor.dir/raw_contact"/>
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.DELETE" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:mimeType="vnd.android.cursor.dir/person"/>
+ <data android:mimeType="vnd.android.cursor.dir/contact"/>
+ <data android:mimeType="vnd.android.cursor.dir/raw_contact"/>
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.android.contacts.action.MULTI_PICK_CALL"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.android.contacts.action.MULTI_PICK_EMAIL"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ <data android:mimeType="vnd.android.cursor.dir/person"/>
+ <data android:mimeType="vnd.android.cursor.dir/contact"/>
+ <data android:mimeType="vnd.android.cursor.dir/raw_contact"/>
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.android.contacts.action.MULTI_PICK_SIM"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ </intent-filter>
+ </activity>
<service
android:name=".common.vcard.VCardService"
android:exported="false" />
diff --git a/proguard.flags b/proguard.flags
index 05071dfe8..fd02097ea 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -1,3 +1,7 @@
+-dontwarn com.cyanogen.**
+-dontwarn com.squareup.**
+-dontwarn com.squareup.okhttp.**
+
-keep class com.android.contacts.model.Sources {
public <init>(...);
}
diff --git a/res/drawable-hdpi/ic_call_incoming_holo_dark.png b/res/drawable-hdpi/ic_call_incoming_holo_dark.png
new file mode 100644
index 000000000..8351f4805
--- /dev/null
+++ b/res/drawable-hdpi/ic_call_incoming_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_call_missed_holo_dark.png b/res/drawable-hdpi/ic_call_missed_holo_dark.png
new file mode 100644
index 000000000..7c17c3010
--- /dev/null
+++ b/res/drawable-hdpi/ic_call_missed_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_call_outgoing_holo_dark.png b/res/drawable-hdpi/ic_call_outgoing_holo_dark.png
new file mode 100644
index 000000000..3b9e0f8a9
--- /dev/null
+++ b/res/drawable-hdpi/ic_call_outgoing_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_incoming_holo_dark.png b/res/drawable-mdpi/ic_call_incoming_holo_dark.png
new file mode 100644
index 000000000..8dcb350bc
--- /dev/null
+++ b/res/drawable-mdpi/ic_call_incoming_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_missed_holo_dark.png b/res/drawable-mdpi/ic_call_missed_holo_dark.png
new file mode 100644
index 000000000..af030cf13
--- /dev/null
+++ b/res/drawable-mdpi/ic_call_missed_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_outgoing_holo_dark.png b/res/drawable-mdpi/ic_call_outgoing_holo_dark.png
new file mode 100644
index 000000000..38a01b7a6
--- /dev/null
+++ b/res/drawable-mdpi/ic_call_outgoing_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_incoming_holo_dark.png b/res/drawable-xhdpi/ic_call_incoming_holo_dark.png
new file mode 100644
index 000000000..8eb5f3d8b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_call_incoming_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_missed_holo_dark.png b/res/drawable-xhdpi/ic_call_missed_holo_dark.png
new file mode 100644
index 000000000..6d09a4e95
--- /dev/null
+++ b/res/drawable-xhdpi/ic_call_missed_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_outgoing_holo_dark.png b/res/drawable-xhdpi/ic_call_outgoing_holo_dark.png
new file mode 100644
index 000000000..636050403
--- /dev/null
+++ b/res/drawable-xhdpi/ic_call_outgoing_holo_dark.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_call_incoming_holo_dark.png b/res/drawable-xxhdpi/ic_call_incoming_holo_dark.png
new file mode 100644
index 000000000..12769173b
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_incoming_holo_dark.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_call_missed_holo_dark.png b/res/drawable-xxhdpi/ic_call_missed_holo_dark.png
new file mode 100644
index 000000000..8919fd3c9
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_missed_holo_dark.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_call_outgoing_holo_dark.png b/res/drawable-xxhdpi/ic_call_outgoing_holo_dark.png
new file mode 100644
index 000000000..192bbf6a3
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_outgoing_holo_dark.png
Binary files differ
diff --git a/res/layout-land/group_editor_view.xml b/res/layout-land/group_editor_view.xml
index dded4c3fc..a17b4669a 100644
--- a/res/layout-land/group_editor_view.xml
+++ b/res/layout-land/group_editor_view.xml
@@ -52,9 +52,26 @@
android:paddingStart="8dip"
android:orientation="vertical"
>
- <include
- layout="@layout/group_editor_autocomplete_view"
- android:id="@+id/add_member_field"/>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <include
+ layout="@layout/group_editor_autocomplete_view"
+ android:id="@+id/add_member_field"/>
+
+ <ImageView
+ android:id="@+id/addGroupMember"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:cropToPadding="true"
+ android:scaleType="centerCrop"
+ android:src="@drawable/ic_add_contact_holo_light"
+ android:background="?android:attr/selectableItemBackground"
+ android:gravity="start"
+ android:layout_gravity="center"/>
+ </LinearLayout>
+
<include
layout="@layout/group_editor_existing_member_list"
android:id="@android:id/list"/>
diff --git a/res/layout-land/quickcontact_title.xml b/res/layout-land/quickcontact_title.xml
new file mode 100644
index 000000000..0c704d505
--- /dev/null
+++ b/res/layout-land/quickcontact_title.xml
@@ -0,0 +1,59 @@
+<?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/contact_info"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/quickcontact_title_initial_margin"
+ android:layout_marginEnd="@dimen/quickcontact_title_initial_margin"
+ android:layout_marginBottom="@dimen/quickcontact_title_initial_margin"
+ android:layout_gravity="bottom|start"
+ android:orientation="vertical">
+ <!-- The importantForAccessibility is set to "no" since we want the ViewGroup that pretends to be
+ this View's parent (contact photo overlay) to provide the content description for Talkback. -->
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="@color/actionbar_text_color"
+ android:maxLines="@integer/quickcontact_title_lines"
+ android:textSize="@dimen/quickcontact_maximum_title_size"
+ android:textAlignment="viewStart"
+ android:ellipsize="end"
+ android:importantForAccessibility="no"
+ android:id="@+id/large_title"/>
+
+ <TextView
+ android:id="@+id/contact_spam_count"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="14dp"
+ android:textColor="@android:color/white"
+ android:visibility="gone"/>
+
+ <TextView
+ android:id="@+id/contact_info_attribution"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="14dp"
+ android:textColor="@android:color/white"
+ android:alpha="0.5"
+ android:visibility="gone"/>
+
+</LinearLayout> \ No newline at end of file
diff --git a/res/layout-sw600dp/group_editor_view.xml b/res/layout-sw600dp/group_editor_view.xml
index 717fc28f4..1541c3a92 100644
--- a/res/layout-sw600dp/group_editor_view.xml
+++ b/res/layout-sw600dp/group_editor_view.xml
@@ -63,9 +63,24 @@
layout="@layout/editor_account_header"
android:visibility="invisible"/>
- <include
- layout="@layout/group_editor_autocomplete_view"
- android:id="@+id/add_member_field"/>
+ <LinearLayout android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <include
+ layout="@layout/group_editor_autocomplete_view"
+ android:id="@+id/add_member_field"/>
+
+ <ImageView
+ android:id="@+id/addGroupMember"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:cropToPadding="true"
+ android:scaleType="centerCrop"
+ android:src="@drawable/ic_add_contact_holo_light"
+ android:background="?android:attr/selectableItemBackground"
+ android:gravity="start"
+ android:layout_gravity="center"/>
+ </LinearLayout>
<include
layout="@layout/group_editor_existing_member_list"
diff --git a/res/layout/contact_memory_list.xml b/res/layout/contact_memory_list.xml
new file mode 100644
index 000000000..81e1d11ed
--- /dev/null
+++ b/res/layout/contact_memory_list.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation, Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:fillViewport="true">
+
+ <ListView
+ android:id="@android:id/list"
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="1"
+ android:divider="@null"
+ android:layout_marginLeft="@dimen/contact_filter_left_margin"
+ android:layout_marginRight="@dimen/contact_filter_right_margin"
+ android:layout_marginStart="@dimen/contact_filter_left_margin"
+ android:layout_marginEnd="@dimen/contact_filter_right_margin" />
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:layout_marginLeft="16dip"
+ android:layout_marginRight="16dip"
+ android:layout_marginStart="16dip"
+ android:layout_marginEnd="16dip"
+ android:background="?android:attr/dividerHorizontal" />
+
+ <ScrollView android:id="@+id/empty"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:fadingEdge="none"
+ android:fillViewport="true"
+ android:visibility="gone">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/calculating_status_now"
+ android:textSize="20sp"
+ android:textColor="?android:attr/textColorSecondary"
+ android:gravity="center"/>
+ </ScrollView>
+</LinearLayout>
diff --git a/res/layout/editor_account_selector.xml b/res/layout/editor_account_selector.xml
index 2f883f276..3ca93d4cf 100644..100755
--- a/res/layout/editor_account_selector.xml
+++ b/res/layout/editor_account_selector.xml
@@ -35,7 +35,7 @@
<LinearLayout
android:id="@+id/account"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:orientation="vertical"
diff --git a/res/layout/group_account_header_horizontal.xml b/res/layout/group_account_header_horizontal.xml
index cbfb555b2..e6098e71d 100644
--- a/res/layout/group_account_header_horizontal.xml
+++ b/res/layout/group_account_header_horizontal.xml
@@ -18,10 +18,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginLeft="?attr/list_item_padding_left"
- android:layout_marginRight="?attr/list_item_padding_right"
- android:layout_marginStart="?attr/list_item_padding_left"
- android:layout_marginEnd="?attr/list_item_padding_right"
android:background="@drawable/list_section_divider_holo_custom"
android:orientation="horizontal">
diff --git a/res/layout/group_account_header_vertical.xml b/res/layout/group_account_header_vertical.xml
index c5b9d76b7..1309dd052 100644
--- a/res/layout/group_account_header_vertical.xml
+++ b/res/layout/group_account_header_vertical.xml
@@ -18,10 +18,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginLeft="?attr/list_item_padding_left"
- android:layout_marginRight="?attr/list_item_padding_right"
- android:layout_marginStart="?attr/list_item_padding_left"
- android:layout_marginEnd="?attr/list_item_padding_right"
android:paddingBottom="6dip"
android:background="@drawable/list_section_divider_holo_custom"
android:gravity="center_vertical"
diff --git a/res/layout/group_browse_list_fragment.xml b/res/layout/group_browse_list_fragment.xml
index 30c2fec3a..4c17fce6c 100644
--- a/res/layout/group_browse_list_fragment.xml
+++ b/res/layout/group_browse_list_fragment.xml
@@ -18,7 +18,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:background="@color/group_list_background_color">
<!-- See group_browse_list_item.xml for the reason for the transparent android:listSelector -->
<view
@@ -26,10 +27,6 @@
class="com.android.contacts.common.list.AutoScrollListView"
android:layout_width="match_parent"
android:layout_height="0dip"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
- android:paddingStart="16dip"
- android:paddingEnd="16dip"
android:scrollbarStyle="outsideOverlay"
android:layout_weight="1"
android:fadingEdge="none"
diff --git a/res/layout/group_browse_list_item.xml b/res/layout/group_browse_list_item.xml
index c620d1700..c941706b1 100644
--- a/res/layout/group_browse_list_item.xml
+++ b/res/layout/group_browse_list_item.xml
@@ -30,16 +30,14 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingLeft="?attr/list_item_padding_left"
android:paddingStart="?attr/list_item_padding_left"
+ android:paddingEnd="?attr/list_item_padding_right"
android:minHeight="@dimen/detail_min_line_item_height" >
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dip"
- android:layout_marginRight="?attr/list_item_padding_right"
- android:layout_marginEnd="?attr/list_item_padding_right"
android:background="@color/secondary_header_separator_color" />
<include
@@ -51,8 +49,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dip"
- android:paddingLeft="8dip"
- android:paddingStart="8dip"
android:paddingBottom="8dip"
android:orientation="vertical"
android:duplicateParentState="true"
diff --git a/res/layout/group_editor_autocomplete_view.xml b/res/layout/group_editor_autocomplete_view.xml
index c8e716a38..4c3fc22ae 100644
--- a/res/layout/group_editor_autocomplete_view.xml
+++ b/res/layout/group_editor_autocomplete_view.xml
@@ -18,7 +18,8 @@
<AutoCompleteTextView
xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
+ android:layout_width="0dip"
+ android:layout_weight="1"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorPrimary"
diff --git a/res/layout/group_editor_view.xml b/res/layout/group_editor_view.xml
index d94853db7..1bda19c73 100644
--- a/res/layout/group_editor_view.xml
+++ b/res/layout/group_editor_view.xml
@@ -44,9 +44,24 @@
android:paddingLeft="8dip"
android:paddingStart="8dip"/>
- <include
- layout="@layout/group_editor_autocomplete_view"
- android:id="@+id/add_member_field"/>
+ <LinearLayout android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <include
+ layout="@layout/group_editor_autocomplete_view"
+ android:id="@+id/add_member_field"/>
+
+ <ImageView
+ android:id="@+id/addGroupMember"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:cropToPadding="true"
+ android:scaleType="centerCrop"
+ android:src="@drawable/ic_add_contact_holo_light"
+ android:background="?android:attr/selectableItemBackground"
+ android:gravity="start"
+ android:layout_gravity="center"/>
+ </LinearLayout>
<include
layout="@layout/group_editor_existing_member_list"
diff --git a/res/layout/memory_account_list_item.xml b/res/layout/memory_account_list_item.xml
new file mode 100644
index 000000000..868905e6d
--- /dev/null
+++ b/res/layout/memory_account_list_item.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation, Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="5dip"
+ android:layout_marginTop="10dip"
+ android:orientation="vertical" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/list_section_divider_holo_custom"
+ android:orientation="horizontal"
+ android:paddingStart="10dip"
+ android:paddingEnd="10dip" >
+
+ <TextView
+ android:id="@+id/account_name"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:ellipsize="middle"
+ android:singleLine="true"
+ android:textSize="12sp" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="48dp"
+ android:layout_centerVertical="true"
+ android:layout_marginStart="10dp"
+ android:orientation="horizontal" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:singleLine="true"
+ android:layout_gravity="center_vertical"
+ android:text="@string/memory_used"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+
+ <TextView
+ android:id="@+id/count_cur"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:paddingStart="5dip"
+ android:layout_gravity="center_vertical"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textColor="?android:attr/textColorSecondary" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/totally"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:orientation="vertical"
+ android:visibility="gone" >
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:background="?android:attr/dividerHorizontal"/>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="48dp"
+ android:layout_centerVertical="true"
+ android:layout_marginStart="10dp"
+ android:orientation="horizontal" >
+ <TextView
+ android:id="@+id/totalLabel"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:singleLine="true"
+ android:layout_gravity="center_vertical"
+ android:text="@string/memory_size"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+
+ <TextView
+ android:id="@+id/count_max"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:paddingStart="5dip"
+ android:layout_gravity="center_vertical"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textColor="?android:attr/textColorSecondary" />
+ </LinearLayout>
+ </LinearLayout>
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/pick_calls_item.xml b/res/layout/pick_calls_item.xml
new file mode 100644
index 000000000..3adca5670
--- /dev/null
+++ b/res/layout/pick_calls_item.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ *
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:minHeight="72dp"
+ android:descendantFocusability="blocksDescendants">
+
+ <CheckBox
+ android:id="@+id/pick_contact_check"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="8dip"
+ android:layout_marginEnd="8dip"
+ android:layout_gravity="center_vertical"
+ android:clickable="false" />
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:layout_gravity="center_vertical"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/name"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@android:style/TextAppearance.Material.Subhead"
+ android:singleLine="true" />
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <TextView
+ android:id="@+id/subscription"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="4dip"
+ android:textAppearance="@android:style/TextAppearance.Material.Caption"
+ android:textSize="12sp"
+ android:singleLine="true"
+ android:ellipsize="marquee" />
+
+ <TextView
+ android:id="@+id/label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@android:style/TextAppearance.Material.Caption"
+ android:singleLine="true"
+ android:ellipsize="marquee" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <ImageView
+ android:id="@+id/call_type_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="4dip"
+ android:layout_gravity="center_vertical" />
+
+
+ <TextView
+ android:id="@+id/call_date"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:textAppearance="@android:style/TextAppearance.Material.Caption"
+ android:singleLine="true" />
+
+ </LinearLayout>
+
+ </LinearLayout>
+
+ <TextView android:id="@+id/duration"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="4dip"
+ android:layout_marginEnd="8dip"
+ android:textAppearance="@android:style/TextAppearance.Material.Body1"
+ android:singleLine="true" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/res/layout/pick_contact_item.xml b/res/layout/pick_contact_item.xml
new file mode 100644
index 000000000..155e6e352
--- /dev/null
+++ b/res/layout/pick_contact_item.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2014, The Linux Foundation. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Code The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ -->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:descendantFocusability="blocksDescendants">
+
+ <com.android.contacts.common.list.ContactListItemView
+ android:id="@+id/contact"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="8dip"
+ android:layout_gravity="center_vertical" />
+
+</FrameLayout> \ No newline at end of file
diff --git a/res/layout/quickcontact_title.xml b/res/layout/quickcontact_title.xml
index 3f4886df5..0c40edccd 100644
--- a/res/layout/quickcontact_title.xml
+++ b/res/layout/quickcontact_title.xml
@@ -15,20 +15,45 @@
limitations under the License.
-->
-<!-- The importantForAccessibility is set to "no" since we want the ViewGroup that pretends to be
- this View's parent (contact photo overlay) to provide the content description for Talkback. -->
-<TextView
+
+<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/contact_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/quickcontact_title_initial_margin"
android:layout_marginEnd="@dimen/quickcontact_title_initial_margin"
android:layout_marginBottom="@dimen/quickcontact_title_initial_margin"
android:layout_gravity="top|start"
- android:textColor="@color/actionbar_text_color"
- android:maxLines="@integer/quickcontact_title_lines"
- android:textSize="@dimen/quickcontact_maximum_title_size"
- android:textAlignment="viewStart"
- android:ellipsize="end"
- android:importantForAccessibility="no"
- android:id="@+id/large_title"/> \ No newline at end of file
+ android:orientation="vertical">
+ <!-- The importantForAccessibility is set to "no" since we want the ViewGroup that pretends to be
+ this View's parent (contact photo overlay) to provide the content description for Talkback. -->
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="@color/actionbar_text_color"
+ android:maxLines="@integer/quickcontact_title_lines"
+ android:textSize="@dimen/quickcontact_maximum_title_size"
+ android:textAlignment="viewStart"
+ android:ellipsize="end"
+ android:importantForAccessibility="no"
+ android:id="@+id/large_title"/>
+
+ <TextView
+ android:id="@+id/contact_spam_count"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="14dp"
+ android:textColor="@android:color/white"
+ android:visibility="gone"/>
+
+ <TextView
+ android:id="@+id/contact_info_attribution"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="14dp"
+ android:textColor="@android:color/white"
+ android:alpha="0.5"
+ android:visibility="gone"/>
+
+</LinearLayout> \ No newline at end of file
diff --git a/res/menu/multi_contact_picker_options.xml b/res/menu/multi_contact_picker_options.xml
new file mode 100644
index 000000000..e7fe7148b
--- /dev/null
+++ b/res/menu/multi_contact_picker_options.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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/done"
+ android:icon="@drawable/ic_done_wht_24dp"
+ android:title="@string/menu_done"
+ android:showAsAction="always" />
+ <item android:id="@+id/select_all_check"
+ android:title="@string/select_all"
+ android:showAsAction="never"
+ android:checkable="true" />
+</menu>
diff --git a/res/menu/people_options.xml b/res/menu/people_options.xml
index 1dd4dc4db..3ccf855c9 100644
--- a/res/menu/people_options.xml
+++ b/res/menu/people_options.xml
@@ -41,6 +41,14 @@
android:title="@string/menu_settings" />
<item
+ android:id="@+id/menu_add_group"
+ android:title="@string/menu_new_group_action_bar" />
+
+ <item
+ android:id="@+id/menu_memory_status"
+ android:title="@string/menu_memory_status" />
+
+ <item
android:id="@+id/menu_help"
android:title="@string/menu_help" />
diff --git a/res/menu/quickcontact.xml b/res/menu/quickcontact.xml
index 6cfe05349..ed9136172 100644
--- a/res/menu/quickcontact.xml
+++ b/res/menu/quickcontact.xml
@@ -35,10 +35,30 @@
android:alphabeticShortcut="s" />
<item
+ android:id="@+id/menu_send_via_sms"
+ android:title="@string/menu_sendViaSMS" />
+
+ <item
+ android:id="@+id/menu_copy_to_phone"
+ android:title="@string/menu_copyTo" />
+
+ <item
+ android:id="@+id/menu_copy_to_sim1"
+ android:title="@string/menu_copyTo" />
+
+ <item
+ android:id="@+id/menu_copy_to_sim2"
+ android:title="@string/menu_copyTo" />
+
+ <item
android:id="@+id/menu_create_contact_shortcut"
android:title="@string/menu_create_contact_shortcut" />
<item
android:id="@+id/menu_help"
android:title="@string/menu_help" />
+
+ <item
+ android:id="@+id/menu_block_contact"
+ android:title="@string/menu_block_contact" />
</menu>
diff --git a/res/menu/view_group.xml b/res/menu/view_group.xml
index 669f401c8..eb6cf5f6a 100644
--- a/res/menu/view_group.xml
+++ b/res/menu/view_group.xml
@@ -23,4 +23,8 @@
<item
android:id="@+id/menu_delete_group"
android:title="@string/menu_deleteGroup" />
+
+ <item
+ android:id="@+id/menu_move_group_members"
+ android:title="@string/menu_moveGroupMembers" />
</menu>
diff --git a/res/values-af/cm_plurals.xml b/res/values-af/cm_plurals.xml
new file mode 100644
index 000000000..baf0381ea
--- /dev/null
+++ b/res/values-af/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d gekies</item>
+ <item quantity="other">%d gekies</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d kontak sal ingevoer word.</item>
+ <item quantity="other">%d kontakte sal ingevoer word.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kontak is ingevoer</item>
+ <item quantity="other">%d kontakte is ingevoer</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d kontak sal verwyder word.</item>
+ <item quantity="other">%d kontakte sal verwyder word.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d persoon het dit gemerk as strooipos</item>
+ <item quantity="other">%d persone het dit gemerk as strooipos</item>
+ </plurals>
+</resources>
diff --git a/res/values-af/cm_strings.xml b/res/values-af/cm_strings.xml
new file mode 100644
index 000000000..20f8bdc98
--- /dev/null
+++ b/res/values-af/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Kon nie die geselekteerde kontakte na die SIM-kaart stoor</string>
+ <string name="airplane_mode_on">Die SIM-kaart kan nie verkry word nie, terwyl vliegtuigmodus geaktiveer is</string>
+ <string name="number_anr_too_long">Nommer is te lank</string>
+ <string name="email_address_too_long">E-pos adres is te lank</string>
+ <string name="sim_card_full">SIM kaart is vol</string>
+ <string name="tag_too_long">Kontak naam is te lank</string>
+ <string name="invalid_phone_number">Foon nommer is ongeldig</string>
+ <string name="invalid_number_type">Nommer tipe is ongeldig</string>
+ <string name="no_phone_number_or_email">Sleutel asseblief \'n telefoonnommer of e-posadres in.</string>
+ <string name="memory_card_full">Kontak kon nie gestoor word nie, die geheue is vol</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Groepe</string>
+ <string name="menu_moveGroupMembers">Skuif groep lede</string>
+ <string name="title_move_members">Skyf lede</string>
+ <string name="message_move_members">Besig met skyf van lede\u2026</string>
+ <string name="message_can_not_move_members">Kan nie lede skyf nie</string>
+ <string name="edit_before_call">Wysig nommer voor oproep</string>
+ <string name="menu_sendViaSMS">Stuur kontak via SMS</string>
+ <string name="select_all">Alles</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Voer SIM kontakte in</string>
+ <string name="import_sim_contacts_message">Besig om SIM kontakte in te voer\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Invoer kontak?</string>
+ <string name="import_finish">Invoering klaar</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Verwyder kontak</string>
+ <string name="delete_contacts_message">Verwydering van kontakte\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Verwyder kontak?</string>
+ <string name="too_many_contacts_add_to_group">Nie mees as <xliff:g id="count">%d</xliff:g> kontakte kan gedeel word nie</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Geheue status</string>
+ <string name="memory_size">Totaal:</string>
+ <string name="memory_used">Gebruik:</string>
+ <string name="calculating_status_now">Berekening van status\u2026</string>
+ <string name="menu_copyTo">Kopieer na<xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM kontak het nie \'n beskikbare epos veld nie, kon nie epos kopieer nie.</string>
+ <string name="voicemail">Stempos</string>
+ <string name="select_call_title">Kies oproep lys</string>
+ <string name="delete_call_title">Verwyder oproep lys</string>
+ <string name="delete_call_message">Verwydering van oproep lys\u2026</string>
+ <string name="delete_call_alert">Verwyder gekose oproep lys?</string>
+ <string name="title_del_call">Verwyder</string>
+ <string name="powered_by_provider">Aangedryf deur <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-am/cm_strings.xml b/res/values-am/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-am/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-ar/cm_plurals.xml b/res/values-ar/cm_plurals.xml
new file mode 100644
index 000000000..8acf0a3c2
--- /dev/null
+++ b/res/values-ar/cm_plurals.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="zero">تم تحديد %d</item>
+ <item quantity="one">تم تحديد %d</item>
+ <item quantity="two">تم تحديد %d</item>
+ <item quantity="few">تم تحديد %d</item>
+ <item quantity="many">تم تحديد %d</item>
+ <item quantity="other">تم تحديد %d</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="zero">سيتم استيراد %d جهة اتصال.</item>
+ <item quantity="one">سيتم استيراد %d جهات اتصال.</item>
+ <item quantity="two">سيتم استيراد %d جهات اتصال.</item>
+ <item quantity="few">سيتم استيراد %d جهات اتصال.</item>
+ <item quantity="many">سيتم استيراد %d جهات اتصال.</item>
+ <item quantity="other">سيتم استيراد %d جهات اتصال.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="zero">سيتم استيراد %d جهة اتصال</item>
+ <item quantity="one">سيتم استيراد %d جهات اتصال</item>
+ <item quantity="two">سيتم استيراد %d جهات اتصال</item>
+ <item quantity="few">سيتم استيراد %d جهات اتصال</item>
+ <item quantity="many">سيتم استيراد %d جهات اتصال</item>
+ <item quantity="other">سيتم استيراد %d جهات اتصال</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="zero">سيتم حذف %d جهة اتصال.</item>
+ <item quantity="one">سيتم حذف %d جهات اتصال.</item>
+ <item quantity="two">سيتم حذف %d جهات اتصال.</item>
+ <item quantity="few">سيتم حذف %d جهات اتصال.</item>
+ <item quantity="many">سيتم حذف %d جهات اتصال.</item>
+ <item quantity="other">سيتم حذف %d جهات اتصال.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="zero">%d شخص تم وضع علامة عليه كغير هام</item>
+ <item quantity="one">%d أشخاص تم وضع علامة عليهم كغير هام</item>
+ <item quantity="two">%d شخص تم وضع علامة عليه كغير هام</item>
+ <item quantity="few">%d أشخاص تم وضع علامة عليهم كغير هام</item>
+ <item quantity="many">%d شخص تم وضع علامة عليه كغير هام</item>
+ <item quantity="other">%d أشخاص تم وضع علامة عليهم كغير هام</item>
+ </plurals>
+</resources>
diff --git a/res/values-ar/cm_strings.xml b/res/values-ar/cm_strings.xml
new file mode 100644
index 000000000..86d4dc754
--- /dev/null
+++ b/res/values-ar/cm_strings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">تعذر حفظ جهات الاتصال المحددة إلى شريحة SIM</string>
+ <string name="airplane_mode_on">شريحة SIM لا يمكن الوصول إليها أثناء وضع الطيران</string>
+ <string name="number_anr_too_long">الرقم طويل جداً</string>
+ <string name="email_address_too_long">عنوان البريد الإلكتروني طويل جداً</string>
+ <string name="sim_card_full">شريحة SIM ممتلئة</string>
+ <string name="tag_too_long">اسم جهة الاتصال طويل جداً</string>
+ <string name="invalid_phone_number">رقم الهاتف غير صحيح</string>
+ <string name="invalid_number_type">نوع الرقم غير صحيح</string>
+ <string name="no_phone_number_or_email">الرجاء إدخال رقم هاتف أو عنوان البريد الإلكتروني.
+</string>
+ <string name="memory_card_full">تعذر حفظ جهة الاتصال، ذاكرة الهاتف ممتلئة</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">المجموعات</string>
+ <string name="menu_moveGroupMembers">نقل أعضاء المجموعة</string>
+ <string name="title_move_members">نقل الأعضاء </string>
+ <string name="message_move_members">جاري نقل الأعضاء\u2026</string>
+ <string name="message_can_not_move_members">لا يمكن نقل الأعضاء</string>
+ <string name="edit_before_call">تحرير الرقم قبل الاتصال</string>
+ <string name="menu_sendViaSMS">إرسال جهة الاتصال عن طريق الرسائل القصيرة</string>
+ <string name="select_all">الكل</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">استيراد جهات الاتصال من شريحة SIM</string>
+ <string name="import_sim_contacts_message">جاري استيراد جهات الاتصال من SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">استيراد جهات الاتصال؟</string>
+ <string name="import_finish">انتهى الاستيراد</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">حذف جهات الاتصال</string>
+ <string name="delete_contacts_message">جاري حذف جهات الاتصال\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">حذف جهة اتصال؟</string>
+ <string name="too_many_contacts_add_to_group">لا يمكن اضافة أكثر من <xliff:g id="count">%d</xliff:g> جهة اتصال</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">حالة الذاكرة</string>
+ <string name="memory_size">الإجمالي:</string>
+ <string name="memory_used">المستخدم:</string>
+ <string name="calculating_status_now">جاري حساب الحالة\u2026</string>
+ <string name="menu_copyTo">نسخ إلى <xliff:g id="destination">%s </xliff:g></string>
+ <string name="no_empty_email_in_usim">جهة الاتصال من USIM ليس لديها حقل للبريد الإلكتروني، تعذر نسخ الرسائل.</string>
+ <string name="voicemail">البريد الصوتي</string>
+ <string name="select_call_title">تحديد سجلات المكالمات</string>
+ <string name="delete_call_title">حذف سجل المكالمات</string>
+ <string name="delete_call_message">جاري حذف سجل المكالمات\u2026</string>
+ <string name="delete_call_alert">حذف سجلات المكالمات المحددة؟</string>
+ <string name="title_del_call">حذف</string>
+ <string name="powered_by_provider">مشغل بواسطة <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-as-rIN/cm_strings.xml b/res/values-as-rIN/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-as-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-ast-rES/cm_plurals.xml b/res/values-ast-rES/cm_plurals.xml
new file mode 100644
index 000000000..75d1a015b
--- /dev/null
+++ b/res/values-ast-rES/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d esbilláu</item>
+ <item quantity="other">%d esbillaos</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">Va importase %d contautu.</item>
+ <item quantity="other">Van importase %d contautos.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contautu importáu</item>
+ <item quantity="other">%d contautos importaos</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">va desaniciase %d contautu</item>
+ <item quantity="other">van desaniciase %d contautos</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d persona marcó esto como spam</item>
+ <item quantity="other">%d persones marcaron esto como spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-ast-rES/cm_strings.xml b/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 000000000..d8ebf0f84
--- /dev/null
+++ b/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Nun pudieron guardase los contautos seleicionaos na tarxeta SIM</string>
+ <string name="airplane_mode_on">Nun pue accedese a la tarxeta SIM mentanto\'l mou avión tea habilitáu</string>
+ <string name="number_anr_too_long">El númberu ye enforma llargu</string>
+ <string name="email_address_too_long">La direición de corréu ye enforma llarga</string>
+ <string name="sim_card_full">La tarxeta SIM ta enllena</string>
+ <string name="tag_too_long">El nome del contautu ye enforma llargu</string>
+ <string name="invalid_phone_number">El númberu de teléfonu ye inválidu</string>
+ <string name="invalid_number_type">El tipu de númberu ye inválidu</string>
+ <string name="no_phone_number_or_email">Introduz un númberu de teléfonu o direición de corréu-e.</string>
+ <string name="memory_card_full">Nun pue guardase\'l contautu. Memoria de teléfonu enllena</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupos</string>
+ <string name="menu_moveGroupMembers">Mover miembros del grupu</string>
+ <string name="title_move_members">Mover miembros</string>
+ <string name="message_move_members">Moviendo miembros\u2026</string>
+ <string name="message_can_not_move_members">Nun pue movese a los miembros</string>
+ <string name="edit_before_call">Editar númberu enantes de llamar</string>
+ <string name="menu_sendViaSMS">Unviar contautu vía SMS</string>
+ <string name="select_all">Too</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importar contautos de SIM</string>
+ <string name="import_sim_contacts_message">Importando contautos de SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importar contautu?</string>
+ <string name="import_finish">Finó la importación</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Desaniciar contautos</string>
+ <string name="delete_contacts_message">Desaniciando contautos\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Desaniciar contautu?</string>
+ <string name="too_many_contacts_add_to_group">Nun puen amestase más de <xliff:g id="count">%d</xliff:g> contautos</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Estáu de la memoria</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Usáu:</string>
+ <string name="calculating_status_now">Calculando estáu\u2026</string>
+ <string name="menu_copyTo">Copiar a <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Contautu USIM nun tien un campu de corréu-e disponible. Nun puen copiase los mensaxes.</string>
+ <string name="voicemail">Buzón de voz</string>
+ <string name="select_call_title">Seleicionar rexistros de llamaes</string>
+ <string name="delete_call_title">Desaniciar rexistros de llamaes</string>
+ <string name="delete_call_message">Desaniciando rexistros de llamaes\u2026</string>
+ <string name="delete_call_alert">¿Desaniciar rexistros de llamaes esbillaes?</string>
+ <string name="title_del_call">Desaniciar</string>
+ <string name="powered_by_provider">Cola potencia de <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-ast-rES/strings.xml b/res/values-ast-rES/strings.xml
new file mode 100644
index 000000000..8ee09ce40
--- /dev/null
+++ b/res/values-ast-rES/strings.xml
@@ -0,0 +1,502 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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">Contautos</string>
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <string name="launcherActivityLabel">Contautos</string>
+ <!-- Directory partition name -->
+ <string name="contactsList">Contautos</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutContact">Contautu</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutDialContact">Llamada direuta</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutMessageContact">Mensaxe direutu</string>
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <string name="shortcutActivityTitle">Escoyer un accesu direutu pal contautu</string>
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <string name="callShortcutActivityTitle">Escoyer un númberu pa la llamada</string>
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <string name="messageShortcutActivityTitle">Escoyer un númberu pal mensaxe</string>
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <string name="contactPickerActivityTitle">Seleicionar un contautu</string>
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <string name="header_entry_contact_list_adapter_header_title">Crear contautu nuevu</string>
+ <!-- Title for the activity that shows only starred contacts -->
+ <string name="starredList">Destacaos</string>
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <string name="frequentList">Frecuentes</string>
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <string name="strequentList">Favoritos</string>
+ <!-- The title bar when viewing the contact details activity -->
+ <string name="viewContactTitle">Detalles del contautu</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <string name="editContactDescription">Editar contautu</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <string name="insertContactDescription">Crear contautu</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <string name="editGroupDescription">Editar grupu</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <string name="insertGroupDescription">Crear grupu</string>
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <string name="contactDetailAbout">Información</string>
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <string name="contactDetailUpdates">Actividá</string>
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <string name="searchHint">Guetar contautos</string>
+ <!-- Menu item used to view the details for a specific contact -->
+ <string name="menu_viewContact">Ver contautu</string>
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <string name="menu_addStar">Amestar a \"Favoritos\"</string>
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <string name="menu_removeStar">Desaniciar de \"Favoritos\"</string>
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <string name="description_action_menu_remove_star">Desaniciáu de favoritos</string>
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <string name="description_action_menu_add_star">Amestáu a favoritos</string>
+ <!-- Menu item used to edit a specific contact -->
+ <string name="menu_editContact">Editar</string>
+ <!-- Menu item used to delete a specific contact -->
+ <string name="menu_deleteContact">Desaniciar</string>
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <string name="menu_create_contact_shortcut">Amestar al escritoriu</string>
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <string name="menu_call">Llamar al contautu</string>
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <string name="menu_sendSMS">Unviar SMS al contautu</string>
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <string name="menu_splitAggregate">Dividir</string>
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <string name="menu_editGroup">Editar</string>
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <string name="menu_deleteGroup">Desaniciar</string>
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <string name="menu_new_contact_action_bar">Amestar contautu</string>
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <string name="menu_new_group_action_bar">Amestar grupu</string>
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <string name="splitConfirmation_title">¿Dividir contautu?</string>
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <string name="splitConfirmation">Esti contautu va dividise en dellos contautos.</string>
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <string name="titleJoinContactDataWith">Agrupar contautos</string>
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <string name="blurbJoinContactDataWith">Seleiciona\'l nome del contautu que quieras agrupar con <xliff:g id="NAME">%s</xliff:g>:</string>
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <string name="showAllContactsJoinItem">Amosar tolos contautos</string>
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <string name="separatorJoinAggregateSuggestions">Contautos suxeríos</string>
+ <!-- List separator for the Join Contact list: A-Z -->
+ <string name="separatorJoinAggregateAll">Tolos contautos</string>
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <string name="menu_set_ring_tone">Afitar tonu</string>
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <string name="menu_redirect_calls_to_vm">Al buzón de voz</string>
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <string name="readOnlyContactWarning">Nun pues desaniciar los contautos procedentes de les cuentes de namái-llectura, pero pues anubrilos nes llistes de contautos.</string>
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <string name="readOnlyContactDeleteConfirmation">Esti contautu contién información de delles cuentes. La información de les cuentes de namái-llectura va anubrise nes llistes de contautos, pero nun va desaniciase.</string>
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <string name="multipleContactDeleteConfirmation">Si se desanicia esti contautu, va desaniciase la información de delles cuentes.</string>
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <string name="deleteConfirmation">El contautu va desaniciase.</string>
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <string name="menu_discard">Descartar cambeos</string>
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <string name="invalidContactMessage">Esti contautu nun esiste.</string>
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <string name="createContactShortcutSuccessful">El widget de contautos amestóse al escritoriu.</string>
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <string name="pickerNewContactHeader">Crear contautu nuevu</string>
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <string name="pickerNewContactText">Crear contautu nuevu</string>
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <string-array name="otherLabels">
+ <!-- An organization associated with a contact -->
+ <item>Organización</item>
+ <!-- A note associated with a contact -->
+ <item>Nota</item>
+ </string-array>
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <string name="photoPickerNotFoundText" product="tablet">Nun hai nenguna imaxe disponible na tablet.</string>
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <string name="photoPickerNotFoundText" product="default">Nun hai nenguna imaxe disponible nel teléfonu.</string>
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <string name="attach_photo_dialog_title">Semeya de contautu</string>
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <string name="customLabelPickerTitle">Nome de campu personalizáu</string>
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <string name="send_to_voicemail_checkbox">Unviar llamaes direutamente al buzón de voz</string>
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <string name="removePhoto">Desaniciar semeya</string>
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <string name="noContacts">Nun hai nengún contautu.</string>
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <string name="noGroups">Nun hai grupos</string>
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <string name="noAccounts">Pa poder crear grupos, necesites una cuenta.</string>
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <string name="emptyGroup">Esti grupu ta baleru.</string>
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <string name="addPeopleToGroup">P\'amestar contautos al grupu, edítalu.</string>
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <string name="savingContact">Guardando contautu\u2026</string>
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <string name="contactSavedToast">Guardóse\'l contautu.</string>
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <string name="contactSavedErrorToast">Nun se guardaron los cambeos del contautu.</string>
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <string name="groupSavedToast">Grupu guardáu</string>
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <string name="groupSavedErrorToast">Nun se guardaron los cambeos del grupu.</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <string name="listTotalPhoneContactsZero">Nengún contautu con númberu de teléfonu</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <string name="listFoundAllContactsZero">Nun hai contautos.</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <string name="all_contacts_tab_label">Tolos contautos</string>
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <string name="favorites_tab_label">Favoritos</string>
+ <!-- Action string for calling back a number in the call log -->
+ <string name="callBack">Llamar</string>
+ <!-- Action string for calling a number in the call log again -->
+ <string name="callAgain">Volver a llamar</string>
+ <!-- Action string for returning a missed call in the call log -->
+ <string name="returnCall">Devolver llamada</string>
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <string name="add_contact_dlg_message_fmt">¿Quies amestar \"<xliff:g id="EMAIL">%s</xliff:g>\" a Contautos?</string>
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <string name="description_contact_photo">semeya de contautu</string>
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <string name="description_plus_button">más</string>
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <string name="exporting_contact_list_progress"><xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contautos</string>
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <string name="search_settings_description">Nomes de los tos contautos</string>
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <string name="quickcontact_missing_app">Nun se deteutó nenguna aplicación que pueda facer esta aición.</string>
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <string name="quickcontact_transparent_view_description">Toca pa volver a la pantalla anterior</string>
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <string name="quickcontact_add_phone_number">Amestar númberu de teléfonu</string>
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <string name="quickcontact_add_email">Amestar corréu-e</string>
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <string name="missing_app">Nun se deteutó nenguna aplicación que pueda facer esta aición.</string>
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <string name="menu_share">Compartir</string>
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <string name="menu_add_contact">Amestar a contautos</string>
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <string name="share_via">Compartir contautu a traviés de</string>
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <string name="dialog_new_group_account">Crear grupu en cuenta</string>
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <string name="audio_chat">Chat de voz</string>
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <string name="video_chat">Chat de videu</string>
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <string name="connections">Conexones</string>
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <string name="add_connection_button">Amestar conexón</string>
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <string name="recent" msgid="2062236709538790412">Reciente</string>
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <string name="recent_updates" msgid="2018245636796411442">Anovamientos recientes</string>
+ <!-- String describing which account type a contact came from when editing it -->
+ <string name="account_type_format">Contautu de <xliff:g id="SOURCE">%1$s</xliff:g></string>
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <string name="from_account_format"><xliff:g id="source" example="user@gmail.com">%1$s</xliff:g></string>
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <string name="contact_read_only">Nun pue editase dende l\'aplicación.</string>
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <string name="group_read_only">Nun pue editase nesti preséu.</string>
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <string name="take_photo">Facer una semeya</string>
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <string name="take_new_photo">Facer una semeya nueva</string>
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <string name="pick_photo">Escoyer semeya</string>
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <string name="pick_new_photo">Seleicionar semeya nueva</string>
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <string name="upgrade_in_progress">La llista de contautos ta anovándose.</string>
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <string name="search_results_searching">Guetando\u2026</string>
+ <!-- Label to display only selection in multiple picker -->
+ <string name="menu_display_selected">"Amosar seleicionaos"</string>
+ <!-- Label to display all recipients in multiple picker -->
+ <string name="menu_display_all">"Amosar toos"</string>
+ <!-- Label to select all contacts in multiple picker -->
+ <string name="menu_select_all">"Seleicionar too"</string>
+ <!-- Label to clear all selection in multiple picker -->
+ <string name="menu_select_none">"Desmarcalo too"</string>
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <string name="add_new_entry_for_section">Amestar nuevu</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <string name="add_organization">Amestar organización</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <string name="event_edit_field_hint_text">Data</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <string name="group_edit_field_hint_text">Nome del grupu</string>
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <string name="description_star">favoritos</string>
+ <!-- The title of the Edit-Contact screen -->
+ <string name="edit_contact">Editar contautu</string>
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <string name="aggregation_suggestion_join_dialog_message">¿Quies agrupar el contautu actual col contautu seleicionáu?</string>
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <string name="aggregation_suggestion_edit_dialog_message">¿Quies editar el contautu seleicionáu? Va copiase la información qu\'introduxeras hasta\'l momentu.</string>
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <string name="menu_copyContact">Copiar a los mios contautos</string>
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <string name="add_to_my_contacts">Amestar a Los mios contautos</string>
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <string name="contact_directory_description">Direutoriu <xliff:g id="TYPE">%1$s</xliff:g></string>
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <string name="list_filter_custom">Personalizar</string>
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <string name="activity_title_settings">Axustes</string>
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <string name="menu_settings" msgid="377929915873428211">Axustes</string>
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <string name="preference_displayOptions">Opciones de visualización</string>
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <string name="organization_company_and_title"><xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g></string>
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <string name="non_phone_caption">Númberu de teléfonu</string>
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <string name="non_phone_add_to_contacts">Amestar a contautos</string>
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <string name="activity_title_confirm_add_detail">Amestar al contautu</string>
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <string name="non_phone_close">Zarrar</string>
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <string name="widget_name_and_phonetic"><xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)</string>
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <string name="date_year_toggle">Introducir añu</string>
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <string name="social_widget_label">Contautu</string>
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <string name="social_widget_loading">Cargando\u2026</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_create_contact">Crear contautu nuevu</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_add_account">Aniciar sesión nuna cuenta</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_import_contacts">Importar contautos</string>
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <string name="create_group_dialog_title">Crear grupu nuevu</string>
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <string name="create_group_item_label">Crear grupu nuevu</string>
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <string name="delete_group_dialog_message">¿De xuru que quies desaniciar el grupu \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? Los contautos nun van desaniciase.</string>
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <string name="toast_join_with_empty_contact">P\'agrupar el contautu, tienes d\'introducir el nome del otru contautu.</string>
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <string name="copy_text">Copiar nel cartafueyu</string>
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <string name="set_default">Afitar como predetermináu</string>
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <string name="clear_default">Desaniciar predetermináu</string>
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <string name="toast_text_copied">Testu copiáu</string>
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <string name="cancel_confirmation_dialog_message">¿De xuru que quies descartar los cambeos?</string>
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <string name="call_type_and_date"><xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g></string>
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <string name="profile_display_name">Configurar el mio perfil</string>
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <string name="enter_contact_name">Escribi\'l nome de la persona</string>
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <string name="group_name_hint">Nome del grupu</string>
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <string name="local_profile_title">El mio perfil llocal</string>
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <string name="external_profile_title">El mio perfil de <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g></string>
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <string name="toast_displaying_all_contacts">Amosando tolos contautos</string>
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <string name="no_account_prompt">L\'aplicación Contautos funciona meyor con una cuenta de Google.\n\n\u2022 Consulta dende cualquier restolador web.\n\u2022 Fai copies de seguranza de los tos contautos de mou seguru.</string>
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <string name="generic_no_account_prompt">Caltén seguros los tos contautos, magar que pierdas el teléfonu: sincronízalos con un serviciu online.</string>
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <string name="generic_no_account_prompt_title">Amestar una cuenta</string>
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_zero_accounts">Nun va facese una copia de seguranza del contautu nuevu. ¿Quies amestar una cuenta pa facer copies de seguranza online de los tos contautos?</string>
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_one_account">El contautu nuevu va sincronizase con <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>.</string>
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_multiple_accounts">Pues sincronizar el to contautu nuevu con una de les siguientes cuentes. ¿Cuál quies usar?</string>
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <string name="contact_editor_title_new_contact">Amestar contautu nuevu</string>
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <string name="contact_editor_title_existing_contact">Editar contautu</string>
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <string name="keep_local">Guardar llocalmente</string>
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <string name="add_account">Amestar cuenta</string>
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <string name="add_new_account">Amestar una cuenta</string>
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <string name="menu_export_database">Esportar ficheros de base de datos</string>
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <string name="action_menu_add_new_contact_button">amestar contautu nuevu</string>
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <string name="expanding_entry_card_view_see_more">Ver más</string>
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <string name="expanding_entry_card_view_see_less">Ver menos</string>
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <string name="expanding_entry_card_view_see_all">Ver too</string>
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <string name="recent_card_title">Reciente</string>
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <string name="about_card_title">Tocante a</string>
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <string name="send_message">Unviar mensaxe</string>
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <string name="toast_making_personal_copy">Crear copia personal...</string>
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <string name="yesterday">Ayeri</string>
+ <string name="tomorrow">Mañana</string>
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <string name="today">Güei</string>
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <string name="today_at_time_fmt">"Güei a les <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <string name="tomorrow_at_time_fmt">"Mañana a les <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <string name="date_time_fmt">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <string name="untitled_event">(Eventu ensin títulu)</string>
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <string name="date_time_set">Afitar</string>
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <string name="header_im_entry">Chat</string>
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <string name="header_organization_entry">Organización</string>
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <string name="header_nickname_entry">Nomatu</string>
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <string name="header_note_entry">Nota</string>
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <string name="header_website_entry">Sitiu web</string>
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <string name="header_event_entry">Eventu</string>
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <string name="header_relation_entry">Rellación</string>
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <string name="content_description_directions">direiciones a llocalización</string>
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <string name="content_description_recent_call_type_incoming">entrante</string>
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <string name="content_description_recent_call_type_outgoing">saliente</string>
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <string name="content_description_recent_call_type_missed">perdíes</string>
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <string name="message_from_you_prefix">Tu: <xliff:g id="sms_body">%s</xliff:g></string>
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-az-rAZ/cm_plurals.xml b/res/values-az-rAZ/cm_plurals.xml
new file mode 100644
index 000000000..f81b4a816
--- /dev/null
+++ b/res/values-az-rAZ/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d şəxs seçildi</item>
+ <item quantity="other">%d şəxs seçildi</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d şəxs idxal ediləcək.</item>
+ <item quantity="other">%d şəxs idxal ediləcək.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d şəxs idxal edildi</item>
+ <item quantity="other">%d şəxs idxal edildi</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d şəxs silinəcək.</item>
+ <item quantity="other">%d şəxs silinəcək.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d şəxs bunu spam olaraq işarələdi</item>
+ <item quantity="other">%d şəxs bunu spam olaraq işarələdi</item>
+ </plurals>
+</resources>
diff --git a/res/values-az-rAZ/cm_strings.xml b/res/values-az-rAZ/cm_strings.xml
new file mode 100644
index 000000000..1e10f1900
--- /dev/null
+++ b/res/values-az-rAZ/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Seçilən şəxslər SIM kartda saxlanılmadı</string>
+ <string name="airplane_mode_on">Uçuş rejimi fəal olduqda SIM karta müraciət mümkün deyil</string>
+ <string name="number_anr_too_long">Nömrə çox uzundur</string>
+ <string name="email_address_too_long">E-poçt ünvanı çox uzundur</string>
+ <string name="sim_card_full">SIM kart dolub</string>
+ <string name="tag_too_long">Şəxs adı çox uzundur</string>
+ <string name="invalid_phone_number">Telefon nömrəsi etibarsızdır</string>
+ <string name="invalid_number_type">Nömrə növü etibarsızdır</string>
+ <string name="no_phone_number_or_email">Zəhmət olmasa telefon nömrəsi və ya e-poçt ünvanı daxil edin.</string>
+ <string name="memory_card_full">Şəxs saxlanılmadı, telefon yaddaşı dolub</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Qruplar</string>
+ <string name="menu_moveGroupMembers">Qrup üzvlərini köçür</string>
+ <string name="title_move_members">Üzvləri köçür</string>
+ <string name="message_move_members">Üzvlər köçürülür\u2026</string>
+ <string name="message_can_not_move_members">Üzvlər köçürülə bilmir</string>
+ <string name="edit_before_call">Zəngdən əvvəl nömrəyə düzəliş et</string>
+ <string name="menu_sendViaSMS">Şəxsi SMS ilə göndər</string>
+ <string name="select_all">Hamısı</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">SIM şəxslərini idxal et</string>
+ <string name="import_sim_contacts_message">SIM şəxsləri idxal edilir\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Şəxs idxal edilsin?</string>
+ <string name="import_finish">İdxal başa çatdı</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Şəxsləri sil</string>
+ <string name="delete_contacts_message">Şəxslər silinir\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Şəxsi sil?</string>
+ <string name="too_many_contacts_add_to_group"><xliff:g id="count">%d</xliff:g> \'dən çox şəxs əlavə etmək olmaz</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Yaddaş durumu</string>
+ <string name="memory_size">Cəmi:</string>
+ <string name="memory_used">İşlədilən:</string>
+ <string name="calculating_status_now">Durum hesablanır\u2026</string>
+ <string name="menu_copyTo"><xliff:g id="destination">%s</xliff:g> yerinə kopyala</string>
+ <string name="no_empty_email_in_usim">USIM şəxsinin mövcud e-poçt sahəsi yoxdur, mesaj kopyalana bilmir.</string>
+ <string name="voicemail">Səsli poçt</string>
+ <string name="select_call_title">Axtarış qeydlərini seç</string>
+ <string name="delete_call_title">Zəng qeydlərini sil</string>
+ <string name="delete_call_message">Zəng qeydləri silinir\u2026</string>
+ <string name="delete_call_alert">Seçilən zəng qeydləri silinsin?</string>
+ <string name="title_del_call">Sil</string>
+ <string name="powered_by_provider"><xliff:g id="provider">%s</xliff:g> tərəfindən dəstəklənir</string>
+</resources>
diff --git a/res/values-be/cm_plurals.xml b/res/values-be/cm_plurals.xml
new file mode 100644
index 000000000..3dda49e96
--- /dev/null
+++ b/res/values-be/cm_plurals.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d кантакт</item>
+ <item quantity="few">%d кантакта</item>
+ <item quantity="other">%d кантактаў</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">Будзе імпартаваны %d кантакт.</item>
+ <item quantity="few">Будзе імпартавана %d кантакта.</item>
+ <item quantity="other">Будзе імпартавана %d кантактаў.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">Імпартаваны %d кантакт</item>
+ <item quantity="few">Імпартавана %d кантакта</item>
+ <item quantity="other">Імпартавана %d кантактаў</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d кантакт будзе выдалены.</item>
+ <item quantity="few">%d кантакта будзе выдалена.</item>
+ <item quantity="other">%d кантактаў будзе выдалена.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d чалавек адзначыў як спам</item>
+ <item quantity="few">%d чалавека адзначылі як спам</item>
+ <item quantity="other">%d чалавек адзначылі як спам</item>
+ </plurals>
+</resources>
diff --git a/res/values-be/cm_strings.xml b/res/values-be/cm_strings.xml
new file mode 100644
index 000000000..7606ccd0c
--- /dev/null
+++ b/res/values-be/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Не атрымалася захаваць абраныя кантакты на SIM-картку</string>
+ <string name="airplane_mode_on">Каб атрымаць доступ да SIM-карткі, адключыце рэжым самалёту</string>
+ <string name="number_anr_too_long">Задоўгі нумар</string>
+ <string name="email_address_too_long">Задоўгі адрас электроннай пошты</string>
+ <string name="sim_card_full">SIM-картка запоўнена</string>
+ <string name="tag_too_long">Задоўгае імя кантакту</string>
+ <string name="invalid_phone_number">Няправільны нумар тэлефона</string>
+ <string name="invalid_number_type">Няправільны тып нумара</string>
+ <string name="no_phone_number_or_email">Калі ласка, увядзіце нумар тэлефону альбо адрас электроннай пошты.</string>
+ <string name="memory_card_full">Немагчыма захаваць кантакт, памяць прылады запоўнена</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Гурты</string>
+ <string name="menu_moveGroupMembers">Перасунуць удзельнікаў гурта</string>
+ <string name="title_move_members">Перасунуць кантакты</string>
+ <string name="message_move_members">Перасоўванне кантактаў\u2026</string>
+ <string name="message_can_not_move_members">Немагчыма перасунуць кантакты</string>
+ <string name="edit_before_call">Змяніць нумар і выклікаць</string>
+ <string name="menu_sendViaSMS">Даслаць кантакт па SMS</string>
+ <string name="select_all">Усё</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Імпартаваць кантакты SIM</string>
+ <string name="import_sim_contacts_message">Імпарт кантактаў SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Імпартаваць кантакт?</string>
+ <string name="import_finish">Імпартаванне скончана</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Выдаліць кантакты</string>
+ <string name="delete_contacts_message">Выдаленне кантактаў\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Выдаліць кантакт?</string>
+ <string name="too_many_contacts_add_to_group">Можна дадаць не больш за <xliff:g id="count">%d</xliff:g> кантактаў</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Стан памяці</string>
+ <string name="memory_size">Усяго:</string>
+ <string name="memory_used">Выкарыстоўваецца:</string>
+ <string name="calculating_status_now">Выконваецца падлік\u2026</string>
+ <string name="menu_copyTo">Капіяваць у <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Кантакт USIM не мае поля для электроннай пошты, не атрымоўваецца скапіяваць паведамленні.</string>
+ <string name="voicemail">Галасавая пошта</string>
+ <string name="select_call_title">Абярыце гісторыю тэлефанаванняў</string>
+ <string name="delete_call_title">Выдаліць гісторыю тэлефанаванняў</string>
+ <string name="delete_call_message">Выдаленне\u2026</string>
+ <string name="delete_call_alert">Выдаліць абраныя выклікі?</string>
+ <string name="title_del_call">Выдаліць</string>
+ <string name="powered_by_provider">На выснове <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
new file mode 100644
index 000000000..efa005dba
--- /dev/null
+++ b/res/values-be/strings.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <!-- The title bar when viewing the contact details activity -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <!-- Menu item used to view the details for a specific contact -->
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <!-- Menu item used to delete a specific contact -->
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <!-- List separator for the Join Contact list: A-Z -->
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <!-- Action string for calling a number in the call log again -->
+ <!-- Action string for returning a missed call in the call log -->
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <!-- String describing which account type a contact came from when editing it -->
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <!-- Label to display only selection in multiple picker -->
+ <!-- Label to display all recipients in multiple picker -->
+ <!-- Label to select all contacts in multiple picker -->
+ <!-- Label to clear all selection in multiple picker -->
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- The title of the Edit-Contact screen -->
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-bg/cm_plurals.xml b/res/values-bg/cm_plurals.xml
new file mode 100644
index 000000000..34280b512
--- /dev/null
+++ b/res/values-bg/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d избран</item>
+ <item quantity="other">%d избрани</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d контакт ще бъде импортиран.</item>
+ <item quantity="other">%d контакта ще бъдат импортирани.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d контакт е импортиран</item>
+ <item quantity="other">%d контакта са импортирани</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d контакт ще бъде изтрит.</item>
+ <item quantity="other">%d контакта ще бъдат изтрити.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d човек маркиран като спам</item>
+ <item quantity="other">%d човека маркирани като спам</item>
+ </plurals>
+</resources>
diff --git a/res/values-bg/cm_strings.xml b/res/values-bg/cm_strings.xml
new file mode 100644
index 000000000..d2b1995d1
--- /dev/null
+++ b/res/values-bg/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Избраните контакти не могат да бъдат записани в СИМ картата</string>
+ <string name="airplane_mode_on">СИМ картата не може да бъде достъпна, докато е активен самолетен режим</string>
+ <string name="number_anr_too_long">Номерът е твърде дълъг</string>
+ <string name="email_address_too_long">Имейл адресът е твърде дълъг</string>
+ <string name="sim_card_full">СИМ картата е пълна</string>
+ <string name="tag_too_long">Името на контакта е твърде дълго</string>
+ <string name="invalid_phone_number">Телефонният номер е невалиден</string>
+ <string name="invalid_number_type">Типът на номера е невалиден</string>
+ <string name="no_phone_number_or_email">Моля, въведете телефонен номер или имейл адрес.</string>
+ <string name="memory_card_full">Контактът не може да бъде записан - паметта на телефона е пълна</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Групи</string>
+ <string name="menu_moveGroupMembers">Преместване на членове от групата</string>
+ <string name="title_move_members">Премести членове</string>
+ <string name="message_move_members">Преместване на членове\u2026</string>
+ <string name="message_can_not_move_members">Не може да премества членове</string>
+ <string name="edit_before_call">Редактиране на номера преди повикване</string>
+ <string name="menu_sendViaSMS">Изпращане на контакта чрез SMS</string>
+ <string name="select_all">Всички</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Импортиране на контакти от СИМ карта</string>
+ <string name="import_sim_contacts_message">Импортиране на контакти от СИМ карта\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Да бъдат ли импортирани контактите?</string>
+ <string name="import_finish">Импортирането завърши</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Изтриване на контакти</string>
+ <string name="delete_contacts_message">Изтриване на контакти\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Да бъде ли изтрит контакта?</string>
+ <string name="too_many_contacts_add_to_group">Не може да добавите повече от <xliff:g id="count">%d</xliff:g> контакта</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Състояние на паметта</string>
+ <string name="memory_size">Общо:</string>
+ <string name="memory_used">Използвана:</string>
+ <string name="calculating_status_now">Изчисляване на състоянието\u2026</string>
+ <string name="menu_copyTo">Копиране в <xliff:g id="destination">%s </xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM контактите нямат поле за имейл. Съобщенията няма да бъдат копирани.</string>
+ <string name="voicemail">Гласова поща</string>
+ <string name="select_call_title">Избери регистрите с повикванията</string>
+ <string name="delete_call_title">Изтрии регистрите с повикванията</string>
+ <string name="delete_call_message">Изтриване на регистрите с повикванията\u2026</string>
+ <string name="delete_call_alert">Да изтрия ли регистрите с повикванията?</string>
+ <string name="title_del_call">Изтрий</string>
+ <string name="powered_by_provider">Осъществено от <xliff:g id="provider">%s </xliff:g></string>
+</resources>
diff --git a/res/values-bn-rBD/cm_plurals.xml b/res/values-bn-rBD/cm_plurals.xml
new file mode 100644
index 000000000..32dccf7c2
--- /dev/null
+++ b/res/values-bn-rBD/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d টি নির্বাচিত</item>
+ <item quantity="other">%d টি নির্বাচিত</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d টি যোগাযোগ আমদানি করা হবে।</item>
+ <item quantity="other">%d টি যোগাযোগ আমদানি করা হবে।</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d টি যোগাযোগ আমদানি করা হয়েছে</item>
+ <item quantity="other">%d টি যোগাযোগ আমদানি করা হয়েছে</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d টি যোগাযোগ মুছে ফেলা হবে।</item>
+ <item quantity="other">%d টি যোগাযোগ মুছে ফেলা হবে।</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d জন স্প্যাম হিসেবে চিহ্নিত</item>
+ <item quantity="other">%d জন স্প্যাম হিসেবে চিহ্নিত</item>
+ </plurals>
+</resources>
diff --git a/res/values-bn-rBD/cm_strings.xml b/res/values-bn-rBD/cm_strings.xml
new file mode 100644
index 000000000..52cb26eb7
--- /dev/null
+++ b/res/values-bn-rBD/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">যোগাযোগ আমদানি করবেন?</string>
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">যোগাযোগ মুছে ফেলতে চান?</string>
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-br-rFR/cm_strings.xml b/res/values-br-rFR/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-br-rFR/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-br-rFR/strings.xml b/res/values-br-rFR/strings.xml
new file mode 100644
index 000000000..efa005dba
--- /dev/null
+++ b/res/values-br-rFR/strings.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <!-- The title bar when viewing the contact details activity -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <!-- Menu item used to view the details for a specific contact -->
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <!-- Menu item used to delete a specific contact -->
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <!-- List separator for the Join Contact list: A-Z -->
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <!-- Action string for calling a number in the call log again -->
+ <!-- Action string for returning a missed call in the call log -->
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <!-- String describing which account type a contact came from when editing it -->
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <!-- Label to display only selection in multiple picker -->
+ <!-- Label to display all recipients in multiple picker -->
+ <!-- Label to select all contacts in multiple picker -->
+ <!-- Label to clear all selection in multiple picker -->
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- The title of the Edit-Contact screen -->
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-ca/cm_plurals.xml b/res/values-ca/cm_plurals.xml
new file mode 100644
index 000000000..a4f095fce
--- /dev/null
+++ b/res/values-ca/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d seleccionat</item>
+ <item quantity="other">%d seleccionats</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contacte serà importat.</item>
+ <item quantity="other">%d contactes seran importats.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contacte importat</item>
+ <item quantity="other">%d contactes importats</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contacte serà esborrat.</item>
+ <item quantity="other">%d contactes seran esborrats.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d persona marcada com a brossa</item>
+ <item quantity="other">%d persones marcades com a brossa</item>
+ </plurals>
+</resources>
diff --git a/res/values-ca/cm_strings.xml b/res/values-ca/cm_strings.xml
new file mode 100644
index 000000000..4b1722a4a
--- /dev/null
+++ b/res/values-ca/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">No s\'han pogut desar els contactes seleccionats a la targeta SIM</string>
+ <string name="airplane_mode_on">No es pot accedir a la targeta SIM mentre el mode avió està activat</string>
+ <string name="number_anr_too_long">El número és massa llarg</string>
+ <string name="email_address_too_long">L\'adreça de correu es massa llarga</string>
+ <string name="sim_card_full">La targeta SIM és plena</string>
+ <string name="tag_too_long">El nom del contacte és massa llarg</string>
+ <string name="invalid_phone_number">El número de telèfon no és vàlid</string>
+ <string name="invalid_number_type">El tipus de número no és vàlid</string>
+ <string name="no_phone_number_or_email">Si us plau, introdueix un número de telèfon o una adreça de correu electrònic.</string>
+ <string name="memory_card_full">No s\'ha pogut desar el contacte, la memòria del telèfon és plena</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grups</string>
+ <string name="menu_moveGroupMembers">Mou els membres del grup</string>
+ <string name="title_move_members">Mou els membres</string>
+ <string name="message_move_members">S\'estan movent els membres\u2026</string>
+ <string name="message_can_not_move_members">No s\'han pogut moure els membres</string>
+ <string name="edit_before_call">Edita el número abans de trucar</string>
+ <string name="menu_sendViaSMS">Envia contacte mitjançant SMS</string>
+ <string name="select_all">Tot</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importa contactes de la SIM</string>
+ <string name="import_sim_contacts_message">S\'estan Important els contactes de la SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Vols importar el contacte?</string>
+ <string name="import_finish">S\'ha finalitzat la importació</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Esborra contactes</string>
+ <string name="delete_contacts_message">S\'estan esborrant els contactes\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Vols esborrar el contacte?</string>
+ <string name="too_many_contacts_add_to_group">Només hi ha <xliff:g id="count">%d</xliff:g> contactes que puguin ser afegits</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Estat de la memòria</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Usats:</string>
+ <string name="calculating_status_now">S\'està calculant l\'estat\u2026</string>
+ <string name="menu_copyTo">Còpia a <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">El contacte USIM no té un camp de correu electrònic disponible, no es poden copiar els missatges.</string>
+ <string name="voicemail">Contestador</string>
+ <string name="select_call_title">Selecciona registres de trucades</string>
+ <string name="delete_call_title">Esborra els registres de trucades</string>
+ <string name="delete_call_message">S\'estan esborrant els registres de trucades\u2026</string>
+ <string name="delete_call_alert">Vols esborrar els registres de trucades seleccionats?</string>
+ <string name="title_del_call">Esborra</string>
+ <string name="powered_by_provider">Proveït per <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-cs/cm_plurals.xml b/res/values-cs/cm_plurals.xml
new file mode 100644
index 000000000..a5356721c
--- /dev/null
+++ b/res/values-cs/cm_plurals.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d vybraný</item>
+ <item quantity="few">%d vybrané</item>
+ <item quantity="other">%d vybraných</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">Bude importován %d kontakt.</item>
+ <item quantity="few">Budou importovány %d kontakty.</item>
+ <item quantity="other">Bude importováno %d kontaktů.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">Importován %d kontakt</item>
+ <item quantity="few">Importovány %d kontakty</item>
+ <item quantity="other">Importováno %d kontaktů</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">Bude smazán %d kontakt</item>
+ <item quantity="few">Budou smazány %d kontakty.</item>
+ <item quantity="other">Bude smazáno %d kontaktů.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d osoba toto označila jako spam</item>
+ <item quantity="few">%d osoby toto označili jako spam</item>
+ <item quantity="other">%d osob toto označilo jako spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-cs/cm_strings.xml b/res/values-cs/cm_strings.xml
new file mode 100644
index 000000000..1b3768cab
--- /dev/null
+++ b/res/values-cs/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Nelze uložit vybrané kontakty na SIM kartu</string>
+ <string name="airplane_mode_on">Při režimu letadlo není dostupná karta SIM</string>
+ <string name="number_anr_too_long">Číslo je moc dlouhé</string>
+ <string name="email_address_too_long">E-mailová adresa je moc dlouhá</string>
+ <string name="sim_card_full">SIM karta je plná</string>
+ <string name="tag_too_long">Jméno kontaktu je moc dlouhé</string>
+ <string name="invalid_phone_number">Telefonní číslo je neplatné</string>
+ <string name="invalid_number_type">Typ čísla je neplatný</string>
+ <string name="no_phone_number_or_email">Zadejte prosím telefonní číslo nebo e-mailovou adresu.</string>
+ <string name="memory_card_full">Kontakt nelze uložit, paměť telefonu je plná</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Skupiny</string>
+ <string name="menu_moveGroupMembers">Přesunout členy skupiny</string>
+ <string name="title_move_members">Přesunout členy</string>
+ <string name="message_move_members">Přesouvání členů\u2026</string>
+ <string name="message_can_not_move_members">Nelze přesunout členy</string>
+ <string name="edit_before_call">Upravit číslo před voláním</string>
+ <string name="menu_sendViaSMS">Odeslat kontakt pomocí SMS</string>
+ <string name="select_all">Vše</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importovat kontakty ze SIM karty</string>
+ <string name="import_sim_contacts_message">Importování kontaktů ze SIM karty\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importovat kontakt?</string>
+ <string name="import_finish">Import dokončen</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Odstranit kontakty</string>
+ <string name="delete_contacts_message">Odstraňují se kontakty\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Odstranit kontakt?</string>
+ <string name="too_many_contacts_add_to_group">Nelze přidat více než <xliff:g id="count">%d</xliff:g> kontaktů</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Stav paměti</string>
+ <string name="memory_size">Celkem:</string>
+ <string name="memory_used">Použito:</string>
+ <string name="calculating_status_now">Zjišťuje se stav\u2026</string>
+ <string name="menu_copyTo">Zkopírovat do <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Kontakty USIM nemají k dispozici e-mailové pole - nelze kopírovat zprávy.</string>
+ <string name="voicemail">Hlasová schránka</string>
+ <string name="select_call_title">Vyberte historii hovorů</string>
+ <string name="delete_call_title">Odstranit historii volání</string>
+ <string name="delete_call_message">Odstraňuje se historie volání\u2026</string>
+ <string name="delete_call_alert">Odstranit vybrané historie volání?</string>
+ <string name="title_del_call">Odstranit</string>
+ <string name="powered_by_provider">Využívá služby <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-cy/cm_strings.xml b/res/values-cy/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-cy/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-cy/strings.xml b/res/values-cy/strings.xml
new file mode 100644
index 000000000..efa005dba
--- /dev/null
+++ b/res/values-cy/strings.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <!-- The title bar when viewing the contact details activity -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <!-- Menu item used to view the details for a specific contact -->
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <!-- Menu item used to delete a specific contact -->
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <!-- List separator for the Join Contact list: A-Z -->
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <!-- Action string for calling a number in the call log again -->
+ <!-- Action string for returning a missed call in the call log -->
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <!-- String describing which account type a contact came from when editing it -->
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <!-- Label to display only selection in multiple picker -->
+ <!-- Label to display all recipients in multiple picker -->
+ <!-- Label to select all contacts in multiple picker -->
+ <!-- Label to clear all selection in multiple picker -->
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- The title of the Edit-Contact screen -->
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-da/cm_plurals.xml b/res/values-da/cm_plurals.xml
new file mode 100644
index 000000000..7172d625e
--- /dev/null
+++ b/res/values-da/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d valgt</item>
+ <item quantity="other">%d valgt</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d kontaktperson vil blive importeret.</item>
+ <item quantity="other">%d kontaktpersoner vil blive importeret.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kontakt importeret</item>
+ <item quantity="other">%d kontakter importeret</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d kontakt vil blive slettet.</item>
+ <item quantity="other">%d kontakter vil blive slettet.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d person markerede dette som spam</item>
+ <item quantity="other">%d personer markerede dette som spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-da/cm_strings.xml b/res/values-da/cm_strings.xml
new file mode 100644
index 000000000..dd71a2d95
--- /dev/null
+++ b/res/values-da/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Kunne ikke gemme de markerede kontakter på SIM-kortet</string>
+ <string name="airplane_mode_on">SIM-kortet kan ikke tilgås, mens flytilstand er aktiveret</string>
+ <string name="number_anr_too_long">Tallet er for stort</string>
+ <string name="email_address_too_long">E-mail-adresse er for lang</string>
+ <string name="sim_card_full">SIM-kort er fyldt</string>
+ <string name="tag_too_long">Kontaktnavn er for langt</string>
+ <string name="invalid_phone_number">Telefonnummer er ugyldigt</string>
+ <string name="invalid_number_type">Nummertype er ugyldig</string>
+ <string name="no_phone_number_or_email">Angiv telefonnummer eller e-mail-adresse.</string>
+ <string name="memory_card_full">Kontakt kunne ikke gemmes, telefonens hukommelse er fuld</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupper</string>
+ <string name="menu_moveGroupMembers">Flyt gruppemedlemmer</string>
+ <string name="title_move_members">Flyt medlemmer</string>
+ <string name="message_move_members">Flytter medlemmer\u2026</string>
+ <string name="message_can_not_move_members">Kan ikke flytte medlemmer</string>
+ <string name="edit_before_call">Redigér nummer før opkald</string>
+ <string name="menu_sendViaSMS">Send kontakt via SMS</string>
+ <string name="select_all">Alle</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importér SIM-kontakter</string>
+ <string name="import_sim_contacts_message">Importerer SIM-kontakter\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importér kontakt?</string>
+ <string name="import_finish">Import afsluttet</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Slet kontaktpersoner</string>
+ <string name="delete_contacts_message">Sletter kontaktpersoner\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Slet kontakt?</string>
+ <string name="too_many_contacts_add_to_group">Ikke flere end <xliff:g id="count">%d</xliff:g> kontakter kan tilføjes</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Hukommelsesstatus</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">I brug:</string>
+ <string name="calculating_status_now">Beregner status\u2026</string>
+ <string name="menu_copyTo">Kopier til <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM-kontakt har ikke et tilgængeligt E-mail-felt. Kan ikke kopiere beskeder.</string>
+ <string name="voicemail">Telefonsvarer</string>
+ <string name="select_call_title">Vælg opkaldslog</string>
+ <string name="delete_call_title">Slet opkaldslog</string>
+ <string name="delete_call_message">Sletter opkaldslog\u2026</string>
+ <string name="delete_call_alert">Slet valgte opkaldslog?</string>
+ <string name="title_del_call">Slet</string>
+ <string name="powered_by_provider">Drevet af <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-de/cm_plurals.xml b/res/values-de/cm_plurals.xml
new file mode 100644
index 000000000..c84ac16b8
--- /dev/null
+++ b/res/values-de/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d ausgewählt</item>
+ <item quantity="other">%d ausgewählt</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d Kontakt wird importiert.</item>
+ <item quantity="other">%d Kontakte werden importiert.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d Kontakt wurde importiert</item>
+ <item quantity="other">%d Kontakte wurden importiert</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d Kontakt wird gelöscht.</item>
+ <item quantity="other">%d Kontakte werden gelöscht.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">Von %d Person als Spam markiert</item>
+ <item quantity="other">Von %d Personen als Spam markiert</item>
+ </plurals>
+</resources>
diff --git a/res/values-de/cm_strings.xml b/res/values-de/cm_strings.xml
new file mode 100644
index 000000000..4a2c725ec
--- /dev/null
+++ b/res/values-de/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Die ausgewählten Kontakte konnten nicht auf der SIM-Karte gespeichert werden.</string>
+ <string name="airplane_mode_on">Bei aktiviertem Flugmodus kann nicht auf die SIM-Karte zugegriffen werden.</string>
+ <string name="number_anr_too_long">Nummer ist zu lang</string>
+ <string name="email_address_too_long">Die E-Mail-Adresse ist zu lang.</string>
+ <string name="sim_card_full">SIM-Karte ist voll</string>
+ <string name="tag_too_long">Der Kontaktname ist zu lang.</string>
+ <string name="invalid_phone_number">Telefonnummer ist ungültig</string>
+ <string name="invalid_number_type">Nummerntyp ist ungültig</string>
+ <string name="no_phone_number_or_email">Bitte Telefonnummer oder E-Mail-Adresse eingeben.</string>
+ <string name="memory_card_full">Der Kontakt konnte nicht gespeichert werden, da der Telefonspeicher voll ist.</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Gruppen</string>
+ <string name="menu_moveGroupMembers">Gruppenmitglieder verschieben</string>
+ <string name="title_move_members">Mitglieder verschieben</string>
+ <string name="message_move_members">Mitglieder werden verschoben\u2026</string>
+ <string name="message_can_not_move_members">Mitglieder können nicht verschoben werden.</string>
+ <string name="edit_before_call">Nummer vor Anruf bearbeiten</string>
+ <string name="menu_sendViaSMS">Kontakt per SMS senden</string>
+ <string name="select_all">Alle</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Kontakte von SIM-Karte importieren</string>
+ <string name="import_sim_contacts_message">SIM-Kontakte werden importiert\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Kontakt importieren?</string>
+ <string name="import_finish">Importieren abgeschlossen</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Kontakte löschen</string>
+ <string name="delete_contacts_message">Kontakte werden gelöscht\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Kontakt löschen?</string>
+ <string name="too_many_contacts_add_to_group">Es können maximal <xliff:g id="count">%d</xliff:g> Kontakte hinzugefügt werden.</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Speicherstatus</string>
+ <string name="memory_size">Gesamt:</string>
+ <string name="memory_used">Belegt:</string>
+ <string name="calculating_status_now">Status wird berechnet\u2026</string>
+ <string name="menu_copyTo">Nach <xliff:g id="destination">%s</xliff:g> kopieren</string>
+ <string name="no_empty_email_in_usim">Nachrichten können nicht kopiert werden, da der USIM-Kontakt nicht über ein E-Mail-Feld verfügt.</string>
+ <string name="voicemail">Sprachnachricht</string>
+ <string name="select_call_title">Anrufprotokolle auswählen</string>
+ <string name="delete_call_title">Anrufprotokolle löschen</string>
+ <string name="delete_call_message">Anrufprotokolle werden gelöscht\u2026</string>
+ <string name="delete_call_alert">Sollen die ausgewählten Anrufprotokolle gelöscht werden?</string>
+ <string name="title_del_call">Löschen</string>
+ <string name="powered_by_provider">Zur Verfügung gestellt von <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-el/cm_plurals.xml b/res/values-el/cm_plurals.xml
new file mode 100644
index 000000000..558fb4214
--- /dev/null
+++ b/res/values-el/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">Επιλέχθηκε %d</item>
+ <item quantity="other">Επιλέχθηκαν %d</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d επαφή θα εισαχθεί.</item>
+ <item quantity="other">%d επαφές θα εισαχθούν.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">Έγινε εισαγωγή %d επαφής</item>
+ <item quantity="other">Έγινε εισαγωγή %d επαφών</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d επαφή θα διαγραφεί.</item>
+ <item quantity="other">%d επαφές θα διαγραφούν.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d άτομο το χαρακτήρισε ως spam</item>
+ <item quantity="other">%d άτομα το χαρακτήρισαν ως spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-el/cm_strings.xml b/res/values-el/cm_strings.xml
new file mode 100644
index 000000000..d6b63806d
--- /dev/null
+++ b/res/values-el/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Δεν ήταν δυνατή η αποθήκευση των επιλεγμένων επαφών στην κάρτα SIM</string>
+ <string name="airplane_mode_on">Δεν είναι δυνατή η πρόσβαση της κάρτας SIM ενώ είναι ενεργή η λειτουργία πτήσης</string>
+ <string name="number_anr_too_long">Ο αριθμός είναι πολύ μεγάλος</string>
+ <string name="email_address_too_long">Η διεύθυνση ηλεκτρονικού ταχυδρομείου είναι πολύ μεγάλη</string>
+ <string name="sim_card_full">Η κάρτα SIM είναι γεμάτη</string>
+ <string name="tag_too_long">Το όνομα της επαφής είναι πολύ μεγάλο</string>
+ <string name="invalid_phone_number">Ο αριθμός τηλεφώνου δεν είναι έγκυρος</string>
+ <string name="invalid_number_type">Ο τύπος του αριθμού δεν είναι έγκυρος</string>
+ <string name="no_phone_number_or_email">Παρακαλώ εισάγετε έναν τηλεφωνικό αριθμό ή ηλεκτρονική διεύθυνση.</string>
+ <string name="memory_card_full">Δεν ήταν δυνατή η αποθήκευση της επαφής, η μνήμη του τηλεφώνου είναι πλήρης</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Ομάδες</string>
+ <string name="menu_moveGroupMembers">Μετακίνηση μελών ομάδας</string>
+ <string name="title_move_members">Μετακίνηση μελών</string>
+ <string name="message_move_members">Μετακίνηση μελών\u2026</string>
+ <string name="message_can_not_move_members">Δεν είναι δυνατή η μετακίνηση των μελών</string>
+ <string name="edit_before_call">Επεξεργασία αριθμού πριν την κλήση</string>
+ <string name="menu_sendViaSMS">Αποστολή επαφής μέσω SMS</string>
+ <string name="select_all">Όλες</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Εισαγωγή επαφών SIM</string>
+ <string name="import_sim_contacts_message">Εισαγωγή επαφών SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Εισαγωγή επαφής;</string>
+ <string name="import_finish">Η εισαγωγή ολοκληρώθηκε</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Διαγραφή επαφών</string>
+ <string name="delete_contacts_message">Διαγραφή επαφών\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Διαγραφή επαφής;</string>
+ <string name="too_many_contacts_add_to_group">Δεν είναι δυνατή η προσθήκη περισσότερων από <xliff:g id="count">%d</xliff:g> επαφών</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Κατάσταση μνήμης</string>
+ <string name="memory_size">Συνολικά:</string>
+ <string name="memory_used">Σε χρήση:</string>
+ <string name="calculating_status_now">Υπολογισμός κατάστασης\u2026</string>
+ <string name="menu_copyTo">Αντιγραφή σε <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Η επαφή USIM δεν έχει κανένα διαθέσιμο πεδίο ηλεκτρονικού ταχυδρομείου, δεν είναι δυνατή η αντιγραφή των μηνυμάτων.</string>
+ <string name="voicemail">Μήνυμα τηλεφωνητή</string>
+ <string name="select_call_title">Επιλογή αρχείων κλήσεων</string>
+ <string name="delete_call_title">Διαγραφή αρχείων κλήσεων</string>
+ <string name="delete_call_message">Διαγραφή αρχείων κλήσεων\u2026</string>
+ <string name="delete_call_alert">Διαγραφή των επιλεγμένων αρχείων κλήσεων;</string>
+ <string name="title_del_call">Διαγραφή</string>
+ <string name="powered_by_provider">Powered by <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-en-rAU/cm_plurals.xml b/res/values-en-rAU/cm_plurals.xml
new file mode 100644
index 000000000..2b3e42dea
--- /dev/null
+++ b/res/values-en-rAU/cm_plurals.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d selected</item>
+ <item quantity="other">%d selected</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contact will be imported.</item>
+ <item quantity="other">%d contacts will be imported.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contact imported</item>
+ <item quantity="other">%d contacts imported</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contact will be deleted.</item>
+ <item quantity="other">%d contacts will be deleted.</item>
+ </plurals>
+</resources>
diff --git a/res/values-en-rAU/cm_strings.xml b/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 000000000..ffa56c8fc
--- /dev/null
+++ b/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Could not save the selected contacts to the SIM card</string>
+ <string name="airplane_mode_on">SIM card cannot be accessed while aeroplane mode is enabled</string>
+ <string name="number_anr_too_long">Number is too long</string>
+ <string name="email_address_too_long">Email address is too long</string>
+ <string name="sim_card_full">SIM card is full</string>
+ <string name="tag_too_long">Contact name is too long</string>
+ <string name="invalid_phone_number">Phone number is invalid</string>
+ <string name="invalid_number_type">Number type is invalid</string>
+ <string name="no_phone_number_or_email">Please insert phone number or email address.</string>
+ <string name="memory_card_full">Contact could not be saved, phone memory is full</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Groups</string>
+ <string name="menu_moveGroupMembers">Move group members</string>
+ <string name="title_move_members">Move members</string>
+ <string name="message_move_members">Moving members\u2026</string>
+ <string name="message_can_not_move_members">Cannot move members</string>
+ <string name="edit_before_call">Edit number before call</string>
+ <string name="menu_sendViaSMS">Send contact via SMS</string>
+ <string name="select_all">All</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Import SIM contacts</string>
+ <string name="import_sim_contacts_message">Importing SIM contacts\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Import contact?</string>
+ <string name="import_finish">Import finished</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Delete contacts</string>
+ <string name="delete_contacts_message">Deleting contacts\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Delete contact?</string>
+ <string name="too_many_contacts_add_to_group">No more than <xliff:g id="count">%d</xliff:g> contacts can be added</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Memory status</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Used:</string>
+ <string name="calculating_status_now">Calculating status\u2026</string>
+ <string name="menu_copyTo">Copy to <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM contact does not have an available email field, unable to copy messages.</string>
+ <string name="voicemail">Voicemail</string>
+ <string name="select_call_title">Select call logs</string>
+ <string name="delete_call_title">Delete call logs</string>
+ <string name="delete_call_message">Deleting call logs\u2026</string>
+ <string name="delete_call_alert">Delete selected call logs?</string>
+ <string name="title_del_call">Delete</string>
+</resources>
diff --git a/res/values-en-rGB/cm_strings.xml b/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-en-rIN/cm_plurals.xml b/res/values-en-rIN/cm_plurals.xml
new file mode 100644
index 000000000..da35b50c6
--- /dev/null
+++ b/res/values-en-rIN/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d selected</item>
+ <item quantity="other">%d selected</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contact will be imported.</item>
+ <item quantity="other">%d contacts will be imported.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contact imported</item>
+ <item quantity="other">%d contacts imported</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contact will be deleted.</item>
+ <item quantity="other">%d contacts will be deleted.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d person marked this as spam</item>
+ <item quantity="other">%d person marked this as spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-en-rIN/cm_strings.xml b/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 000000000..986bc0193
--- /dev/null
+++ b/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Could not save the selected contacts to the SIM card</string>
+ <string name="airplane_mode_on">SIM card can not be accessed while airplane mode is enabled</string>
+ <string name="number_anr_too_long">Number is too long</string>
+ <string name="email_address_too_long">Email address is too long</string>
+ <string name="sim_card_full">SIM card is full</string>
+ <string name="tag_too_long">Contact name is too long</string>
+ <string name="invalid_phone_number">Phone number is invalid</string>
+ <string name="invalid_number_type">Number type is invalid</string>
+ <string name="no_phone_number_or_email">Please insert phone number or email address.</string>
+ <string name="memory_card_full">Contact could not be saved, phone memory is full</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Groups</string>
+ <string name="menu_moveGroupMembers">Move group members</string>
+ <string name="title_move_members">Move members</string>
+ <string name="message_move_members">Moving members\u2026</string>
+ <string name="message_can_not_move_members">Can not move members</string>
+ <string name="edit_before_call">Edit number before call</string>
+ <string name="menu_sendViaSMS">Send contact via SMS</string>
+ <string name="select_all">All</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Import SIM contacts</string>
+ <string name="import_sim_contacts_message">Importing SIM contacts\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Import contact?</string>
+ <string name="import_finish">Import finished</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Delete contacts</string>
+ <string name="delete_contacts_message">Deleting contacts\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Delete contact?</string>
+ <string name="too_many_contacts_add_to_group">No more than <xliff:g id="count">%d</xliff:g> contacts can be added</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Memory status</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Used:</string>
+ <string name="calculating_status_now">Calculating status\u2026</string>
+ <string name="menu_copyTo">Copy to <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM contact does not have an available email field, unable to copy messages.</string>
+ <string name="voicemail">Voicemail</string>
+ <string name="select_call_title">Select call logs</string>
+ <string name="delete_call_title">Delete call logs</string>
+ <string name="delete_call_message">Deleting call logs\u2026</string>
+ <string name="delete_call_alert">Delete selected call logs?</string>
+ <string name="title_del_call">Delete</string>
+ <string name="powered_by_provider">Powered by <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-en-rPT/cm_strings.xml b/res/values-en-rPT/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-en-rPT/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-en-rPT/strings.xml b/res/values-en-rPT/strings.xml
new file mode 100644
index 000000000..efa005dba
--- /dev/null
+++ b/res/values-en-rPT/strings.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <!-- The title bar when viewing the contact details activity -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <!-- Menu item used to view the details for a specific contact -->
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <!-- Menu item used to delete a specific contact -->
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <!-- List separator for the Join Contact list: A-Z -->
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <!-- Action string for calling a number in the call log again -->
+ <!-- Action string for returning a missed call in the call log -->
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <!-- String describing which account type a contact came from when editing it -->
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <!-- Label to display only selection in multiple picker -->
+ <!-- Label to display all recipients in multiple picker -->
+ <!-- Label to select all contacts in multiple picker -->
+ <!-- Label to clear all selection in multiple picker -->
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- The title of the Edit-Contact screen -->
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-eo/cm_plurals.xml b/res/values-eo/cm_plurals.xml
new file mode 100644
index 000000000..d34272d40
--- /dev/null
+++ b/res/values-eo/cm_plurals.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d elektita</item>
+ <item quantity="other">%d elektitaj</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d kontaktuloj estos importitaj.</item>
+ <item quantity="other">%d kontaktuloj estos importitaj.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kontaktuloj estis importitaj</item>
+ <item quantity="other">%d kontaktuloj estis importitaj</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d kontaktuloj estos forigitaj.</item>
+ <item quantity="other">%d kontaktuloj estos forigitaj.</item>
+ </plurals>
+</resources>
diff --git a/res/values-eo/cm_strings.xml b/res/values-eo/cm_strings.xml
new file mode 100644
index 000000000..8fe4cd6bd
--- /dev/null
+++ b/res/values-eo/cm_strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Ne sukcesis konservi la elektitajn kontaktulojn en la SD-karto</string>
+ <string name="airplane_mode_on">La SD-karto ne estas atingebla kiam avialila reĝimo estas ŝaltita</string>
+ <string name="number_anr_too_long">La nombro estas tro longa</string>
+ <string name="email_address_too_long">La retadreso estas tro longa</string>
+ <string name="sim_card_full">La SIM-karto estas plena</string>
+ <string name="tag_too_long">La nomo de la kontaktulo estas tro longa</string>
+ <string name="invalid_phone_number">La telefonnumero estas nevalida</string>
+ <string name="invalid_number_type">La nombro estas nevalida</string>
+ <string name="no_phone_number_or_email">Bonvolu tajpi telefonnumeron aŭ retadreson.</string>
+ <string name="memory_card_full">Ne sukcesis konservi la kontaktulon ĉar la telefon-memoro estas plena</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupoj</string>
+ <string name="menu_moveGroupMembers">Movi membrojn de la grupo</string>
+ <string name="title_move_members">Movi membrojn</string>
+ <string name="message_move_members">Movado de membroj\u2026</string>
+ <string name="message_can_not_move_members">Ne eblas movi membrojn</string>
+ <string name="edit_before_call">Redakti la numeron antaŭ ol alvoki</string>
+ <string name="menu_sendViaSMS">Sendi kontaktulon per SMS</string>
+ <string name="select_all">Ĉio</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importi SIM kontaktulojn</string>
+ <string name="import_sim_contacts_message">Importado de SIM kontaktuloj\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Ĉu importi kontaktulon?</string>
+ <string name="import_finish">Importado finita</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Forigi kontaktulojn</string>
+ <string name="delete_contacts_message">Forigado de kontaktuloj\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Ĉu forigi kontaktulojn?</string>
+ <string name="too_many_contacts_add_to_group">Ne eblas aldoni pli ol <xliff:g id="count">%d</xliff:g> kontaktuloj</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Memora stato</string>
+ <string name="memory_size">Sumo:</string>
+ <string name="memory_used">Uzata:</string>
+ <string name="calculating_status_now">Kalkulado de la stato\u2026</string>
+ <string name="menu_copyTo">Kopii al <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM-kontaktulo ne havas disponeblan retradresan kampon, neeblas kopii mesaĝojn.</string>
+ <string name="voicemail">Voĉa mesaĝilo</string>
+ <string name="select_call_title">Elekti ĉiujn vokajn protokolojn</string>
+ <string name="delete_call_title">Forigi ĉiujn vokajn protokolojn</string>
+ <string name="delete_call_message">Forigi vokajn protokolojn\u2026</string>
+ <string name="delete_call_alert">Ĉiu forigi elektitajn vokajn protokolojn?</string>
+ <string name="title_del_call">Foriga klavo</string>
+</resources>
diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml
new file mode 100644
index 000000000..efa005dba
--- /dev/null
+++ b/res/values-eo/strings.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <!-- The title bar when viewing the contact details activity -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <!-- Menu item used to view the details for a specific contact -->
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <!-- Menu item used to delete a specific contact -->
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <!-- List separator for the Join Contact list: A-Z -->
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <!-- Action string for calling a number in the call log again -->
+ <!-- Action string for returning a missed call in the call log -->
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <!-- String describing which account type a contact came from when editing it -->
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <!-- Label to display only selection in multiple picker -->
+ <!-- Label to display all recipients in multiple picker -->
+ <!-- Label to select all contacts in multiple picker -->
+ <!-- Label to clear all selection in multiple picker -->
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- The title of the Edit-Contact screen -->
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-es-rMX/cm_strings.xml b/res/values-es-rMX/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-es-rMX/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-es-rMX/strings.xml b/res/values-es-rMX/strings.xml
new file mode 100644
index 000000000..efa005dba
--- /dev/null
+++ b/res/values-es-rMX/strings.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <!-- The title bar when viewing the contact details activity -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <!-- Menu item used to view the details for a specific contact -->
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <!-- Menu item used to delete a specific contact -->
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <!-- List separator for the Join Contact list: A-Z -->
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <!-- Action string for calling a number in the call log again -->
+ <!-- Action string for returning a missed call in the call log -->
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <!-- String describing which account type a contact came from when editing it -->
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <!-- Label to display only selection in multiple picker -->
+ <!-- Label to display all recipients in multiple picker -->
+ <!-- Label to select all contacts in multiple picker -->
+ <!-- Label to clear all selection in multiple picker -->
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- The title of the Edit-Contact screen -->
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-es-rUS/cm_strings.xml b/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 000000000..6525311d3
--- /dev/null
+++ b/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">No se pudieron guardar los contactos seleccionados en la tarjeta SIM</string>
+ <string name="airplane_mode_on">No se puede acceder a la tarjeta SIM mientras esté habilitado el modo avión</string>
+ <string name="no_phone_number_or_email">Ingresa un número de teléfono o dirección de correo electrónico.</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+ <string name="no_empty_email_in_usim">El contacto USIM no tiene un campo de correo electrónico disponible, no se pueden copiar los mensajes.</string>
+ <string name="powered_by_provider">Con tecnología <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-es/cm_plurals.xml b/res/values-es/cm_plurals.xml
new file mode 100644
index 000000000..92a857550
--- /dev/null
+++ b/res/values-es/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d seleccionado</item>
+ <item quantity="other">%d seleccionados</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contacto será importado.</item>
+ <item quantity="other">%d contactos serán importados.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contacto importado</item>
+ <item quantity="other">%d contactos importados</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contacto será eliminado.</item>
+ <item quantity="other">%d contactos serán eliminados.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d persona marcó esto como spam</item>
+ <item quantity="other">%d personas marcaron esto como spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-es/cm_strings.xml b/res/values-es/cm_strings.xml
new file mode 100644
index 000000000..37d8e9475
--- /dev/null
+++ b/res/values-es/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">No se han podido guardar los contactos seleccionados en la tarjeta SIM</string>
+ <string name="airplane_mode_on">No se puede acceder a la tarjeta SIM mientras está activado el modo avión</string>
+ <string name="number_anr_too_long">El número es demasiado largo</string>
+ <string name="email_address_too_long">La dirección de correo electrónico es demasiado larga</string>
+ <string name="sim_card_full">La tarjeta SIM está llena</string>
+ <string name="tag_too_long">El nombre del contacto es demasiado largo</string>
+ <string name="invalid_phone_number">El número de teléfono no es válido</string>
+ <string name="invalid_number_type">El tipo de número no es válido</string>
+ <string name="no_phone_number_or_email">Por favor, introduce un número de teléfono o dirección de correo electrónico.</string>
+ <string name="memory_card_full">No se puede guardar el contacto. Memoria del teléfono llena</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupos</string>
+ <string name="menu_moveGroupMembers">Mover miembros del grupo</string>
+ <string name="title_move_members">Mover miembros</string>
+ <string name="message_move_members">Moviendo miembros\u2026</string>
+ <string name="message_can_not_move_members">No se puede mover a los miembros</string>
+ <string name="edit_before_call">Editar número antes de llamar</string>
+ <string name="menu_sendViaSMS">Enviar contacto vía SMS</string>
+ <string name="select_all">Todos</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importar contactos de SIM</string>
+ <string name="import_sim_contacts_message">Importando contactos de SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">¿Importar contacto?</string>
+ <string name="import_finish">Importación finalizada</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Eliminar contactos</string>
+ <string name="delete_contacts_message">Eliminando contactos\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">¿Eliminar contacto?</string>
+ <string name="too_many_contacts_add_to_group">No se pueden añadir más de <xliff:g id="count">%d</xliff:g> contactos</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Estado de la memoria</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Usado:</string>
+ <string name="calculating_status_now">Calculando estado\u2026</string>
+ <string name="menu_copyTo">Copiar a <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Contacto USIM no tiene un campo de correo electrónico disponible. No se pueden copiar los mensajes.</string>
+ <string name="voicemail">Buzón de voz</string>
+ <string name="select_call_title">Seleccionar registros de llamadas</string>
+ <string name="delete_call_title">Eliminar registros de llamadas</string>
+ <string name="delete_call_message">Eliminando registros de llamadas\u2026</string>
+ <string name="delete_call_alert">¿Eliminar registros de llamadas seleccionados?</string>
+ <string name="title_del_call">Eliminar</string>
+ <string name="powered_by_provider">Proporcionado por <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-et-rEE/cm_plurals.xml b/res/values-et-rEE/cm_plurals.xml
new file mode 100644
index 000000000..87d8a2841
--- /dev/null
+++ b/res/values-et-rEE/cm_plurals.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">valitud %d</item>
+ <item quantity="other">valitud %d</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d kontakt imporditakse.</item>
+ <item quantity="other">%d kontakti imporditakse.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kontakt imporditud</item>
+ <item quantity="other">%d kontakti imporditud</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d kontakt kustutatakse.</item>
+ <item quantity="other">%d kontakti kustutatakse.</item>
+ </plurals>
+</resources>
diff --git a/res/values-et-rEE/cm_strings.xml b/res/values-et-rEE/cm_strings.xml
new file mode 100644
index 000000000..f74259b21
--- /dev/null
+++ b/res/values-et-rEE/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Valitud kontakte ei saanud salvestada SIM kaardile</string>
+ <string name="airplane_mode_on">SIM-kaardile ei pääse juurde kui lennukirežiim on aktiivne</string>
+ <string name="number_anr_too_long">Number on liiga pikk</string>
+ <string name="email_address_too_long">E-posti aadress on liiga pikk</string>
+ <string name="sim_card_full">SIM-kaart on täis</string>
+ <string name="tag_too_long">Kontakti nimi on liiga pikk</string>
+ <string name="invalid_phone_number">Telefoninumber on lubamatu</string>
+ <string name="invalid_number_type">Numbri tüüp on vale</string>
+ <string name="no_phone_number_or_email">Sisestage telefoninumber või e-posti aadress.</string>
+ <string name="memory_card_full">Kontakti ei saa salvestada, telefoni mälu on täis</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupid</string>
+ <string name="menu_moveGroupMembers">Liiguta grupi liikmeid</string>
+ <string name="title_move_members">Liiguta liikmeid</string>
+ <string name="message_move_members">Liikmete liigutamine\u2026</string>
+ <string name="message_can_not_move_members">Ei saa liikmeid liigutada</string>
+ <string name="edit_before_call">Muuda numbrit enne helistamist</string>
+ <string name="menu_sendViaSMS">Saada kontakt SMS-iga</string>
+ <string name="select_all">Kõik</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Impordi SIM-kaardi kontaktid</string>
+ <string name="import_sim_contacts_message">SIM-kaardi kontaktide importimine</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Impordi kontakt?</string>
+ <string name="import_finish">Importimine lõpetatud</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Kontaktide kustutamine</string>
+ <string name="delete_contacts_message">Kontaktide kustutamine\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Kustuta kontakt?</string>
+ <string name="too_many_contacts_add_to_group">Enam kui <xliff:g id="count">%d </xliff:g> kontakti ei saa lisada</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Mälu olek</string>
+ <string name="memory_size">Kokku:</string>
+ <string name="memory_used">Kasutusel:</string>
+ <string name="calculating_status_now">Oleku arvutamine\u2026</string>
+ <string name="menu_copyTo">Asukohta <xliff:g id="destination"> %s </xliff:g> kopeerimine</string>
+ <string name="no_empty_email_in_usim">USIM kontaktil ei ole e-posti välja, ei saa sõnumeid kopeerida.</string>
+ <string name="voicemail">Kõnepost</string>
+ <string name="select_call_title">Valige kõnede ajalugu</string>
+ <string name="delete_call_title">Kustuta kõnede ajalugu</string>
+ <string name="delete_call_message">Kõnede ajaloo kustutamine\u2026</string>
+ <string name="delete_call_alert">Kustuta valitud kõnede ajalood?</string>
+ <string name="title_del_call">Kustuta</string>
+ <string name="powered_by_provider">Hoitakse töös <xliff:g id="provider">%s</xliff:g> poolt</string>
+</resources>
diff --git a/res/values-eu-rES/cm_plurals.xml b/res/values-eu-rES/cm_plurals.xml
new file mode 100644
index 000000000..a7d6fb568
--- /dev/null
+++ b/res/values-eu-rES/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d hautatuta</item>
+ <item quantity="other">%d hautatuta</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">Kontaktu %d inportatuko da.</item>
+ <item quantity="other">%d kontaktu inportatuko dira.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">Kontaktu %d inportatu da</item>
+ <item quantity="other">%d kontaktu inportatu dira</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">kontaktu %d ezabatuko da.</item>
+ <item quantity="other">%d kontaktu ezabatuko dira.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">Pertsona batek spam gisa markatu du hau</item>
+ <item quantity="other">%d pertsonek spam gisa markatu dute hau</item>
+ </plurals>
+</resources>
diff --git a/res/values-eu-rES/cm_strings.xml b/res/values-eu-rES/cm_strings.xml
new file mode 100644
index 000000000..5290e0e9b
--- /dev/null
+++ b/res/values-eu-rES/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Ezin izan dira SIM txartelean gorde hautatutako kontaktuak</string>
+ <string name="airplane_mode_on">Ezin da SIM txartela atzitu hegaldi moduan</string>
+ <string name="number_anr_too_long">Zenbakia luzeegia da</string>
+ <string name="email_address_too_long">Eposta helbidea luzeegia da</string>
+ <string name="sim_card_full">SIM txartela beteta dago</string>
+ <string name="tag_too_long">Kontaktuaren izena luzeegia da</string>
+ <string name="invalid_phone_number">Telefono zenbakia baliogabea da</string>
+ <string name="invalid_number_type">Zenbaki mota baliogabea da</string>
+ <string name="no_phone_number_or_email">Idatzi telefono zenbakia edo eposta helbidea.</string>
+ <string name="memory_card_full">Ezin izan da kontaktua gorde, telefonoaren memoria beteta dago</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Taldeak</string>
+ <string name="menu_moveGroupMembers">Mugitu taldekideak</string>
+ <string name="title_move_members">Mugitu kideak</string>
+ <string name="message_move_members">Kideak mugitzen\u2026</string>
+ <string name="message_can_not_move_members">Ezin dira kideak mugitu</string>
+ <string name="edit_before_call">Editatu zenbakia deitu aurretik</string>
+ <string name="menu_sendViaSMS">Bidali kontaktua SMS bidez</string>
+ <string name="select_all">Guztiak</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Inportatu SIM txarteleko kontaktuak</string>
+ <string name="import_sim_contacts_message">SIMeko kontaktuak inportatzen \u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Inportatu kontaktua?</string>
+ <string name="import_finish">Inportazioa burutu da</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Ezabatu kontaktuak</string>
+ <string name="delete_contacts_message">Kontaktuak ezabatzen \u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Ezabatu kontaktua?</string>
+ <string name="too_many_contacts_add_to_group">Ezin dira <xliff:g id="count">%d</xliff:g> kontaktu baino gehiago gehitu</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Memoriaren egoera</string>
+ <string name="memory_size">Guztira:</string>
+ <string name="memory_used">Erabilita:</string>
+ <string name="calculating_status_now">Egoera zenbatesten\u2026</string>
+ <string name="menu_copyTo">Kopiatu hona <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM kontaktuak ez du eposta eremurik eskuragarri, ezin dira mezuak kopiatu.</string>
+ <string name="voicemail">Ahots postontzia</string>
+ <string name="select_call_title">Aukeratu deien erregistroa</string>
+ <string name="delete_call_title">Ezabatu deien erregistroak</string>
+ <string name="delete_call_message">Deien erregistroa ezabatzen\u2026</string>
+ <string name="delete_call_alert">Ezabatu hautatutako deien erregistroak?</string>
+ <string name="title_del_call">Ezabatu</string>
+ <string name="powered_by_provider"><xliff:g id="provider">%s</xliff:g>k indartua</string>
+</resources>
diff --git a/res/values-fa/cm_plurals.xml b/res/values-fa/cm_plurals.xml
new file mode 100644
index 000000000..97875ae26
--- /dev/null
+++ b/res/values-fa/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="other">%d مورد انتخاب شد</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="other">%d مخاطب وارد خواهد شد.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="other">%d مخاطب وارد شد</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="other">%d مخاطب حذف خواهد شد.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="other">%d نفر این را به عنوان هرزنامه علامت‌گذاری کردند</item>
+ </plurals>
+</resources>
diff --git a/res/values-fa/cm_strings.xml b/res/values-fa/cm_strings.xml
new file mode 100644
index 000000000..c95d0beea
--- /dev/null
+++ b/res/values-fa/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">مخاطبین انتخاب شده را نمی توان در سیم کارت ذخیره کرد</string>
+ <string name="airplane_mode_on">سیم‌کارت در حالت پرواز قابل استفاده نیست</string>
+ <string name="number_anr_too_long">شماره بسیار طولانی است</string>
+ <string name="email_address_too_long">آدرس ایمیل بسیار طولانی است</string>
+ <string name="sim_card_full">سیم کارت پر است</string>
+ <string name="tag_too_long">نام مخاطب بسیار طولانی است</string>
+ <string name="invalid_phone_number">شماره تلفن نامعتبر است</string>
+ <string name="invalid_number_type">نوع شماره تلفن نامعتبر است</string>
+ <string name="no_phone_number_or_email">لطفا آدرس ایمیل یا شماره تلفن را وارد نمایید.</string>
+ <string name="memory_card_full">مخاطب ذخیره نمی‌شود، حافظه گوشی پر است</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">گروه‌ها</string>
+ <string name="menu_moveGroupMembers">انتقال اعضای گروه</string>
+ <string name="title_move_members">انتقال اعضا</string>
+ <string name="message_move_members">انتقال اعضا\u2026</string>
+ <string name="message_can_not_move_members">نمی‌توان اعضا را منتقل کرد</string>
+ <string name="edit_before_call">ویرایش شماره قبل از تماس</string>
+ <string name="menu_sendViaSMS">ارسال مخاطب از طریق پیامک</string>
+ <string name="select_all">همه</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">وارد کردن مخاطبین سیم کارت</string>
+ <string name="import_sim_contacts_message">وارد کردن مخاطبین سیم کارت\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">مخاطب وارد شود؟</string>
+ <string name="import_finish">وارد کردن تمام شد</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">حذف مخاطبین</string>
+ <string name="delete_contacts_message">حذف مخاطبین\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">مخاطب حذف شود؟</string>
+ <string name="too_many_contacts_add_to_group">نمی توان بیشتر از <xliff:g id="count">%d</xliff:g> مخاطب اضافه کرد</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">وضعیت حافظه</string>
+ <string name="memory_size">مجموع:</string>
+ <string name="memory_used">استفاده شده:</string>
+ <string name="calculating_status_now">محاسبه وضعیت\u2026</string>
+ <string name="menu_copyTo">کپی به <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">مخاطب یوسیم قسمت ایمیل را ندارد، نمی‌توان پیام‌ها را کپی کرد.</string>
+ <string name="voicemail">پست صوتی</string>
+ <string name="select_call_title">انتخاب گزارش‌های تماس</string>
+ <string name="delete_call_title">حذف گزارش‌های تماس</string>
+ <string name="delete_call_message">حذف گزارش‌های تماس\u2026</string>
+ <string name="delete_call_alert">گزارش‌های تماس انتخاب شده حذف شوند؟</string>
+ <string name="title_del_call">حذف</string>
+ <string name="powered_by_provider">برگرفته از <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-fi/cm_plurals.xml b/res/values-fi/cm_plurals.xml
new file mode 100644
index 000000000..eed26b3bb
--- /dev/null
+++ b/res/values-fi/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d valittu</item>
+ <item quantity="other">%d valittu</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d yhteystieto tuodaan.</item>
+ <item quantity="other">%d yhteystietoa tuodaan.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d yhteystieto tuotu</item>
+ <item quantity="other">%d yhteystietoa tuotu</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d yhteystieto poistetaan.</item>
+ <item quantity="other">%d yhteystietoa poistetaan.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d henkilö merkkasi tämän spam-puheluksi</item>
+ <item quantity="other">%d henkilöä merkkasi tämän spam-puheluksi</item>
+ </plurals>
+</resources>
diff --git a/res/values-fi/cm_strings.xml b/res/values-fi/cm_strings.xml
new file mode 100644
index 000000000..e873bfdb4
--- /dev/null
+++ b/res/values-fi/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Valittujen yhteystietojen tallennus SIM-kortille epäonnistui</string>
+ <string name="airplane_mode_on">SIM-korttia ei voida käyttää, kun lentokonetila on käytössä</string>
+ <string name="number_anr_too_long">Numero on liian pitkä</string>
+ <string name="email_address_too_long">Sähköpostiosoite on liian pitkä</string>
+ <string name="sim_card_full">SIM-kortti on täynnä</string>
+ <string name="tag_too_long">Yhteystiedon nimi on liian pitkä</string>
+ <string name="invalid_phone_number">Puhelinnumero on virheellinen</string>
+ <string name="invalid_number_type">Numerotyyppi on virheellinen</string>
+ <string name="no_phone_number_or_email">Anna puhelinnumero tai sähköpostiosoite.</string>
+ <string name="memory_card_full">Yhteystietoa ei voitu tallentaa, puhelimen muisti on täynnä</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Ryhmät</string>
+ <string name="menu_moveGroupMembers">Siirrä ryhmän jäsenet</string>
+ <string name="title_move_members">Siirrä jäsenet</string>
+ <string name="message_move_members">Siirretään jäseniä\u2026</string>
+ <string name="message_can_not_move_members">Jäseniä ei voida siirtää</string>
+ <string name="edit_before_call">Muokkaa numeroa ennen puhelua</string>
+ <string name="menu_sendViaSMS">Lähetä yhteystieto tekstiviestillä</string>
+ <string name="select_all">Kaikki</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Tuo SIM-yhteystietoja</string>
+ <string name="import_sim_contacts_message">Tuodaan SIM-yhteystietoja\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Tuo yhteystieto?</string>
+ <string name="import_finish">Tuonti valmis</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Poista yhteystietoja</string>
+ <string name="delete_contacts_message">Poistetaan yhteystietoja\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Poista yhteystieto?</string>
+ <string name="too_many_contacts_add_to_group">Enintään <xliff:g id="count">%d</xliff:g> yhteystietoa voidaan lisätä</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Muistin tila</string>
+ <string name="memory_size">Yhteensä:</string>
+ <string name="memory_used">Käytetty:</string>
+ <string name="calculating_status_now">Lasketaan tilaa\u2026</string>
+ <string name="menu_copyTo">Kopioi kohteeseen <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM-yhteystiedolla ei ole saatavilla sähköpostiosoitekenttää, viestejä ei voida kopioida.</string>
+ <string name="voicemail">Vastaaja</string>
+ <string name="select_call_title">Valitse puhelulokit</string>
+ <string name="delete_call_title">Poista puhelulokit</string>
+ <string name="delete_call_message">Poistetaan puhelulokeja\u2026</string>
+ <string name="delete_call_alert">Poista valitut puhelulokit?</string>
+ <string name="title_del_call">Poista</string>
+ <string name="powered_by_provider">Powered by <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-fil-rPH/cm_strings.xml b/res/values-fil-rPH/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-fil-rPH/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-fr-rCA/cm_strings.xml b/res/values-fr-rCA/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-fr-rCA/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-fr/cm_plurals.xml b/res/values-fr/cm_plurals.xml
new file mode 100644
index 000000000..afc046660
--- /dev/null
+++ b/res/values-fr/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d sélectionné</item>
+ <item quantity="other">%d sélectionnés</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contact sera importé.</item>
+ <item quantity="other">%d contacts seront importés.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contact importé</item>
+ <item quantity="other">%d contacts importés</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contact sera supprimé.</item>
+ <item quantity="other">%d contacts seront supprimés.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d personne a marqué ceci en tant que spam</item>
+ <item quantity="other">%d personnes ont marqué ceci en tant que spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-fr/cm_strings.xml b/res/values-fr/cm_strings.xml
new file mode 100644
index 000000000..eea623459
--- /dev/null
+++ b/res/values-fr/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Impossible d\'enregistrer les contacts sélectionnés sur la carte SIM</string>
+ <string name="airplane_mode_on">La carte SIM n\'est pas accessible lorsque le mode avion est activé</string>
+ <string name="number_anr_too_long">Numéro trop long</string>
+ <string name="email_address_too_long">Adresse e-mail trop longue</string>
+ <string name="sim_card_full">Carte SIM saturée</string>
+ <string name="tag_too_long">Nom du contact trop long</string>
+ <string name="invalid_phone_number">Le numéro de téléphone est incorrect</string>
+ <string name="invalid_number_type">Le type de numéro est incorrect</string>
+ <string name="no_phone_number_or_email">Veuillez entrer un numéro de téléphone ou une adresse e-mail.</string>
+ <string name="memory_card_full">Le contact n\'a pas pu être enregistré, la mémoire du téléphone est saturée</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Groupes</string>
+ <string name="menu_moveGroupMembers">Déplacer des membres du groupe</string>
+ <string name="title_move_members">Déplacer des membres</string>
+ <string name="message_move_members">Déplacement des membres\u2026</string>
+ <string name="message_can_not_move_members">Les membres ne peuvent pas être déplacés</string>
+ <string name="edit_before_call">Modifier le numéro avant l\'appel</string>
+ <string name="menu_sendViaSMS">Envoyer le contact par SMS</string>
+ <string name="select_all">Tous</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importer les contacts de la carte SIM</string>
+ <string name="import_sim_contacts_message">Importation des contacts de la SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importer le contact ?</string>
+ <string name="import_finish">Importation terminée</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Supprimer les contacts</string>
+ <string name="delete_contacts_message">Suppression des contacts\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Supprimer le contact ?</string>
+ <string name="too_many_contacts_add_to_group">Impossible d\'ajouter plus de <xliff:g id="count">%d</xliff:g> contacts</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">État de la mémoire</string>
+ <string name="memory_size">Total :</string>
+ <string name="memory_used">Utilisée :</string>
+ <string name="calculating_status_now">Calcul de l\'état\u2026</string>
+ <string name="menu_copyTo">Copier dans <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Un contact USIM n\'a pas de champ e-mail disponible, impossible de copier les messages.</string>
+ <string name="voicemail">Messagerie vocale</string>
+ <string name="select_call_title">Sélectionner les journaux d\'appels</string>
+ <string name="delete_call_title">Supprimer les journaux d\'appels</string>
+ <string name="delete_call_message">Suppression des journaux d\'appels\u2026</string>
+ <string name="delete_call_alert">Supprimer les journaux d\'appels sélectionnés ?</string>
+ <string name="title_del_call">Supprimer</string>
+ <string name="powered_by_provider">Proposé par <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-fy-rNL/cm_strings.xml b/res/values-fy-rNL/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-fy-rNL/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-fy-rNL/strings.xml b/res/values-fy-rNL/strings.xml
new file mode 100644
index 000000000..efa005dba
--- /dev/null
+++ b/res/values-fy-rNL/strings.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <!-- The title bar when viewing the contact details activity -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <!-- Menu item used to view the details for a specific contact -->
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <!-- Menu item used to delete a specific contact -->
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <!-- List separator for the Join Contact list: A-Z -->
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <!-- Action string for calling a number in the call log again -->
+ <!-- Action string for returning a missed call in the call log -->
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <!-- String describing which account type a contact came from when editing it -->
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <!-- Label to display only selection in multiple picker -->
+ <!-- Label to display all recipients in multiple picker -->
+ <!-- Label to select all contacts in multiple picker -->
+ <!-- Label to clear all selection in multiple picker -->
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- The title of the Edit-Contact screen -->
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-gd-rGB/cm_strings.xml b/res/values-gd-rGB/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-gd-rGB/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-gd-rGB/strings.xml b/res/values-gd-rGB/strings.xml
new file mode 100644
index 000000000..efa005dba
--- /dev/null
+++ b/res/values-gd-rGB/strings.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <!-- The title bar when viewing the contact details activity -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <!-- Menu item used to view the details for a specific contact -->
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <!-- Menu item used to delete a specific contact -->
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <!-- List separator for the Join Contact list: A-Z -->
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <!-- Action string for calling a number in the call log again -->
+ <!-- Action string for returning a missed call in the call log -->
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <!-- String describing which account type a contact came from when editing it -->
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <!-- Label to display only selection in multiple picker -->
+ <!-- Label to display all recipients in multiple picker -->
+ <!-- Label to select all contacts in multiple picker -->
+ <!-- Label to clear all selection in multiple picker -->
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- The title of the Edit-Contact screen -->
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-gl-rES/cm_plurals.xml b/res/values-gl-rES/cm_plurals.xml
new file mode 100644
index 000000000..1a5db5cb8
--- /dev/null
+++ b/res/values-gl-rES/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d seleccionado</item>
+ <item quantity="other">%d seleccionados</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">Importarase %d contacto.</item>
+ <item quantity="other">Importaranse %d contactos.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contacto importado</item>
+ <item quantity="other">%d contactos importados</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">Eliminarase %d contacto.</item>
+ <item quantity="other">Eliminaranse %d contactos.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d persoa marcou isto como lixo</item>
+ <item quantity="other">%d persoas marcaron isto como lixo</item>
+ </plurals>
+</resources>
diff --git a/res/values-gl-rES/cm_strings.xml b/res/values-gl-rES/cm_strings.xml
new file mode 100644
index 000000000..c40af45b4
--- /dev/null
+++ b/res/values-gl-rES/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Non foi posíbel gardar os contactos seleccionados na tarxeta SIM</string>
+ <string name="airplane_mode_on">Non é posíbel acceder á tarxeta SIM mentres estea activado o modo avión</string>
+ <string name="number_anr_too_long">O número é pongo de máis</string>
+ <string name="email_address_too_long">O enderezo de correo electrónico e moi longo</string>
+ <string name="sim_card_full">A tarxeta SIM está chea</string>
+ <string name="tag_too_long">O nome do contacto é moi longo</string>
+ <string name="invalid_phone_number">O número de teléfono non é correcto</string>
+ <string name="invalid_number_type">O tipo de número non é correcto</string>
+ <string name="no_phone_number_or_email">Escriba un número de teléfono ou un enderezo de correo.</string>
+ <string name="memory_card_full">Non se puido gardar o contacto, a memoria do móbil está chea</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupos</string>
+ <string name="menu_moveGroupMembers">Mover os membros do grupo</string>
+ <string name="title_move_members">Mover membros</string>
+ <string name="message_move_members">Mover membros\u2026</string>
+ <string name="message_can_not_move_members">Non se poden mover os membros</string>
+ <string name="edit_before_call">Editar o número antes de chamar</string>
+ <string name="menu_sendViaSMS">Enviar contacto vía SMS</string>
+ <string name="select_all">Todo</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importar contactos do SIM</string>
+ <string name="import_sim_contacts_message">Importando os contactos da SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importar o contacto?</string>
+ <string name="import_finish">Finalizou a importación</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Eliminar os contactos</string>
+ <string name="delete_contacts_message">Eliminando contactos\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Eliminar o contacto?</string>
+ <string name="too_many_contacts_add_to_group">Non se poden engadir máis de <xliff:g id="count">%d</xliff:g> contactos</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Estado da memoria</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Usado:</string>
+ <string name="calculating_status_now">Calculando o estado\u2026</string>
+ <string name="menu_copyTo">Copiar a <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">O contacto USIM non ten un campo de correo electrónico dispoñíbel, no se poden copiar as mensaxes.</string>
+ <string name="voicemail">Caixa de voz</string>
+ <string name="select_call_title">Seleccionar rexistros de chamadas</string>
+ <string name="delete_call_title">Eliminar os rexistros de chamadas</string>
+ <string name="delete_call_message">Eliminando os rexistros de chamadas\u2026</string>
+ <string name="delete_call_alert">Eliminar os rexistros de chamadas seleccionados?</string>
+ <string name="title_del_call">Eliminar</string>
+ <string name="powered_by_provider">Fornecido por <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-gu-rIN/cm_strings.xml b/res/values-gu-rIN/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-gu-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-hi/cm_plurals.xml b/res/values-hi/cm_plurals.xml
new file mode 100644
index 000000000..6eb0c3e74
--- /dev/null
+++ b/res/values-hi/cm_plurals.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d चयनित</item>
+ <item quantity="other">%d चयनित</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d संपर्क आयात किया जाएगा।</item>
+ <item quantity="other">%d संपर्क आयात किए जाएँगे।</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d संपर्क आयातित</item>
+ <item quantity="other">%d संपर्क आयातित</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d संपर्क हटाया जाएगा।</item>
+ <item quantity="other">%d संपर्क हटाए जाएँगे।</item>
+ </plurals>
+</resources>
diff --git a/res/values-hi/cm_strings.xml b/res/values-hi/cm_strings.xml
new file mode 100644
index 000000000..95e0b433d
--- /dev/null
+++ b/res/values-hi/cm_strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">चयनित संपर्कों को सिम कार्ड में सहेज नहीं सके</string>
+ <string name="airplane_mode_on">जब विमान मोड सक्षम हो, सिम कार्ड तक पहुँचना संभव नहीं है</string>
+ <string name="number_anr_too_long">संख्या बहुत लंबी है</string>
+ <string name="email_address_too_long">ईमेल पता बहुत लंबा है</string>
+ <string name="sim_card_full">सिम कार्ड भर चुका है</string>
+ <string name="tag_too_long">संपर्क नाम बहुत लंबा है</string>
+ <string name="invalid_phone_number">फ़ोन नंबर अमान्य है</string>
+ <string name="invalid_number_type">संख्या प्रकार अमान्य है</string>
+ <string name="no_phone_number_or_email">कृपया फ़ोन नंबर या ईमेल पता दर्ज करें।</string>
+ <string name="memory_card_full">संपर्क को सहेजा नहीं जा सका, फ़ोन स्मृति भर चुकी है</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">समूह</string>
+ <string name="menu_moveGroupMembers">समूह सदस्यों को स्थानांतरित करें</string>
+ <string name="title_move_members">सदस्यों को स्थानांतरित करें</string>
+ <string name="message_move_members">सदस्यों को स्थानांतरित करें\u2026</string>
+ <string name="message_can_not_move_members">सदस्यों को स्थानांतरित नहीं कर सकते</string>
+ <string name="edit_before_call">कॉल करने से पहले नंबर को संपादित करें</string>
+ <string name="menu_sendViaSMS">संपर्क एसएमएस से भेजें</string>
+ <string name="select_all">सब</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">सिम संपर्कों को आयात करें</string>
+ <string name="import_sim_contacts_message">सिम संपर्कों को आयात कर रहे हैं\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">संपर्क को आयात करें?</string>
+ <string name="import_finish">आयात पूर्ण</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">संपर्कों को हटाएँ</string>
+ <string name="delete_contacts_message">संपर्कों को हटा रहे हैं\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">संपर्क को हटा दें?</string>
+ <string name="too_many_contacts_add_to_group">केवल <xliff:g id="count">%d</xliff:g> संपर्क और जोड़े जा सकते हैं</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">स्मृति की स्थिति</string>
+ <string name="memory_size">कुल:</string>
+ <string name="memory_used">प्रयुक्त:</string>
+ <string name="calculating_status_now">स्थिति की गणना कर रहे हैं\u2026</string>
+ <string name="menu_copyTo"><xliff:g id="destination">%s</xliff:g> में कॉपी करें</string>
+ <string name="no_empty_email_in_usim">यूसिम संपर्क में ईमेल फ़ील्ड उपलब्ध नहीं है, संदेशों को कॉपी करने में असमर्थ।</string>
+ <string name="voicemail">ध्वनि डाक</string>
+ <string name="select_call_title">सभी लॉगों को चुनें</string>
+ <string name="delete_call_title">सभी लॉगों को हटाएँ</string>
+ <string name="delete_call_message">सभी लॉगों को हटा रहे हैं\u2026</string>
+ <string name="delete_call_alert">चयनित कॉल लॉगों को हटा दें?</string>
+ <string name="title_del_call">हटाएँ</string>
+</resources>
diff --git a/res/values-hr/cm_plurals.xml b/res/values-hr/cm_plurals.xml
new file mode 100644
index 000000000..85a86425d
--- /dev/null
+++ b/res/values-hr/cm_plurals.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d odabran</item>
+ <item quantity="few">%d odabrana</item>
+ <item quantity="other">%d odabrano</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d kontakt će biti uvezen.</item>
+ <item quantity="few">%d kontakt će biti uvezen.</item>
+ <item quantity="other">%d kontakata će biti uvezeno.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kontakt uvezen</item>
+ <item quantity="few">%d kontakt uvezen</item>
+ <item quantity="other">%d kontakata uvezeno</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d kontakt će biti izbrisan.</item>
+ <item quantity="few">%d kontakt će biti izbrisan.</item>
+ <item quantity="other">%d kontakata će biti izbrisano.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d osoba označena kao spam</item>
+ <item quantity="few">%d osoba označena kao spam</item>
+ <item quantity="other">%d osobe označene kao spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-hr/cm_strings.xml b/res/values-hr/cm_strings.xml
new file mode 100644
index 000000000..52d9ebe98
--- /dev/null
+++ b/res/values-hr/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Nije moguće spremiti odabrane kontakte na SIM karticu</string>
+ <string name="airplane_mode_on">Nije moguće pristupiti SIM kartici kada je uključen Zrakoplovni način</string>
+ <string name="number_anr_too_long">Broj je predug</string>
+ <string name="email_address_too_long">E-mail adresa je preduga</string>
+ <string name="sim_card_full">SIM kartica je puna</string>
+ <string name="tag_too_long">Ime kontakta je predugo</string>
+ <string name="invalid_phone_number">Telefonski broj nije ispravan</string>
+ <string name="invalid_number_type">Tip broja nije ispravan</string>
+ <string name="no_phone_number_or_email">Molimo unesite telefonski broj ili e-mail adresu.</string>
+ <string name="memory_card_full">Kontakt nije moguće spremiti, memorija telefona je puna</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupe</string>
+ <string name="menu_moveGroupMembers">Premjesti članove grupa</string>
+ <string name="title_move_members">Premjesti članove</string>
+ <string name="message_move_members">Premještam članove\u2026</string>
+ <string name="message_can_not_move_members">Ne mogu premjestiti članove</string>
+ <string name="edit_before_call">Uredi broj prije poziva</string>
+ <string name="menu_sendViaSMS">Pošalji kontakt putem SMS-a</string>
+ <string name="select_all">Svi pozivi</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Uvezi SIM kontakte</string>
+ <string name="import_sim_contacts_message">Uvozim SIM kontakte\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Želite li uvesti kontakte?</string>
+ <string name="import_finish">Uvoz je dovršen</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Izbriši kontakte</string>
+ <string name="delete_contacts_message">Brišem kontakte\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Izbriši kontakt?</string>
+ <string name="too_many_contacts_add_to_group">Nije moguće dodati više od <xliff:g id="count">%d</xliff:g> kontakata</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Stanje memorije</string>
+ <string name="memory_size">Ukupno:</string>
+ <string name="memory_used">Iskorišteno:</string>
+ <string name="calculating_status_now">Računam stanje\u2026</string>
+ <string name="menu_copyTo">Kopiraj u <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM kontakt nema dostupno e-mail polje, kopiranje poruka nije moguće.</string>
+ <string name="voicemail">Glasovna pošta</string>
+ <string name="select_call_title">Odaberi popis poziva</string>
+ <string name="delete_call_title">Izbriši zapise poziva</string>
+ <string name="delete_call_message">Brišem zapise poziva\u2026</string>
+ <string name="delete_call_alert">Želite li izbrisati odabrane zapise poziva?</string>
+ <string name="title_del_call">Obriši</string>
+ <string name="powered_by_provider">Powered by <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-hu/cm_plurals.xml b/res/values-hu/cm_plurals.xml
new file mode 100644
index 000000000..75f0c7bb2
--- /dev/null
+++ b/res/values-hu/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d kiválasztva</item>
+ <item quantity="other">%d kiválasztva</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d névjegy lesz importálva.</item>
+ <item quantity="other">%d névjegy lesz importálva.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d névjegy importálva</item>
+ <item quantity="other">%d névjegy importálva</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d névjegy törölve lesz.</item>
+ <item quantity="other">%d névjegy törölve lesz.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d személy jelölte ezt levélszemétként</item>
+ <item quantity="other">%d személy jelölte ezt levélszemétként</item>
+ </plurals>
+</resources>
diff --git a/res/values-hu/cm_strings.xml b/res/values-hu/cm_strings.xml
new file mode 100644
index 000000000..69c445df3
--- /dev/null
+++ b/res/values-hu/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Nem lehet elmenteni a kiválasztott névjegyeket a SIM-kártyára</string>
+ <string name="airplane_mode_on">A SIM-kártya nem érhető el, míg a repülőgép üzemmód engedélyezve van</string>
+ <string name="number_anr_too_long">A szám túl hosszú</string>
+ <string name="email_address_too_long">Az e-mail cím túl hosszú</string>
+ <string name="sim_card_full">SIM-kártya megtelt</string>
+ <string name="tag_too_long">A névjegynél megadott név túl hosszú</string>
+ <string name="invalid_phone_number">Érvénytelen telefonszám</string>
+ <string name="invalid_number_type">Érvénytelen szám-típus</string>
+ <string name="no_phone_number_or_email">Kérjük, adjon meg telefonszámot vagy e-mail címet.</string>
+ <string name="memory_card_full">A névjegyet nem lehet menteni, a telefon memóriája megtelt</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Csoportok</string>
+ <string name="menu_moveGroupMembers">Csoport tagjainak áthelyezése</string>
+ <string name="title_move_members">Tagok áthelyezése</string>
+ <string name="message_move_members">Tagok áthelyezése\u2026</string>
+ <string name="message_can_not_move_members">Nem lehet áthelyezni a tagokat</string>
+ <string name="edit_before_call">Szám szerkesztése hívás előtt</string>
+ <string name="menu_sendViaSMS">Névjegy küldése SMS-ben</string>
+ <string name="select_all">Mind</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">SIM névjegyek importálása</string>
+ <string name="import_sim_contacts_message">SIM névjegyek importálása\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importálja a névjegyet?</string>
+ <string name="import_finish">Importálás befejeződött</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Névjegyek törlése</string>
+ <string name="delete_contacts_message">Névjegyek törlése\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Törli a névjegyet?</string>
+ <string name="too_many_contacts_add_to_group"><xliff:g id="count">%d</xliff:g> névjegynél több nem adható hozzá</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Memória állapota</string>
+ <string name="memory_size">Teljes:</string>
+ <string name="memory_used">Foglalt:</string>
+ <string name="calculating_status_now">Állapot számítása\u2026</string>
+ <string name="menu_copyTo">Másolás ide: <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Az USIM kapcsolat nem rendelkezik e-mail címmel, nem lehet másolni az üzeneteket.</string>
+ <string name="voicemail">Hangposta</string>
+ <string name="select_call_title">Hívásnaplók kiválasztása</string>
+ <string name="delete_call_title">Hívásnaplók törlése</string>
+ <string name="delete_call_message">Hívásnaplók törlése\u2026</string>
+ <string name="delete_call_alert">Kijelölt hívásnaplók törlése?</string>
+ <string name="title_del_call">Törlés</string>
+ <string name="powered_by_provider"><xliff:g id="provider">%s</xliff:g> üzemeltetésével</string>
+</resources>
diff --git a/res/values-hy-rAM/cm_strings.xml b/res/values-hy-rAM/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-hy-rAM/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-in/cm_plurals.xml b/res/values-in/cm_plurals.xml
new file mode 100644
index 000000000..deca6f8d1
--- /dev/null
+++ b/res/values-in/cm_plurals.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="other">%d dipilih</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="other">%d kontak akan diimpor.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="other">%d kontak diimpor</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="other">%d kontak akan dihapus.</item>
+ </plurals>
+</resources>
diff --git a/res/values-in/cm_strings.xml b/res/values-in/cm_strings.xml
new file mode 100644
index 000000000..e669548f1
--- /dev/null
+++ b/res/values-in/cm_strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Tidak dapat menyimpan kontak yang dipilih ke kartu SIM</string>
+ <string name="airplane_mode_on">Kartu SIM tidak dapat diakses saat mode pesawat diaktifkan</string>
+ <string name="number_anr_too_long">Nomor terlalu panjang</string>
+ <string name="email_address_too_long">Alamat email terlalu panjang</string>
+ <string name="sim_card_full">Kartu SIM penuh</string>
+ <string name="tag_too_long">Nama kontak terlalu panjang</string>
+ <string name="invalid_phone_number">Nomor telepon tidak valid</string>
+ <string name="invalid_number_type">Jenis nomor tidak valid</string>
+ <string name="no_phone_number_or_email">Harap masukkan nomor telepon atau alamat email.</string>
+ <string name="memory_card_full">Kontak tidak bisa disimpan, memori telepon penuh</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Kelompok</string>
+ <string name="menu_moveGroupMembers">Pindahkan anggota kelompok</string>
+ <string name="title_move_members">Pindahkan anggota</string>
+ <string name="message_move_members">Memindahkan anggota\u2026</string>
+ <string name="message_can_not_move_members">Tidak dapat memindahkan anggota</string>
+ <string name="edit_before_call">Edit nomor sebelum panggilan</string>
+ <string name="menu_sendViaSMS">Kirim kontak melalui SMS</string>
+ <string name="select_all">Semua</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Mengimpor kontak SIM</string>
+ <string name="import_sim_contacts_message">Mengimpor kontak SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Impor kontak?</string>
+ <string name="import_finish">Impor selesai</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Hapus kontak</string>
+ <string name="delete_contacts_message">Menghapus kontak\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Hapus kontak?</string>
+ <string name="too_many_contacts_add_to_group">Tidak lebih dari <xliff:g id="count">%d</xliff:g> kontak dapat ditambahkan</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Status memori</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Digunakan:</string>
+ <string name="calculating_status_now">Menghitung status\u2026</string>
+ <string name="menu_copyTo">Salin ke <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Kontak USIM tidak memiliki bidang email yang tersedia, tidak dapat menyalin pesan.</string>
+ <string name="voicemail">Pesan suara</string>
+ <string name="select_call_title">Pilih log panggilan</string>
+ <string name="delete_call_title">Hapus log panggilan</string>
+ <string name="delete_call_message">Menghapus log panggilan\u2026</string>
+ <string name="delete_call_alert">Hapus log panggilan yang dipilih?</string>
+ <string name="title_del_call">Hapus</string>
+</resources>
diff --git a/res/values-is-rIS/cm_strings.xml b/res/values-is-rIS/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-is-rIS/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-it/cm_plurals.xml b/res/values-it/cm_plurals.xml
new file mode 100644
index 000000000..316535f9e
--- /dev/null
+++ b/res/values-it/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d selezionato</item>
+ <item quantity="other">%d selezionati</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contatto verrà importato.</item>
+ <item quantity="other">%d contatti verranno importati.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contatto importato</item>
+ <item quantity="other">%d contatti importati</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contatto verrà eliminato.</item>
+ <item quantity="other">%d contatti verranno eliminati.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d persona ha segnato questo come indesiderato</item>
+ <item quantity="other">%d persone hanno segnato questo come indesiderato</item>
+ </plurals>
+</resources>
diff --git a/res/values-it/cm_strings.xml b/res/values-it/cm_strings.xml
new file mode 100644
index 000000000..bf7f43383
--- /dev/null
+++ b/res/values-it/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Impossibile salvare i contatti selezionati sulla scheda SIM</string>
+ <string name="airplane_mode_on">Impossibile accedere alla SIM quando la modalità aereo è attiva</string>
+ <string name="number_anr_too_long">Numero troppo lungo</string>
+ <string name="email_address_too_long">Indirizzo email troppo lungo</string>
+ <string name="sim_card_full">Scheda SIM piena</string>
+ <string name="tag_too_long">Nome del contatto troppo lungo</string>
+ <string name="invalid_phone_number">Numero di telefono non valido</string>
+ <string name="invalid_number_type">Tipo di numero non valido</string>
+ <string name="no_phone_number_or_email">Inserisci un numero di telefono o un indirizzo email.</string>
+ <string name="memory_card_full">Impossibile salvare il contatto, la memoria è piena</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Gruppi</string>
+ <string name="menu_moveGroupMembers">Sposta i membri del gruppo</string>
+ <string name="title_move_members">Sposta membri</string>
+ <string name="message_move_members">Spostamento membri\u2026</string>
+ <string name="message_can_not_move_members">Impossibile spostare i membri</string>
+ <string name="edit_before_call">Modifica il numero prima di chiamare</string>
+ <string name="menu_sendViaSMS">Invia contatto con SMS</string>
+ <string name="select_all">Tutti</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importa contatti SIM</string>
+ <string name="import_sim_contacts_message">Importazione contatti SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importare contatto?</string>
+ <string name="import_finish">Importazione completata</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Elimina contatti</string>
+ <string name="delete_contacts_message">Eliminando contatti\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Eliminare il contatto?</string>
+ <string name="too_many_contacts_add_to_group">Non possono essere aggiunti più di <xliff:g id="count">%d</xliff:g> contatti</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Stato memoria</string>
+ <string name="memory_size">Totale:</string>
+ <string name="memory_used">Usato:</string>
+ <string name="calculating_status_now">Calcolo stato\u2026</string>
+ <string name="menu_copyTo">Copia in <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Il contatto USIM non ha un campo indirizzo email disponibile, impossibile copiare i messaggi.</string>
+ <string name="voicemail">Segreteria telefonica</string>
+ <string name="select_call_title">Seleziona registri chiamate</string>
+ <string name="delete_call_title">Elimina registri chiamate</string>
+ <string name="delete_call_message">Eliminazione dei registri chiamate\u2026</string>
+ <string name="delete_call_alert">Eliminare i registri chiamate selezionati?</string>
+ <string name="title_del_call">Elimina</string>
+ <string name="powered_by_provider">Offerto da <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-iw/cm_plurals.xml b/res/values-iw/cm_plurals.xml
new file mode 100644
index 000000000..6452934c2
--- /dev/null
+++ b/res/values-iw/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d נבחר</item>
+ <item quantity="other">%d נבחרו</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">איש קשר %d ייובא.</item>
+ <item quantity="other">%d אנשי קשר ייובאו.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">איש קשר %d יובא</item>
+ <item quantity="other">%d אנשי קשר יובאו</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">איש קשר %d יימחק.</item>
+ <item quantity="other">%d אנשי קשר יימחקו.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">אדם %d סימן את זה כספאם</item>
+ <item quantity="other">%d אנשים סימנו את זה כספאם</item>
+ </plurals>
+</resources>
diff --git a/res/values-iw/cm_strings.xml b/res/values-iw/cm_strings.xml
new file mode 100644
index 000000000..623902520
--- /dev/null
+++ b/res/values-iw/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">לא ניתן היה לשמור את אנשי הקשר לכרטיס ה-SIM</string>
+ <string name="airplane_mode_on">לא ניתן לגשת לכרטיס ה-SIM כאשר מצב טיסה מופעל</string>
+ <string name="number_anr_too_long">המספר ארוך מדי</string>
+ <string name="email_address_too_long">כתובת הדוא\"ל ארוכה מדי</string>
+ <string name="sim_card_full">כרטיס ה-SIM מלא</string>
+ <string name="tag_too_long">שם איש הקשר ארוך מדי</string>
+ <string name="invalid_phone_number">מספר הטלפון אינו חוקי</string>
+ <string name="invalid_number_type">סוג המספר אינו חוקי</string>
+ <string name="no_phone_number_or_email">אנא הכנס מספר טלפון או כתובת דוא\"ל.</string>
+ <string name="memory_card_full">לא ניתן לשמור את איש הקשר, זיכרון המכשיר מלא</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">קבוצות</string>
+ <string name="menu_moveGroupMembers">העבר חברי קבוצה</string>
+ <string name="title_move_members">העבר חברים</string>
+ <string name="message_move_members">מעביר חברים\u2026</string>
+ <string name="message_can_not_move_members">לא ניתן להעביר חברים</string>
+ <string name="edit_before_call">ערוך מספר לפני השיחה</string>
+ <string name="menu_sendViaSMS">שלח איש קשר באמצעות SMS</string>
+ <string name="select_all">הכל</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">ייבא אנשי קשר מה-SIM</string>
+ <string name="import_sim_contacts_message">מייבא אנשי קשר מה-SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">לייבא אנשי קשר?</string>
+ <string name="import_finish">הייבוא הסתיים</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">מחק אנשי קשר</string>
+ <string name="delete_contacts_message">מוחק אנשי קשר\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">למחוק איש קשר?</string>
+ <string name="too_many_contacts_add_to_group">לא ניתן להוסיף יותר מ-<xliff:g id="count">%d</xliff:g> אנשי קשר</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">מצב הזיכרון</string>
+ <string name="memory_size">סך הכל:</string>
+ <string name="memory_used">בשימוש:</string>
+ <string name="calculating_status_now">מחשב מצב/u2026</string>
+ <string name="menu_copyTo">העתק אל <xliff:g id="destination"> %s </xliff:g></string>
+ <string name="no_empty_email_in_usim">לאיש הקשר בכרטיס USIM אין שדה דוא\"ל זמין. לא ניתן להעתיק את ההודעה.</string>
+ <string name="voicemail">תא קולי</string>
+ <string name="select_call_title">בחר רישומי שיחות</string>
+ <string name="delete_call_title">מחק רישומי שיחות</string>
+ <string name="delete_call_message">מוחק רישומי שיחות\u2026</string>
+ <string name="delete_call_alert">האם למחוק את רישומי השיחות שנבחרו?</string>
+ <string name="title_del_call">מחק</string>
+ <string name="powered_by_provider">מופעל על-ידי <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-ja/cm_plurals.xml b/res/values-ja/cm_plurals.xml
new file mode 100644
index 000000000..2110254b0
--- /dev/null
+++ b/res/values-ja/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="other">%d件を選択しています</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="other">%d件の連絡先がインポートされます。</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="other">%d件の連絡先をインポートしました</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="other">%d件の連絡先が削除されます。</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="other">%d人がこの連絡先をスパムとしてマークしました</item>
+ </plurals>
+</resources>
diff --git a/res/values-ja/cm_strings.xml b/res/values-ja/cm_strings.xml
new file mode 100644
index 000000000..7eb544596
--- /dev/null
+++ b/res/values-ja/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">選択した連絡先をSIMに保存できませんでした</string>
+ <string name="airplane_mode_on">機内モードが有効になっている間はSIMカードにアクセスできません</string>
+ <string name="number_anr_too_long">電話番号が長すぎます</string>
+ <string name="email_address_too_long">メールアドレスが長すぎます</string>
+ <string name="sim_card_full">SIMカードがいっぱいです</string>
+ <string name="tag_too_long">連絡先の名前が長すぎます</string>
+ <string name="invalid_phone_number">電話番号が無効です</string>
+ <string name="invalid_number_type">番号の種類が無効です</string>
+ <string name="no_phone_number_or_email">電話番号またはメールアドレスを入力してください。</string>
+ <string name="memory_card_full">連絡先を保存できませんでした、携帯電話のメモリがいっぱいです</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">グループ</string>
+ <string name="menu_moveGroupMembers">グループのメンバーを移動</string>
+ <string name="title_move_members">メンバーを移動</string>
+ <string name="message_move_members">メンバーを移動中\u2026</string>
+ <string name="message_can_not_move_members">メンバーを移動できませんでした</string>
+ <string name="edit_before_call">発信前に番号を編集</string>
+ <string name="menu_sendViaSMS">連絡先をSMS経由で送信</string>
+ <string name="select_all">すべて</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">SIMの連絡先をインポート</string>
+ <string name="import_sim_contacts_message">SIMの連絡先をインポート中\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">連絡先をインポートしますか?</string>
+ <string name="import_finish">インポートが完了しました</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">連絡先を削除</string>
+ <string name="delete_contacts_message">連絡先を削除中\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">連絡先を削除しますか?</string>
+ <string name="too_many_contacts_add_to_group"><xliff:g id="count">%d</xliff:g>件以上の連絡先は追加できません</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">メモリの状態</string>
+ <string name="memory_size">合計:</string>
+ <string name="memory_used">使用数:</string>
+ <string name="calculating_status_now">状態を計算中\u2026</string>
+ <string name="menu_copyTo"><xliff:g id="destination">%s</xliff:g>にコピー</string>
+ <string name="no_empty_email_in_usim">USIMの連絡先にはメールアドレスの欄がないので、メッセージをコピーできません。</string>
+ <string name="voicemail">ボイスメール</string>
+ <string name="select_call_title">通話履歴を選択</string>
+ <string name="delete_call_title">通話履歴を削除</string>
+ <string name="delete_call_message">通話履歴を削除中\u2026</string>
+ <string name="delete_call_alert">選択した通話履歴を削除しますか?</string>
+ <string name="title_del_call">削除</string>
+ <string name="powered_by_provider"><xliff:g id="provider">%s</xliff:g>提供</string>
+</resources>
diff --git a/res/values-ka-rGE/cm_strings.xml b/res/values-ka-rGE/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-ka-rGE/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-kk-rKZ/cm_strings.xml b/res/values-kk-rKZ/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-kk-rKZ/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-km-rKH/cm_strings.xml b/res/values-km-rKH/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-km-rKH/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-kn-rIN/cm_plurals.xml b/res/values-kn-rIN/cm_plurals.xml
new file mode 100644
index 000000000..e83683224
--- /dev/null
+++ b/res/values-kn-rIN/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d ಆಯ್ಕೆಮಾಡಿದೆ</item>
+ <item quantity="other">%d ಆಯ್ಕೆಮಾಡಿದೆ</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d ಸಂಪರ್ಕವನ್ನು ಆಮದು ಮಾಡಲಾಗುತ್ತದೆ.</item>
+ <item quantity="other">%d ಸಂಪರ್ಕಗಳನ್ನು ಆಮದು ಮಾಡಲಾಗುತ್ತದೆ.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d ಸಂಪರ್ಕವನ್ನು ಆಮದುಮಾಡಲಾಗಿದೆ</item>
+ <item quantity="other">%d ಸಂಪರ್ಕಗಳನ್ನು ಆಮದುಮಾಡಲಾಗಿದೆ</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d ಸಂಪರ್ಕವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ.</item>
+ <item quantity="other">%d ಸಂಪರ್ಕಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d ವ್ಯಕ್ತಿ ಇದನ್ನು ಸ್ಪಾಮ್ ಎಂದು ಗುರುತಿಸಿದ್ದಾರೆ</item>
+ <item quantity="other">%d ಜನರು ಇದನ್ನು ಸ್ಪಾಮ್ ಎಂದು ಗುರುತಿಸಿದ್ದಾರೆ</item>
+ </plurals>
+</resources>
diff --git a/res/values-kn-rIN/cm_strings.xml b/res/values-kn-rIN/cm_strings.xml
new file mode 100644
index 000000000..114dbfa3e
--- /dev/null
+++ b/res/values-kn-rIN/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">ಆಯ್ಕೆಮಾಡಿದ ಸಂಪರ್ಕಗಳನ್ನು ಸಿಮ್ ಕಾರ್ಡ್‍ಗೆ ಉಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</string>
+ <string name="airplane_mode_on">ಏರೋಪ್ಲೇನ್ ಮೋಡ್ ಸಕ್ರಿಯವಿರುವಾಗ ಸಿಮ್ ಕಾರ್ಡ್ ಪ್ರವೇಶಿಸಲಾಗುವುದಿಲ್ಲ</string>
+ <string name="number_anr_too_long">ಸಂಖ್ಯೆ ಬಹಳ ಉದ್ದವಾಯಿತು</string>
+ <string name="email_address_too_long">ಇಮೇಲ್ ವಿಳಾಸ ಬಹಳ ಉದ್ದವಾಯಿತು</string>
+ <string name="sim_card_full">ಸಿಮ್ ಕಾರ್ಡ್ ಭರ್ತಿಯಾಗಿದೆ</string>
+ <string name="tag_too_long">ಸಂಪರ್ಕ ಹೆಸರು ಬಹಳ ಉದ್ದವಾಯಿತು</string>
+ <string name="invalid_phone_number">ಫೋನ್ ಸಂಖ್ಯೆ ಅಮಾನ್ಯವಾಗಿದೆ</string>
+ <string name="invalid_number_type">ಸಂಖ್ಯೆ ಸ್ವರೂಪ ಅಮಾನ್ಯವಾಗಿದೆ</string>
+ <string name="no_phone_number_or_email">ದಯವಿಟ್ಟು ದೂರವಾಣಿ ಸಂಖ್ಯೆ ಅಥವ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಹಾಕಿ.</string>
+ <string name="memory_card_full">ಸಂಪರ್ಕ ಉಳಿಸಲಾಗಲಿಲ್ಲ. ಫೋನ್ ಸ್ಮರಣೆ ಭರ್ತಿಯಾಗಿದೆ</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">ಗುಂಪುಗಳು</string>
+ <string name="menu_moveGroupMembers">ಗುಂಪಿನ ಸದಸ್ಯರನ್ನು ಸ್ಥಳಾಂತರಿಸು</string>
+ <string name="title_move_members">ಸದಸ್ಯರನ್ನು ಸ್ಥಳಾಂತರಿಸು</string>
+ <string name="message_move_members">ಸದಸ್ಯರನ್ನು ಸ್ಥಳಾಂತರಿಸಲಾಗುತ್ತಿದೆ\u2026</string>
+ <string name="message_can_not_move_members">ಸದಸ್ಯರನ್ನು ಸ್ಥಳಾಂತರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</string>
+ <string name="edit_before_call">ಕರೆಗೆ ಮೊದಲು ಸಂಖ್ಯೆಯನ್ನು ಸಂಪಾದಿಸಿ</string>
+ <string name="menu_sendViaSMS">ಸಂಪರ್ಕವನ್ನು ಎಸ್ಎಂಎಸ್ ಮೂಲಕ ಕಳುಹಿಸು</string>
+ <string name="select_all">ಎಲ್ಲಾ</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">ಸಿಮ್ ಸಂಪರ್ಕಗಳನ್ನು ಆಮದುಮಾಡು</string>
+ <string name="import_sim_contacts_message">ಸಿಮ್ ಸಂಪರ್ಕಗಳನ್ನು ಆಮದುಮಾಡಲಾಗುತ್ತಿದೆ\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">ಸಂಪರ್ಕವನ್ನು ಆಮದುಮಾಡು?</string>
+ <string name="import_finish">ಆಮದು ಮುಗಿದಿದೆ</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">ಸಂಪರ್ಕಗಳನ್ನು ಅಳಿಸು</string>
+ <string name="delete_contacts_message">ಸಂಪರ್ಕಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತಿದೆ\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">ಸಂಪರ್ಕ ಅಳಿಸು?</string>
+ <string name="too_many_contacts_add_to_group"><xliff:g id="count">%d</xliff:g>ಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಂಪರ್ಕಗಳನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">ಮೆಮೊರಿ ಸ್ಥಿತಿ</string>
+ <string name="memory_size">ಒಟ್ಟು:</string>
+ <string name="memory_used">ಉಪಯೋಗಿಸಿದ್ದು:</string>
+ <string name="calculating_status_now">ಸ್ಥಿತಿಯನ್ನು ಲೆಕ್ಕಿಸುತ್ತಿದೆ\u2026</string>
+ <string name="menu_copyTo">ಇಲ್ಲಿಗೆ ನಕಲಿಸು <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM ಸಂಪರ್ಕವು ಒಂದು ಲಭ್ಯವಿರುವ ಇಮೇಲ್ ಕ್ಷೇತ್ರವನ್ನು ಹೊಂದಿಲ್ಲ. ಸಂದೇಶಗಳನ್ನು ನಕಲಿಸಲು ಆಗುವುದಿಲ್ಲ.</string>
+ <string name="voicemail">ಧ್ವನಿಮೇಲ್</string>
+ <string name="select_call_title">ಕರೆ ಲಾಗ್ಸ್ ಆಯ್ಕೆಮಾಡಿ</string>
+ <string name="delete_call_title">ಕರೆ ಲಾಗ್ಸ್ ಅಳಿಸಿ</string>
+ <string name="delete_call_message">ಕರೆ ಲಾಗ್ಸನ್ನು ಅಳಿಸಲಾಗುತ್ತಿದೆ\u2026</string>
+ <string name="delete_call_alert">ಆಯ್ಕೆಮಾಡಿರುವ ಕರೆ ಲಾಗ್ಸನ್ನು ಅಳಿಸುವುದೇ?</string>
+ <string name="title_del_call">ಅಳಿಸು</string>
+ <string name="powered_by_provider">ನಡೆಸಲ್ಪಡುತ್ತಿರುವವರು <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-ko/cm_plurals.xml b/res/values-ko/cm_plurals.xml
new file mode 100644
index 000000000..7a454b3fb
--- /dev/null
+++ b/res/values-ko/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="other">%d건 선택됨</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="other">%d건의 연락처를 가져옵니다.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="other">%d건의 연락처 가져옴</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="other">%d건의 연락처가 삭제됩니다.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="other">%d명이 스팸으로 분류했습니다.</item>
+ </plurals>
+</resources>
diff --git a/res/values-ko/cm_strings.xml b/res/values-ko/cm_strings.xml
new file mode 100644
index 000000000..54aa83490
--- /dev/null
+++ b/res/values-ko/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">선택된 연락처를 SIM 카드에 저장하지 못했습니다</string>
+ <string name="airplane_mode_on">비행기 모드를 사용중일 때에는 SIM 카드에 접근할 수 없습니다</string>
+ <string name="number_anr_too_long">전화번호가 너무 깁니다</string>
+ <string name="email_address_too_long">이메일 주소가 너무 깁니다</string>
+ <string name="sim_card_full">SIM 카드가 가득 찼습니다</string>
+ <string name="tag_too_long">연락처 이름이 너무 깁니다</string>
+ <string name="invalid_phone_number">전화번호가 올바르지 않습니다</string>
+ <string name="invalid_number_type">전화번호 형식이 올바르지 않습니다</string>
+ <string name="no_phone_number_or_email">전화번호 또는 이메일 주소를 입력해주십시오.</string>
+ <string name="memory_card_full">연락처를 저장할 수 없습니다, 휴대전화 메모리가 가득 찼습니다</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">그룹</string>
+ <string name="menu_moveGroupMembers">그룹 구성원 이동</string>
+ <string name="title_move_members">구성원 이동</string>
+ <string name="message_move_members">구성원 이동 중\u2026</string>
+ <string name="message_can_not_move_members">구성원을 이동시킬 수 없음</string>
+ <string name="edit_before_call">전화하기 전에 번호 수정</string>
+ <string name="menu_sendViaSMS">SMS로 연락처 보내기</string>
+ <string name="select_all">전부</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">SIM 연락처 가져오기</string>
+ <string name="import_sim_contacts_message">SIM 연락처를 가져오는 중\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">연락처를 가져올까요?</string>
+ <string name="import_finish">가져오기 완료</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">연락처 삭제</string>
+ <string name="delete_contacts_message">연락처 삭제하는 중\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">연락처를 삭제할까요?</string>
+ <string name="too_many_contacts_add_to_group"><xliff:g id="count">%d</xliff:g>건보다 많은 수의 연락처는 추가할 수 없습니다</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">메모리 상태</string>
+ <string name="memory_size">전체:</string>
+ <string name="memory_used">사용 중:</string>
+ <string name="calculating_status_now">상태 계산 중\u2026</string>
+ <string name="menu_copyTo"><xliff:g id="destination">%s</xliff:g>(으)로 복사</string>
+ <string name="no_empty_email_in_usim">USIM 연락처가 비어있는 이메일 입력란을 찾지 못하여 메시지를 복사할 수 없습니다.</string>
+ <string name="voicemail">음성 메시지</string>
+ <string name="select_call_title">통화 기록 선택</string>
+ <string name="delete_call_title">통화 기록 삭제</string>
+ <string name="delete_call_message">통화 기록 삭제 중\u2026</string>
+ <string name="delete_call_alert">선택된 통화 기록을 삭제할까요?</string>
+ <string name="title_del_call">삭제</string>
+ <string name="powered_by_provider"><xliff:g id="provider">%s</xliff:g>이(가) 제공함</string>
+</resources>
diff --git a/res/values-ku/cm_strings.xml b/res/values-ku/cm_strings.xml
new file mode 100644
index 000000000..e00980d5d
--- /dev/null
+++ b/res/values-ku/cm_strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">ناتوانرێت ناوە دیاریکراوەکان پاشەکەوت بکرێت بۆ ناو سیمکارتەکە</string>
+ <string name="airplane_mode_on">ناتوانرێت سیمکارتەکە بەکاربهێنرێت کاتێک لەسەر باری فڕۆکەیە</string>
+ <string name="number_anr_too_long">ژمارەکە زۆر درێژە</string>
+ <string name="email_address_too_long">ناونیشانی ئیمەیڵەکە زۆر درێژە</string>
+ <string name="sim_card_full">سیمکارتەکە پڕە</string>
+ <string name="tag_too_long">ناو زۆر درێژە</string>
+ <string name="invalid_phone_number">ژمارەکە لە کارە نیە</string>
+ <string name="invalid_number_type">جۆری ئەم ژمارەیە لە کارە نیە</string>
+ <string name="no_phone_number_or_email">تکایە ژمارە تەلەفۆن یان ناونیشانی پۆستێکی ئەلەکترۆنی تێبکە.</string>
+ <string name="memory_card_full">ژمارە ناتوانرێت پاشەکەوتبکرێت، بیرگەی تەلەفۆنەکە پڕە</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">کۆمه‌ڵه‌کان</string>
+ <string name="menu_moveGroupMembers">جوڵاندنی ئەندامانی کۆمەڵەکان</string>
+ <string name="title_move_members">جوڵاندنی ئەندامان</string>
+ <string name="message_move_members">جوڵاندنی ژمارەکان\u2026</string>
+ <string name="message_can_not_move_members">ناتوانرێت ژمارەکان بجوڵێت</string>
+ <string name="edit_before_call">ده‌ستکاریکردنی ژماره‌ پێش په‌یوه‌ندیکردن</string>
+ <string name="menu_sendViaSMS">ناردنی پەیوەندی لە ڕێگەی کورتەنامە</string>
+ <string name="select_all">هه‌موو</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">هاوردنی پەیوەندییەکانی سیمکارت</string>
+ <string name="import_sim_contacts_message">هاوردنی ناوەکان لە سیمکارتەوە\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">هاوردنی ناوەکان?</string>
+ <string name="import_finish">هاوردن تەواو بوو</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">سڕینەوەی پەیوەندی</string>
+ <string name="delete_contacts_message">سڕینەوەی ناوەکان\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">سڕینەوەی پەیوەندی?</string>
+ <string name="too_many_contacts_add_to_group">زۆرتر لە <xliff:g id="count">%d</xliff:g> پەیوەندی ناتوانرێت زیا بکرێت</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">دۆخی بیرگە</string>
+ <string name="memory_size">گشتی:</string>
+ <string name="memory_used">بەکارهاتوو:</string>
+ <string name="calculating_status_now">لێکدانەوەی دۆخ\u2026</string>
+ <string name="menu_copyTo">لەبەرگرتنەوە بۆ <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">ناوەکانی USIM شوێنی پۆستی ئیلکترۆنی لە کارە نیە، لە توانادا نیە لەبەری نامەکان بگیرێتەوە.</string>
+ <string name="voicemail">دەنگەپۆست</string>
+ <string name="select_call_title">تۆمارەکانی پەیوەندی دیاری بکە</string>
+ <string name="delete_call_title">سڕینەوەی تۆمارەکانی پەیوەندیکردن</string>
+ <string name="delete_call_message">سڕینەوەی تۆماری تەلەفۆن\u2026</string>
+ <string name="delete_call_alert">سڕینەوەی تۆماری تەلەفۆن؟</string>
+ <string name="title_del_call">سڕینەوە؟</string>
+</resources>
diff --git a/res/values-ku/strings.xml b/res/values-ku/strings.xml
new file mode 100644
index 000000000..5f1a70d6b
--- /dev/null
+++ b/res/values-ku/strings.xml
@@ -0,0 +1,465 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <string name="contactsList">ناوەکان</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutContact">ناوەکان</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutDialContact">په‌یوه‌ندیی ڕاستەوخۆ</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutMessageContact">نامەی ڕاستەخۆ</string>
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <string name="shortcutActivityTitle">کورتبڕیی ناوێک هه‌ڵبژێره‌</string>
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <string name="callShortcutActivityTitle">ژماره‌یه‌ک هه‌ڵبژێره‌ بۆ په‌یوه‌ندی پێوه‌ کردن</string>
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <string name="messageShortcutActivityTitle">ژمارەیەک هەڵبژێرە بۆ نامەناردن</string>
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <string name="contactPickerActivityTitle">ناوێک هەڵبژێرە</string>
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <string name="starredList">ئه‌ستێره‌دار</string>
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <string name="frequentList">زوو زوو</string>
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <string name="strequentList">دڵخوازه‌کان</string>
+ <!-- The title bar when viewing the contact details activity -->
+ <string name="viewContactTitle">ورده‌کاریی ناو</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <string name="editContactDescription">دەستکاریکردنی ناو</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <string name="insertContactDescription">دروستکردنی ناو</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <string name="editGroupDescription">دەستکاریکردنی کۆمه‌ڵه‌</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <string name="insertGroupDescription">دروستکردنی کۆمه‌ڵه‌</string>
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <string name="contactDetailAbout">دەربارەی</string>
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <string name="contactDetailUpdates">تازەکردنەوەکان</string>
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <string name="searchHint">گەڕانی ناوەکان</string>
+ <!-- Menu item used to view the details for a specific contact -->
+ <string name="menu_viewContact">پیشاندانی ناوەکان</string>
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <string name="menu_addStar">زیادیکه‌ بۆ دڵخوازه‌کان</string>
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <string name="menu_removeStar">بیسڕه‌وه‌ له‌ دڵخوازه‌کان</string>
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <string name="menu_editContact">دەستکاریی</string>
+ <!-- Menu item used to delete a specific contact -->
+ <string name="menu_deleteContact">سڕینه‌وه‌</string>
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <string name="menu_create_contact_shortcut">دانان له‌سه‌ر ڕوونمای ماڵه‌وه‌</string>
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <string name="menu_call">په‌یوه‌ندیی بکه‌ به‌م ناوه‌وه‌</string>
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <string name="menu_sendSMS">نامه‌ بنێره‌ بۆ ئه‌م ناوه‌</string>
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <string name="menu_splitAggregate">جیاکردنه‌وه‌</string>
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <string name="menu_editGroup">دەستکاریی</string>
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <string name="menu_deleteGroup">سڕینه‌وه‌</string>
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <string name="menu_new_contact_action_bar">زیادکردنی ناو</string>
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <string name="menu_new_group_action_bar">زیادکردنی کۆمه‌ڵه‌</string>
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <string name="splitConfirmation_title">ناوه‌که‌ جیا ده‌که‌یته‌وه‌؟</string>
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <string name="splitConfirmation">ئەم ناوە جیا دەکرێتەوە بۆ چه‌ند ناوێکی تر.</string>
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <string name="titleJoinContactDataWith">بەشداریی ناوەکان</string>
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <string name="blurbJoinContactDataWith">ئه‌و ناوه‌ هه‌ڵبژێره‌ که‌ ده‌ته‌وێت به‌شداریی پێبکه‌یت له‌گه‌ڵ <xliff:g id="name">%s</xliff:g>:</string>
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <string name="showAllContactsJoinItem">پیشاندانی هەموو ناوەکان</string>
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <string name="separatorJoinAggregateSuggestions">ناوە پێشنیارکراوەکان</string>
+ <!-- List separator for the Join Contact list: A-Z -->
+ <string name="separatorJoinAggregateAll">هەموو ناوەکان</string>
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <string name="menu_set_ring_tone">دانانی زەنگ</string>
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <string name="menu_redirect_calls_to_vm">هەموو په‌یوه‌ندییه‌کان بکه‌ به‌ دەنگەنامە</string>
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <string name="readOnlyContactWarning">ناتوانی ناوەکان بسڕیتەوە له‌ هه‌ژماره‌ ته‌نها-خوێندنه‌وه‌ییه‌کاندا، بەڵام دەتوانی بیانشاریتەوە لە لیستی ناوەکاندا.</string>
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <string name="readOnlyContactDeleteConfirmation">ئەم ناوە له‌ کۆمه‌ڵێک هه‌ژماره‌وه‌ زانیاریی له‌خۆ ده‌گرێت. زانیارییه‌کان له‌ هه‌ژماره‌ ته‌نها-خوێندنه‌وه‌ییه‌کانه‌وه‌ ده‌شارێنه‌وه‌ له‌ لیستی ناوه‌کانتدا، ناسڕێنەوە.</string>
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <string name="multipleContactDeleteConfirmation">سڕینەوەی ئەم ناوە ده‌بێته‌ هۆی سڕینه‌وه‌ی زانیاریی له‌ چه‌ند هه‌ژمارێکدا.</string>
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <string name="deleteConfirmation">ئەم ناوە دەسڕێتەوە.</string>
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <string name="invalidContactMessage">ناوه‌که‌ بوونی نییه‌.</string>
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <string name="createContactShortcutSuccessful">ورده‌واڵه‌ی ناو زیاد کرا بۆ ڕوونمای ماڵه‌وه‌.</string>
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <string name="pickerNewContactHeader">دروستکردنی ناوی تازە</string>
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <string name="pickerNewContactText">درووستکردنی ناوی تازە</string>
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <string-array name="otherLabels">
+ <!-- An organization associated with a contact -->
+ <item>ڕێکخستن</item>
+ <!-- A note associated with a contact -->
+ <item>تێبینی</item>
+ </string-array>
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <string name="photoPickerNotFoundText" product="tablet">هیچ وێنەیەک به‌رده‌ست نییه‌ له‌سه‌ر تابلێته‌که‌.</string>
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <string name="photoPickerNotFoundText" product="default">هیچ وێنەیەک به‌رده‌ست نییە لەسەر تەلەفۆنەکە.</string>
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <string name="attach_photo_dialog_title">وێنەی ناو</string>
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <string name="customLabelPickerTitle">ناوزه‌دی ئاسایی</string>
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <string name="send_to_voicemail_checkbox">ناردنی تەلەفۆن ڕاستەوخۆ بۆ دەنگەئیمەیڵ</string>
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <string name="removePhoto">سڕینەوەی وێنە</string>
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <string name="noContacts">ناو نییە.</string>
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <string name="noGroups">کۆمه‌ڵه‌ نییە.</string>
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <string name="noAccounts">بۆ دروستکردنی کۆمه‌ڵه‌کان پێویستت بە هەژمارێکە.</string>
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <string name="emptyGroup">که‌س لەم گرووپەدا نییە.</string>
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <string name="addPeopleToGroup">بۆ زیادکردنی هەندێک، دەستکاریی کۆمه‌ڵه‌که‌ بکه‌.</string>
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <string name="savingContact">پاشەکەوتی ناو\u2026</string>
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <string name="contactSavedToast">ناوه‌که‌ پاشەکەوت کرا.</string>
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <string name="contactSavedErrorToast">ناتوانرێت گۆڕانکاریی لە ناودا پاشه‌که‌وت بکرێت.</string>
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <string name="groupSavedToast">کۆمه‌ڵه‌که‌ پاشەکەوت کرا.</string>
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <string name="groupSavedErrorToast">ناتوانرێت گۆڕانکاریی لە کۆمه‌ڵه‌دا پاشەکەوت بکرێت.</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <string name="listTotalPhoneContactsZero">هیچ ناوێک نییە ژمارە تەلەفۆنی له‌گه‌ڵدا بێت</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <string name="listFoundAllContactsZero">ناو نییە</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <string name="callBack">زه‌نگی بۆ لێده‌وه‌</string>
+ <!-- Action string for calling a number in the call log again -->
+ <string name="callAgain">دوبارە تەلەفۆن بکە</string>
+ <!-- Action string for returning a missed call in the call log -->
+ <string name="returnCall">گەڕاندنەوەی په‌یوه‌ندی</string>
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <string name="add_contact_dlg_message_fmt">\"<xliff:g id="email">%s</xliff:g>\" زیاد ده‌که‌یت بۆ ناوه‌کان؟</string>
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <string name="description_contact_photo">وێنەی ناو</string>
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <string name="description_plus_button">له‌گه‌ڵ</string>
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <string name="exporting_contact_list_progress"><xliff:g id="current_number">%s</xliff:g> of <xliff:g id="total_number">%s</xliff:g> ناوەکان</string>
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <string name="search_settings_description">لسیتی ناوه‌کانت</string>
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <string name="quickcontact_missing_app">هیچ بەرنامەیەک نەدۆزرایەوە بۆ هەڵگرتنی ئەم چالاکیە.</string>
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <string name="missing_app">هیچ بەرنامەیەک نەدۆزرایەوە بۆ هه‌ڵسوڕانی ئەم چالاکییە.</string>
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <string name="menu_share">په‌رشیکه‌</string>
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <string name="share_via">ناوه‌که‌ په‌رشکه‌ له‌ڕێی</string>
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <string name="dialog_new_group_account">کۆمه‌ڵه‌ دروست بکه‌ له‌ژێر هه‌ژماردا</string>
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <string name="audio_chat">چاتی ده‌نگیی</string>
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <string name="video_chat">چاتی ڤیدیۆیی</string>
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <string name="connections">پەیوەستەکان</string>
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <string name="add_connection_button">زیادکردنی پەیوەست</string>
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <string name="recent" msgid="2062236709538790412">بەم دوایییانە</string>
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <string name="recent_updates" msgid="2018245636796411442">دوایین تازه‌کردنه‌وه‌</string>
+ <!-- String describing which account type a contact came from when editing it -->
+ <string name="account_type_format"><xliff:g id="source" example="Gmail">%1$s</xliff:g> ناو</string>
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <string name="from_account_format"><xliff:g id="source" example="user@gmail.com">%1$s</xliff:g></string>
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <string name="contact_read_only">ناتوانرێت ده‌ستکاریی بکرێت لەم بەرنامەیەدا.</string>
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <string name="group_read_only">ناتوانرێت دەستکاری بکرێت لەسەر ئەم ئامێره‌.</string>
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <string name="take_photo">وێنە بگرە</string>
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <string name="take_new_photo">وێنەی نوێ بگرە</string>
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <string name="upgrade_in_progress">خشتەی ناوەکان تازەکرایەوە.</string>
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <string name="search_results_searching">گەڕان\u2026</string>
+ <!-- Label to display only selection in multiple picker -->
+ <string name="menu_display_selected">"پیشاندانی دیاریکراو"</string>
+ <!-- Label to display all recipients in multiple picker -->
+ <string name="menu_display_all">"پیشاندانی گشت"</string>
+ <!-- Label to select all contacts in multiple picker -->
+ <string name="menu_select_all">"دیاریکردنی گشت"</string>
+ <!-- Label to clear all selection in multiple picker -->
+ <string name="menu_select_none">"دیاریی نەکردنی گشت"</string>
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <string name="add_new_entry_for_section">نوێ زیاد بکه‌</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <string name="add_organization">ڕێکخر‌او زیاد بکه‌</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <string name="event_edit_field_hint_text">به‌روار</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <string name="group_edit_field_hint_text">ناوی کۆمه‌ڵه‌</string>
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <string name="description_star">دڵخواز</string>
+ <!-- The title of the Edit-Contact screen -->
+ <string name="edit_contact">ده‌ستکاریی ناوه‌که‌ بکه‌</string>
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <string name="aggregation_suggestion_join_dialog_message">بەشداریی
+ ناوی ئێستا لەگەڵ ناوی دیاریکراو ده‌که‌یت؟</string>
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <string name="aggregation_suggestion_edit_dialog_message">ده‌یگۆڕیت بۆ ده‌ستکاریی کردنی
+ ناوی دیاریکراو؟ ئه‌و زانیارییانه‌ی تا ئێستا تێت کردوون له‌به‌ریان ده‌گیرێته‌وه‌.</string>
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <string name="menu_copyContact">له‌به‌ری بگره‌وه‌ بۆ لیستی ناوه‌کانم</string>
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <string name="add_to_my_contacts">زیادی بکه‌ بۆ لیستی ناوه‌کانم</string>
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <string name="contact_directory_description">ڕێبه‌ریی <xliff:g id="type" example="Corporate Directory">%1$s</xliff:g></string>
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <string name="list_filter_custom">دروستکراو</string>
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <string name="activity_title_settings">ڕێکخستنه‌کان</string>
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <string name="menu_settings" msgid="377929915873428211">ڕێکخستنه‌کان</string>
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <string name="preference_displayOptions">پیشاندانی بژارده‌کان</string>
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <string name="organization_company_and_title"><xliff:g id="company" example="Technical Program Manager">%2$s</xliff:g>, <xliff:g id="company" example="Google Inc.">%1$s</xliff:g></string>
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <string name="non_phone_caption">ژماره‌ی مۆبایل</string>
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <string name="non_phone_add_to_contacts">زیادیکه‌ بۆ ناوه‌کان</string>
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <string name="activity_title_confirm_add_detail">زیادیکه‌ بۆ ناوه‌کان</string>
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <string name="non_phone_close">داخستن</string>
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <string name="widget_name_and_phonetic"><xliff:g id="display_name" example="John Huber">%1$s</xliff:g> (<xliff:g id="phonetic_name">%2$s</xliff:g>)</string>
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <string name="date_year_toggle">ساڵێک دابنێ</string>
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <string name="social_widget_label">ناو</string>
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <string name="social_widget_loading">بارکردن\u2026</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_create_contact">ناوێکی نوێ دروست بکه‌</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_add_account">بچۆره‌ ناو ئه‌کاونتێکه‌وه‌</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_import_contacts">هاوردنی ناوەکان</string>
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <string name="create_group_dialog_title">کۆمه‌ڵه‌ی نوێ دروست بکه‌</string>
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <string name="create_group_item_label">کۆمه‌ڵه‌یه‌کی نوێ دروست بکه‌</string>
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <string name="delete_group_dialog_message">کۆمه‌ڵه‌که‌ بسڕه‌وه‌
+ \"<xliff:g id="group_label" example="Friends">%1$s</xliff:g>\"?
+ (ناوەکانە لەخۆیانەوە ناسڕێنەوە.)
+ </string>
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <string name="toast_join_with_empty_contact">دروستکردنی ناوێک پێشی بەشداریکردن
+لەگەڵ یەکێکی تر.</string>
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <string name="copy_text">له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس</string>
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <string name="set_default">له‌سه‌ر بنه‌ڕه‌تیی دایبنێ</string>
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <string name="clear_default">پاکردنەوەی بنەڕەتی</string>
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <string name="toast_text_copied">ده‌ق له‌به‌ری گیرایه‌وه‌</string>
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <string name="cancel_confirmation_dialog_message">گۆڕانکارییه‌کانت وه‌لا ده‌نێی؟</string>
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <string name="call_type_and_date">
+ <xliff:g id="call_type" example="Friends">%1$s</xliff:g> <xliff:g id="call_short_date" example="Friends">%2$s</xliff:g>
+    </string>
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <string name="profile_display_name">په‌ڕه‌ی ژینم بۆ دانێ</string>
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <string name="enter_contact_name">ناوی که‌سه‌که‌ بنوسه‌</string>
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <string name="group_name_hint">ناوی کۆمه‌ڵه‌</string>
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <string name="local_profile_title">په‌ڕه‌ی ژینی ناوخۆییم</string>
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <string name="external_profile_title">په‌ڕه‌ی <xliff:g id="external_source">%1$s</xliff:g> ژینم</string>
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <string name="toast_displaying_all_contacts">پیشاندانی هەموو ناوەکان</string>
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <string name="generic_no_account_prompt">لیستی ناوه‌کانت ده‌پارێزێت ته‌نانه‌ت ئه‌گه‌ر ته‌له‌فۆنه‌که‌شت ون بکه‌یت: له‌گه‌ڵ ڕاژه‌یه‌کی سه‌رهێڵدا خۆی هاوکات ده‌کاته‌وه‌.</string>
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <string name="generic_no_account_prompt_title">زیادکردنی هەژمار</string>
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_zero_accounts">ناوه‌ نوێیه‌که‌ت ناگه‌ڕێنرێته‌وه‌. هه‌ژمارێک زیاد ده‌که‌یت که‌ به‌ شێوه‌ی سه‌رهێڵ ناوه‌کانت بگه‌ڕێنێته‌وه‌؟</string>
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_one_account">ناوه‌ نوێیه‌که‌ت له‌گه‌ڵ <xliff:g id="account_name">%1$s</xliff:g> هاوکات ده‌بێت.</string>
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_multiple_accounts">ده‌توانیت ناوه‌ نوێیه‌که‌ت هاوکات بکه‌یت به‌ یه‌کێک له‌م هه‌ژمارانه‌ی خواره‌وه‌. ده‌ته‌وێت کامیان به‌کاربهێنیت؟</string>
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <string name="keep_local">ناوخۆییانه‌ بیپارێزه‌</string>
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <string name="add_account">هه‌ژمار زیاد بکه‌</string>
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <string name="add_new_account">هه‌ژماری نوێ زیاد بکه‌</string>
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <string name="menu_export_database">هەناردەی فایلەکانی بنكه‌دراوه‌</string>
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-ky-rKG/cm_strings.xml b/res/values-ky-rKG/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-ky-rKG/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-lb/cm_plurals.xml b/res/values-lb/cm_plurals.xml
new file mode 100644
index 000000000..26ecdec6c
--- /dev/null
+++ b/res/values-lb/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d ausgewielt</item>
+ <item quantity="other">%d ausgewielt</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d Kontakt gëtt importéiert.</item>
+ <item quantity="other">%d Kontakter ginn importéiert.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d Kontakt importéiert</item>
+ <item quantity="other">%d Kontakter importéiert</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d Kontakt gëtt geläscht.</item>
+ <item quantity="other">%d Kontakter gi geläscht.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">Vun %d Persoun als Spam markéiert</item>
+ <item quantity="other">Vu(n) %d Persounen als Spam markéiert</item>
+ </plurals>
+</resources>
diff --git a/res/values-lb/cm_strings.xml b/res/values-lb/cm_strings.xml
new file mode 100644
index 000000000..86ba92bf5
--- /dev/null
+++ b/res/values-lb/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Déi ausgewielt Kontakter konnten net op d\'SIM-Kaart gespäichert ginn</string>
+ <string name="airplane_mode_on">Bei aktivéiertem Fligermodus kann net op d\'SIM-Kaart zougegraff ginn</string>
+ <string name="number_anr_too_long">Nummer ze laang</string>
+ <string name="email_address_too_long">E-Mail-Adress ass ze laang</string>
+ <string name="sim_card_full">SIM-Kaart ass voll</string>
+ <string name="tag_too_long">Kontaktnumm ass ze laang</string>
+ <string name="invalid_phone_number">Telefonsnummer ass ongëlteg</string>
+ <string name="invalid_number_type">Nummerentyp ass ongëlteg</string>
+ <string name="no_phone_number_or_email">Gëff w.e.g. eng Telefonsnummer oder E-Mail-Adress an.</string>
+ <string name="memory_card_full">Kontakt konnt net gespäichert ginn, den Telefonsspäicher ass voll</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Gruppen</string>
+ <string name="menu_moveGroupMembers">Gruppemembere réckelen</string>
+ <string name="title_move_members">Membere réckelen</string>
+ <string name="message_move_members">Membere gi geréckelt\u2026</string>
+ <string name="message_can_not_move_members">Kann d\'Memberen net réckelen</string>
+ <string name="edit_before_call">Nummer virum Uruff änneren</string>
+ <string name="menu_sendViaSMS">Kontakt iwwer SMS schécken</string>
+ <string name="select_all">All</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">SIM-Kontakter importéieren</string>
+ <string name="import_sim_contacts_message">SIM-Kontakter ginn importéiert\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Kontakt importéieren?</string>
+ <string name="import_finish">Import fäerdeg</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Kontakter läschen</string>
+ <string name="delete_contacts_message">Kontakter gi geläscht\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Kontakt läschen?</string>
+ <string name="too_many_contacts_add_to_group">Et kënne just <xliff:g id="count">%d</xliff:g> Kontakter agedroe ginn</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Späicherstatus</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Benotzt:</string>
+ <string name="calculating_status_now">Status gëtt berechent\u2026</string>
+ <string name="menu_copyTo">Kopéieren op <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Den USIM-Kontakt huet keen disponibelt E-Mail-Feld, d\'Messagë kënnen net kopéiert ginn.</string>
+ <string name="voicemail">Mailboxopnam</string>
+ <string name="select_call_title">Uruffprotokoller auswielen</string>
+ <string name="delete_call_title">Uruffprotokoller läschen</string>
+ <string name="delete_call_message">Uruffprotokoller gi geläscht\u2026</string>
+ <string name="delete_call_alert">Déi ausgewielten Uruffprotokoller läschen?</string>
+ <string name="title_del_call">Läschen</string>
+ <string name="powered_by_provider">Bereetgestallt vu(n) <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-lb/strings.xml b/res/values-lb/strings.xml
new file mode 100644
index 000000000..692d3912d
--- /dev/null
+++ b/res/values-lb/strings.xml
@@ -0,0 +1,520 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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">Kontakter</string>
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <string name="launcherActivityLabel">Kontakter</string>
+ <!-- Directory partition name -->
+ <string name="contactsList">Kontakter</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutContact">Kontakt</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutDialContact">Direkten Telefon</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutMessageContact">Direkte Message</string>
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <string name="shortcutActivityTitle">Eng Kontaktofkierzung auswielen</string>
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <string name="callShortcutActivityTitle">Eng Nummer auswiele fir unzeruffen</string>
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <string name="messageShortcutActivityTitle">Nummer auswiele fir e Message ze schécken</string>
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <string name="contactInsertOrEditActivityTitle">Bei d\'Kontakter dobäisetzen</string>
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <string name="contactPickerActivityTitle">E Kontakt auswielen</string>
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <string name="header_entry_contact_list_adapter_header_title">Neie Kontakt erstellen</string>
+ <!-- Title for the activity that shows only starred contacts -->
+ <string name="starredList">Markéiert</string>
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <string name="frequentList">Frequent</string>
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <string name="strequentList">Favoritten</string>
+ <!-- The title bar when viewing the contact details activity -->
+ <string name="viewContactTitle">Kontaktdetailer</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <string name="editContactDescription">Kontakt änneren</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <string name="insertContactDescription">Kontakt erstellen</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <string name="editGroupDescription">Grupp änneren</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <string name="insertGroupDescription">Grupp erstellen</string>
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <string name="contactDetailAbout">Iwwer</string>
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <string name="contactDetailUpdates">Updates</string>
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <string name="searchHint">Kontakter duerchsichen</string>
+ <!-- Menu item used to view the details for a specific contact -->
+ <string name="menu_viewContact">Kontakt uweisen</string>
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <string name="menu_addStar">Bei d\'Favoritte setzen</string>
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <string name="menu_removeStar">Aus de Favoritte läschen</string>
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <string name="description_action_menu_remove_star">Aus de Favoritte geläscht</string>
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <string name="description_action_menu_add_star">Bei d\'Favoritten dobäigesat</string>
+ <!-- Menu item used to edit a specific contact -->
+ <string name="menu_editContact">Änneren</string>
+ <!-- Menu item used to delete a specific contact -->
+ <string name="menu_deleteContact">Läschen</string>
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <string name="menu_create_contact_shortcut">Um Startschierm ofleeën</string>
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <string name="menu_call">Kontakt uruffen</string>
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <string name="menu_sendSMS">Kontakt uschreiwen</string>
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <string name="menu_splitAggregate">Opsplécken</string>
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <string name="menu_editGroup">Änneren</string>
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <string name="menu_deleteGroup">Läschen</string>
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <string name="menu_new_contact_action_bar">Kontakt dobäisetzen</string>
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <string name="menu_new_group_action_bar">Grupp dobäisetzen</string>
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <string name="splitConfirmation_title">Kontakt opsplécken?</string>
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <string name="splitConfirmation">Dëse Kontakt gëtt a méi Kontakter opgespléckt.</string>
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <string name="titleJoinContactDataWith">Kontakter fusionéieren</string>
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <string name="blurbJoinContactDataWith">Wiel de Kontakt aus, deen s du mam <xliff:g id="name">%s</xliff:g> fusionéiere wëlls:</string>
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <string name="showAllContactsJoinItem">All d\'Kontakter uweisen</string>
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <string name="separatorJoinAggregateSuggestions">Proposéiert Kontakter</string>
+ <!-- List separator for the Join Contact list: A-Z -->
+ <string name="separatorJoinAggregateAll">All d\'Kontakter</string>
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <string name="menu_set_ring_tone">Schelltoun setzen</string>
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <string name="menu_redirect_calls_to_vm">All d\'Uriff un d\'Mailbox</string>
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <string name="readOnlyContactWarning">Du kanns keng Kontakter aus Konte läschen déi schreifgeschützt sinn, awer du kanns s\'an de Kontaktlëschte verstoppen.</string>
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <string name="readOnlyContactDeleteConfirmation">Dëse Kontakt huet Informatioune vu verschiddene Konten. Informatiounen aus schreifgeschützte Konte ginn an denge Kontaktlëschte verstoppt, awer net geläscht.</string>
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <string name="multipleContactDeleteConfirmation">Wann s du dëse Kontakt läschs, ginn Informatiounen aus méi Konte geläscht.</string>
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <string name="deleteConfirmation">Dëse Kontakt gëtt geläscht.</string>
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <string name="menu_discard">Ännerunge verwerfen</string>
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <string name="invalidContactMessage">De Kontakt existéiert net.</string>
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <string name="createContactShortcutSuccessful">Kontakt-Widget op de Startschierm dobäisetzen.</string>
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <string name="pickerNewContactHeader">Neie Kontakt erstellen</string>
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <string name="pickerNewContactText">Neie Kontakt erstellen</string>
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <string-array name="otherLabels">
+ <!-- An organization associated with a contact -->
+ <item>Organisatioun</item>
+ <!-- A note associated with a contact -->
+ <item>Note</item>
+ </string-array>
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <string name="photoPickerNotFoundText" product="tablet">Keng Biller sinn um Tablet disponibel.</string>
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <string name="photoPickerNotFoundText" product="default">Keng Biller sinn um Telefon disponibel.</string>
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <string name="attach_photo_dialog_title">Kontaktfoto</string>
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <string name="customLabelPickerTitle">Eege Bezeechnung</string>
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <string name="send_to_voicemail_checkbox">Uriff direkt un d\'Mailbox schécken</string>
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <string name="removePhoto">Foto ewechhuelen</string>
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <string name="noContacts">Keng Kontakter.</string>
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <string name="noGroups">Keng Gruppen.</string>
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <string name="noAccounts">Fir Gruppen z\'erstelle brauchs du e Kont.</string>
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <string name="emptyGroup">Keng Leit an dëser Grupp.</string>
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <string name="addPeopleToGroup">Fir e puer dobäizesetzen, änner d\'Grupp.</string>
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <string name="savingContact">Kontakt gëtt gespäichert\u2026</string>
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <string name="contactSavedToast">Kontakt gespäichert.</string>
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <string name="contactSavedErrorToast">Kontaktännerunge konnten net gespäichert ginn.</string>
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <string name="groupSavedToast">Grupp gespäichert.</string>
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <string name="groupSavedErrorToast">Gruppännerunge konnten net gespäichert ginn.</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <string name="listTotalPhoneContactsZero">Keng Kontakter mat Telefonsnummer</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <string name="listFoundAllContactsZero">Keng Kontakter</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <string name="all_contacts_tab_label">All d\'Kontakter</string>
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <string name="favorites_tab_label">Favoritten</string>
+ <!-- Action string for calling back a number in the call log -->
+ <string name="callBack">Zréckruffen</string>
+ <!-- Action string for calling a number in the call log again -->
+ <string name="callAgain">Erëm uruffen</string>
+ <!-- Action string for returning a missed call in the call log -->
+ <string name="returnCall">Zréckruffen</string>
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <string name="add_contact_dlg_message_fmt">\"<xliff:g id="email">%s</xliff:g>\" bei d\'Kontakter dobäisetzen?</string>
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <string name="description_contact_photo">Kontaktfoto</string>
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <string name="description_plus_button">méi</string>
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <string name="exporting_contact_list_progress"><xliff:g id="current_number">%s</xliff:g> vu(n) <xliff:g id="total_number">%s</xliff:g> Kontakter</string>
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <string name="search_settings_description">Nimm vun denge Kontakter</string>
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <string name="quickcontact_missing_app">Fir dës Aktioun gouf keng App fonnt.</string>
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <string name="quickcontact_transparent_view_description">Drécke fir op de virege Schierm zréckzegoen</string>
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <string name="quickcontact_add_phone_number">Telefonsnummer dobäisetzen</string>
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <string name="quickcontact_add_email">E-Mail dobäisetzen</string>
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <string name="missing_app">Fir dës Aktioun gouf keng App fonnt.</string>
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <string name="menu_share">Deelen</string>
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <string name="menu_add_contact">Bei d\'Kontakter dobäisetzen</string>
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <string name="share_via">Kontakter deelen iwwer</string>
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <string name="dialog_new_group_account">Grupp ënner dësem Kont erstellen</string>
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <string name="audio_chat">Stëmmchat</string>
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <string name="video_chat">Videochat</string>
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <string name="connections">Connectiounen</string>
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <string name="add_connection_button">Connectioun dobäisetzen</string>
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <string name="recent" msgid="2062236709538790412">Rezent</string>
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <string name="recent_updates" msgid="2018245636796411442">Rezent Aktualiséierungen</string>
+ <!-- String describing which account type a contact came from when editing it -->
+ <string name="account_type_format"><xliff:g id="source" example="Gmail">%1$s</xliff:g>-Kontakt</string>
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <string name="from_account_format"><xliff:g id="source" example="user@gmail.com">%1$s</xliff:g></string>
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <string name="contact_read_only">Kann an dëser App net beaarbecht ginn.</string>
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <string name="group_read_only">Kann op dësem Apparat net beaarbecht ginn.</string>
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <string name="take_photo">Foto maachen</string>
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <string name="take_new_photo">Nei Foto maachen</string>
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <string name="pick_photo">Foto auswielen</string>
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <string name="pick_new_photo">Nei Foto auswielen</string>
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <string name="upgrade_in_progress">D\'Kontaktlëscht gëtt aktualiséiert.</string>
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <string name="search_results_searching">Gëtt gesicht\u2026</string>
+ <!-- Label to display only selection in multiple picker -->
+ <string name="menu_display_selected">"Auswiel uweisen"</string>
+ <!-- Label to display all recipients in multiple picker -->
+ <string name="menu_display_all">"Alles uweisen"</string>
+ <!-- Label to select all contacts in multiple picker -->
+ <string name="menu_select_all">"All auswielen"</string>
+ <!-- Label to clear all selection in multiple picker -->
+ <string name="menu_select_none">"Auswiel ophiewen"</string>
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <string name="add_new_entry_for_section">Neien dobäisetzen</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <string name="add_organization">Organisatioun dobäisetzen</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <string name="event_edit_field_hint_text">Datum</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <string name="group_edit_field_hint_text">Gruppennumm</string>
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <string name="change_photo">Änneren</string>
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <string name="primary_photo">Haaptfoto</string>
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <string name="description_star">Favorit</string>
+ <!-- The title of the Edit-Contact screen -->
+ <string name="edit_contact">Kontakt änneren</string>
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <string name="aggregation_suggestion_join_dialog_message">Den
+ aktuelle Kontakt mam ausgewielte verknëppen?</string>
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <string name="aggregation_suggestion_edit_dialog_message">De Kontakt beaarbechten? Déi Informatiounen déi s du bis elo uginn hues gi kopéiert.</string>
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <string name="menu_copyContact">Bei meng Kontakter kopéieren</string>
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <string name="add_to_my_contacts">Bei meng Kontakter dobäisetzen</string>
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <string name="contact_directory_description"><xliff:g id="type" example="Corporate Directory">%1$s</xliff:g>-Verzeechnes </string>
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <string name="list_filter_custom">Personaliséiert</string>
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <string name="activity_title_settings">Astellungen</string>
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <string name="menu_settings" msgid="377929915873428211">Astellungen</string>
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <string name="preference_displayOptions">Uweisoptiounen</string>
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <string name="organization_company_and_title"><xliff:g id="company" example="Technical Program Manager">%2$s</xliff:g>, <xliff:g id="company" example="Google Inc.">%1$s</xliff:g></string>
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <string name="non_phone_caption">Telefonsnummer</string>
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <string name="non_phone_add_to_contacts">Bei d\'Kontakter dobäisetzen</string>
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <string name="activity_title_confirm_add_detail">Bei d\'Kontakter dobäisetzen</string>
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <string name="non_phone_close">Zoumaachen</string>
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <string name="widget_name_and_phonetic"><xliff:g id="display_name" example="John Huber">%1$s</xliff:g> (<xliff:g id="phonetic_name">%2$s</xliff:g>)</string>
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <string name="date_year_toggle">Joer aginn</string>
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <string name="social_widget_label">Kontakt</string>
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <string name="social_widget_loading">Gëtt gelueden\u2026</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_create_contact">Neie Kontakt erstellen</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_add_account">An engem Kont aloggen</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_import_contacts">Kontakter importéieren</string>
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <string name="create_group_dialog_title">Nei Grupp erstellen</string>
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <string name="create_group_item_label">Nei Grupp erstellen</string>
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <string name="delete_group_dialog_message">D\'Grupp
+ \"<xliff:g id="group_label" example="Friends">%1$s</xliff:g>\" läschen?
+ (D\'Kontakter an der Grupp ginn net geläscht.)
+ </string>
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <string name="toast_join_with_empty_contact">Gëff en Numm fir de Kontakt an, ier s du e mat engem anere Kontakt fusionéiers.</string>
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <string name="copy_text">An d\'Tëschenoflag kopéieren</string>
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <string name="set_default">Als Standard setzen</string>
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <string name="clear_default">Als Standard läschen</string>
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <string name="toast_text_copied">Text kopéiert</string>
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <string name="cancel_confirmation_dialog_message">Deng Ännerungen zrécksetzen?</string>
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <string name="call_type_and_date"> <xliff:g id="call_type" example="Friends">%1$s</xliff:g> <xliff:g id="call_short_date" example="Friends">%2$s</xliff:g>
+ </string>
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <string name="profile_display_name">Mäi Profil astellen</string>
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <string name="enter_contact_name">Numm vun der Persoun aginn</string>
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <string name="group_name_hint">Numm vun der Grupp</string>
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <string name="local_profile_title">Mäi lokale Profil</string>
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <string name="external_profile_title"><xliff:g id="external_source">%1$s</xliff:g>-Profil</string>
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <string name="toast_displaying_all_contacts">All Kontakter uweisen</string>
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <string name="no_account_prompt">D\'Leit-App funktionéiert besser mat engem Google-Kont.\n\nu2022 Zougrëff iwwer iergendee Browser\nu2022 Séchere vu Kontakter mat Schutzfunktioun.</string>
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <string name="generic_no_account_prompt">Synchroniséierung mat engem Online-Service: Deng Kontakter sinn och da geséchert, wann s du däin Telefon verléiers.</string>
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <string name="generic_no_account_prompt_title">E Kont dobäisetzen</string>
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_zero_accounts">Deng nei Kontakter ginn net geséchert. E Kont fir d\'Online-Sécherung vun denge Kontakter dobäisetzen?</string>
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_one_account">Däin neie Kontakt gëtt mat <xliff:g id="account_name">%1$s</xliff:g> synchroniséiert.</string>
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_multiple_accounts">Du kanns däin neie Kontakt mat engem vun dëse Konte synchroniséieren. Wéi ee wëlls du benotzen?</string>
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <string name="contact_editor_title_new_contact">Neie Kontakt dobäisetzen</string>
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <string name="contact_editor_title_existing_contact">Kontakt änneren</string>
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <string name="keep_local">Lokal späicheren</string>
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <string name="add_account">Kont dobäisetzen</string>
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <string name="add_new_account">Neie Kont dobäisetzen</string>
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <string name="menu_export_database">Datebankfichieren exportéieren</string>
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <string name="action_menu_add_new_contact_button">Neie Kontakt dobäisetzen</string>
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <string name="expanding_entry_card_view_see_more">Méi gesinn</string>
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <string name="expanding_entry_card_view_see_less">Manner gesinn</string>
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <string name="expanding_entry_card_view_see_all">All gesinn</string>
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <string name="recent_card_title">Rezent</string>
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <string name="about_card_title">Iwwer</string>
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <string name="send_message">Message schécken</string>
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <string name="toast_making_personal_copy">Eng perséinlech Kopie gëtt erstallt...</string>
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <string name="yesterday">Gëschter</string>
+ <string name="tomorrow">Muer</string>
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <string name="today">Haut</string>
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <string name="today_at_time_fmt">"Haut um <xliff:g id="time_interval">%s</xliff:g>"</string>
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <string name="tomorrow_at_time_fmt">"Muer um <xliff:g id="time_interval">%s</xliff:g>"</string>
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <string name="date_time_fmt">"<xliff:g id="date">%s</xliff:g>, <xliff:g id="time_interval">%s</xliff:g>"</string>
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <string name="untitled_event">(Rendezvous ouni Titel)</string>
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <string name="date_time_set">Setzen</string>
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <string name="header_im_entry">IM</string>
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <string name="header_organization_entry">Organisatioun</string>
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <string name="header_nickname_entry">Spëtznumm</string>
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <string name="header_note_entry">Note</string>
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <string name="header_website_entry">Websäit</string>
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <string name="header_event_entry">Rendezvous</string>
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <string name="header_relation_entry">Relatioun</string>
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <string name="header_account_entry">Kont</string>
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <string name="header_name_entry">Numm</string>
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <string name="header_email_entry">E-Mail</string>
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <string name="header_phone_entry">Telefon</string>
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <string name="header_photo_entry">Foto</string>
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <string name="content_description_expand_editor">Dréck fir de Kontakt-Editor opzeklappen.</string>
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <string name="content_description_collapse_editor">Dréck fir de Kontakt-Editor zouzeklappen.</string>
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <string name="content_description_directions">Weebeschreiwung</string>
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <string name="content_description_recent_sms">Rezent SMS. <xliff:g id="message_body">%s</xliff:g>. <xliff:g id="phone_number">%s</xliff:g>. <xliff:g id="date">%s</xliff:g>. Dréck fir z\'äntweren</string>
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <string name="content_description_recent_call_type_incoming">Erakommend</string>
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <string name="content_description_recent_call_type_outgoing">Erausgoend</string>
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <string name="content_description_recent_call_type_missed">Verpasst</string>
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <string name="content_description_recent_call">Rezenten Uruff. <xliff:g id="call_type">%s</xliff:g>. <xliff:g id="phone_number">%s</xliff:g>. <xliff:g id="date">%s</xliff:g>. Dréck fir zréckzeruffen</string>
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <string name="message_from_you_prefix">Du: <xliff:g id="sms_body">%s</xliff:g></string>
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <string name="contact_editor_hangouts_im_alert">Hangouts funktionéiert besser, wann s de d\'Hangouts-ID vun der Persoun an d\'E-Mail- oder Telefonsfeld agëss.</string>
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-lo-rLA/cm_strings.xml b/res/values-lo-rLA/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-lo-rLA/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-lt/cm_plurals.xml b/res/values-lt/cm_plurals.xml
new file mode 100644
index 000000000..a0181110e
--- /dev/null
+++ b/res/values-lt/cm_plurals.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d pasirinktas</item>
+ <item quantity="few">%d pasirinkti</item>
+ <item quantity="other">%d pasirinkta</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d kontaktas bus importuotas.</item>
+ <item quantity="few">%d kontaktai bus importuoti.</item>
+ <item quantity="other">%d kontaktų bus importuota.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kontaktas importuotas</item>
+ <item quantity="few">%d kontaktai importuoti</item>
+ <item quantity="other">%d kontaktų importuota</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d kontaktas bus ištrintas.</item>
+ <item quantity="few">%d kontaktai bus ištrinti.</item>
+ <item quantity="other">%d kontaktų bus ištrinta.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d asmuo pažymėjo tai kaip šlamštą</item>
+ <item quantity="few">%d asmenys pažymėjo tai kaip šlamštą</item>
+ <item quantity="other">%d asmenų pažymėjo tai kaip šlamštą</item>
+ </plurals>
+</resources>
diff --git a/res/values-lt/cm_strings.xml b/res/values-lt/cm_strings.xml
new file mode 100644
index 000000000..8010fd095
--- /dev/null
+++ b/res/values-lt/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Negalima išsaugoti pažymėtų kontaktų į SIM kortelę</string>
+ <string name="airplane_mode_on">SIM kortelė negali būti atverta, kai įjungtas lėktuvo režimas</string>
+ <string name="number_anr_too_long">Numeris yra per ilgas</string>
+ <string name="email_address_too_long">El. pašto adresas yra per ilgas</string>
+ <string name="sim_card_full">SIM kortelė yra pilna</string>
+ <string name="tag_too_long">Kontakto vardas yra per ilgas</string>
+ <string name="invalid_phone_number">Telefono numeris yra neleistinas</string>
+ <string name="invalid_number_type">Numerio tipas yra neteisingas</string>
+ <string name="no_phone_number_or_email">Prašome įvesti telefono numerį arba el. pašto adresą.</string>
+ <string name="memory_card_full">Kontaktas negali būti išsaugotas, telefono atmintis pilna</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupės</string>
+ <string name="menu_moveGroupMembers">Perkelti grupės narius</string>
+ <string name="title_move_members">Perkelti narius</string>
+ <string name="message_move_members">Perkeliami nariai\u2026</string>
+ <string name="message_can_not_move_members">Negalima perkelti narių</string>
+ <string name="edit_before_call">Redaguoti numerį prieš skambinant</string>
+ <string name="menu_sendViaSMS">Siųsti kontaktą SMS pranešimu</string>
+ <string name="select_all">Visi</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importuoti SIM kontaktus</string>
+ <string name="import_sim_contacts_message">Importuojami SIM kontaktai\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importuoti kontaktą?</string>
+ <string name="import_finish">Importavimas baigtas</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Ištrinti kontaktus</string>
+ <string name="delete_contacts_message">Ištrinami kontakai\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Ištrinti kontaktą?</string>
+ <string name="too_many_contacts_add_to_group">Negali būti pridėta daugiau nei <xliff:g id="count">%d</xliff:g> kontaktų</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Atminties būsena</string>
+ <string name="memory_size">Viso:</string>
+ <string name="memory_used">Naudojama:</string>
+ <string name="calculating_status_now">Apskaičiuojama būsena\u2026</string>
+ <string name="menu_copyTo">Kopijuoti į <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM kontaktas neturi pasiekiamo el. pašto lauko, negalima kopijuoti pranešimų.</string>
+ <string name="voicemail">Balso paštas</string>
+ <string name="select_call_title">Pasirinkti skambučių žurnalus</string>
+ <string name="delete_call_title">Ištrinti skambučių žurnalus</string>
+ <string name="delete_call_message">Ištrinami skambučių žurnalai\u2026</string>
+ <string name="delete_call_alert">Ištrinti pasirinktus skambučių žurnalus?</string>
+ <string name="title_del_call">Ištrinti</string>
+ <string name="powered_by_provider">Parengta pagal <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-lv/cm_strings.xml b/res/values-lv/cm_strings.xml
new file mode 100644
index 000000000..7f2500d40
--- /dev/null
+++ b/res/values-lv/cm_strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Neizdevās saglabāt izvēlēto kontaktu SIM kartē</string>
+ <string name="airplane_mode_on">SIM kartei nevar piekļūt, kamēr ir ieslēgts lidmašīnas režīms</string>
+ <string name="number_anr_too_long">Numurs ir pārāk garš</string>
+ <string name="email_address_too_long">E-pasta adrese ir pārāk gara</string>
+ <string name="sim_card_full">SIM karte ir pilna</string>
+ <string name="tag_too_long">Kontaktpersonas vārds ir pārāk garš</string>
+ <string name="invalid_phone_number">Tālruņa numurs nav derīgs</string>
+ <string name="invalid_number_type">Numura tips ir nederīgs</string>
+ <string name="no_phone_number_or_email">Lūdzu, ievadiet telefona numuru vai e-pasta adresi.</string>
+ <string name="memory_card_full">Nevar saglabāt kontaktpersonu, telefona atmiņa ir pilna</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupas</string>
+ <string name="menu_moveGroupMembers">Pārvietot grupas dalībniekus</string>
+ <string name="title_move_members">Pārvietot dalībniekus</string>
+ <string name="message_move_members">Pārvieto dalībniekus\u2026</string>
+ <string name="message_can_not_move_members">Dalībniekus nevar pārvietot</string>
+ <string name="edit_before_call">Labot numuru pirms zvana</string>
+ <string name="menu_sendViaSMS">Nosūtīt kontaktu ar īsziņu</string>
+ <string name="select_all">Visi</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importēt SIM kontaktus</string>
+ <string name="import_sim_contacts_message">Importēju SIM kontaktus\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importēt kontaktus?</string>
+ <string name="import_finish">Importēšana pabeigta</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Dzēst kontaktus</string>
+ <string name="delete_contacts_message">Dzēš kontaktus\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Dzēst kontaktpersonu?</string>
+ <string name="too_many_contacts_add_to_group">Var pievienot ne vairāk kā <xliff:g id="count">%d</xliff:g> kontaktus</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Atmiņas statuss</string>
+ <string name="memory_size">Kopā:</string>
+ <string name="memory_used">Izmantots:</string>
+ <string name="calculating_status_now">Aprēķina statusu\u2026</string>
+ <string name="menu_copyTo">Kopēt uz <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM kontaktpersonai nav pieejamas e-pasta lauks, nevar kopēt ziņojumus.</string>
+ <string name="voicemail">Balss pasts</string>
+ <string name="select_call_title">Izvēlēties zvanu žurnālus</string>
+ <string name="delete_call_title">Dzēst zvanu žurnālus</string>
+ <string name="delete_call_message">Dzēšu zvanu žurnālus\u2026</string>
+ <string name="delete_call_alert">Dzēst izvēlētos zvanu žurnālus?</string>
+ <string name="title_del_call">Dzēst</string>
+</resources>
diff --git a/res/values-mk-rMK/cm_strings.xml b/res/values-mk-rMK/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-mk-rMK/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-ml-rIN/cm_strings.xml b/res/values-ml-rIN/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-ml-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-mn-rMN/cm_strings.xml b/res/values-mn-rMN/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-mn-rMN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-mr-rIN/cm_strings.xml b/res/values-mr-rIN/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-mr-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-ms-rMY/cm_strings.xml b/res/values-ms-rMY/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-ms-rMY/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-my-rMM/cm_strings.xml b/res/values-my-rMM/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-my-rMM/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-nb/cm_plurals.xml b/res/values-nb/cm_plurals.xml
new file mode 100644
index 000000000..0aaeea3da
--- /dev/null
+++ b/res/values-nb/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d valgt</item>
+ <item quantity="other">%d valgt</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d Kontakt vil bli importert.</item>
+ <item quantity="other">%d Kontakter vil bli importert.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kontakt importert</item>
+ <item quantity="other">%d kontakter importert</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d Kontakt vil bli slettet.</item>
+ <item quantity="other">%d Kontakter vil bli slettet.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d person har markert dette som spam</item>
+ <item quantity="other">%d personer har markert dette som spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-nb/cm_strings.xml b/res/values-nb/cm_strings.xml
new file mode 100644
index 000000000..48dc28615
--- /dev/null
+++ b/res/values-nb/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Kunne ikke lagre valgte kontakter på SIMkortet</string>
+ <string name="airplane_mode_on">SIM-kortet kan ikke åpnes mens Flymodus er aktivert</string>
+ <string name="number_anr_too_long">Nummeret er for langt</string>
+ <string name="email_address_too_long">E-postadressen er for lang</string>
+ <string name="sim_card_full">SIM-kortet er fullt</string>
+ <string name="tag_too_long">Navn på kontakt er for langt</string>
+ <string name="invalid_phone_number">Telefonnummeret er ugyldig</string>
+ <string name="invalid_number_type">Nummer er ugyldig</string>
+ <string name="no_phone_number_or_email">Angi et telefonnummer eller e-postadresse.</string>
+ <string name="memory_card_full">Kontakt kan ikke lagres, telefonminnet er full</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupper</string>
+ <string name="menu_moveGroupMembers">Flytt medlemmer</string>
+ <string name="title_move_members">Flytt medlemmer</string>
+ <string name="message_move_members">Flytter kontakter\u2026</string>
+ <string name="message_can_not_move_members">Kan ikke flytte medlemmer</string>
+ <string name="edit_before_call">Rediger nummer før samtalen</string>
+ <string name="menu_sendViaSMS">Sende kontakten via SMS</string>
+ <string name="select_all">Alle</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importer SIM-kontakter</string>
+ <string name="import_sim_contacts_message">Importerer SIM kontakter\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importere kontakt?</string>
+ <string name="import_finish">Import fullført</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Slette kontakter</string>
+ <string name="delete_contacts_message">Sletter kontakter\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Slette kontakt?</string>
+ <string name="too_many_contacts_add_to_group">Ikke mer enn <xliff:g id="count">%d</xliff:g> kontakter kan legges til</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Minnestatus</string>
+ <string name="memory_size">Totalt:</string>
+ <string name="memory_used">Brukt:</string>
+ <string name="calculating_status_now">Beregner status\u2026</string>
+ <string name="menu_copyTo">Kopiere til <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM kontakten har ikke ett tilgjengelig e-felt, kan ikke kopiere meldinger.</string>
+ <string name="voicemail">Talepostkasse</string>
+ <string name="select_call_title">Velg Anropslister</string>
+ <string name="delete_call_title">Slette Anropslister</string>
+ <string name="delete_call_message">Sletter anropslister\u2026</string>
+ <string name="delete_call_alert">Slett valgte Anropslister?</string>
+ <string name="title_del_call">Slett</string>
+ <string name="powered_by_provider">Drevet av <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-ne-rNP/cm_strings.xml b/res/values-ne-rNP/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-ne-rNP/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-nl/cm_plurals.xml b/res/values-nl/cm_plurals.xml
new file mode 100644
index 000000000..38f217cf3
--- /dev/null
+++ b/res/values-nl/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d geselecteerd</item>
+ <item quantity="other">%d geselecteerd</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contact wordt geïmporteerd.</item>
+ <item quantity="other">%d contacten worden geïmporteerd.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contact geïmporteerd</item>
+ <item quantity="other">%d contacten geïmporteerd</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contact wordt verwijderd.</item>
+ <item quantity="other">%d contacten worden verwijderd.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d persoon gemarkeerd als spam</item>
+ <item quantity="other">%d personen gemarkeerd als spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-nl/cm_strings.xml b/res/values-nl/cm_strings.xml
new file mode 100644
index 000000000..a4fd42df5
--- /dev/null
+++ b/res/values-nl/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Geselecteerde contacten konden niet worden opgeslagen op de simkaart</string>
+ <string name="airplane_mode_on">Geen toegang tot simkaart in vliegtuigmodus</string>
+ <string name="number_anr_too_long">Nummer is te lang</string>
+ <string name="email_address_too_long">E-mailadres is te lang</string>
+ <string name="sim_card_full">Simkaart is vol</string>
+ <string name="tag_too_long">Naam van contact is te lang</string>
+ <string name="invalid_phone_number">Telefoonnummer is ongeldig</string>
+ <string name="invalid_number_type">Het soort nummer is ongeldig</string>
+ <string name="no_phone_number_or_email">Voer een telefoonnummer of e-mailadres in.</string>
+ <string name="memory_card_full">Contact kan niet worden opgeslagen: telefoongeheugen is vol</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Groepen</string>
+ <string name="menu_moveGroupMembers">Leden van de groep verplaatsen</string>
+ <string name="title_move_members">Leden verplaatsen</string>
+ <string name="message_move_members">Leden verplaatsen\u2026</string>
+ <string name="message_can_not_move_members">Kan leden niet verplaatsen</string>
+ <string name="edit_before_call">Nummer bewerken voor bellen</string>
+ <string name="menu_sendViaSMS">Contact via sms verzenden</string>
+ <string name="select_all">Alles</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">SIM-contacten importeren</string>
+ <string name="import_sim_contacts_message">SIM-contacten importeren\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Contact importeren?</string>
+ <string name="import_finish">Importeren voltooid</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Contacten verwijderen</string>
+ <string name="delete_contacts_message">Contacten verwijderen\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Contact verwijderen?</string>
+ <string name="too_many_contacts_add_to_group">Er kunnen niet meer dan <xliff:g id="count">%d</xliff:g> contacten worden toegevoegd</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Geheugenstatus</string>
+ <string name="memory_size">Totaal:</string>
+ <string name="memory_used">Gebruikt:</string>
+ <string name="calculating_status_now">Status berekenen\u2026</string>
+ <string name="menu_copyTo">Kopiëren naar <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM-contact heeft geen e-mailveld beschikbaar, kan berichten niet kopiëren.</string>
+ <string name="voicemail">Voicemail</string>
+ <string name="select_call_title">Gespreksstatistieken selecteren</string>
+ <string name="delete_call_title">Gespreksstatistieken verwijderen</string>
+ <string name="delete_call_message">Gespreksstatistieken verwijderen\u2026</string>
+ <string name="delete_call_alert">Geselecteerde gespreksstatistieken verwijderen?</string>
+ <string name="title_del_call">Verwijderen</string>
+ <string name="powered_by_provider">Mogelijk gemaakt door <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-oc-rFR/cm_strings.xml b/res/values-oc-rFR/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-oc-rFR/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-oc-rFR/strings.xml b/res/values-oc-rFR/strings.xml
new file mode 100644
index 000000000..efa005dba
--- /dev/null
+++ b/res/values-oc-rFR/strings.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <!-- The title bar when viewing the contact details activity -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <!-- Menu item used to view the details for a specific contact -->
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <!-- Menu item used to delete a specific contact -->
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <!-- List separator for the Join Contact list: A-Z -->
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <!-- Action string for calling a number in the call log again -->
+ <!-- Action string for returning a missed call in the call log -->
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <!-- String describing which account type a contact came from when editing it -->
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <!-- Label to display only selection in multiple picker -->
+ <!-- Label to display all recipients in multiple picker -->
+ <!-- Label to select all contacts in multiple picker -->
+ <!-- Label to clear all selection in multiple picker -->
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <!-- The title of the Edit-Contact screen -->
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-or-rIN/cm_strings.xml b/res/values-or-rIN/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-or-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-pa-rIN/cm_strings.xml b/res/values-pa-rIN/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-pa-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-pl/cm_plurals.xml b/res/values-pl/cm_plurals.xml
new file mode 100644
index 000000000..52634bf24
--- /dev/null
+++ b/res/values-pl/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">Wybrano %d</item>
+ <item quantity="few">Wybrano %d</item>
+ <item quantity="other">Wybrano %d</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">Zostanie zaimportowany %d kontakt.</item>
+ <item quantity="few">Zostaną zaimportowane %d kontakty.</item>
+ <item quantity="other">Zostanie zaimportowane %d kontaktów.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">Zaimportowano %d kontakt</item>
+ <item quantity="few">Zaimpotowano %d kontakty</item>
+ <item quantity="other">Zaimpotowano %d kontaktów</item>
+ </plurals>
+</resources>
diff --git a/res/values-pl/cm_strings.xml b/res/values-pl/cm_strings.xml
new file mode 100644
index 000000000..056d0c08d
--- /dev/null
+++ b/res/values-pl/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Nie można zapisać wybranych kontaktów na karcie SIM</string>
+ <string name="airplane_mode_on">Nie można uzyskać dostępu do karty SIM, gdy włączony jest tryb samolotowy</string>
+ <string name="number_anr_too_long">Numer jest za długi</string>
+ <string name="email_address_too_long">Adres e-mail jest zbyt długi</string>
+ <string name="sim_card_full">Karta SIM jest pełna</string>
+ <string name="tag_too_long">Nazwa kontaktu jest zbyt długa</string>
+ <string name="invalid_phone_number">Numer telefonu jest nieprawidłowy</string>
+ <string name="invalid_number_type">Typ numeru jest nieprawidłowy</string>
+ <string name="no_phone_number_or_email">Proszę podać adres e-mail lub numer telefonu.</string>
+ <string name="memory_card_full">Nie można zapisać kontaktu, pamięć telefonu jest pełna</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupy</string>
+ <string name="menu_moveGroupMembers">Przenieś członków grupy</string>
+ <string name="title_move_members">Przenieść członków</string>
+ <string name="message_move_members">Przenoszenie członków\u2026</string>
+ <string name="message_can_not_move_members">Nie można przenieść członków</string>
+ <string name="edit_before_call">Edytuj numer przed połączeniem</string>
+ <string name="menu_sendViaSMS">Wyślij kontakt przez SMS</string>
+ <string name="select_all">Wszystkie</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importuj kontakty z karty SIM</string>
+ <string name="import_sim_contacts_message">Importowanie kontaktów z karty SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Zaimportować kontakt?</string>
+ <string name="import_finish">Importowanie zakończone</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Usuń kontakty</string>
+ <string name="delete_contacts_message">Usuwanie kontaktów\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Usunąć kontakt?</string>
+ <string name="too_many_contacts_add_to_group">Nie więcej niż <xliff:g id="count"> %d </xliff:g> kontaktów może być dodanych</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Stan pamięci</string>
+ <string name="memory_size">Łącznie:</string>
+ <string name="memory_used">Zajęte:</string>
+ <string name="calculating_status_now">Obliczanie statusu\u2026</string>
+ <string name="menu_copyTo">Skopiuj do <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Kontakt USIM nie ma pola e-mail, nie można skopiować wiadomości.</string>
+ <string name="voicemail">Poczta głosowa</string>
+ <string name="select_call_title">Wybierz dzienniki rozmów</string>
+ <string name="delete_call_title">Usuń dzienniki rozmów</string>
+ <string name="delete_call_message">Usuń dzienniki rozmów\u2026</string>
+ <string name="delete_call_alert">Usunąć zaznaczone dzienniki rozmów?</string>
+ <string name="title_del_call">Usuń</string>
+ <string name="powered_by_provider">Wpierane przez <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-pt-rBR/cm_plurals.xml b/res/values-pt-rBR/cm_plurals.xml
new file mode 100644
index 000000000..92cdb2afc
--- /dev/null
+++ b/res/values-pt-rBR/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d selecionado</item>
+ <item quantity="other">%d selecionados</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contato será importado.</item>
+ <item quantity="other">%d contatos serão importados.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contato importado</item>
+ <item quantity="other">%d contatos importados</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contato será apagado.</item>
+ <item quantity="other">%d contatos serão apagados.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d pessoa marcou isto como spam</item>
+ <item quantity="other">%d pessoas marcaram isto como spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-pt-rBR/cm_strings.xml b/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 000000000..f73fb671b
--- /dev/null
+++ b/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Não foi possivel gravar os contatos selecionados no cartão SIM</string>
+ <string name="airplane_mode_on">O cartão SIM não pode ser acessado enquanto o modo avião estiver ativado</string>
+ <string name="number_anr_too_long">O número é muito longo</string>
+ <string name="email_address_too_long">O endereço de e-mail é muito longo</string>
+ <string name="sim_card_full">O cartão SIM está cheio</string>
+ <string name="tag_too_long">O nome do contato é muito longo</string>
+ <string name="invalid_phone_number">O número de telefone é inválido</string>
+ <string name="invalid_number_type">O tipo de número é inválido</string>
+ <string name="no_phone_number_or_email">Por favor insira um número de telefone ou endereço de e-mail.</string>
+ <string name="memory_card_full">Contato não pôde ser salvo, a memória do telefone está cheia</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupos</string>
+ <string name="menu_moveGroupMembers">Mover membros do grupo</string>
+ <string name="title_move_members">Mover membros</string>
+ <string name="message_move_members">Movendo membros\u2026</string>
+ <string name="message_can_not_move_members">Não é possível mover os membros</string>
+ <string name="edit_before_call">Editar número antes de chamar</string>
+ <string name="menu_sendViaSMS">Enviar contato via SMS</string>
+ <string name="select_all">Todos</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importar contatos do SIM</string>
+ <string name="import_sim_contacts_message">Importando contatos do SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importar Contato?</string>
+ <string name="import_finish">Importação concluída</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Apagar contatos</string>
+ <string name="delete_contacts_message">Apagando contatos\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Apagar contato?</string>
+ <string name="too_many_contacts_add_to_group">Não podem ser adicionados mais que <xliff:g id="count">%d</xliff:g> contatos</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Estado da memória</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Usado:</string>
+ <string name="calculating_status_now">Calculando estado\u2026</string>
+ <string name="menu_copyTo">Copiar para <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">O contato USIM não tem um campo de e-mail disponível, não é possível copiar mensagens.</string>
+ <string name="voicemail">Correio de voz</string>
+ <string name="select_call_title">Selecione os registros de chamadas</string>
+ <string name="delete_call_title">Apagar registros de chamadas</string>
+ <string name="delete_call_message">Apagando registros de chamadas\u2026</string>
+ <string name="delete_call_alert">Apagar os registros de chamadas selecionados?</string>
+ <string name="title_del_call">Apagar</string>
+ <string name="powered_by_provider">Desenvolvido por <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-pt-rPT/cm_plurals.xml b/res/values-pt-rPT/cm_plurals.xml
new file mode 100644
index 000000000..7d0dad0fe
--- /dev/null
+++ b/res/values-pt-rPT/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d selecionado</item>
+ <item quantity="other">%d selecionados</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contacto será importado.</item>
+ <item quantity="other">%d contactos serão importados.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contacto importado</item>
+ <item quantity="other">%d contactos importados</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contacto será apagado.</item>
+ <item quantity="other">%d contactos serão apagados.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d pessoa marcou como spam</item>
+ <item quantity="other">%d pessoas marcaram como spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-pt-rPT/cm_strings.xml b/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 000000000..c49449fbc
--- /dev/null
+++ b/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Não foi possível gravar os contactos selecionados no cartão SIM</string>
+ <string name="airplane_mode_on">Não é possível aceder ao cartão SIM enquanto o modo avião estiver ativado</string>
+ <string name="number_anr_too_long">O número é muito longo</string>
+ <string name="email_address_too_long">O endereço de e-mail é muito longo</string>
+ <string name="sim_card_full">O cartão SIM está cheio</string>
+ <string name="tag_too_long">O nome do contacto é muito longo</string>
+ <string name="invalid_phone_number">O número de telefone é inválido</string>
+ <string name="invalid_number_type">O tipo de número é inválido</string>
+ <string name="no_phone_number_or_email">Por favor, insira um número de telefone ou endereço de e-mail.</string>
+ <string name="memory_card_full">O contacto não pôde ser guardado porque a memória do telefone está cheia</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupos</string>
+ <string name="menu_moveGroupMembers">Mover membros do grupo</string>
+ <string name="title_move_members">Mover membros</string>
+ <string name="message_move_members">A mover membros\u2026</string>
+ <string name="message_can_not_move_members">Não é possível mover os membros</string>
+ <string name="edit_before_call">Editar número antes da chamada</string>
+ <string name="menu_sendViaSMS">Enviar contacto via SMS</string>
+ <string name="select_all">Todos</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importar contactos do SIM</string>
+ <string name="import_sim_contacts_message">A importar contactos\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importar contacto?</string>
+ <string name="import_finish">Importação terminada</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Apagar contactos</string>
+ <string name="delete_contacts_message">A apagar contactos\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Apagar contacto?</string>
+ <string name="too_many_contacts_add_to_group">Não podem ser adicionados mais que <xliff:g id="count">%d</xliff:g> contactos</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Estado da memória</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Utilizada:</string>
+ <string name="calculating_status_now">A calcular estado\u2026</string>
+ <string name="menu_copyTo">Copiar para <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">O contacto USIM não tem um campo de e-mail disponível. Não é possível copiar mensagens.</string>
+ <string name="voicemail">Correio de voz</string>
+ <string name="select_call_title">Selecionar os registos de chamadas</string>
+ <string name="delete_call_title">Apagar os registos de chamadas</string>
+ <string name="delete_call_message">A apagar registos de chamadas\u2026</string>
+ <string name="delete_call_alert">Apagar os registos de chamadas selecionados?</string>
+ <string name="title_del_call">Apagar</string>
+ <string name="powered_by_provider">Distribuído por <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-rm/cm_strings.xml b/res/values-rm/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-rm/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-ro/cm_plurals.xml b/res/values-ro/cm_plurals.xml
new file mode 100644
index 000000000..6f3a41e6c
--- /dev/null
+++ b/res/values-ro/cm_plurals.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d selectat</item>
+ <item quantity="few">%d selectate</item>
+ <item quantity="other">%d selectate</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contact va fi importat.</item>
+ <item quantity="few">%d contacte vor fi importate.</item>
+ <item quantity="other">%d contacte vor fi importate.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contact importat</item>
+ <item quantity="few">%d contacte importate</item>
+ <item quantity="other">%d contacte importate</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contact va fi șters.</item>
+ <item quantity="few">%d contacte vor fi șterse.</item>
+ <item quantity="other">%d contacte vor fi șterse.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d persoană a fost marcată ca spam</item>
+ <item quantity="few">%d persoane au fost marcate ca spam</item>
+ <item quantity="other">%d persoane au fost marcate ca spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-ro/cm_strings.xml b/res/values-ro/cm_strings.xml
new file mode 100644
index 000000000..abf7f8b85
--- /dev/null
+++ b/res/values-ro/cm_strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Nu s-au putut salva contactele selectate pe cartela SIM</string>
+ <string name="airplane_mode_on">Cartela SIM nu poate fi accesată în timp ce modul avion este activat</string>
+ <string name="number_anr_too_long">Numărul este prea lung</string>
+ <string name="email_address_too_long">Adresa de e-mail este prea lungă</string>
+ <string name="sim_card_full">Cartela SIM este plină</string>
+ <string name="tag_too_long">Numele contactului este prea lung</string>
+ <string name="invalid_phone_number">Numărul de telefon nu este valid</string>
+ <string name="invalid_number_type">Tipul numărului nu este valid</string>
+ <string name="no_phone_number_or_email">Introduceți un număr de telefon sau adresă de email.</string>
+ <string name="memory_card_full">Imposibil de salvat contactul, memoria telefonului este plină</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupuri</string>
+ <string name="menu_moveGroupMembers">Mută membrii grupului</string>
+ <string name="title_move_members">Mută membri</string>
+ <string name="message_move_members">Se mută membri\u2026</string>
+ <string name="message_can_not_move_members">Nu se pot muta membri</string>
+ <string name="edit_before_call">Editarea numărului înainte de apel</string>
+ <string name="menu_sendViaSMS">Trimitere contact prin SMS</string>
+ <string name="select_all">Toate</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Import contacte SIM</string>
+ <string name="import_sim_contacts_message">Se importă contacte SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importare persoană de contact?</string>
+ <string name="import_finish">Importul s-a terminat</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Ștergere contacte</string>
+ <string name="delete_contacts_message">Se șterg contacte\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Ștergeți contact?</string>
+ <string name="too_many_contacts_add_to_group">Nu mai mult de <xliff:g id="count">%d</xliff:g> persoane de contact pot fi adăugate</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Stare memorie</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Utilizat:</string>
+ <string name="calculating_status_now">Se calculează starea\u2026</string>
+ <string name="menu_copyTo">Copiere pe <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Contactul USIM nu are un câmp de email disponibil, mesajele nu pot fi copiate.</string>
+ <string name="voicemail">Mesagerie vocală</string>
+ <string name="select_call_title">Selectați jurnalul de apeluri</string>
+ <string name="delete_call_title">Ștergere jurnale de apel</string>
+ <string name="delete_call_message">Se șterg jurnalele de apel\u2026</string>
+ <string name="delete_call_alert">Ștergeți jurnalele de apel selectate?</string>
+ <string name="title_del_call">Ștergeți</string>
+</resources>
diff --git a/res/values-ru/cm_plurals.xml b/res/values-ru/cm_plurals.xml
new file mode 100644
index 000000000..efde21fb8
--- /dev/null
+++ b/res/values-ru/cm_plurals.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d контакт</item>
+ <item quantity="few">%d контакта</item>
+ <item quantity="other">%d контактов</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">Будет импортирован %d контакт.</item>
+ <item quantity="few">Будут импортированы %d контакта.</item>
+ <item quantity="other">Будут импортированы %d контактов.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">Импортирован %d контакт</item>
+ <item quantity="few">Импортированы %d контакта</item>
+ <item quantity="other">Импортированы %d контактов</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d контакт будет удален.</item>
+ <item quantity="few">%d контакта будут удалены.</item>
+ <item quantity="other">%d контактов будут удалены.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d человек пометил как спам</item>
+ <item quantity="few">%d человека отметили как спам</item>
+ <item quantity="other">%d человек пометили как спам</item>
+ </plurals>
+</resources>
diff --git a/res/values-ru/cm_strings.xml b/res/values-ru/cm_strings.xml
new file mode 100644
index 000000000..9d5952ed5
--- /dev/null
+++ b/res/values-ru/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Не удалось сохранить выбранные контакты на SIM-карту</string>
+ <string name="airplane_mode_on">Чтобы получить доступ к SIM-карте, выключите режим полёта.</string>
+ <string name="number_anr_too_long">Слишком длинный номер</string>
+ <string name="email_address_too_long">Слишком длинный адрес электронной почты</string>
+ <string name="sim_card_full">SIM-карта заполнена</string>
+ <string name="tag_too_long">Слишком длинное имя контакта</string>
+ <string name="invalid_phone_number">Неверный номер телефона</string>
+ <string name="invalid_number_type">Неверный тип номера</string>
+ <string name="no_phone_number_or_email">Введите номер телефона или адрес электронной почты.</string>
+ <string name="memory_card_full">Невозможно сохранить контакт, память устройства заполнена</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Группы</string>
+ <string name="menu_moveGroupMembers">Переместить членов группы</string>
+ <string name="title_move_members">Переместить контакты</string>
+ <string name="message_move_members">Перемещение контактов\u2026</string>
+ <string name="message_can_not_move_members">Невозможно переместить контакты</string>
+ <string name="edit_before_call">Изменить номер и вызвать</string>
+ <string name="menu_sendViaSMS">Отправить контакт по SMS</string>
+ <string name="select_all">Все</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Импорт. контакты с SIM-карты</string>
+ <string name="import_sim_contacts_message">Импорт контактов с SIM-карты\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Импортировать контакт?</string>
+ <string name="import_finish">Импорт завершён</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Удалить контакты</string>
+ <string name="delete_contacts_message">Удаление контактов\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Удалить контакт?</string>
+ <string name="too_many_contacts_add_to_group">Можно добавить не более <xliff:g id="count">%d</xliff:g> контакт.</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Сост. памяти</string>
+ <string name="memory_size">Объём:</string>
+ <string name="memory_used">Используется:</string>
+ <string name="calculating_status_now">Выполняется подсчёт\u2026</string>
+ <string name="menu_copyTo">Копировать в <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">У контакта USIM нет поля электронной почты. Не удается скопировать сообщения.</string>
+ <string name="voicemail">Голосовая почта</string>
+ <string name="select_call_title">Выберите журналы вызовов</string>
+ <string name="delete_call_title">Удалить журналы вызовов</string>
+ <string name="delete_call_message">Удаление журнала вызовов\u2026</string>
+ <string name="delete_call_alert">Удалить выбранные записи из журнала вызовов?</string>
+ <string name="title_del_call">Удалить</string>
+ <string name="powered_by_provider">На основе <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-si-rLK/cm_strings.xml b/res/values-si-rLK/cm_strings.xml
new file mode 100644
index 000000000..48baff09d
--- /dev/null
+++ b/res/values-si-rLK/cm_strings.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">තෝරාගත් සම්බන්ධතා සිම් කාඩ් පතට සුරැකීමට නොහැකිවිය</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="edit_before_call">ඇමතීමට පෙර අංකය සකසන්න</string>
+ <string name="menu_sendViaSMS">සම්බන්ධතාව SMS මගින් යවන්න</string>
+ <string name="select_all">සියලු</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">සිම් සම්බන්ධතා ආයාත කරන්න</string>
+ <string name="import_sim_contacts_message">සිම් සම්බන්ධතා ආයාත කරමින්\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">සබඳතාව ආයාත කරනවා ද?</string>
+ <string name="import_finish">ආයාතය නිමාවුනි</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">සම්බන්ධතා මකන්න</string>
+ <string name="delete_contacts_message">සම්බන්ධතා මකාදමමින්\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">සබඳතාව මකනවා ද?</string>
+ <string name="too_many_contacts_add_to_group">සම්බන්ධතා <xliff:g id="count">%d</xliff:g> ට වඩා එක් කල නොහැක</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">මතකයේ තත්ත්වය</string>
+ <string name="memory_size">එකතුව:</string>
+ <string name="memory_used">භාවිතය:</string>
+ <string name="calculating_status_now">තත්වය ගණනය කරමින්\u2026</string>
+ <string name="menu_copyTo"><xliff:g id="destination">%s</xliff:g> වෙත පිටපත් කරන්න</string>
+ <string name="voicemail">හඬ තැපෑල</string>
+ <string name="select_call_title">ඇමතුම් ලොගය තෝරන්න</string>
+ <string name="delete_call_title">ඇමතුම් ලොගයන් මකන්න</string>
+ <string name="delete_call_message">ඇමතුම් ලොගයන් මකමින්\u2026</string>
+ <string name="delete_call_alert">තෝරාගත් ඇමතුම් ලොගයන් මකන්නද?</string>
+ <string name="title_del_call">මකන්න</string>
+</resources>
diff --git a/res/values-sk/cm_plurals.xml b/res/values-sk/cm_plurals.xml
new file mode 100644
index 000000000..8a43410e7
--- /dev/null
+++ b/res/values-sk/cm_plurals.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d vybratý</item>
+ <item quantity="few">%d vybraté</item>
+ <item quantity="other">%d vybratých</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d kontakt bude importovaný.</item>
+ <item quantity="few">%d kontakty budú importované.</item>
+ <item quantity="other">%d kontaktov bude importovaných.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kontakt boli importovaný</item>
+ <item quantity="few">%d kontakty boli importované</item>
+ <item quantity="other">%d kontaktov bolo importovaných</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d kontakt bude vymazaný.</item>
+ <item quantity="few">%d kontakty budú vymazané.</item>
+ <item quantity="other">%d kontaktov bude vymazaných.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d osoba toto označila ako spam</item>
+ <item quantity="few">%d osoby toto označili ako spam</item>
+ <item quantity="other">%d osôb toto označilo ako spam</item>
+ </plurals>
+</resources>
diff --git a/res/values-sk/cm_strings.xml b/res/values-sk/cm_strings.xml
new file mode 100644
index 000000000..16e3f2292
--- /dev/null
+++ b/res/values-sk/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Nepodarilo sa uložiť vybrané kontakty na kartu SIM</string>
+ <string name="airplane_mode_on">Karta SIM nie je prístupná pri zapnutom režime v lietadle</string>
+ <string name="number_anr_too_long">Číslo je príliš dlhé</string>
+ <string name="email_address_too_long">E-mailová adresa je príliš dlhá</string>
+ <string name="sim_card_full">Karta SIM je plná</string>
+ <string name="tag_too_long">Meno kontaktu je príliš dlhé</string>
+ <string name="invalid_phone_number">Telefónne číslo je neplatné</string>
+ <string name="invalid_number_type">Typ čísla je neplatný</string>
+ <string name="no_phone_number_or_email">Prosím, zadajte telefónne číslo alebo e-mailovú adresu.</string>
+ <string name="memory_card_full">Kontakt sa nepodarilo uložiť kvôli plnej pamäti telefónu</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Skupiny</string>
+ <string name="menu_moveGroupMembers">Presunúť členov skupiny</string>
+ <string name="title_move_members">Presunúť členov</string>
+ <string name="message_move_members">Presúvanie členov\u2026</string>
+ <string name="message_can_not_move_members">Nemožno presunúť členov</string>
+ <string name="edit_before_call">Upraviť číslo pred zavolaním</string>
+ <string name="menu_sendViaSMS">Poslať kontakt cez SMS</string>
+ <string name="select_all">Všetky</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importovať kontakty zo SIM</string>
+ <string name="import_sim_contacts_message">Importovanie kontaktov zo SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importovať kontakt?</string>
+ <string name="import_finish">Import sa dokončil</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Vymazať kontakty</string>
+ <string name="delete_contacts_message">Vymazávanie kontaktov\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Vymazať kontakt?</string>
+ <string name="too_many_contacts_add_to_group">Nie viac ako <xliff:g id="count">%d</xliff:g> kontaktov môže byť pridaných</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Stav pamäte</string>
+ <string name="memory_size">Celkom:</string>
+ <string name="memory_used">Použité:</string>
+ <string name="calculating_status_now">Vypočítavanie stavu\u2026</string>
+ <string name="menu_copyTo">Kopírovať do <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Kontakty USIM nemajú k dispozícii e-mailové pole. Nemožno kopírovať správy.</string>
+ <string name="voicemail">Hlasová pošta</string>
+ <string name="select_call_title">Vyberte denníky hovorov</string>
+ <string name="delete_call_title">Vymazať denníky hovorov</string>
+ <string name="delete_call_message">Vymazávanie denníkov hovorov\u2026</string>
+ <string name="delete_call_alert">Vymazať vybrané denníky hovorov?</string>
+ <string name="title_del_call">Vymazať</string>
+ <string name="powered_by_provider">Používa služby <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-sl/cm_plurals.xml b/res/values-sl/cm_plurals.xml
new file mode 100644
index 000000000..c67710587
--- /dev/null
+++ b/res/values-sl/cm_plurals.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d izbran</item>
+ <item quantity="two">%d izbrana</item>
+ <item quantity="few">%d izbrani</item>
+ <item quantity="other">%d izbranih</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">Uvožen bo %d stik.</item>
+ <item quantity="two">Uvožena bosta %d stika.</item>
+ <item quantity="few">Uvoženi bodo %d stiki.</item>
+ <item quantity="other">Uvoženih bo %d stikov.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">Uvožen %d stik</item>
+ <item quantity="two">Uvožena %d stika</item>
+ <item quantity="few">Uvoženi %d stiki</item>
+ <item quantity="other">Uvoženih %d stikov</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">Izbrisan bo %d stik.</item>
+ <item quantity="two">Izbrisana bosta %d stika.</item>
+ <item quantity="few">Izbrisani bodo %d stiki.</item>
+ <item quantity="other">Izbrisanih bo %d stikov.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d oseba je to označila kot neželeno</item>
+ <item quantity="two">%d osebi sta to označili kot neželeno</item>
+ <item quantity="few">%d osebe so to označile kot neželeno</item>
+ <item quantity="other">%d oseb je to označilo kot neželeno</item>
+ </plurals>
+</resources>
diff --git a/res/values-sl/cm_strings.xml b/res/values-sl/cm_strings.xml
new file mode 100644
index 000000000..9d6e96026
--- /dev/null
+++ b/res/values-sl/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Izbranih stikov ni bilo mogoče shraniti na kartico SIM</string>
+ <string name="airplane_mode_on">Ni mogoče dostopati do kartice SIM, ko je način za letalo omogočen</string>
+ <string name="number_anr_too_long">Število je predolgo</string>
+ <string name="email_address_too_long">E-poštni naslov je predolg</string>
+ <string name="sim_card_full">Kartica SIM je polna</string>
+ <string name="tag_too_long">Ime stika je predolgo</string>
+ <string name="invalid_phone_number">Telefonska številka je neveljavna</string>
+ <string name="invalid_number_type">Vrsta številke je neveljavna</string>
+ <string name="no_phone_number_or_email">Vstavite tel. številko ali e-poštni naslov.</string>
+ <string name="memory_card_full">Stika ni bilo mogoče shraniti, pomnilnik telefona je poln</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Skupine</string>
+ <string name="menu_moveGroupMembers">Premakni člane skupine</string>
+ <string name="title_move_members">Premakni člane</string>
+ <string name="message_move_members">Premikanje članov \u2026</string>
+ <string name="message_can_not_move_members">Premikanje članov ni mogoče</string>
+ <string name="edit_before_call">Uredi številko pred klicem</string>
+ <string name="menu_sendViaSMS">Pošlji stik preko SMS-a</string>
+ <string name="select_all">Vse</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Uvozi stike SIM</string>
+ <string name="import_sim_contacts_message">Uvažanje stikov SIM \u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Uvozi stik?</string>
+ <string name="import_finish">Uvoz končan</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Izbriši stike</string>
+ <string name="delete_contacts_message">Brisanje stikov \u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Izbriši stik?</string>
+ <string name="too_many_contacts_add_to_group">Dodanih ne more bite več kot <xliff:g id="count">%d</xliff:g> stikov</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Stanje pomnilnika</string>
+ <string name="memory_size">Skupaj:</string>
+ <string name="memory_used">Uporabljeno:</string>
+ <string name="calculating_status_now">Računanje stanja \u2026</string>
+ <string name="menu_copyTo">Kopiraj v <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">Stik USIM nima na voljo e-poštnega polja, sporočila ni mogoče kopirati.</string>
+ <string name="voicemail">Glasovna pošta</string>
+ <string name="select_call_title">Izberite dnevnike klicev</string>
+ <string name="delete_call_title">Izbriši dnevnike klicev</string>
+ <string name="delete_call_message">Brisanje dnevnikov klicev \u2026</string>
+ <string name="delete_call_alert">Izbriši izbrane dnevnike klicev?</string>
+ <string name="title_del_call">Izbriši</string>
+ <string name="powered_by_provider">Omogoča <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-sq-rAL/cm_strings.xml b/res/values-sq-rAL/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-sq-rAL/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-sr/cm_plurals.xml b/res/values-sr/cm_plurals.xml
new file mode 100644
index 000000000..5ec2f4e14
--- /dev/null
+++ b/res/values-sr/cm_plurals.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d изабран</item>
+ <item quantity="few">%d изабрана</item>
+ <item quantity="other">%d изабрано</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d контакт ће бити увезен.</item>
+ <item quantity="few">%d контакта ће бити увезена.</item>
+ <item quantity="other">%d контаката ће бити увезено.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d контакт увезен</item>
+ <item quantity="few">%d контакта увезена</item>
+ <item quantity="other">%d контаката увезено</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d контакт ће бити избрисан.</item>
+ <item quantity="few">%d контакта ће бити избрисана.</item>
+ <item quantity="other">%d контаката ће бити избрисано.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d особа је ово означила као нежељено</item>
+ <item quantity="few">%d особе су ово означиле као нежељено</item>
+ <item quantity="other">%d особа је ово означило као нежељено</item>
+ </plurals>
+</resources>
diff --git a/res/values-sr/cm_strings.xml b/res/values-sr/cm_strings.xml
new file mode 100644
index 000000000..afbaf735f
--- /dev/null
+++ b/res/values-sr/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Не може да се сачува изабрани контакт на SIM картици</string>
+ <string name="airplane_mode_on">Не може се приступити SIM картици док је режим рада у авиону омогућен</string>
+ <string name="number_anr_too_long">Број је предуг</string>
+ <string name="email_address_too_long">Адреса Е-поште је предуга</string>
+ <string name="sim_card_full">SIM картица је пуна</string>
+ <string name="tag_too_long">Име контакта је предуго</string>
+ <string name="invalid_phone_number">Телефонски број је неважећи</string>
+ <string name="invalid_number_type">Тип броја је неважећи</string>
+ <string name="no_phone_number_or_email">Унеси број телефона или адресу е-поште.</string>
+ <string name="memory_card_full">Контакт не може бити сачуван, меморија телефона је пуна</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Групе</string>
+ <string name="menu_moveGroupMembers">Премести чланове групе</string>
+ <string name="title_move_members">Премести чланове</string>
+ <string name="message_move_members">Премештање чланова\u2026</string>
+ <string name="message_can_not_move_members">Не могу преместити чланове</string>
+ <string name="edit_before_call">Уреди број пре позива</string>
+ <string name="menu_sendViaSMS">Пошаљи контакт преко SMS</string>
+ <string name="select_all">Све</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Увези SIM контакте</string>
+ <string name="import_sim_contacts_message">Увоз SIM контаката\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Увези контакт?</string>
+ <string name="import_finish">Увоз завршен</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Избриши контакте</string>
+ <string name="delete_contacts_message">Брисање контаката\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Избриши контакт?</string>
+ <string name="too_many_contacts_add_to_group">Не више од <xliff:g id="count">%d</xliff:g> контаката може бити додато</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Статус меморије</string>
+ <string name="memory_size">Укупно:</string>
+ <string name="memory_used">Искоришћено:</string>
+ <string name="calculating_status_now">Рачунање статуса\u2026</string>
+ <string name="menu_copyTo">Копирај на <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM контакт нема доступно поље е-поште, не могу копирати поруке.</string>
+ <string name="voicemail">Говорна пошта</string>
+ <string name="select_call_title">Изабери евиденцију позива</string>
+ <string name="delete_call_title">Избриши евиденције позива</string>
+ <string name="delete_call_message">Брисање евиденција позива\u2026</string>
+ <string name="delete_call_alert">Избриши изабране евиденције позива?</string>
+ <string name="title_del_call">Избриши</string>
+ <string name="powered_by_provider">Омогућено од <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-sv/cm_plurals.xml b/res/values-sv/cm_plurals.xml
new file mode 100644
index 000000000..ae9d73b4b
--- /dev/null
+++ b/res/values-sv/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d markerad</item>
+ <item quantity="other">%d markerade</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d kontakt kommer importeras.</item>
+ <item quantity="other">%d kontakter kommer importeras.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kontakt importerades</item>
+ <item quantity="other">%d kontakter importerades</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d kontakt kommer att tas bort.</item>
+ <item quantity="other">%d kontakter kommer att tas bort.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d person markerade detta som skräppost</item>
+ <item quantity="other">%d personer markerade detta som skräppost</item>
+ </plurals>
+</resources>
diff --git a/res/values-sv/cm_strings.xml b/res/values-sv/cm_strings.xml
new file mode 100644
index 000000000..ea9b5c330
--- /dev/null
+++ b/res/values-sv/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Kunde inte spara de valda kontakterna till SIM-kortet</string>
+ <string name="airplane_mode_on">SIM-kortet kan inte nås när flygplansläge är aktiverat</string>
+ <string name="number_anr_too_long">Numret är för lång</string>
+ <string name="email_address_too_long">E-postadressen är för lång</string>
+ <string name="sim_card_full">SIM-kortet är fullt</string>
+ <string name="tag_too_long">Kontaktnamnet är för långt</string>
+ <string name="invalid_phone_number">Telefonnumret är ogiltigt</string>
+ <string name="invalid_number_type">Nummertypen är ogiltig</string>
+ <string name="no_phone_number_or_email">Vänligen ange ett telefonnummer eller e-postadress.</string>
+ <string name="memory_card_full">Kontakten kunde inte sparas, telefonens minne är fullt</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Grupper</string>
+ <string name="menu_moveGroupMembers">Flytta gruppmedlemmar</string>
+ <string name="title_move_members">Flytta medlemmar</string>
+ <string name="message_move_members">Flytta medlemmar\u2026</string>
+ <string name="message_can_not_move_members">Kan inte flytta medlemmar</string>
+ <string name="edit_before_call">Redigera nummer innan uppringning</string>
+ <string name="menu_sendViaSMS">Skicka kontakt via SMS</string>
+ <string name="select_all">Alla</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Importera kontakter från SIM-kort</string>
+ <string name="import_sim_contacts_message">Importerar SIM-kontakter\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Importera kontakt?</string>
+ <string name="import_finish">Import slutförd</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Ta bort kontakter</string>
+ <string name="delete_contacts_message">Tar bort kontakter\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Ta bort kontakt?</string>
+ <string name="too_many_contacts_add_to_group">Maximalt <xliff:g id="count">%d</xliff:g> kontakter kan delas</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Minnesstatus</string>
+ <string name="memory_size">Totalt:</string>
+ <string name="memory_used">Använt:</string>
+ <string name="calculating_status_now">Beräknar status\u2026</string>
+ <string name="menu_copyTo">Kopiera till <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM-kontakten har inte ett tillgänglig epostfält, kan inte kopiera meddelanden.</string>
+ <string name="voicemail">Telefonsvarare</string>
+ <string name="select_call_title">Välj samtalslistor</string>
+ <string name="delete_call_title">Ta bort samtalslistor</string>
+ <string name="delete_call_message">Tar bort samtalslistor\u2026</string>
+ <string name="delete_call_alert">Ta bort valda samtalslistor?</string>
+ <string name="title_del_call">Ta bort</string>
+ <string name="powered_by_provider">Drivs av <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-sw/cm_strings.xml b/res/values-sw/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-sw/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-ta-rIN/cm_strings.xml b/res/values-ta-rIN/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-ta-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-te-rIN/cm_strings.xml b/res/values-te-rIN/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-te-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-th/cm_plurals.xml b/res/values-th/cm_plurals.xml
new file mode 100644
index 000000000..07cbbb113
--- /dev/null
+++ b/res/values-th/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="other">%d รายชื่อถูกเลือก</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="other">%d รายชื่อติดต่อจะถูกนำเข้า</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="other">%d รายชื่อถูกนำเข้าแล้ว</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="other">%d รายชื่อจะถูกลบ</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="other">%d คน ระบุว่าสิ่งนี้เป็นสแปม</item>
+ </plurals>
+</resources>
diff --git a/res/values-th/cm_strings.xml b/res/values-th/cm_strings.xml
new file mode 100644
index 000000000..3f0436048
--- /dev/null
+++ b/res/values-th/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">ไม่สามารถบันทึกรายชื่อติดต่อที่เลือกไปยังซิมการ์ดได้</string>
+ <string name="airplane_mode_on">ไม่สามารถเข้าถึงซิมการ์ดในขณะเปิดใช้งานโหมดเครื่องบิน</string>
+ <string name="number_anr_too_long">หมายเลขยาวเกินไป</string>
+ <string name="email_address_too_long">ที่อยู่อีเมลยาวเกินไป</string>
+ <string name="sim_card_full">ซิมการ์ดเต็ม</string>
+ <string name="tag_too_long">ชื่อผู้ติดต่อยาวเกินไป</string>
+ <string name="invalid_phone_number">หมายเลขโทรศัพท์ไม่ถูกต้อง</string>
+ <string name="invalid_number_type">รูปแบบหมายเลขไม่ถูกต้อง</string>
+ <string name="no_phone_number_or_email">กรุณาใส่หมายเลขโทรศัพท์หรือที่อยู่อีเมล</string>
+ <string name="memory_card_full">ไม่สามารถบันทึกรายชื่อผู้ติดต่อได้ หน่วยความจำโทรศัพท์เต็ม</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">กลุ่ม</string>
+ <string name="menu_moveGroupMembers">ย้ายสมาชิกกลุ่ม</string>
+ <string name="title_move_members">ย้ายสมาชิก</string>
+ <string name="message_move_members">กำลังย้ายสมาชิก\u2026</string>
+ <string name="message_can_not_move_members">ไม่สามารถย้ายสมาชิก</string>
+ <string name="edit_before_call">แก้ไข​หมายเลขก่อน​โทร</string>
+ <string name="menu_sendViaSMS">ส่งรายชื่อติดต่อผ่าน SMS</string>
+ <string name="select_all">ทั้งหมด</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">นำเข้ารายชื่อติดต่อจากซิม</string>
+ <string name="import_sim_contacts_message">กำลังนำเข้ารายชื่อติดต่อจากซิม\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">นำเข้ารายชื่อติดต่อหรือไม่</string>
+ <string name="import_finish">นำเข้าเสร็จสิ้น</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">ลบ​ราย​ชื่อ</string>
+ <string name="delete_contacts_message">กำลังลบรายชื่อ\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">ลบ​ราย​ชื่อหรือไม่</string>
+ <string name="too_many_contacts_add_to_group">ไม่สามารถเพิ่มรายชื่อติดต่อได้เกิน <xliff:g id="count">%d</xliff:g> ชื่อ</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">สถานะหน่วยความจำ</string>
+ <string name="memory_size">ทั้งหมด:</string>
+ <string name="memory_used">ใช้แล้ว:</string>
+ <string name="calculating_status_now">กำลังคำนวณสถานะ\u2026</string>
+ <string name="menu_copyTo">คัดลอกไปยัง<xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">รายชื่อติดต่อ USIM ไม่มีช่องอีเมลให้ใช้งาน ไม่สามารถคัดลอกข้อความได้</string>
+ <string name="voicemail">ข้อความเสียง</string>
+ <string name="select_call_title">เลือกประวัติการโทร</string>
+ <string name="delete_call_title">ลบประวัติการโทร</string>
+ <string name="delete_call_message">กำลังลบประวัติการโทร\u2026</string>
+ <string name="delete_call_alert">ลบประวัติการโทรที่เลือกหรือไม่</string>
+ <string name="title_del_call">ลบ</string>
+ <string name="powered_by_provider">ดำเนินงานโดย <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-tr/cm_plurals.xml b/res/values-tr/cm_plurals.xml
new file mode 100644
index 000000000..1f4350423
--- /dev/null
+++ b/res/values-tr/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d kişi seçildi</item>
+ <item quantity="other">%d kişi seçildi</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d kişi alınacak.</item>
+ <item quantity="other">%d kişi alınacak.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d kişi alındı</item>
+ <item quantity="other">%d kişi alındı</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d kişi silinecek.</item>
+ <item quantity="other">%d kişi silinecek.</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="one">%d kişi bunu spam olarak işaretledi</item>
+ <item quantity="other">%d kişi bunu spam olarak işaretledi</item>
+ </plurals>
+</resources>
diff --git a/res/values-tr/cm_strings.xml b/res/values-tr/cm_strings.xml
new file mode 100644
index 000000000..096c01285
--- /dev/null
+++ b/res/values-tr/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Seçili kişiler SIM karta kaydedilemedi</string>
+ <string name="airplane_mode_on">Uçak modu etkinken SIM karta erişilemez</string>
+ <string name="number_anr_too_long">Numara çok uzun</string>
+ <string name="email_address_too_long">E-posta adresi çok uzun</string>
+ <string name="sim_card_full">SIM kart dolu</string>
+ <string name="tag_too_long">Kişi adı çok uzun </string>
+ <string name="invalid_phone_number">Telefon numarası geçersiz</string>
+ <string name="invalid_number_type">Numara türü geçersiz</string>
+ <string name="no_phone_number_or_email">Lütfen bir telefon numarası ya da e-posta adresi girin.</string>
+ <string name="memory_card_full">Kişi kaydedilemedi, telefon belleği dolu</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Gruplar</string>
+ <string name="menu_moveGroupMembers">Grup üyelerini taşı </string>
+ <string name="title_move_members">Üyeleri taşı </string>
+ <string name="message_move_members">Üyeler taşınıyor\u2026</string>
+ <string name="message_can_not_move_members">Üyeler taşınamıyor</string>
+ <string name="edit_before_call">Çağrıdan önce numarayı düzenle</string>
+ <string name="menu_sendViaSMS">Kişiyi SMS ile gönder</string>
+ <string name="select_all">Tümü</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">SIM kişilerini al</string>
+ <string name="import_sim_contacts_message">SIM kişileri alınıyor\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Kişi alınsın mı?</string>
+ <string name="import_finish">Alma işi bitti</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Kişileri sil</string>
+ <string name="delete_contacts_message">Kişiler siliniyor\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Kişi silinsin mi?</string>
+ <string name="too_many_contacts_add_to_group"><xliff:g id="count">%d</xliff:g>\'den fazla kişi eklenemez</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Hafıza durumu</string>
+ <string name="memory_size">Toplam:</string>
+ <string name="memory_used">Kullanılan:</string>
+ <string name="calculating_status_now">Durum hesaplanıyor\u2026</string>
+ <string name="menu_copyTo"><xliff:g id="destination">%s</xliff:g> konumuna kopyala</string>
+ <string name="no_empty_email_in_usim">USIM kişisinin mevcut e-posta alanı yok, mesajlar kopyalanamıyor.</string>
+ <string name="voicemail">Sesli mesaj</string>
+ <string name="select_call_title">Arama kayıtlarını seç</string>
+ <string name="delete_call_title">Arama kayıtlarını sil</string>
+ <string name="delete_call_message">Arama kayıtları siliniyor\u2026</string>
+ <string name="delete_call_alert">Seçili arama kayıtları silinsin mi?</string>
+ <string name="title_del_call">Sil</string>
+ <string name="powered_by_provider"><xliff:g id="provider">%s</xliff:g> tarafından desteklenmektedir</string>
+</resources>
diff --git a/res/values-ug/cm_plurals.xml b/res/values-ug/cm_plurals.xml
new file mode 100644
index 000000000..7318ddaea
--- /dev/null
+++ b/res/values-ug/cm_plurals.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="other">%d تاللاندى</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="other">%d ئالاقەداش ئەكىرىلىدۇ.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="other">%d ئالاقەداش ئەكىرىلدى</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="other">%d ئالاقەداش ئۆچۈرۈلىدۇ.</item>
+ </plurals>
+</resources>
diff --git a/res/values-ug/cm_strings.xml b/res/values-ug/cm_strings.xml
new file mode 100644
index 000000000..4fc683075
--- /dev/null
+++ b/res/values-ug/cm_strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">تاللىغان ئالاقەداشلارنى SIM كارتىغا ساقلىيالمايدۇ</string>
+ <string name="airplane_mode_on">ئايروپىلان ھالىتى قوزغىتىلغاندا SIM كارتىنى زىيارەت قىلالمايدۇ</string>
+ <string name="number_anr_too_long">نومۇر بەك ئۇزۇن</string>
+ <string name="email_address_too_long">تورخەت ئادرېس بەك ئۇزۇن</string>
+ <string name="sim_card_full">SIM كارتا لىق</string>
+ <string name="tag_too_long">ئالاقەداش ئىسمى بەك ئۇزۇن</string>
+ <string name="invalid_phone_number">تېلېفون نومۇرى ئىناۋەتسىز</string>
+ <string name="invalid_number_type">نومۇر تىپى ئىناۋەتسىز</string>
+ <string name="no_phone_number_or_email">تېلېفون نومۇرى ياكى تورخەت ئادرېسىنى كىرگۈزۈڭ.</string>
+ <string name="memory_card_full">ئالاقەداشنى ساقلىيالمايدۇ، تېلېفون ئەسلىكى لىق</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">گۇرۇپپا</string>
+ <string name="menu_moveGroupMembers">گۇرۇپپا ئەزاسىنى يۆتكە</string>
+ <string name="title_move_members">ئەزالارنى يۆتكە</string>
+ <string name="message_move_members">ئەزالارنى يۆتكەۋاتىدۇ\u2026</string>
+ <string name="message_can_not_move_members">ئەزالارنى يۆتكىيەلمىدى</string>
+ <string name="edit_before_call">چاقىرىشتىن ئىلگىرى نومۇر تەھرىر</string>
+ <string name="menu_sendViaSMS">ئالاقەداشنى قىسقا ئۇچۇر ئارقىلىق يوللا</string>
+ <string name="select_all">ھەممىسى</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">SIM كارتىدىكى ئالاقەداشلارنى ئەكىر</string>
+ <string name="import_sim_contacts_message">SIM كارتىدىكى ئالاقەداشلارنى ئەكىرىۋاتىدۇ\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">ئالاقەداش ئەكىرەمدۇ؟</string>
+ <string name="import_finish">ئەكىرىش تامام</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">ئالاقەداشلارنى ئۆچۈر</string>
+ <string name="delete_contacts_message">ئالاقەداشلارنى ئۆچۈرۈۋاتىدۇ\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">ئالاقەداش ئۆچۈرەمدۇ؟</string>
+ <string name="too_many_contacts_add_to_group">قوشىدىغان ئالاقەداش <xliff:g id="count">%d</xliff:g> دىن ئاشسا بولمايدۇ</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">ئەسلەك ھالىتى</string>
+ <string name="memory_size">جەمئىي:</string>
+ <string name="memory_used">ئىشلىتىلگىنى:</string>
+ <string name="calculating_status_now">ھالىتىنى ھېسابلاۋاتىدۇ\u2026</string>
+ <string name="menu_copyTo"><xliff:g id="destination">%s</xliff:g> غا كۆچۈر</string>
+ <string name="no_empty_email_in_usim">USIM ئالاقەداشنىڭ ئىشلەتكىلى بولىدىغان تورخەت سۆز بۆلىكى يوق، ئۇچۇرنى كۆچۈرەلمەيدۇ.</string>
+ <string name="voicemail">ئۈنخەت</string>
+ <string name="select_call_title">چاقىرىش خاتىرىسىنى تاللاش</string>
+ <string name="delete_call_title">چاقىرىش خاتىرىسىنى ئۆچۈرۇش</string>
+ <string name="delete_call_message">چاقىرىش خاتىرىسىنى ئۆچۈرۈۋاتىدۇ\u2026</string>
+ <string name="delete_call_alert">تاللانغان چاقىرىش خاتىرىسىنى ئۆچۈرەمدۇ؟</string>
+ <string name="title_del_call">ئۆچۈر</string>
+</resources>
diff --git a/res/values-ug/strings.xml b/res/values-ug/strings.xml
new file mode 100644
index 000000000..d1d2a9584
--- /dev/null
+++ b/res/values-ug/strings.xml
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- 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.
+-->
+<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. -->
+ <!-- Title for the activity that launches Contacts. This is the name
+ used in the Launcher icon. -->
+ <!-- Directory partition name -->
+ <string name="contactsList">ئالاقەداشلار</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutContact">ئالاقەداش</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutDialContact">بىۋاسىتە نومۇر بۇراش</string>
+ <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+ This shows up in a list of things like bookmark, folder, music playlist, etc -->
+ <string name="shortcutMessageContact">بىۋاسىتە ئۇچۇر يوللاش</string>
+ <!-- Activity title when the user is selecting a contact for a shortcut. -->
+ <string name="shortcutActivityTitle">ئالاقەداشقا تېز كۇنۇپكا تاللاڭ</string>
+ <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+ <string name="callShortcutActivityTitle">بۇرايدىغان نومۇر تاللاڭ</string>
+ <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+ <string name="messageShortcutActivityTitle">ئۇچۇر يوللايدىغان نومۇر تاللاڭ</string>
+ <!-- Activity title when the user is inserting into an existing contact, or creating a new one. [CHAR LIMIT=128] -->
+ <!-- Activity title when the user is selecting a contact. [CHAR LIMIT=128] -->
+ <string name="contactPickerActivityTitle">بىر ئالاقەداش تاللاڭ</string>
+ <!-- Entry that prompts user to select a newly created contact. [CHAR LIMIT=30] -->
+ <!-- Title for the activity that shows only starred contacts -->
+ <string name="starredList">يۇلتۇزلۇق</string>
+ <!-- Title for the activity that shows only frequently contacted contacts -->
+ <string name="frequentList">دائىم</string>
+ <!-- Title for the activity that shows a mix of starred contacts and frequently contacted
+ contacts. -->
+ <string name="strequentList">يىغقۇچ</string>
+ <!-- The title bar when viewing the contact details activity -->
+ <string name="viewContactTitle">ئالاقەداش تەپسىلاتى</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a contact. This string represents the built in way to edit the contact. -->
+ <string name="editContactDescription">ئالاقەداش تەھرىر</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new contact. This string represents the built in way to create the contact. -->
+ <string name="insertContactDescription">ئالاقەداش قۇر</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ editing a group. This string represents the built in way to edit the group. [CHAR LIMIT=NONE] -->
+ <string name="editGroupDescription">گۇرۇپپا تەھرىر</string>
+ <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
+ creating a new group. This string represents the built in way to create the group. [CHAR LIMIT=NONE] -->
+ <string name="insertGroupDescription">گۇرۇپپا قۇر</string>
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <string name="contactDetailAbout">ھەققىدە</string>
+ <!-- The tab label for the contact detail activity that displays information about the contact [CHAR LIMIT=15] -->
+ <string name="contactDetailUpdates">يېڭىلانمىلار</string>
+ <!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
+ <string name="searchHint">ئالاقەداش ئىزدە</string>
+ <!-- Menu item used to view the details for a specific contact -->
+ <string name="menu_viewContact">ئالاقەداشنى كۆرسەت</string>
+ <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
+ <string name="menu_addStar">يىغقۇچقا قوش</string>
+ <!-- Menu item used to remove a star from a contact, making the contact no longer show up at the top of favorites -->
+ <string name="menu_removeStar">يىغقۇچتىن چىقىرىۋەت</string>
+ <!-- Description of what happens when you click on the unstar MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Description of what happens when you click on the star MenuItem. [CHAR LIMIT=NONE] -->
+ <!-- Menu item used to edit a specific contact -->
+ <string name="menu_editContact">تەھرىر</string>
+ <!-- Menu item used to delete a specific contact -->
+ <string name="menu_deleteContact">ئۆچۈر</string>
+ <!-- Menu item used to change the photo for a specific contact [CHAR LIMIT=30]-->
+ <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
+ <string name="menu_create_contact_shortcut">باش ئېكرانغا جايلاشتۇر</string>
+ <!-- Menu item used to call a specific contact when viewing the details of that contact. -->
+ <string name="menu_call">ئالاقەداشنى چاقىر</string>
+ <!-- Menu item used to send an SMS or MMS message to a specific phone number or a contacts default phone number -->
+ <string name="menu_sendSMS">ئالاقەداشقا ئۇچۇر يوللا</string>
+ <!-- Menu item that splits an item from the contact detail into a separate aggregate -->
+ <string name="menu_splitAggregate">ئايرىش</string>
+ <!-- Menu item that edits the currently selected group [CHAR LIMIT=30] -->
+ <string name="menu_editGroup">تەھرىر</string>
+ <!-- Menu item that deletes the currently selected group [CHAR LIMIT=30] -->
+ <string name="menu_deleteGroup">ئۆچۈر</string>
+ <!-- Menu item (in the action bar) that creates a new contact [CHAR LIMIT=30] -->
+ <string name="menu_new_contact_action_bar">ئالاقەداش قوش</string>
+ <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
+ <string name="menu_new_group_action_bar">گۇرۇپپا قوش</string>
+ <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=26] -->
+ <string name="splitConfirmation_title">ئالاقەداش پارچىلامدۇ؟</string>
+ <!-- Confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=NONE] -->
+ <string name="splitConfirmation">بۇ ئالاقەداش كۆپ ئالاقەداشقا پارچىلىنىدۇ.</string>
+ <!-- Menu item that joins an aggregate with another aggregate -->
+ <!-- Menu item (in the action bar) to indicate that changes should be saved [CHAR LIMIT=20] -->
+ <!-- Heading of the Join Contact screen -->
+ <string name="titleJoinContactDataWith">ئالاقەداش بىرلەشتۈر</string>
+ <!-- Info blurb on the Join Contact screen [CHAR LIMIT=NONE]-->
+ <string name="blurbJoinContactDataWith"><xliff:g id="NAME">%s</xliff:g> بىلەن بىرلەشتۈرىدىغان ئالاقەداشنى تاللاڭ:</string>
+ <!-- An item in the Join Contact activity that opens up the full contact A-Z list -->
+ <string name="showAllContactsJoinItem">ھەممە ئالاقەداشنى كۆرسەت</string>
+ <!-- List separator for the Join Contact list: Suggestions -->
+ <string name="separatorJoinAggregateSuggestions">تەۋسىيە ئالاقەداشلار</string>
+ <!-- List separator for the Join Contact list: A-Z -->
+ <string name="separatorJoinAggregateAll">ھەممە ئالاقەداشلار</string>
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
+ <string name="menu_set_ring_tone">قوڭغۇراق ئاۋاز تەڭشىكى</string>
+ <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
+ <string name="menu_redirect_calls_to_vm">ھەممە چاقىرىشنى ئۈنخەتكە يوللا</string>
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+ <string name="readOnlyContactWarning">ئوقۇشقىلا بولىدىغان ھېساباتتىكى ئالاقەداشلارنى ئۆچۈرەلمەيسىز ئەمما ئالاقەداشلار تىزىملىكىدىن يوشۇرالايسىز.</string>
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <string name="readOnlyContactDeleteConfirmation">بۇ ئالاقەداشنىڭ ئۇچۇرىدا كۆپ ھېساباتتىن كەلگەن ئۇچۇر بار. پەقەت ئوقۇشقىلا بولىدىغان ھېساباتتىن كەلگەن ئۇچۇرلار ئالاقەداشلار تىزىملىكىڭىزدە يوشۇرۇلىدۇ ئەمما ئۆچۈرۈلمەيدۇ.</string>
+ <!-- Warning dialog. Shown if user selects a single contact to merge. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to merge contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete writable contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
+ <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE] -->
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <string name="multipleContactDeleteConfirmation">بۇ ئالاقەداش ئۆچۈرۈلسە كۆپ ھېساباتتىكى ئۇچۇر ئۆچۈرۈلىدۇ.</string>
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
+ <string name="deleteConfirmation">بۇ ئالاقەداش ئۆچۈرۈلىدۇ.</string>
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <!-- Message displayed in a toast when you try to view the details of a contact that
+ for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
+ <string name="invalidContactMessage">ئالاقەداش مەۋجۇت ئەمەس</string>
+ <!-- Message displayed in a toast after you create a contact shortcut in the launcher [CHAR LIMIT=NONE]-->
+ <string name="createContactShortcutSuccessful">ئالاقەداش ئەپچە باش ئېكرانغا قوشۇلدى.</string>
+ <!-- When picking a contact from a list of all contacts there is an entry at the top of the
+ list that allows the user to create a new contact, which this string is used for -->
+ <string name="pickerNewContactHeader">يېڭى ئالاقەداش قۇر</string>
+ <!-- Text for a "create new contact" button on the bottom of the contact picker screen.
+ The text will be all capitalized.
+ [CHAR LIMIT=30] -->
+ <string name="pickerNewContactText">يېڭى ئالاقەداش قۇر</string>
+ <!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
+ <!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
+ <string-array name="otherLabels">
+ <!-- An organization associated with a contact -->
+ <item>تەشكىل</item>
+ <!-- A note associated with a contact -->
+ <item>ئىزاھات</item>
+ </string-array>
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <string name="photoPickerNotFoundText" product="tablet">تاختا كومپيۇتېردا رەسىم يوق.</string>
+ <!-- Description in the dialog that appears if there are no pictures from which to create an icon for a contact -->
+ <string name="photoPickerNotFoundText" product="default">تېلېفوندا رەسىمى يوق.</string>
+ <!-- Description used in the attach photo Intent from third party apps [CHAR LIMIT=50] -->
+ <string name="attach_photo_dialog_title">ئالاقەداش سۈرىتى</string>
+ <!-- Title of the dialog used to set a custom label for a contact detail, like a phone number or email address.
+ For example, this may be used to set a phone number's label to "Vaction house" -->
+ <string name="customLabelPickerTitle">ئۆزلەشتۈرگەن بەلگە ئاتى</string>
+ <!-- Check box label that allows calls to the contact to be sent directly to voicemail -->
+ <string name="send_to_voicemail_checkbox">چاقىرىشنى بىۋاسىتە ئۈنخەتكە يوللا</string>
+ <!-- The menu item that allows you to remove a photo from a contact [CHAR LIMIT=50] -->
+ <string name="removePhoto">سۈرەتنى چىقىرىۋەت</string>
+ <!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
+ <string name="noContacts">ئالاقەداشلار يوق.</string>
+ <!-- The text displayed when the groups list is empty while displaying all groups [CHAR LIMIT=NONE] -->
+ <string name="noGroups">گۇرۇپپا يوق.</string>
+ <!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
+ <string name="noAccounts">گۇرۇپپا قۇرۇش ئۈچۈن بىر ھېساباتىڭىز بولۇشى كېرەك.</string>
+ <!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
+ <string name="emptyGroup">بۇ گۇرۇپپىدا ئادەم يوق.</string>
+ <!-- The text displayed to instruct users to add members to a group (when viewing a group detail page for a group with no members) [CHAR LIMIT=50] -->
+ <string name="addPeopleToGroup">كۆپرەك قوشۇشتا گۇرۇپپا تەھرىرلەڭ.</string>
+ <!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
+ <string name="savingContact">ئالاقەداش ساقلاۋاتىدۇ…</string>
+ <!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
+ <string name="contactSavedToast">ئالاقەداش ساقلاندى.</string>
+ <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+ <string name="contactSavedErrorToast">ئالاقەداش ئۆزگىرىشلىرىنى ساقلىيالمايدۇ.</string>
+ <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
+ <!-- Toast displayed when a group is saved [CHAR LIMIT=NONE] -->
+ <string name="groupSavedToast">گۇرۇپپا ساقلاندى.</string>
+ <!-- Toast displayed when saving a group failed [CHAR LIMIT=NONE] -->
+ <string name="groupSavedErrorToast">گۇرۇپپا ئۆزگىرىشلىرىنى ساقلىيالمايدۇ.</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
+ <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+ <string name="listTotalPhoneContactsZero">ئالاقەداشنىڭ تېلېفون نومۇرى يوق</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
+ <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
+ <string name="listFoundAllContactsZero">ئالاقەداش يوق</string>
+ <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <!-- Action string for calling back a number in the call log -->
+ <string name="callBack">قايتۇرۇپ چاقىر</string>
+ <!-- Action string for calling a number in the call log again -->
+ <string name="callAgain">قايتا چاقىر</string>
+ <!-- Action string for returning a missed call in the call log -->
+ <string name="returnCall">چاقىرىشقا قايت</string>
+ <!-- Dialog message when prompting before creating a contact. Includes
+ the email address, e.g. "Add xyz@foo.com to contacts?" -->
+ <string name="add_contact_dlg_message_fmt"><xliff:g id="EMAIL">%s</xliff:g> نى ئالاقەداشقا قوشامدۇ؟</string>
+ <!-- String describing the Contact Photo Image
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <string name="description_contact_photo">ئالاقەداش سۈرىتى</string>
+ <!-- String describing the Contact Editor Plus button
+
+ Used by AccessibilityService to announce the purpose of the button.
+ -->
+ <string name="description_plus_button">قوشۇش</string>
+ <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+ <string name="exporting_contact_list_progress"><xliff:g id="TOTAL_NUMBER">%2$s</xliff:g> دىن <xliff:g id="CURRENT_NUMBER">%1$s</xliff:g> ئالاقەداش</string>
+ <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+ <string name="search_settings_description">ئالاقەداشنىڭ ئاتى</string>
+ <!-- Shown as a toast when the user taps on a QuickContact icon, and no application
+ was found that could perform the selected action. [CHAR LIMIT=NONE] -->
+ <string name="quickcontact_missing_app">بۇ مەشغۇلاتنى بىر تەرەپ قىلىدىغان ئەپ يوق</string>
+ <!-- Content description for the transparent views around the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <!-- When a contact has no data, we prompt the user to add a phone number for the contact. [CHAR LIMIT=40] -->
+ <!-- When a contact has no data, we prompt the user to add an email for the contact. [CHAR LIMIT=40] -->
+ <!-- Shown as a toast when the user attempts an action (add contact, edit
+ contact, etc) and no application was found that could perform that
+ action. [CHAR LIMIT=NONE] -->
+ <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
+ <string name="menu_share">ھەمبەھىر</string>
+ <!-- The menu item to add the the currently viewed contact to your contacts [CHAR LIMIT=30] -->
+ <!-- Dialog title when picking the application to share a contact with. -->
+ <string name="share_via">ئالاقەداش ھەمبەھىر ئۇسۇلى</string>
+ <!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
+ <string name="dialog_new_group_account">ھېسابات ئاستىغا گۇرۇپپا قۇر</string>
+ <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <string name="audio_chat">ئاۋازلىق سۆھبەت</string>
+ <!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
+ <string name="video_chat">سىنلىق پاراڭ</string>
+ <!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
+ <string name="connections">باغلىنىشلار</string>
+ <!-- Label of the button to open the "add connection" popup where the user can invite a contact to other social networks or services [CHAR LIMIT=32] -->
+ <string name="add_connection_button">باغلىنىش قوش</string>
+ <!-- Section title for the page containing the contact's social updates on the contact card (this abbreviated version of "Recent updates" is used when "updates" is already shown as the title of the page) [CHAR LIMIT=20]-->
+ <string name="recent" msgid="2062236709538790412">يېقىنقى</string>
+ <!-- Section title for the page containing the contact's social updates on the contact card [CHAR LIMIT=20]-->
+ <string name="recent_updates" msgid="2018245636796411442">يېقىنقى يېڭىلانمىلار</string>
+ <!-- String describing which account type a contact came from when editing it -->
+ <string name="account_type_format"><xliff:g id="SOURCE">%1$s</xliff:g> ئالاقەداش</string>
+ <!-- String describing that a contact came from the google account type when editing it. -->
+ <!-- String describing which account a contact came from when editing it -->
+ <string name="from_account_format"><xliff:g id="source" example="user@gmail.com">%1$s</xliff:g></string>
+ <!-- Text used to explain that a contact cannot be edited from the People application since the data is read only [CHAR LIMIT=40] -->
+ <string name="contact_read_only">بۇ ئەپتە تەھرىرلىيەلمەيدۇ.</string>
+ <!-- Text used to explain that a group cannot be edited since the data is read only [CHAR LIMIT=40] -->
+ <string name="group_read_only">بۇ ئۈسكۈنىدە تەھرىرلىيەلمەيدۇ</string>
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <string name="take_photo">رەسىم تارت</string>
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <string name="take_new_photo">يېڭى سۈرەت تارت</string>
+ <!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
+ <!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
+ <!-- Text shown in the contacts app while the background process updates contacts after a system upgrade [CHAR LIMIT=300] -->
+ <string name="upgrade_in_progress">ئالاقەداشلار تىزىملىكىنى يېڭىلاۋاتىدۇ.</string>
+ <!-- Title shown in the search result activity of contacts app while searching. [CHAR LIMIT=20] -->
+ <string name="search_results_searching">ئىزدەۋاتىدۇ…</string>
+ <!-- Label to display only selection in multiple picker -->
+ <string name="menu_display_selected">"تاللانغاننى كۆرسەت"</string>
+ <!-- Label to display all recipients in multiple picker -->
+ <string name="menu_display_all">"ھەممىنى كۆرسەت"</string>
+ <!-- Label to select all contacts in multiple picker -->
+ <string name="menu_select_all">"ھەممىنى تاللا"</string>
+ <!-- Label to clear all selection in multiple picker -->
+ <string name="menu_select_none">"ھەممىنى تاللىما"</string>
+ <!-- The button to add another entry of a specific data type (i.e. email, phone, address) to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <string name="add_new_entry_for_section">يېڭىدىن قوش</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=22] -->
+ <string name="add_organization">تەشكىل قوش</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=12] -->
+ <string name="event_edit_field_hint_text">چېسلا</string>
+ <!-- The button to add an organization field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <string name="group_edit_field_hint_text">گۇرۇپپا ئاتى</string>
+ <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
+ <!-- RadioButton that determines whether a raw contact's photo should be used for the entire contact [CHAR LIMIT=25] -->
+ <!-- String describing the Star/Favorite checkbox
+
+ Used by AccessibilityService to announce the purpose of the view.
+ -->
+ <string name="description_star">ياقتۇرىدىغان</string>
+ <!-- The title of the Edit-Contact screen -->
+ <string name="edit_contact">ئالاقەداش تەھرىر</string>
+ <!-- Shows how many contacts have been merged. The value 1 is not shown but should be translated
+ anyway if we change our mind later -->
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <string name="aggregation_suggestion_join_dialog_message">نۆۋەتتىكى ئالاقەداش بىلەن تاللانغان ئالاقەداشنى بىرلەشتۈرەمدۇ؟</string>
+ <!-- The message in a confirmation dialog shown when the user selects a
+ contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
+ <string name="aggregation_suggestion_edit_dialog_message">تاللانغان ئالاقەداشنى تەھرىرلەشكە ئالمىشامدۇ؟ سىستېما ھازىرغا قەدەر كىرگۈزگەن ھەممە ئۇچۇرنى كۆچۈرىدۇ.</string>
+ <!-- The button that creates a local copy of a corporate contact. [CHAR LIMIT=40]-->
+ <string name="menu_copyContact">ئالاقەداشلىرىمغا كۆچۈر</string>
+ <!-- The button that adds a contact to the predefined group "My Contacts" (as this is
+ mostly interesting for Google-contacts, this should have the same description as the
+ function of GMail/Contacts on the Web
+ [CHAR LIMIT=40] -->
+ <string name="add_to_my_contacts">ئالاقەداشلىرىمغا قوش</string>
+ <!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
+ <string name="contact_directory_description">مۇندەرىجە <xliff:g id="TYPE">%1$s</xliff:g></string>
+ <!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+ <string name="list_filter_custom">ئىختىيارىيلاشقان</string>
+ <!-- Title of the settings activity [CHAR LIMIT=64] -->
+ <string name="activity_title_settings">تەڭشەكلەر</string>
+ <!-- Menu item for the settings activity [CHAR LIMIT=64] -->
+ <string name="menu_settings" msgid="377929915873428211">تەڭشەكلەر</string>
+ <!-- Menu item for invoking contextual Help & Feedback [CHAR LIMIT=64] -->
+ <!-- The preference section title for contact display options [CHAR LIMIT=128] -->
+ <string name="preference_displayOptions">كۆرسىتىش تاللانما</string>
+ <!-- Text used to show a organization that has both a company and title. This is used in the Detail-View
+ of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
+ <string name="organization_company_and_title"><xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g></string>
+ <!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
+ <string name="non_phone_caption">تېلېفون نومۇرى</string>
+ <!-- Button to add a phone number to contacts [CHAR LIMIT=25] -->
+ <string name="non_phone_add_to_contacts">ئالاقەداشقا قوش</string>
+ <!-- Title of the activity that allows the user to confirm the addition of a detail to 1 existing contact [CHAR LIMIT=25] -->
+ <string name="activity_title_confirm_add_detail">ئالاقەداشقا قوش</string>
+ <!-- Button to close without add a phone number to contacts [CHAR LIMIT=25] -->
+ <string name="non_phone_close">ياپ</string>
+ <!-- Format string that combines the name and the phonetic name for the widget. if the phonetic name is empty, only the display name is used instead [CHAR LIMIT=25] -->
+ <string name="widget_name_and_phonetic"><xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)</string>
+ <!-- Checkbox whether to provide a year for a birthday [CHAR LIMIT=30] -->
+ <string name="date_year_toggle">يىل كىرگۈزۈڭ</string>
+ <!-- Label for the widget that shows picture and social status of a contact [CHAR LIMIT=20] -->
+ <string name="social_widget_label">ئالاقەداش</string>
+ <!-- Message of widget while it is loading data [CHAR LIMIT=20] -->
+ <string name="social_widget_loading">يۈكلەۋاتىدۇ…</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Creates a new contact. [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_create_contact">يېڭى بىر ئالاقەداش قۇر</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Navigates to account setup [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_add_account">ھېساباتتا تىزىمغا كىر</string>
+ <!-- Button shown on the main contacts screen when there are no contacts on the device.
+ Initiates a contact import dialog [CHAR LIMIT=128] -->
+ <string name="contacts_unavailable_import_contacts">ئالاقەداش ئەكىر</string>
+ <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
+ <string name="create_group_dialog_title">يېڭى گۇرۇپپا قۇر</string>
+ <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
+ <string name="create_group_item_label">يېڭى گۇرۇپپا قۇر</string>
+ <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
+ <!-- Confirmation message of the dialog that allows deletion of a contact group [CHAR LIMIT=256] -->
+ <string name="delete_group_dialog_message"><xliff:g id="GROUP_LABEL">%1$s</xliff:g> گۇرۇپپىنى ئۆچۈرەمسىز؟ (ئالاقەداشنىڭ ئۆزىنى ئۆچۈرەلمەيدۇ.)</string>
+ <!-- Subtitle of the group detail page that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Subtitle of a group (in the group list) that describes how many people are in the current group [CHAR LIMIT=30] -->
+ <!-- Toast displayed when the user creates a new contact and attempts to join it
+ with another before entering any data [CHAR LIMIT=256] -->
+ <string name="toast_join_with_empty_contact">ئالاقەداش ئاتىنى كىرگۈزۈپ ئاندىن باشقا ئالاقەداش بىلەن بىرلەشتۈرۈڭ.</string>
+ <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+ <string name="copy_text">چاپلاش تاختىسىغا كۆچۈر</string>
+ <!-- Option displayed in context menu to set long pressed item as default contact method [CHAR LIMIT=64] -->
+ <string name="set_default">كۆڭۈلدىكىگە تەڭشە</string>
+ <!-- Option displayed in context menu to clear long pressed item as default contact method [CHAR LIMIT=64] -->
+ <string name="clear_default">كۆڭۈلدىكىنى تازىلا</string>
+ <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+ <string name="toast_text_copied">تېكىست كۆچۈرۈلدى</string>
+ <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
+ <string name="cancel_confirmation_dialog_message">ئۆزگەرتىشلىرىڭىزنى تاشلىۋېتەمدۇ؟</string>
+ <!-- Description of a call log entry, made of a call type and a date -->
+ <string name="call_type_and_date"><xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g></string>
+ <!-- Text displayed in place of the display name for the contact that represents the user's
+ personal profile entry [CHAR LIMIT=64] -->
+ <string name="profile_display_name">سەپلىمە ھۆججەتلىرىمنىڭ تەڭشىكى</string>
+ <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
+ <string name="enter_contact_name">كىشى ئاتىنى كىرگۈزۈڭ</string>
+ <!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
+ <string name="group_name_hint">گۇرۇپپا ئاتى</string>
+ <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
+ <string name="local_profile_title">يەرلىك سەپلىمە ھۆججىتىم</string>
+ <!-- Header label in the contact editor for a profile that comes from an external third-party app whose name is given by source [CHAR LIMIT=20] -->
+ <string name="external_profile_title"><xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> سەپلىمە ھۆججىتىم</string>
+ <!-- Toast shown when the app starts showing all contacts regardless of its current
+ contact filter state. [CHAR LIMIT=64] -->
+ <string name="toast_displaying_all_contacts">ھەممە ئالاقەداشنى كۆرسىتىۋاتىدۇ</string>
+ <!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
+ <string name="generic_no_account_prompt">تېلېفونىڭىز يۈتۈپ كەتسىمۇ، ئالاقەداشلىرىڭىزنىڭ بىخەتەرلىكىگە كاپالەتلىك قىلالايسىز: توردىكى مۇلازىمەت بىلەن قەدەمداشلىيالايسىز.</string>
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
+ <string name="generic_no_account_prompt_title">بىر ھېسابات قوش</string>
+ <!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_zero_accounts">يېڭى ئالاقەداشلىرىڭىز زاپاسلانمىدى. توردا زاپاسلايدىغان ئالاقەداش ھېساباتى قوشامسىز؟</string>
+ <!-- Message in the contact editor prompt that asks the user if it's okay to save the newly created contact to the account shown. [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_one_account">يېڭى ئالاقەداشلىرىڭىز <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> بىلەن قەدەمداشلاندى.</string>
+ <!-- Message in the contact editor prompt that asks the user which account they want to save the newly created contact to. [CHAR LIMIT=NONE] -->
+ <string name="contact_editor_prompt_multiple_accounts">يېڭى ئالاقەداشلىرىڭىزنى تۆۋەندىكى ھېسابات بىلەن قەدەمداشلىيالايسىز. قايسىسىنى ئىشلىتىسىز؟</string>
+ <!-- Title of the ContactEditorActivity when creating a new contact. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Title of the ContactEditorActivity when editing a contact that already exists. The char
+ limit is short and cannot be increased, since this needs to be displayed in a single line
+ at a pre-determined text size. [CHAR LIMIT=20] -->
+ <!-- Button label to indicate that the user wants to save the newly created contact locally (instead of backing it up online) [CHAR LIMIT=20] -->
+ <string name="keep_local">يەرلىكتە ساقلا</string>
+ <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
+ <string name="add_account">ھېسابات قوش</string>
+ <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
+ <string name="add_new_account">يېڭى ھېسابات قوش</string>
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <string name="menu_export_database">ساندان ھۆججەتلىرىنى چىقار</string>
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <!-- Title of recent card. [CHAR LIMIT=40] -->
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <!-- Header for the IM entry [CHAR LIMIT=40] -->
+ <!-- Header for the Organization entry [CHAR LIMIT=40] -->
+ <!-- Header for the Nickname entry [CHAR LIMIT=40] -->
+ <!-- Header for the Note entry [CHAR LIMIT=40] -->
+ <!-- Header for the Website entry [CHAR LIMIT=40] -->
+ <!-- Header for the Event entry [CHAR LIMIT=40] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=40] -->
+ <!-- Content description for the account field header image. Example accounts listed in this field: Google, Hotmail and Exchange. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the name fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the email fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the phone fields header entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for the camera icon beside the photo section in the Raw Contact Editor [CHAR LIMIT=NONE] -->
+ <!-- Content description for the expand button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for the collapse button inside the raw contact editor's header. [CHAR LIMIT=NONE] -->
+ <!-- Content description for directions secondary button [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Header for the Relation entry [CHAR LIMIT=NONE] -->
+ <!-- Content description for recent sms interaction [CHAR LIMIT=NONE] -->
+ <!-- Prefix for messages that you sent [CHAR LIMIT=40] -->
+ <!-- File Authority for the photo picker -->
+ <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
+ <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+ <!-- Content description for the compact contact editor photo overlay which, when clicked, shows a dialog with the options for changing the contact photo. [CHAR LIMIT=30] -->
+ <!-- Quick contact display name with phonetic name -->
+</resources>
diff --git a/res/values-uk/cm_plurals.xml b/res/values-uk/cm_plurals.xml
new file mode 100644
index 000000000..5d757a1e7
--- /dev/null
+++ b/res/values-uk/cm_plurals.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d обраний</item>
+ <item quantity="few">%d обрано</item>
+ <item quantity="other">%d обрано</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d контакт буде імпортований.</item>
+ <item quantity="few">%d контакти будуть імпортовані.</item>
+ <item quantity="other">%d контактів буде імпортовано.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d контакт імпортований</item>
+ <item quantity="few">%d контакти імпортовано</item>
+ <item quantity="other">%d контактів імпортовано</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d контакт буде видалений.</item>
+ <item quantity="few">%d контакти будуть видалені.</item>
+ <item quantity="other">%d контактів буде видалено.</item>
+ </plurals>
+</resources>
diff --git a/res/values-uk/cm_strings.xml b/res/values-uk/cm_strings.xml
new file mode 100644
index 000000000..4e8c1e4cb
--- /dev/null
+++ b/res/values-uk/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Не вдалося зберегти вибрані контакти на SIM-картці</string>
+ <string name="airplane_mode_on">SIM-картка не доступна коли активовано режим польоту</string>
+ <string name="number_anr_too_long">Номер задовгий</string>
+ <string name="email_address_too_long">Адреса електронної пошти задовга</string>
+ <string name="sim_card_full">SIM-картка заповнена</string>
+ <string name="tag_too_long">Задовге ім\'я контакту</string>
+ <string name="invalid_phone_number">Неприпустимий номер телефону</string>
+ <string name="invalid_number_type">Неприпустимий тип номера</string>
+ <string name="no_phone_number_or_email">Будь ласка, введіть телефонний номер або електронну адресу.</string>
+ <string name="memory_card_full">Не вдалося зберегти контакт, пам\'ять телефону заповнена</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Групи</string>
+ <string name="menu_moveGroupMembers">Перемістити контакти групи</string>
+ <string name="title_move_members">Перемістити контакти</string>
+ <string name="message_move_members">Переміщення контактів\u2026</string>
+ <string name="message_can_not_move_members">Неможливо перемістити контакти</string>
+ <string name="edit_before_call">Редагування номера перед викликом</string>
+ <string name="menu_sendViaSMS">Надіслати контакт за допомогою SMS</string>
+ <string name="select_all">Усi</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Імпортувати контакти SIM</string>
+ <string name="import_sim_contacts_message">Імпорт контактів SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Імпорт контактів?</string>
+ <string name="import_finish">Імпортування завершено</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Видалити контакти</string>
+ <string name="delete_contacts_message">Видалення контактів\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Видалити контакт?</string>
+ <string name="too_many_contacts_add_to_group">Більше ніж <xliff:g id="count">%d</xliff:g> контактів не може бути додано</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Стан пам\'яті</string>
+ <string name="memory_size">Всього:</string>
+ <string name="memory_used">Використано:</string>
+ <string name="calculating_status_now">Підрахунок\u2026</string>
+ <string name="menu_copyTo">Копіювати до <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM контакт не має доступного поля електронної пошти, не вдається скопіювати повідомлення.</string>
+ <string name="voicemail">Голосова пошта</string>
+ <string name="select_call_title">Виберіть журнали викликів</string>
+ <string name="delete_call_title">Видалення журналів викликів</string>
+ <string name="delete_call_message">Видалення\u2026</string>
+ <string name="delete_call_alert">Видалити обрані журнали викликів?</string>
+ <string name="title_del_call">Видаляти</string>
+ <string name="powered_by_provider">За допомогою <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-ur-rPK/cm_strings.xml b/res/values-ur-rPK/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-ur-rPK/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-uz-rUZ/cm_strings.xml b/res/values-uz-rUZ/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-uz-rUZ/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values-vi/cm_plurals.xml b/res/values-vi/cm_plurals.xml
new file mode 100644
index 000000000..37c97d35a
--- /dev/null
+++ b/res/values-vi/cm_plurals.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="other">%d được chọn</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="other">%d số liên lạc đã được nhập</item>
+ </plurals>
+</resources>
diff --git a/res/values-vi/cm_strings.xml b/res/values-vi/cm_strings.xml
new file mode 100644
index 000000000..56c965c67
--- /dev/null
+++ b/res/values-vi/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Không thể lưu các số liên lạc đã chọn vào thẻ SIM</string>
+ <string name="airplane_mode_on">Thẻ SIM không thể truy cập được khi chế độ máy bay được kích hoạt</string>
+ <string name="number_anr_too_long">Số quá dài</string>
+ <string name="email_address_too_long">Địa chỉ email quá dài</string>
+ <string name="sim_card_full">Thẻ SIM đầy</string>
+ <string name="tag_too_long">Tên liên lạc quá dài</string>
+ <string name="invalid_phone_number">Số điện thoại không hợp lệ</string>
+ <string name="invalid_number_type">Kiểu số không hợp lệ</string>
+ <string name="no_phone_number_or_email">Vui lòng nhập địa chỉ email hoặc số điện thoại.</string>
+ <string name="memory_card_full">Không thể lưu số liên lạc, bộ nhớ điện thoại đã đầy</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Nhóm</string>
+ <string name="menu_moveGroupMembers">Chuyển thành viên nhóm</string>
+ <string name="title_move_members">Chuyển thành viên</string>
+ <string name="message_move_members">Đang chuyển thành viên\u2026</string>
+ <string name="message_can_not_move_members">Không thể chuyển thành viên</string>
+ <string name="edit_before_call">Sửa số trước khi gọi</string>
+ <string name="menu_sendViaSMS">Gửi số liên lạc qua SMS</string>
+ <string name="select_all">Tất cả</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Nhập các số liên lạc từ SIM</string>
+ <string name="import_sim_contacts_message">Đang nhập các số liên lạc từ SIM\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Nhập số liên lạc?</string>
+ <string name="import_finish">Nhập hoàn tất</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Xoá số liên lạc</string>
+ <string name="delete_contacts_message">Đang xoá số liên lạc\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Xoá số liên lạc?</string>
+ <string name="too_many_contacts_add_to_group">Không được thêm vào nhiều hơn <xliff:g id="count">%d</xliff:g> số liên lạc</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Trạng thái bộ nhớ</string>
+ <string name="memory_size">Tổng:</string>
+ <string name="memory_used">Đã dùng:</string>
+ <string name="calculating_status_now">Đang tính trạng thái\u2026</string>
+ <string name="menu_copyTo">Chép vào <xliff:g id="destination">%s </xliff:g></string>
+ <string name="no_empty_email_in_usim">Số liên lạc trên USIM không có trường email khả dụng, không thể chép tin nhắn.</string>
+ <string name="voicemail">Thư thoại</string>
+ <string name="select_call_title">Chọn nhật ký cuộc gọi</string>
+ <string name="delete_call_title">Xoá nhật ký cuộc gọi</string>
+ <string name="delete_call_message">Đang xoá nhật ký cuộc gọi\u2026</string>
+ <string name="delete_call_alert">Xoá nhật ký cuộc gọi đã chọn?</string>
+ <string name="title_del_call">Xoá</string>
+ <string name="powered_by_provider">Được hỗ trợ bởi <xliff:g id="provider">%s</xliff:g></string>
+</resources>
diff --git a/res/values-zh-rCN/cm_plurals.xml b/res/values-zh-rCN/cm_plurals.xml
new file mode 100644
index 000000000..71781df1b
--- /dev/null
+++ b/res/values-zh-rCN/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="other">%d 个已选择</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="other">%d 个联系人将被导入。</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="other">已导入 %d 个联系人</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="other">将删除 %d 个联系人。</item>
+ </plurals>
+ <plurals name="spam_count_text">
+ <item quantity="other">%d 位用户将其标记为垃圾</item>
+ </plurals>
+</resources>
diff --git a/res/values-zh-rCN/cm_strings.xml b/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 000000000..86b2aa8ee
--- /dev/null
+++ b/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">无法将选择的联系人保存到 SIM 卡</string>
+ <string name="airplane_mode_on">飞行模式启用时无法访问 SIM 卡</string>
+ <string name="number_anr_too_long">号码过长</string>
+ <string name="email_address_too_long">电子邮件地址过长</string>
+ <string name="sim_card_full">SIM 卡已满</string>
+ <string name="tag_too_long">联系人名称过长</string>
+ <string name="invalid_phone_number">电话号码无效</string>
+ <string name="invalid_number_type">号码类型无效</string>
+ <string name="no_phone_number_or_email">请输入一个电话号码或电子邮件地址。</string>
+ <string name="memory_card_full">无法保存联系人,手机内存已满</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">组</string>
+ <string name="menu_moveGroupMembers">移动组成员</string>
+ <string name="title_move_members">移动成员</string>
+ <string name="message_move_members">正在移动成员\u2026</string>
+ <string name="message_can_not_move_members">无法移动成员</string>
+ <string name="edit_before_call">呼叫之前编辑号码</string>
+ <string name="menu_sendViaSMS">通过短信发送联系人</string>
+ <string name="select_all">全部</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">导入 SIM 卡联系人</string>
+ <string name="import_sim_contacts_message">正在导入 SIM 卡联系人\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">导入联系人?</string>
+ <string name="import_finish">导入完成</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">删除联系人</string>
+ <string name="delete_contacts_message">正在删除联系人\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">删除联系人?</string>
+ <string name="too_many_contacts_add_to_group">可以共享不超过 <xliff:g id="count">%d</xliff:g> 个联系人</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">内存状态</string>
+ <string name="memory_size">总共:</string>
+ <string name="memory_used">已用:</string>
+ <string name="calculating_status_now">正在计算状态\u2026</string>
+ <string name="menu_copyTo">复制到 <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM 联系人没有可用的电子邮件字段,无法复制信息。</string>
+ <string name="voicemail">语音邮件</string>
+ <string name="select_call_title">选择呼叫记录</string>
+ <string name="delete_call_title">删除呼叫记录</string>
+ <string name="delete_call_message">正在删除呼叫记录\u2026</string>
+ <string name="delete_call_alert">删除选定的呼叫记录吗?</string>
+ <string name="title_del_call">删除</string>
+ <string name="powered_by_provider">由 <xliff:g id="provider">%s</xliff:g> 强力驱动</string>
+</resources>
diff --git a/res/values-zh-rHK/cm_plurals.xml b/res/values-zh-rHK/cm_plurals.xml
new file mode 100644
index 000000000..60709f06f
--- /dev/null
+++ b/res/values-zh-rHK/cm_plurals.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="other">%d 個聯絡人將被匯入。</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="other">%d 個聯絡人將被刪除。</item>
+ </plurals>
+</resources>
diff --git a/res/values-zh-rHK/cm_strings.xml b/res/values-zh-rHK/cm_strings.xml
new file mode 100644
index 000000000..5aad042ff
--- /dev/null
+++ b/res/values-zh-rHK/cm_strings.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="airplane_mode_on">飛航模式啟用時無法存取 SIM 卡</string>
+ <string name="sim_card_full">SIM 卡已滿</string>
+ <string name="tag_too_long">聯絡人名稱過長</string>
+ <string name="invalid_phone_number">電話號碼無效</string>
+ <string name="invalid_number_type">號碼類型無效</string>
+ <string name="no_phone_number_or_email">請輸入一個電話號碼或電子郵件地址。</string>
+ <string name="memory_card_full">無法儲存聯絡人,裝置記憶體已滿</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">群組</string>
+ <string name="menu_moveGroupMembers">移動群組成員</string>
+ <string name="title_move_members">移動成員</string>
+ <string name="message_move_members">正在移動成員\u2026</string>
+ <string name="message_can_not_move_members">無法移動成員</string>
+ <string name="edit_before_call">通話前先編輯號碼</string>
+ <string name="menu_sendViaSMS">透過短訊傳送聯絡人</string>
+ <string name="select_all">所有</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">匯入 SIM 卡聯絡人</string>
+ <string name="import_sim_contacts_message">正在匯入 SIM 卡聯絡人\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">匯入聯絡人?</string>
+ <string name="import_finish">匯入完成</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">刪除聯絡人</string>
+ <string name="delete_contacts_message">正在刪除聯絡人\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">刪除聯絡人?</string>
+ <string name="too_many_contacts_add_to_group">可添加的聯絡人不超過 <xliff:g id="count">%d</xliff:g> 個</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">記憶體狀態</string>
+ <string name="memory_size">總數:</string>
+ <string name="memory_used">已用:</string>
+ <string name="calculating_status_now">正在計算狀態\u2026</string>
+ <string name="menu_copyTo">複製到 <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM 聯絡人沒有可用的電子郵件欄位,無法複製訊息。</string>
+ <string name="voicemail">語音信箱</string>
+ <string name="select_call_title">選擇通話記錄</string>
+ <string name="delete_call_title">刪除通話記錄</string>
+ <string name="delete_call_message">正在刪除通話記錄\u2026</string>
+ <string name="delete_call_alert">是否刪除所選的通話記錄?</string>
+ <string name="title_del_call">刪除</string>
+</resources>
diff --git a/res/values-zh-rTW/cm_plurals.xml b/res/values-zh-rTW/cm_plurals.xml
new file mode 100644
index 000000000..e4012928a
--- /dev/null
+++ b/res/values-zh-rTW/cm_plurals.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="other">已選取 %d 個</item>
+ </plurals>
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="other">將會匯入 %d 個連絡人。</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="other">已匯入 %d 個連絡人。</item>
+ </plurals>
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="other">將會刪除 %d 個連絡人。</item>
+ </plurals>
+</resources>
diff --git a/res/values-zh-rTW/cm_strings.xml b/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 000000000..c0d003edc
--- /dev/null
+++ b/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">不能將已選取的聯絡人儲存至 SIM 卡</string>
+ <string name="airplane_mode_on">當飛航模式啟用時不能存取 SIM 卡</string>
+ <string name="number_anr_too_long">號碼過長</string>
+ <string name="email_address_too_long">電子郵件地址過長</string>
+ <string name="sim_card_full">SIM 卡已滿</string>
+ <string name="tag_too_long">聯絡人名稱過長</string>
+ <string name="invalid_phone_number">無效的電話號碼</string>
+ <string name="invalid_number_type">無效的號碼類型</string>
+ <string name="no_phone_number_or_email">請輸入一個電話號碼或電子郵件地址。</string>
+ <string name="memory_card_full">無法儲存聯絡人,裝置記憶體已滿</string>
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">群組</string>
+ <string name="menu_moveGroupMembers">移動群組成員</string>
+ <string name="title_move_members">移動成員</string>
+ <string name="message_move_members">正在移動成員\u2026</string>
+ <string name="message_can_not_move_members">無法移動成員</string>
+ <string name="edit_before_call">撥打前編輯電話號碼</string>
+ <string name="menu_sendViaSMS">透過簡訊傳送聯絡人資料</string>
+ <string name="select_all">全部</string>
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">匯入 SIM 卡中的聯絡人</string>
+ <string name="import_sim_contacts_message">正在匯入 SIM 卡中的聯絡人\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">匯入聯絡人?</string>
+ <string name="import_finish">匯入完成</string>
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">刪除聯絡人</string>
+ <string name="delete_contacts_message">正在刪除聯絡人\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">刪除聯絡人?</string>
+ <string name="too_many_contacts_add_to_group">不可以新增超過 <xliff:g id="count">%d</xliff:g> 個聯絡人</string>
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">記憶體狀態</string>
+ <string name="memory_size">總計:</string>
+ <string name="memory_used">已用:</string>
+ <string name="calculating_status_now">正在計算狀態\u2026</string>
+ <string name="menu_copyTo">複製至「<xliff:g id="destination">%s</xliff:g>」</string>
+ <string name="no_empty_email_in_usim">USIM 聯絡人沒有可用的電子郵件欄位,無法複製訊息。</string>
+ <string name="voicemail">語音信箱</string>
+ <string name="select_call_title">選取通話紀錄</string>
+ <string name="delete_call_title">刪除通話紀錄</string>
+ <string name="delete_call_message">正在刪除電話紀錄\u2026</string>
+ <string name="delete_call_alert">刪除已選取的通話紀錄?</string>
+ <string name="title_del_call">刪除</string>
+</resources>
diff --git a/res/values-zu/cm_strings.xml b/res/values-zu/cm_strings.xml
new file mode 100644
index 000000000..2dbf6b685
--- /dev/null
+++ b/res/values-zu/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <!-- Choose Sim Card to Import -->
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <!-- Multi Delete Contacts related strings -->
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <!-- add for MemoryStatusActivity -->
+</resources>
diff --git a/res/values/cm_colors.xml b/res/values/cm_colors.xml
new file mode 100644
index 000000000..9fc608367
--- /dev/null
+++ b/res/values/cm_colors.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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>
+ <color name="list_item_name_text_color">#ff000000</color>
+</resources>
diff --git a/res/values/cm_plurals.xml b/res/values/cm_plurals.xml
new file mode 100644
index 000000000..a59d2d2ff
--- /dev/null
+++ b/res/values/cm_plurals.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <plurals name="contacts_selected">
+ <item quantity="one">%d selected</item>
+ <item quantity="other">%d selected</item>
+ </plurals>
+
+ <plurals name="ContactMultiImportConfirmation">
+ <item quantity="one">%d contact will be imported.</item>
+ <item quantity="other">%d contacts will be imported.</item>
+ </plurals>
+ <plurals name="import_progress">
+ <item quantity="one">%d contact imported</item>
+ <item quantity="other">%d contacts imported</item>
+ </plurals>
+
+ <plurals name="ContactMultiDeleteConfirmation">
+ <item quantity="one">%d contact will be deleted.</item>
+ <item quantity="other">%d contacts will be deleted.</item>
+ </plurals>
+
+ <plurals name="spam_count_text">
+ <item quantity="one">%d person marked this as spam</item>
+ <item quantity="other">%d people marked this as spam</item>
+ </plurals>
+</resources>
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
new file mode 100644
index 000000000..21ecba589
--- /dev/null
+++ b/res/values/cm_strings.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
+ Copyright (C) 2014-2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT 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">
+ <!-- Toast displayed when saving a contact to sim card failed -->
+ <string name="contactSavedToSimCardError">Could not save the selected contacts to the SIM card</string>
+ <string name="airplane_mode_on">SIM card can not be accessed while airplane mode is enabled</string>
+ <string name="number_anr_too_long">Number is too long</string>
+ <string name="email_address_too_long">Email address is too long</string>
+ <string name="sim_card_full">SIM card is full</string>
+ <string name="tag_too_long">Contact name is too long</string>
+ <string name="invalid_phone_number">Phone number is invalid</string>
+ <string name="invalid_number_type">Number type is invalid</string>
+ <string name="no_phone_number_or_email">Please insert phone number or email address.</string>
+ <string name="memory_card_full">Contact could not be saved, phone memory is full</string>
+
+ <!-- The title of "groups" tab. [CHAR LIMIT=14] -->
+ <string name="contacts_groups_label">Groups</string>
+ <string name="menu_moveGroupMembers">Move group members</string>
+ <string name="title_move_members">Move members</string>
+ <string name="message_move_members">Moving members\u2026</string>
+ <string name="message_can_not_move_members">Can not move members</string>
+ <string name="edit_before_call">Edit number before call</string>
+ <string name="menu_sendViaSMS">Send contact via SMS</string>
+
+ <string name="select_all">All</string>
+
+ <!-- Choose Sim Card to Import -->
+ <string name="import_sim_contacts_title">Import SIM contacts</string>
+ <string name="import_sim_contacts_message">Importing SIM contacts\u2026</string>
+ <!-- Confirmation dialog title after users selects to import a contact. [CHAR LIMIT=25]-->
+ <string name="importConfirmation_title">Import contact?</string>
+ <string name="import_finish">Import finished</string>
+
+ <!-- Multi Delete Contacts related strings -->
+ <string name="delete_contacts_title">Delete contacts</string>
+ <string name="delete_contacts_message">Deleting contacts\u2026</string>
+ <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
+ <string name="deleteConfirmation_title">Delete contact?</string>
+
+ <string name="too_many_contacts_add_to_group">No more than <xliff:g id="count">%d</xliff:g> contacts can be added</string>
+
+ <!-- add for MemoryStatusActivity -->
+ <string name="menu_memory_status">Memory status</string>
+ <string name="memory_size">Total:</string>
+ <string name="memory_used">Used:</string>
+
+ <string name="calculating_status_now">Calculating status\u2026</string>
+
+ <string name="menu_copyTo">Copy to <xliff:g id="destination">%s</xliff:g></string>
+ <string name="no_empty_email_in_usim">USIM contact does not have an available email field, unable to copy messages.</string>
+ <string name="voicemail">Voicemail</string>
+
+ <string name="select_call_title">Select call logs</string>
+ <string name="delete_call_title">Delete call logs</string>
+ <string name="delete_call_message">Deleting call logs\u2026</string>
+ <string name="delete_call_alert">Delete selected call logs?</string>
+ <string name="title_del_call">Delete</string>
+
+ <string name="powered_by_provider">Powered by <xliff:g id="provider">%s</xliff:g></string>
+
+</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index a537a9554..7cc8f586a 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -56,6 +56,10 @@
<color name="call_arrow_green">#2aad6f</color>
<color name="call_arrow_red">#ff2e58</color>
+ <color name="contact_all_list_background_color">#FFFFFF</color>
+ <color name="contact_favorites_list_background_color">#FFFFFF</color>
+ <color name="group_list_background_color">#FFFFFF</color>
+
<!-- Background color of pinned header items. -->
<color name="list_item_pinned_header_color">@color/background_primary</color>
diff --git a/res/values/ids.xml b/res/values/ids.xml
index 7f6a51fcc..cdaf42405 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -19,7 +19,11 @@
<item type="id" name="header_phones"/>
<item type="id" name="dialog_sync_add"/>
+ <!-- For ImportSimContactsActivity -->
+ <item type="id" name="dialog_import_sim_contact_confirmation"/>
+
<!-- For ContactDeletionInteraction -->
+ <item type="id" name="dialog_delete_contact_confirmation"/>
<item type="id" name="dialog_delete_contact_loader_id" />
<!-- For ContactMultiDeletionInteraction -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 8fce0f113..978eab443 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!-- 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.
@@ -15,15 +15,18 @@
-->
<resources>
- <style name="DetailActivityTheme" parent="@android:style/Theme.Holo.Light">
+ <style name="DetailActivityTheme" parent="@android:style/Theme.Material.Light">
<item name="android:actionBarStyle">@style/ContactsActionBarStyle</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_menu_back</item>
- <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflow</item>
- <item name="android:actionBarItemBackground">@drawable/action_bar_item_background</item>
+ <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
+ <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflowQP</item>
+ <item name="android:actionBarItemBackground">@drawable/item_background_material_borderless_dark</item>
<item name="android:actionBarWidgetTheme">@style/ContactsActionBarTheme</item>
<item name="android:textColorPrimary">@color/primary_text_color</item>
<item name="android:textColorSecondary">@color/secondary_text_color</item>
<item name="android:listViewStyle">@style/ListViewStyle</item>
+ <item name="android:colorPrimaryDark">@color/primary_color_dark</item>
+ <item name="android:colorPrimary">@color/primary_color</item>
+ <item name="android:colorAccent">@color/primary_color</item>
</style>
<style name="EditorActivityTheme" parent="@style/PeopleTheme">
@@ -97,6 +100,7 @@
<item name="list_item_header_text_color">@color/people_app_theme_color</item>
<item name="list_item_header_text_size">14sp</item>
<item name="list_item_header_height">30dip</item>
+ <item name="list_item_name_text_color">@color/list_item_name_text_color</item>
<item name="list_item_data_width_weight">5</item>
<item name="list_item_label_width_weight">3</item>
<item name="list_item_header_text_indent">8dip</item>
@@ -117,6 +121,7 @@
<style name="ContactsActionBarStyle" parent="@android:style/Widget.Material.ActionBar">
<item name="android:background">@color/actionbar_background_color</item>
<item name="android:titleTextStyle">@style/ContactsActionBarTitleText</item>
+ <item name="android:subtitleTextStyle">@style/ContactsActionBarSubTitleText</item>
<item name="android:backgroundStacked">@color/actionbar_background_color</item>
<!-- Empty icon -->
<item name="android:icon">@android:color/transparent</item>
@@ -150,6 +155,11 @@
<item name="android:textColor">@color/actionbar_text_color</item>
</style>
+ <style name="ContactsActionBarSubTitleText"
+ parent="@android:style/TextAppearance.Material.Widget.ActionBar.Subtitle">
+ <item name="android:textColor">@color/actionbar_text_color</item>
+ </style>
+
<!-- Styling for the tab bar; handles styling of the divider line. -->
<style name="ContactsActionBarTabBarStyle"
parent="@android:style/Widget.Material.ActionBar.TabBar">
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index 6178e9de4..f46e72f57 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -29,12 +29,14 @@ import android.content.Context;
import android.content.Intent;
import android.content.OperationApplicationException;
import android.database.Cursor;
+import android.database.sqlite.SQLiteFullException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Parcelable;
import android.os.RemoteException;
+import android.os.ServiceManager;
import android.provider.ContactsContract;
import android.provider.ContactsContract.AggregationExceptions;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
@@ -46,6 +48,10 @@ import android.provider.ContactsContract.PinnedPositions;
import android.provider.ContactsContract.Profile;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.RawContactsEntity;
+import android.text.TextUtils;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.telephony.SubscriptionManager;
import android.util.Log;
import android.widget.Toast;
@@ -56,15 +62,22 @@ import com.android.contacts.common.model.RawContactDeltaList;
import com.android.contacts.common.model.RawContactModifier;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.common.SimContactsConstants;
+import com.android.contacts.common.SimContactsOperation;
+import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.editor.ContactEditorFragment;
import com.android.contacts.util.ContactPhotoUtils;
+import com.android.internal.telephony.uicc.AdnRecord;
+import com.android.internal.telephony.uicc.IccConstants;
+import com.android.internal.telephony.IIccPhoneBook;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import java.util.HashMap;
import java.util.concurrent.CopyOnWriteArrayList;
/**
@@ -90,6 +103,7 @@ public class ContactSaveService extends IntentService {
public static final String EXTRA_SAVE_IS_PROFILE = "saveIsProfile";
public static final String EXTRA_SAVE_SUCCEEDED = "saveSucceeded";
public static final String EXTRA_UPDATED_PHOTOS = "updatedPhotos";
+ public static final String SAVE_CONTACT_RESULT = "saveResult";
public static final String ACTION_CREATE_GROUP = "createGroup";
public static final String ACTION_RENAME_GROUP = "renameGroup";
@@ -143,6 +157,33 @@ public class ContactSaveService extends IntentService {
);
private static final int PERSIST_TRIES = 3;
+ private static int count = TelephonyManager.getDefault().getPhoneCount();
+ private static int[] mSimMaxCount = new int[count];
+
+ public static final int RESULT_UNCHANGED = 0;
+ public static final int RESULT_SUCCESS = 1;
+ public static final int RESULT_FAILURE = 2;
+ public static final int RESULT_NO_NUMBER_AND_EMAIL = 3;
+ public static final int RESULT_SIM_FAILURE = 4; //only for sim operation failure
+ public static final int RESULT_EMAIL_FAILURE = 5; // only for sim email operation failure
+ // only for sim failure of number or anr is too long
+ public static final int RESULT_NUMBER_ANR_FAILURE = 6;
+ public static final int RESULT_SIM_FULL_FAILURE = 7; // only for sim card is full
+ public static final int RESULT_TAG_FAILURE = 8; // only for sim failure of name is too long
+ public static final int RESULT_NUMBER_INVALID = 9; // only for sim failure of number is valid
+
+ public static final int RESULT_MEMORY_FULL_FAILURE = 11; //for memory full exception
+ public static final int RESULT_NUMBER_TYPE_FAILURE =12; //only for sim failure of number TYPE
+
+ private final int MAX_NUM_LENGTH = 20;
+ private final int MAX_EMAIL_LENGTH = 40;
+ private final int MAX_EN_LENGTH = 14;
+ private final int MAX_CH_LENGTH = 6;
+
+ // Only for request accessing SIM card
+ // when device is in the "AirPlane" mode.
+ public static final int RESULT_AIR_PLANE_MODE = 10;
+ public static SimContactsOperation mSimContactsOperation;
private static final int MAX_CONTACTS_PROVIDER_BATCH_SIZE = 499;
@@ -183,6 +224,40 @@ public class ContactSaveService extends IntentService {
return getApplicationContext().getSystemService(name);
}
+ /**
+ * when isMultiSimEnabled is true,get the maximum how many contacts can save to sim card
+ */
+ private int getMSimCardMaxCount(int subscription) {
+ if (0 != mSimMaxCount[subscription]) {
+ return mSimMaxCount[subscription];
+ }
+ int[] subId = SubscriptionManager.getSubId(subscription);
+ try {
+ IIccPhoneBook iccIpb = IIccPhoneBook.Stub.asInterface(
+ ServiceManager.getService("simphonebook"));
+
+ if (iccIpb != null) {
+ if (subId != null
+ && TelephonyManager.getDefault().isMultiSimEnabled()) {
+ List<AdnRecord> list = iccIpb.getAdnRecordsInEfForSubscriber(
+ subId[0], IccConstants.EF_ADN);
+ if (null != list) {
+ mSimMaxCount[subscription] = list.size();
+ }
+ } else {
+ List<AdnRecord> list = iccIpb
+ .getAdnRecordsInEf(IccConstants.EF_ADN);
+ if (null != list) {
+ mSimMaxCount[subscription] = list.size();
+ }
+ }
+ }
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Failed to IIccPhoneBookMSim", ex);
+ }
+ return mSimMaxCount[subscription];
+ }
+
@Override
protected void onHandleIntent(Intent intent) {
if (intent == null) {
@@ -378,8 +453,28 @@ public class ContactSaveService extends IntentService {
long insertedRawContactId = -1;
// Attempt to persist changes
+ Integer result = RESULT_FAILURE;
+
+ ArrayList<Long> rawContactsList = new ArrayList<Long>();
+ boolean isCardOperation = false;
+ for (int i=0; i < state.size(); i++) {
+ final RawContactDelta entity = state.get(i);
+ final String accountType = entity.getValues().getAsString(RawContacts.ACCOUNT_TYPE);
+ final String accountName = entity.getValues().getAsString(RawContacts.ACCOUNT_NAME);
+ rawContactsList.add(entity.getRawContactId());
+
+ final int subscription = MoreContactUtils.getSubscription(
+ accountType, accountName);
+ isCardOperation = (subscription != SubscriptionManager.INVALID_SUBSCRIPTION_ID) ?
+ true : false;
+ if (isCardOperation) {
+ result = doSaveToSimCard(entity, resolver, subscription);
+ Log.d(TAG, "doSaveToSimCard result is " + result);
+ }
+ }
int tries = 0;
while (tries++ < PERSIST_TRIES) {
+ if (result == RESULT_SUCCESS || result == RESULT_FAILURE) {
try {
// Build operations and try applying
final ArrayList<ContentProviderOperation> diff = state.buildDiff();
@@ -449,7 +544,17 @@ public class ContactSaveService extends IntentService {
Log.e(TAG, "Problem persisting user edits", e);
showToast(R.string.contactSavedErrorToast);
break;
-
+ } catch (SQLiteFullException e) {
+ // Memory is full. don't do any thing
+ Log.e(TAG, "Memory is full", e);
+ Intent callbackIntent = intent.getParcelableExtra(EXTRA_CALLBACK_INTENT);
+ if (callbackIntent != null) {
+ callbackIntent.putExtra(EXTRA_SAVE_SUCCEEDED, false);
+ callbackIntent.setData(null);
+ callbackIntent.putExtra(SAVE_CONTACT_RESULT, RESULT_MEMORY_FULL_FAILURE);
+ deliverCallback(callbackIntent);
+ }
+ return;
} catch (OperationApplicationException e) {
// Version consistency failed, re-parent change and try again
Log.w(TAG, "Version consistency failed, re-parenting: " + e.toString());
@@ -484,6 +589,7 @@ public class ContactSaveService extends IntentService {
if (isProfile) {
for (RawContactDelta delta : state) {
delta.setProfileQueryUri();
+ }
}
}
}
@@ -518,6 +624,8 @@ public class ContactSaveService extends IntentService {
callbackIntent.putExtra(EXTRA_SAVE_SUCCEEDED, true);
}
callbackIntent.setData(lookupUri);
+ callbackIntent.putExtra(SAVE_CONTACT_RESULT, result);
+
deliverCallback(callbackIntent);
}
}
@@ -534,7 +642,124 @@ public class ContactSaveService extends IntentService {
return ContactPhotoUtils.savePhotoFromUriToUri(this, photoUri, outputUri, true);
}
- /**
+ private Integer doSaveToSimCard(RawContactDelta entity, ContentResolver resolver,
+ int subscription) {
+ // Return Error code to indicate caller that device is in
+ // the "AirPlane" mode and application can't access SIM card.
+ if (MoreContactUtils.isAPMOnAndSIMPowerDown(this)) {
+ return RESULT_AIR_PLANE_MODE;
+ }
+
+ boolean isInsert = entity.isContactInsert();
+ Integer result = RESULT_SIM_FAILURE;
+ mSimContactsOperation = new SimContactsOperation(this);
+
+ ContentValues values = entity.buildSimDiff();
+ String tag = null;
+ String number = null;
+ String anr = null;
+ String email = null;
+
+ if(entity.isContactInsert()){
+ tag = values.getAsString(SimContactsConstants.STR_TAG);
+ number = values.getAsString(SimContactsConstants.STR_NUMBER);
+ anr = values.getAsString(SimContactsConstants.STR_ANRS);
+ email = values.getAsString(SimContactsConstants.STR_EMAILS);
+ } else {
+ tag = values.getAsString(SimContactsConstants.STR_NEW_TAG);
+ number = values.getAsString(SimContactsConstants.STR_NEW_NUMBER);
+ anr = values.getAsString(SimContactsConstants.STR_NEW_ANRS);
+ email = values.getAsString(SimContactsConstants.STR_NEW_EMAILS);
+ }
+
+ if (TextUtils.isEmpty(number) && TextUtils.isEmpty(anr) && TextUtils.isEmpty(email)) {
+ return RESULT_NO_NUMBER_AND_EMAIL;
+ }
+
+ if (!TextUtils.isEmpty(number)) {
+ if (number.length() > MAX_NUM_LENGTH) {
+ return RESULT_NUMBER_ANR_FAILURE;
+ } else if (number.contains(SimContactsConstants.STR_ANRS)) {
+ return RESULT_NUMBER_TYPE_FAILURE;
+ }
+ }
+
+ if (!TextUtils.isEmpty(anr)) {
+ String[] anrs = anr.split(SimContactsConstants.ANR_SEP);
+ if (anrs != null) {
+ if (anrs.length > MoreContactUtils
+ .getOneSimAnrCount(subscription)) {
+ return RESULT_NUMBER_TYPE_FAILURE;
+ }
+ for (String mAnr : anrs) {
+ if (mAnr.length() > MAX_NUM_LENGTH) {
+ return RESULT_NUMBER_ANR_FAILURE;
+ }
+ }
+ }
+ }
+
+ if (!TextUtils.isEmpty(number) && TextUtils.isEmpty(PhoneNumberUtils
+ .stripSeparators(number))) {
+ return RESULT_NUMBER_INVALID;
+ }
+
+ if (!TextUtils.isEmpty(email)) {
+ String[] emails = email.split(SimContactsConstants.EMAIL_SEP);
+ for (String mEmail : emails) {
+ if (mEmail != null && mEmail.length() > MAX_EMAIL_LENGTH) {
+ return RESULT_EMAIL_FAILURE;
+ }
+ }
+ }
+
+ if (!TextUtils.isEmpty(tag)) {
+ if (tag.getBytes().length > MAX_EN_LENGTH) {
+ return RESULT_TAG_FAILURE;
+ }
+ }
+
+ if (entity.isContactInsert()) {
+ int count = 0;
+ Cursor c = null;
+ Uri iccUri;
+ int[] subId = SubscriptionManager.getSubId(subscription);
+ if (!TelephonyManager.getDefault().isMultiSimEnabled()) {
+ iccUri = Uri.parse(SimContactsConstants.SIM_URI);
+ } else {
+ iccUri = Uri.parse(SimContactsConstants.SIM_SUB_URI + subId[0]);
+ }
+ try {
+ c = resolver.query(iccUri, null, null, null, null);
+ if (c != null) {
+ count = c.getCount();
+ }
+ } finally {
+ if (c != null) {
+ c.close();
+ }
+ }
+
+ if (count == getMSimCardMaxCount(subscription)) {
+ return RESULT_SIM_FULL_FAILURE;
+ }
+ }
+
+ if (isInsert) {
+ Uri resultUri = mSimContactsOperation.insert(values,
+ subscription);
+ if (resultUri != null)
+ result = RESULT_SUCCESS;
+ } else {
+ int resultInt = mSimContactsOperation.update(values,
+ subscription);
+ if (resultInt == 1)
+ result = RESULT_SUCCESS;
+ }
+ return result;
+ }
+
+ /**
* Find the ID of an existing or newly-inserted raw-contact. If none exists, return -1.
*/
private long getRawContactId(RawContactDeltaList state,
@@ -998,12 +1223,27 @@ public class ContactSaveService extends IntentService {
private void deleteContact(Intent intent) {
Uri contactUri = intent.getParcelableExtra(EXTRA_CONTACT_URI);
+ mSimContactsOperation = new SimContactsOperation(this);
if (contactUri == null) {
Log.e(TAG, "Invalid arguments for deleteContact request");
return;
}
- getContentResolver().delete(contactUri, null, null);
+ final List<String> segments = contactUri.getPathSegments();
+ // Contains an Id.
+ final long uriContactId = Long.parseLong(segments.get(3));
+ int subscription = mSimContactsOperation
+ .getSimSubscription(uriContactId);
+ if (subscription != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ ContentValues values = mSimContactsOperation
+ .getSimAccountValues(uriContactId);
+ int result = mSimContactsOperation.delete(values, subscription);
+ if (result == RESULT_SUCCESS) {
+ getContentResolver().delete(contactUri, null, null);
+ }
+ } else {
+ getContentResolver().delete(contactUri, null, null);
+ }
}
private void deleteMultipleContacts(Intent intent) {
diff --git a/src/com/android/contacts/GroupListLoader.java b/src/com/android/contacts/GroupListLoader.java
index 2589c9bb4..e7fd6428f 100644
--- a/src/com/android/contacts/GroupListLoader.java
+++ b/src/com/android/contacts/GroupListLoader.java
@@ -49,8 +49,6 @@ public final class GroupListLoader extends CursorLoader {
public GroupListLoader(Context context) {
super(context, GROUP_LIST_URI, COLUMNS, Groups.ACCOUNT_TYPE + " NOT NULL AND "
+ Groups.ACCOUNT_NAME + " NOT NULL AND " + Groups.AUTO_ADD + "=0 AND " +
- Groups.FAVORITES + "=0 AND " + Groups.DELETED + "=0", null,
- Groups.ACCOUNT_TYPE + ", " + Groups.ACCOUNT_NAME + ", " + Groups.DATA_SET + ", " +
- Groups.TITLE + " COLLATE LOCALIZED ASC");
+ Groups.FAVORITES + "=0 AND " + Groups.DELETED + "=0", null, "account_id");
}
}
diff --git a/src/com/android/contacts/GroupMetaDataLoader.java b/src/com/android/contacts/GroupMetaDataLoader.java
index 834404138..ea503d017 100644
--- a/src/com/android/contacts/GroupMetaDataLoader.java
+++ b/src/com/android/contacts/GroupMetaDataLoader.java
@@ -50,7 +50,9 @@ public final class GroupMetaDataLoader extends CursorLoader {
public GroupMetaDataLoader(Context context, Uri groupUri) {
super(context, ensureIsGroupUri(groupUri), COLUMNS, Groups.ACCOUNT_TYPE + " NOT NULL AND "
- + Groups.ACCOUNT_NAME + " NOT NULL", null, null);
+ + Groups.ACCOUNT_NAME + " NOT NULL AND " + Groups.DELETED + " != ?"
+ , new String[] {"1"}
+ , null);
}
/**
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 5a95c90bc..6a81d066b 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -110,8 +110,9 @@ public class ActionBarAdapter implements OnCloseListener {
public interface TabState {
public static int FAVORITES = 0;
public static int ALL = 1;
+ public static int GROUPS = 2;
- public static int COUNT = 2;
+ public static int COUNT = 3;
public static int DEFAULT = ALL;
}
diff --git a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
index a922ca128..500d7c177 100644
--- a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
@@ -84,9 +84,9 @@ public class ContactEditorAccountsChangedActivity extends Activity {
throw new IllegalStateException("Cannot have a negative number of accounts");
}
- if (numAccounts >= 2) {
- // When the user has 2+ writable accounts, show a list of accounts so the user can pick
- // which account to create a contact in.
+ if (numAccounts > 0) {
+ // When the user has writable accounts, show a list of accounts so the user can pick
+ // which account to create a contact in (add also the phone-local storage account).
setContentView(R.layout.contact_editor_accounts_changed_activity_with_picker);
final TextView textView = (TextView) findViewById(R.id.text);
@@ -101,33 +101,6 @@ public class ContactEditorAccountsChangedActivity extends Activity {
AccountListFilter.ACCOUNTS_CONTACT_WRITABLE);
accountListView.setAdapter(mAccountListAdapter);
accountListView.setOnItemClickListener(mAccountListItemClickListener);
- } else if (numAccounts == 1) {
- // If the user has 1 writable account we will just show the user a message with 2
- // possible action buttons.
- setContentView(R.layout.contact_editor_accounts_changed_activity_with_text);
-
- final TextView textView = (TextView) findViewById(R.id.text);
- final Button leftButton = (Button) findViewById(R.id.left_button);
- final Button rightButton = (Button) findViewById(R.id.right_button);
-
- final AccountWithDataSet account = accounts.get(0);
- textView.setText(getString(R.string.contact_editor_prompt_one_account,
- account.name));
-
- // This button allows the user to add a new account to the device and return to
- // this app afterwards.
- leftButton.setText(getString(R.string.add_new_account));
- leftButton.setOnClickListener(mAddAccountClickListener);
-
- // This button allows the user to continue creating the contact in the specified
- // account.
- rightButton.setText(getString(android.R.string.ok));
- rightButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- saveAccountAndReturnResult(account);
- }
- });
} else {
// If the user has 0 writable accounts, we will just show the user a message with 2
// possible action buttons.
diff --git a/src/com/android/contacts/activities/ContactEditorBaseActivity.java b/src/com/android/contacts/activities/ContactEditorBaseActivity.java
index 12f1e961b..ac5fe67da 100644
--- a/src/com/android/contacts/activities/ContactEditorBaseActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorBaseActivity.java
@@ -172,7 +172,7 @@ abstract public class ContactEditorBaseActivity extends ContactsActivity
*/
void onSaveCompleted(boolean hadChanges, int saveMode, boolean saveSucceeded,
Uri contactLookupUri, Bundle updatedPhotos, boolean backPressed, long photoId,
- long nameId);
+ long nameId, int result);
/**
* Invoked after the contact is joined.
@@ -264,7 +264,8 @@ abstract public class ContactEditorBaseActivity extends ContactsActivity
intent.getBooleanExtra(ContactEditorFragment.INTENT_EXTRA_SAVE_BACK_PRESSED,
false),
intent.getLongExtra(ContactEditorFragment.INTENT_EXTRA_PHOTO_ID, -1),
- intent.getLongExtra(ContactEditorFragment.INTENT_EXTRA_NAME_ID, -1));
+ intent.getLongExtra(ContactEditorFragment.INTENT_EXTRA_NAME_ID, -1),
+ intent.getIntExtra(ContactSaveService.SAVE_CONTACT_RESULT, 0));
} else if (ACTION_JOIN_COMPLETED.equals(action)) {
mFragment.onJoinCompleted(intent.getData());
}
diff --git a/src/com/android/contacts/activities/MemoryStatusActivity.java b/src/com/android/contacts/activities/MemoryStatusActivity.java
new file mode 100644
index 000000000..2622c4018
--- /dev/null
+++ b/src/com/android/contacts/activities/MemoryStatusActivity.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
+ *
+ * Not a Contribution.
+ *
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts.activities;
+
+import android.app.ActionBar;
+import android.content.Context;
+import android.content.ContentResolver;
+import android.content.Intent;
+import android.database.Cursor;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Bundle;
+import android.os.Message;
+import android.provider.ContactsContract.RawContacts;
+import android.telecom.PhoneAccount;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.android.contacts.ContactsActivity;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.SimContactsConstants;
+import com.android.contacts.R;
+import com.android.contacts.common.model.account.PhoneAccountType;
+import com.google.android.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Shows a list of all available accounts, letting the user select under which
+ * account to view contacts.
+ */
+public class MemoryStatusActivity extends ContactsActivity {
+ private static final String TAG = "MemoryStatusActivity";
+ private static final int INVALID_COUNT = 0;
+ private ListView mListView;
+ private View empty;
+ private List<AccountListItem> mFilters;
+ private AccountListAdapter mAdapter;
+ private Handler mHandler;
+ private LoaderThread mThread = null;
+
+ private final class AccountListItem {
+ public final String accountType;
+ public final String accountName;
+ public final String dataSet;
+ public final Drawable icon;
+ public final int total;
+ public final int count;
+
+ public AccountListItem(String accountType, String accountName, String dataSet,
+ Drawable icon, int total, int count) {
+ this.accountType = accountType;
+ this.accountName = accountName;
+ this.dataSet = dataSet;
+ this.icon = icon;
+ this.total = total;
+ this.count = count;
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ setContentView(R.layout.contact_memory_list);
+
+ mListView = (ListView) findViewById(android.R.id.list);
+ empty = (View) findViewById(R.id.empty);
+ mListView.setEmptyView(empty);
+
+ ActionBar actionBar = getActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ mFilters = Lists.newArrayList();
+ mAdapter = new AccountListAdapter(this);
+ mListView.setAdapter(mAdapter);
+
+ mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ mFilters = (List<AccountListItem>) msg.obj;
+ mAdapter.notifyDataSetChanged();
+ }
+ };
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ onBackPressed();
+ return true;
+ default:
+ break;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (mFilters.isEmpty()) {
+ if (mThread == null) {
+ mThread = new LoaderThread();
+ }
+ try {
+ mThread.start();
+ } catch (Exception e) {
+ }
+ }
+ }
+
+ public class LoaderThread extends Thread {
+ @Override
+ public void run() {
+ List<AccountListItem> list = loadAccountFilters(MemoryStatusActivity.this);
+ Message msg = Message.obtain();
+ msg.obj = list;
+ mHandler.sendMessage(msg);
+ }
+ }
+
+ private List<AccountListItem> loadAccountFilters(Context context) {
+ final ArrayList<AccountListItem> accountFilters = Lists.newArrayList();
+ final AccountTypeManager accountTypes = AccountTypeManager.getInstance(context);
+ List<AccountWithDataSet> accounts = accountTypes.getAccounts(true,
+ AccountTypeManager.FLAG_ALL_ACCOUNTS_WITHOUT_LOCAL);
+ ContentResolver cr = context.getContentResolver();
+
+ // Add the local account first, this is a special case.
+ accounts.add(0, new AccountWithDataSet(SimContactsConstants.PHONE_NAME,
+ PhoneAccountType.ACCOUNT_TYPE,
+ null));
+ for (AccountWithDataSet account : accounts) {
+ AccountType accountType = accountTypes.getAccountType(account.type, account.dataSet);
+ if (accountType.isExtension() && !account.hasData(context)) {
+ // Hide extensions with no raw_contacts.
+ continue;
+ }
+ Drawable icon = accountType != null ? accountType.getDisplayIcon(context) : null;
+ int total = INVALID_COUNT;
+ int count = INVALID_COUNT;
+ if (!TextUtils.isEmpty(account.type)) {
+ if (account.type.equals(SimContactsConstants.ACCOUNT_TYPE_SIM)) {
+ total = MoreContactUtils.getAdnCount(MoreContactUtils
+ .getSubscription(account.type, account.name));
+ if (total > 0) {
+ Cursor cursor = cr.query(RawContacts.CONTENT_URI, new String[] {
+ RawContacts._ID
+ }, RawContacts.ACCOUNT_NAME + " = '" + account.name + "' AND "
+ + RawContacts.DELETED + " = 0", null, null);
+ if (cursor != null) {
+ try {
+ count = cursor.getCount();
+ } finally {
+ cursor.close();
+ }
+ }
+ }
+ } else {
+ Cursor cursor = cr.query(RawContacts.CONTENT_URI, new String[] {
+ RawContacts._ID
+ }, RawContacts.ACCOUNT_NAME + " = '" + account.name + "' AND "
+ + RawContacts.DELETED + " = 0", null, null);
+ if (cursor != null) {
+ try {
+ count = cursor.getCount();
+ } finally {
+ cursor.close();
+ }
+ }
+ }
+ }
+ accountFilters.add(new AccountListItem(
+ account.type, account.name, account.dataSet, icon, total, count));
+ }
+
+ return accountFilters;
+ }
+
+ private class AccountListAdapter extends BaseAdapter {
+ private final LayoutInflater mLayoutInflater;
+ private Context accountContext;
+
+ public AccountListAdapter(Context context) {
+ mLayoutInflater = (LayoutInflater) context.getSystemService
+ (Context.LAYOUT_INFLATER_SERVICE);
+ accountContext = context;
+ }
+
+ @Override
+ public int getCount() {
+ return mFilters.size();
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public AccountListItem getItem(int position) {
+ return mFilters.get(position);
+ }
+
+ public View getView(int position, View convertView, ViewGroup parent) {
+ final View view;
+ AccountListItemViewCache viewCache;
+ if (convertView != null) {
+ view = convertView;
+ viewCache = (AccountListItemViewCache) view.getTag();
+ } else {
+ view = mLayoutInflater.inflate(R.layout.memory_account_list_item, parent, false);
+ viewCache = new AccountListItemViewCache(view);
+ view.setTag(viewCache);
+ }
+ bindView(position, convertView, parent, viewCache);
+ return view;
+ }
+
+ private void bindView(int position, View convertView, ViewGroup parent,
+ AccountListItemViewCache viewCache) {
+ final AccountListItem filter = mFilters.get(position);
+ final AccountTypeManager accountTypes = AccountTypeManager.getInstance(accountContext);
+ final AccountType accountType =
+ accountTypes.getAccountType(filter.accountType, filter.dataSet);
+ viewCache.accountName.setText(accountType.getDisplayLabel(accountContext)
+ + "<" + filter.accountName + ">");
+ viewCache.totally.setVisibility((filter.total != INVALID_COUNT) ? View.VISIBLE
+ : View.GONE);
+ viewCache.count_total.setText(Integer.toString(filter.total));
+ viewCache.count_cur.setText(Integer.toString(filter.count));
+ }
+
+ /**
+ * Cache of the children views of a contact detail entry represented by
+ * a {@link GroupListItem}
+ */
+ public class AccountListItemViewCache {
+ public final TextView accountName;
+ public final TextView count_total;
+ public final TextView count_cur;
+ public final LinearLayout totally;
+
+ public AccountListItemViewCache(View view) {
+ accountName = (TextView) view.findViewById(R.id.account_name);
+ count_total = (TextView) view.findViewById(R.id.count_max);
+ count_cur = (TextView) view.findViewById(R.id.count_cur);
+ totally = (LinearLayout) view.findViewById(R.id.totally);
+ }
+ }
+ }
+}
diff --git a/src/com/android/contacts/activities/MultiPickContactActivity.java b/src/com/android/contacts/activities/MultiPickContactActivity.java
new file mode 100644
index 000000000..ee7614b88
--- /dev/null
+++ b/src/com/android/contacts/activities/MultiPickContactActivity.java
@@ -0,0 +1,1965 @@
+/**
+ * Copyright (C) 2013-2015, The Linux Foundation. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.android.contacts.activities;
+
+import android.app.ActionBar;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.ListActivity;
+import android.app.ProgressDialog;
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.content.AsyncQueryHandler;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.ContentProviderOperation;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.OperationApplicationException;
+import android.database.Cursor;
+import android.net.Uri;
+import android.net.Uri.Builder;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.ContactCounts;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Groups;
+import android.provider.ContactsContract.RawContacts;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.telephony.SubscriptionManager;
+import android.text.Editable;
+import android.text.format.DateUtils;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CursorAdapter;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.SearchView;
+import android.widget.SectionIndexer;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.contacts.R;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.SimContactsConstants;
+import com.android.contacts.common.SimContactsOperation;
+import com.android.contacts.common.list.AccountFilterActivity;
+import com.android.contacts.common.list.ContactListFilter;
+import com.android.contacts.common.list.ContactListItemView;
+import com.android.contacts.common.list.ContactsSectionIndexer;
+import com.android.contacts.common.list.DefaultContactListAdapter;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.model.account.SimAccountType;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+public class MultiPickContactActivity extends ListActivity implements
+ TextView.OnEditorActionListener, View.OnTouchListener,
+ SearchView.OnQueryTextListener, SearchView.OnCloseListener,
+ View.OnFocusChangeListener, DialogInterface.OnClickListener,
+ DialogInterface.OnKeyListener {
+ private final static String TAG = "MultiPickContactActivity";
+ private final static boolean DEBUG = true;
+
+ private static final String SORT_ORDER = " desc";
+
+ static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+ Contacts._ID, // 0
+ Contacts.DISPLAY_NAME_PRIMARY, // 1
+ Contacts.PHOTO_ID, // 2
+ Contacts.LOOKUP_KEY, // 3
+ RawContacts.ACCOUNT_TYPE, // 4
+ RawContacts.ACCOUNT_NAME, // 5
+ Contacts.NAME_RAW_CONTACT_ID, // 6
+ Contacts.PHOTO_THUMBNAIL_URI // 7
+ };
+
+ static final String[] PHONES_PROJECTION = new String[] {
+ Data.CONTACT_ID, // 0
+ Data.DISPLAY_NAME, // 1
+ Data.PHOTO_ID, // 2
+ Data.LOOKUP_KEY, // 3
+ Phone._ID, // 4
+ Phone.TYPE, // 5
+ Phone.LABEL, // 6
+ Phone.NUMBER, // 7
+ };
+
+ static final String[] EMAILS_PROJECTION = new String[] {
+ Data.CONTACT_ID, // 0
+ Data.DISPLAY_NAME, // 1
+ Data.PHOTO_ID, // 2
+ Data.LOOKUP_KEY, // 3
+ Email._ID, // 4
+ Email.ADDRESS // 5
+ };
+
+ static final String[] CALL_LOG_PROJECTION = new String[] {
+ Calls._ID,
+ Calls.NUMBER,
+ Calls.DATE,
+ Calls.DURATION,
+ Calls.TYPE,
+ Calls.CACHED_NAME,
+ Calls.CACHED_NUMBER_TYPE,
+ Calls.CACHED_NUMBER_LABEL,
+ Calls.PHONE_ACCOUNT_ID,
+ Calls.GEOCODED_LOCATION,
+ };
+
+ static final String CONTACTS_SELECTION = Contacts.IN_VISIBLE_GROUP + "=1";
+
+ static final String PHONES_SELECTION = RawContacts.ACCOUNT_TYPE + "<>?";
+
+ static final String[] PHONES_SELECTION_ARGS = {
+ SimContactsConstants.ACCOUNT_TYPE_SIM
+ };
+
+ public static final int CONTACT_COLUMN_ID = 0;
+ public static final int CONTACT_COLUMN_DISPLAY_NAME = 1;
+ public static final int CONTACT_COLUMN_PHOTO_ID = 2;
+ public static final int CONTACT_COLUMN_LOOKUP_KEY = 3;
+ // contacts query specific columns
+ public static final int CONTACT_COLUMN_ACCOUNT_TYPE = 4;
+ public static final int CONTACT_COLUMN_ACCOUNT_NAME = 5;
+ public static final int CONTACT_COLUMN_RAW_CONTACT_ID = 6;
+ public static final int CONTACT_COLUMN_PHOTO_URI = 7;
+ // phone query specific columns
+ public static final int PHONE_COLUMN_ID = 4;
+ public static final int PHONE_COLUMN_TYPE = 5;
+ public static final int PHONE_COLUMN_LABEL = 6;
+ public static final int PHONE_COLUMN_NUMBER = 7;
+ // email query specific columns
+ public static final int EMAIL_COLUMN_ID = 4;
+ public static final int EMAIL_COLUMN_ADDRESS = 5;
+
+ public static final int CALLLOG_COLUMN_ID = 0;
+ public static final int CALLLOG_COLUMN_NUMBER = 1;
+ public static final int CALLLOG_COLUMN_DATE = 2;
+ public static final int CALLLOG_COLUMN_DURATION = 3;
+ public static final int CALLLOG_COLUMN_CALL_TYPE = 4;
+ public static final int CALLLOG_COLUMN_CALLER_NAME = 5;
+ public static final int CALLLOG_COLUMN_CALLER_NUMBERTYPE = 6;
+ public static final int CALLLOG_COLUMN_CALLER_NUMBERLABEL = 7;
+ public static final int CALLLOG_COLUMN_PHONE_ACCOUNT = 8;
+ public static final int CALLLOG_COLUMN_CALLER_LOCATION = 9;
+
+ private static final int QUERY_TOKEN = 42;
+ private static final int MODE_MASK_SEARCH = 0x80000000;
+
+ private static final int MODE_DEFAULT_CONTACT = 0;
+ private static final int MODE_DEFAULT_PHONE = 1;
+ private static final int MODE_DEFAULT_EMAIL = 1 << 1;
+ private static final int MODE_DEFAULT_CALL = 1 << 1 << 1;
+ private static final int MODE_DEFAULT_SIM = 1 << 1 << 1 << 1;
+ private static final int MODE_SEARCH_CONTACT = MODE_DEFAULT_CONTACT | MODE_MASK_SEARCH;
+ private static final int MODE_SEARCH_PHONE = MODE_DEFAULT_PHONE | MODE_MASK_SEARCH;
+ private static final int MODE_SEARCH_EMAIL = MODE_DEFAULT_EMAIL | MODE_MASK_SEARCH;
+ private static final int MODE_SEARCH_CALL = MODE_DEFAULT_CALL | MODE_MASK_SEARCH;
+ private static final int MODE_SEARCH_SIM = MODE_DEFAULT_SIM | MODE_MASK_SEARCH;
+ private static final int DIALOG_DEL_CALL = 1;
+
+ public static final String ADD_GROUP_MEMBERS = "add_group_members";
+
+ public static final String ACTION_MULTI_PICK = "com.android.contacts.action.MULTI_PICK";
+ static final String ACTION_MULTI_PICK_EMAIL = "com.android.contacts.action.MULTI_PICK_EMAIL";
+ static final String ACTION_MULTI_PICK_CALL = "com.android.contacts.action.MULTI_PICK_CALL";
+ static final String ACTION_MULTI_PICK_SIM = "com.android.contacts.action.MULTI_PICK_SIM";
+
+ public static final String EXTRA_IS_SELECT_ALL_DISALLOWED = "is_select_all_disallowed";
+ public static final String EXTRA_SELECT_CALLLOG = "selectcalllog";
+ public static final String EXTRA_NOT_SHOW_SIM_FLAG = "not_sim_show";
+ public static final String EXTRA_GROUP_ID = "group_id";
+ public static final String EXTRA_GROUP_ACTION = "group_action";
+
+ public static final int GROUP_ACTION_ADD_MEMBER = 0;
+ public static final int GROUP_ACTION_MOVE_MEMBER = 1;
+ public static final int GROUP_ACTION_NONE = -1;
+
+ private ContactItemListAdapter mAdapter;
+ private QueryHandler mQueryHandler;
+ private Bundle mChoiceSet;
+
+ private ActionBar mActionBar;
+ private SearchView mSearchView;
+ private ViewGroup mSearchViewContainer;
+
+ private int mMode;
+ private boolean mSelectCallLog;
+ private boolean mSearchUiVisible = false;
+
+ private ArrayList<Long> mGroupIds = new ArrayList<Long>();
+
+ private ProgressDialog mProgressDialog;
+ private SimContactsOperation mSimContactsOperation;
+ private AccountManager accountManager;
+ private CharSequence[] mLabelArray;
+ private AccountManager mAccountManager;
+
+ private static final String[] SIM_COLUMN_NAMES = new String[] {
+ "name",
+ "number",
+ "emails",
+ "anrs",
+ "_id"
+ };
+
+ private static final int SIM_COLUMN_DISPLAY_NAME = 0;
+ private static final int SIM_COLUMN_NUMBER = 1;
+ private static final int SIM_COLUMN_EMAILS = 2;
+ private static final int SIM_COLUMN_ANRS = 3;
+ private static final int SIM_COLUMN_ID = 4;
+
+ private int MAX_CONTACTS_NUM_TO_SELECT_ONCE = 500;
+
+ //registerReceiver to update content when airplane mode change.
+ private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getAction().equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
+ updateContent();
+
+ // If now is airplane mode, should cancel import sim contacts
+ if (isPickSim() && MoreContactUtils.isAPMOnAndSIMPowerDown(context)) {
+ cancelSimContactsImporting();
+ }
+ }
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Intent intent = getIntent();
+ String action = intent.getAction();
+ boolean isContact = intent.getBooleanExtra(SimContactsConstants.IS_CONTACT, false);
+
+ if (Intent.ACTION_DELETE.equals(action)) {
+ mMode = MODE_DEFAULT_CONTACT;
+ setTitle(R.string.menu_deleteContact);
+ } else if (SimContactsConstants.ACTION_MULTI_PICK.equals(action)) {
+ mMode = isContact ? MODE_DEFAULT_CONTACT : MODE_DEFAULT_PHONE;
+ } else if (SimContactsConstants.ACTION_MULTI_PICK_EMAIL.equals(action)) {
+ mMode = MODE_DEFAULT_EMAIL;
+ } else if (SimContactsConstants.ACTION_MULTI_PICK_CALL.equals(action)) {
+ mMode = MODE_DEFAULT_CALL;
+ setTitle(R.string.delete_call_title);
+ if (intent.getBooleanExtra(EXTRA_SELECT_CALLLOG, false)) {
+ mSelectCallLog = true;
+ setTitle(R.string.select_call_title);
+ }
+ } else if (SimContactsConstants.ACTION_MULTI_PICK_SIM.equals(action)) {
+ mMode = MODE_DEFAULT_SIM;
+ }
+
+ mChoiceSet = new Bundle();
+ mAdapter = new ContactItemListAdapter(this);
+ getListView().setAdapter(mAdapter);
+ mQueryHandler = new QueryHandler(this);
+ mSimContactsOperation = new SimContactsOperation(this);
+ mAccountManager = AccountManager.get(this);
+
+ mActionBar = getActionBar();
+ mActionBar.setHomeButtonEnabled(true);
+ mActionBar.setDisplayHomeAsUpEnabled(true);
+ mActionBar.setDisplayShowTitleEnabled(true);
+ inflateSearchView();
+
+ startQuery();
+ //register receiver.
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+ registerReceiver(mBroadcastReceiver, filter);
+ }
+
+ private void inflateSearchView() {
+ LayoutInflater inflater = LayoutInflater.from(mActionBar.getThemedContext());
+ mSearchViewContainer = (ViewGroup) inflater.inflate(R.layout.custom_action_bar, null);
+ mSearchView = (SearchView) mSearchViewContainer.findViewById(R.id.search_view);
+
+ if (isPickCall() || isPickSim()) {
+ mSearchView.setVisibility(View.GONE);
+ return;
+ }
+
+ // In order to make the SearchView look like "shown via search menu", we need to
+ // manually setup its state. See also DialtactsActivity.java and ActionBarAdapter.java.
+ mSearchView.setIconifiedByDefault(true);
+ mSearchView.setQueryHint(getString(R.string.hint_findContacts));
+ mSearchView.setIconified(false);
+ mSearchView.setFocusable(true);
+
+ mSearchView.setOnQueryTextListener(this);
+ mSearchView.setOnCloseListener(this);
+ mSearchView.setOnQueryTextFocusChangeListener(this);
+
+ mActionBar.setCustomView(mSearchViewContainer, new ActionBar.LayoutParams(
+ ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.WRAP_CONTENT));
+ mActionBar.setDisplayShowCustomEnabled(true);
+
+ configureSearchMode();
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+
+ inflater.inflate(R.menu.search_menu, menu);
+ inflater.inflate(R.menu.multi_contact_picker_options, menu);
+
+ final MenuItem selectAllItem = menu.findItem(R.id.select_all_check);
+ selectAllItem.setVisible(!mSearchUiVisible);
+ selectAllItem.setChecked(mChoiceSet.size() == mAdapter.getCount());
+
+ final MenuItem doneItem = menu.findItem(R.id.done);
+ doneItem.setVisible(!mChoiceSet.isEmpty());
+
+ final MenuItem searchItem = menu.findItem(R.id.menu_search);
+ searchItem.setVisible(!mSearchUiVisible && !isPickCall() && !isPickSim());
+
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_search:
+ mSearchUiVisible = !mSearchUiVisible;
+ if (!mSearchUiVisible) {
+ exitSearchMode();
+ } else {
+ configureSearchMode();
+ }
+ return true;
+ case R.id.select_all_check:
+ selectAll(!item.isChecked());
+ return true;
+ case R.id.done:
+ if (isSearchMode()) {
+ exitSearchMode();
+ }
+ if (mMode == MODE_DEFAULT_CONTACT) {
+ if (SimContactsConstants.ACTION_MULTI_PICK.equals(getIntent().getAction())) {
+ if (mChoiceSet.size() > MAX_CONTACTS_NUM_TO_SELECT_ONCE) {
+ String text = getString(R.string.too_many_contacts_add_to_group,
+ MAX_CONTACTS_NUM_TO_SELECT_ONCE);
+ Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
+ } else {
+ int memberAction = getIntent().getIntExtra(EXTRA_GROUP_ACTION,
+ GROUP_ACTION_NONE);
+ switch (memberAction) {
+ case GROUP_ACTION_ADD_MEMBER:
+ setResult(RESULT_OK, new Intent().putExtras(mChoiceSet));
+ finish();
+ break;
+ case GROUP_ACTION_MOVE_MEMBER:
+ String account = getIntent().getStringExtra(
+ SimContactsConstants.ACCOUNT_TYPE);
+ long groupId = getIntent().getLongExtra(EXTRA_GROUP_ID, -1);
+ showGroupSelectionList(account, groupId);
+ break;
+ default:
+ setResultAndFinish();
+ break;
+ }
+ }
+ } else if (mChoiceSet.size() > 0) {
+ showDialog(R.id.dialog_delete_contact_confirmation);
+ }
+ } else if (mMode == MODE_DEFAULT_PHONE) {
+ setResultAndFinish();
+ } else if (mMode == MODE_DEFAULT_SIM) {
+ if (mChoiceSet.size() > 0) {
+ showDialog(R.id.dialog_import_sim_contact_confirmation);
+ }
+ } else if (mMode == MODE_DEFAULT_EMAIL) {
+ setResultAndFinish();
+ } else if (mMode == MODE_DEFAULT_CALL) {
+ if (mChoiceSet.size() > 0) {
+ if (mSelectCallLog) {
+ setResultAndFinish();
+ } else {
+ showDialog(DIALOG_DEL_CALL);
+ }
+ }
+ }
+ return true;
+ case android.R.id.home:
+ finish();
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void onBackPressed() {
+ if (mSearchUiVisible) {
+ exitSearchMode();
+ } else {
+ super.onBackPressed();
+ }
+ }
+
+ @Override
+ public boolean onQueryTextSubmit(String query) {
+ updateState(query);
+ return true;
+ }
+
+ @Override
+ public boolean onQueryTextChange(String newText) {
+ updateState(newText);
+ return true;
+ }
+
+ @Override
+ public boolean onClose() {
+ if (!TextUtils.isEmpty(mSearchView.getQuery())) {
+ mSearchView.setQuery(null, true);
+ }
+ return true;
+ }
+
+ @Override
+ public void onFocusChange(View view, boolean hasFocus) {
+ switch (view.getId()) {
+ case R.id.search_view: {
+ if (hasFocus) {
+ final InputMethodManager imm =
+ (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.showSoftInput(mSearchView.findFocus(), 0);
+ }
+ }
+ }
+ }
+
+ private void updateState(String query) {
+ if (!TextUtils.isEmpty(query)) {
+ if (!isSearchMode()) {
+ enterSearchMode();
+ }
+ } else if (isSearchMode()) {
+ exitSearchMode();
+ }
+ doFilter(query);
+ }
+
+ private void setResultAndFinish() {
+ Intent intent = new Intent();
+ Bundle bundle = new Bundle();
+ bundle.putBundle(SimContactsConstants.RESULT_KEY, mChoiceSet);
+ intent.putExtras(bundle);
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+
+ @Override
+ protected void onListItemClick(ListView l, View v, int position, long id) {
+ hideSoftKeyboard();
+
+ ContactItemCache cache = (ContactItemCache) v.getTag();
+ String key = String.valueOf(cache.id);
+
+ if (!mChoiceSet.containsKey(key)) {
+ String[] value = null;
+ if (isPickContact()) {
+ value = new String[] {
+ cache.lookupKey, String.valueOf(cache.id),
+ String.valueOf(cache.nameRawContactId),
+ cache.photoUri, cache.name
+ };
+ } else if (isPickPhone()) {
+ value = new String[] {
+ cache.name, cache.number, cache.type,
+ cache.label, cache.contact_id
+ };
+ } else if (isPickEmail()) {
+ value = new String[] {
+ cache.name, cache.email
+ };
+ } else if (isPickSim()) {
+ value = new String[] {
+ cache.name, cache.number, cache.email, cache.anrs
+ };
+ } else if (isPickCall() && mSelectCallLog) {
+ value = new String[] {
+ cache.name, cache.number
+ };
+ }
+ mChoiceSet.putStringArray(key, value);
+ } else {
+ mChoiceSet.remove(key);
+ }
+
+ updateActionBar();
+ mAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_BACK: {
+ if (isSearchMode()) {
+ exitSearchMode();
+ return true;
+ }
+ }
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ private void updateActionBar() {
+ String countTitle = null;
+ if (!mChoiceSet.isEmpty()) {
+ countTitle = getResources().getQuantityString(R.plurals.contacts_selected,
+ mChoiceSet.size(), mChoiceSet.size());
+ }
+ mActionBar.setSubtitle(countTitle);
+ invalidateOptionsMenu();
+ }
+
+ private boolean isSearchMode() {
+ return (mMode & MODE_MASK_SEARCH) == MODE_MASK_SEARCH;
+ }
+
+ private void enterSearchMode() {
+ mMode |= MODE_MASK_SEARCH;
+ configureSearchMode();
+ }
+
+ private void exitSearchMode() {
+ mSearchUiVisible = false;
+ mMode &= ~MODE_MASK_SEARCH;
+ configureSearchMode();
+ }
+
+ private void configureSearchMode() {
+ if (mSearchUiVisible) {
+ mSearchViewContainer.setVisibility(View.VISIBLE);
+ mSearchView.requestFocus();
+ } else {
+ mSearchViewContainer.setVisibility(View.GONE);
+ mSearchView.setQuery(null, true);
+ }
+ mActionBar.setDisplayShowTitleEnabled(!mSearchUiVisible);
+ updateActionBar();
+ }
+
+ @Override
+ protected Dialog onCreateDialog(int id, Bundle bundle) {
+ switch (id) {
+ case R.id.dialog_delete_contact_confirmation:
+ return new AlertDialog.Builder(this)
+ .setTitle(R.string.deleteConfirmation_title)
+ .setMessage(getResources().getQuantityString(
+ R.plurals.ContactMultiDeleteConfirmation,
+ mChoiceSet.size(), mChoiceSet.size()))
+ .setNegativeButton(android.R.string.cancel, null)
+ .setPositiveButton(android.R.string.ok, this)
+ .create();
+ case DIALOG_DEL_CALL:
+ return new AlertDialog.Builder(this)
+ .setTitle(R.string.title_del_call)
+ .setMessage(R.string.delete_call_alert)
+ .setNegativeButton(android.R.string.cancel, null)
+ .setPositiveButton(android.R.string.ok, this)
+ .create();
+ case R.id.dialog_import_sim_contact_confirmation:
+ return new AlertDialog.Builder(this)
+ .setTitle(R.string.importConfirmation_title)
+ .setMessage(getResources().getQuantityString(
+ R.plurals.ContactMultiImportConfirmation,
+ mChoiceSet.size(), mChoiceSet.size()))
+ .setNegativeButton(android.R.string.cancel, null)
+ .setPositiveButton(android.R.string.ok, this)
+ .create();
+ }
+
+ return super.onCreateDialog(id, bundle);
+ }
+
+ @Override
+ protected void onPrepareDialog(int id, Dialog dialog, Bundle bundle) {
+ switch (id) {
+ case R.id.dialog_delete_contact_confirmation:
+ ((AlertDialog) dialog).setMessage(getResources().getQuantityString(
+ R.plurals.ContactMultiDeleteConfirmation,
+ mChoiceSet.size(), mChoiceSet.size()));
+ break;
+ case R.id.dialog_import_sim_contact_confirmation:
+ ((AlertDialog) dialog).setMessage(getResources().getQuantityString(
+ R.plurals.ContactMultiImportConfirmation,
+ mChoiceSet.size(), mChoiceSet.size()));
+ break;
+ }
+ }
+
+ private class DeleteContactsThread extends Thread implements
+ DialogInterface.OnCancelListener, DialogInterface.OnClickListener {
+ boolean mCanceled = false;
+ private String name = null;
+ private String number = null;
+ private final String[] PROJECTION = new String[] {
+ Phone.CONTACT_ID,
+ Phone.NUMBER,
+ Phone.DISPLAY_NAME
+ };
+ private final int COLUMN_NUMBER = 1;
+ private final int COLUMN_NAME = 2;
+
+ private ArrayList<ContentProviderOperation> mOpsCalls = null;
+ private ArrayList<ContentProviderOperation> mOpsContacts = null;
+
+ public DeleteContactsThread() {
+ }
+
+ @Override
+ public void run() {
+ final Context context = MultiPickContactActivity.this;
+ final ContentResolver resolver = getContentResolver();
+
+ // The mChoiceSet object will change when activity restart, but
+ // DeleteContactsThread running in background, so we need clone the
+ // choiceSet to avoid ConcurrentModificationException.
+ Bundle choiceSet = (Bundle) mChoiceSet.clone();
+ Set<String> keySet = choiceSet.keySet();
+ Iterator<String> it = keySet.iterator();
+
+ ContentProviderOperation.Builder builder = null;
+ ContentProviderOperation cpo = null;
+
+ // Current contact count we can delete.
+ int count = 0;
+
+ // The contacts we batch delete once.
+ final int BATCH_DELETE_CONTACT_NUMBER = 100;
+
+ mOpsCalls = new ArrayList<ContentProviderOperation>();
+ mOpsContacts = new ArrayList<ContentProviderOperation>();
+
+ while (!mCanceled && it.hasNext()) {
+ String id = it.next();
+ Uri uri = null;
+ if (isPickCall()) {
+ uri = Uri.withAppendedPath(Calls.CONTENT_URI, id);
+ builder = ContentProviderOperation.newDelete(uri);
+ cpo = builder.build();
+ mOpsCalls.add(cpo);
+ } else {
+ uri = Uri.withAppendedPath(Contacts.CONTENT_URI, id);
+ long longId = Long.parseLong(id);
+ int subscription = mSimContactsOperation.getSimSubscription(longId);
+
+ if (subscription == SimContactsConstants.SUB_1
+ || subscription == SimContactsConstants.SUB_2) {
+ if (MoreContactUtils.isAPMOnAndSIMPowerDown(context)) {
+ break;
+ }
+ ContentValues values =
+ mSimContactsOperation.getSimAccountValues(longId);
+ log("values is : " + values + "; sub is " + subscription);
+ if (mSimContactsOperation.delete(values, subscription) == 0) {
+ mProgressDialog.incrementProgressBy(1);
+ continue;
+ }
+ }
+ builder = ContentProviderOperation.newDelete(uri);
+ cpo = builder.build();
+ mOpsContacts.add(cpo);
+ }
+ // If contacts more than 2000, delete all contacts
+ // one by one will cause UI nonresponse.
+ mProgressDialog.incrementProgressBy(1);
+ // We batch delete contacts every 100.
+ if (count % BATCH_DELETE_CONTACT_NUMBER == 0) {
+ batchDelete();
+ }
+ count++;
+ }
+
+ batchDelete();
+ mOpsCalls = null;
+ mOpsContacts = null;
+ Log.d(TAG, "DeleteContactsThread run, progress:" + mProgressDialog.getProgress());
+ mProgressDialog.dismiss();
+ finish();
+ }
+
+ /**
+ * Batch delete contacts more efficient than one by one.
+ */
+ private void batchDelete() {
+ try {
+ getContentResolver().applyBatch(CallLog.AUTHORITY, mOpsCalls);
+ getContentResolver().applyBatch(ContactsContract.AUTHORITY, mOpsContacts);
+ mOpsCalls.clear();
+ mOpsContacts.clear();
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ } catch (OperationApplicationException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ mCanceled = true;
+ Log.d(TAG, "DeleteContactsThread onCancel, progress:" + mProgressDialog.getProgress());
+ // Give a toast show to tell user delete termination
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (which == DialogInterface.BUTTON_NEGATIVE) {
+ mCanceled = true;
+ mProgressDialog.dismiss();
+ }
+ }
+ }
+
+ @Override
+ public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_SEARCH:
+ case KeyEvent.KEYCODE_CALL:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ CharSequence title = null;
+ CharSequence message = null;
+
+ if (isPickCall()) {
+ title = getString(R.string.delete_call_title);
+ message = getString(R.string.delete_call_message);
+ } else if (isPickSim()) {
+ title = getString(R.string.import_sim_contacts_title);
+ message = getString(R.string.import_sim_contacts_message);
+ } else {
+ title = getString(R.string.delete_contacts_title);
+ message = getString(R.string.delete_contacts_message);
+ }
+
+ Thread thread = isPickSim()
+ ? new ImportAllSimContactsThread() : new DeleteContactsThread();
+
+ mProgressDialog = new ProgressDialog(MultiPickContactActivity.this);
+ mProgressDialog.setTitle(title);
+ mProgressDialog.setMessage(message);
+ mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+ mProgressDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
+ getString(android.R.string.cancel), (DialogInterface.OnClickListener) thread);
+ mProgressDialog.setOnCancelListener((DialogInterface.OnCancelListener) thread);
+ mProgressDialog.setOnKeyListener(this);
+ mProgressDialog.setProgress(0);
+ mProgressDialog.setMax(mChoiceSet.size());
+
+ // set dialog can not be canceled by touching outside area of dialog
+ mProgressDialog.setCanceledOnTouchOutside(false);
+ mProgressDialog.show();
+
+ thread.start();
+ }
+
+ @Override
+ public void onDestroy() {
+ mQueryHandler.removeCallbacksAndMessages(QUERY_TOKEN);
+ if (mAdapter.getCursor() != null) {
+ mAdapter.getCursor().close();
+ }
+
+ if (mProgressDialog != null) {
+ mProgressDialog.cancel();
+ }
+
+ // unregister receiver.
+ if (mBroadcastReceiver != null) {
+ unregisterReceiver(mBroadcastReceiver);
+ }
+
+ super.onDestroy();
+ }
+
+ /**
+ * Just get the uri we need to query contacts.
+ *
+ * @return uri with account info parameter if explicit request contacts fit
+ * current account, else just search contacts fit specified keyword.
+ */
+ private Uri getContactsFilterUri() {
+ Uri filterUri = Contacts.CONTENT_FILTER_URI;
+
+ // To confirm if the search rule must contain account limitation.
+ Intent intent = getIntent();
+ ContactListFilter filter = (ContactListFilter) intent.getParcelableExtra(
+ AccountFilterActivity.KEY_EXTRA_CONTACT_LIST_FILTER);
+ int operation = getIntent().getIntExtra(EXTRA_GROUP_ACTION, GROUP_ACTION_NONE);
+ long groupId = getIntent().getLongExtra(EXTRA_GROUP_ID, -1);
+ String accountName = getIntent().getStringExtra(SimContactsConstants.ACCOUNT_NAME);
+ String accountType = getIntent().getStringExtra(SimContactsConstants.ACCOUNT_TYPE);
+ switch (operation) {
+ case GROUP_ACTION_ADD_MEMBER:
+ case GROUP_ACTION_MOVE_MEMBER:
+ Uri.Builder builder = Contacts.CONTENT_FILTER_URI.buildUpon();
+ builder.appendQueryParameter(ADD_GROUP_MEMBERS,
+ operation == GROUP_ACTION_ADD_MEMBER ? "true" : "false");
+ builder.appendQueryParameter(Groups._ID, String.valueOf(groupId));
+ builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName);
+ builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType);
+ return builder.build();
+ }
+ if (filter != null &&
+ filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
+ // Need consider account info limitation, construct the uri with
+ // account info query parameter.
+ Uri.Builder builder = filterUri.buildUpon();
+ filter.addAccountQueryParameterToUrl(builder);
+ return builder.build();
+ }
+
+ if (!isShowSIM()) {
+ filterUri = filterUri.buildUpon()
+ .appendQueryParameter(RawContacts.ACCOUNT_TYPE, SimAccountType.ACCOUNT_TYPE)
+ .appendQueryParameter(SimContactsConstants.WITHOUT_SIM_FLAG, "true")
+ .build();
+ }
+ // No need to consider account info limitation, just return a uri
+ // with "filter" path.
+ return filterUri;
+ }
+
+ private Uri getUriToQuery() {
+ Uri uri;
+ switch (mMode) {
+ case MODE_DEFAULT_CONTACT: {
+ Intent intent = getIntent();
+ int operation = intent.getIntExtra(EXTRA_GROUP_ACTION, GROUP_ACTION_NONE);
+ long groupId = intent.getLongExtra(EXTRA_GROUP_ID, -1);
+ String accountName = intent.getStringExtra(SimContactsConstants.ACCOUNT_NAME);
+ String accountType = intent.getStringExtra(SimContactsConstants.ACCOUNT_TYPE);
+ switch (operation) {
+ case GROUP_ACTION_ADD_MEMBER:
+ case GROUP_ACTION_MOVE_MEMBER:
+ Uri.Builder builder = Contacts.CONTENT_GROUP_URI.buildUpon();
+ builder.appendQueryParameter(ADD_GROUP_MEMBERS,
+ operation == GROUP_ACTION_ADD_MEMBER ? "true" : "false");
+ builder.appendQueryParameter(Groups._ID, String.valueOf(groupId));
+ builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName);
+ builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType);
+ uri = builder.build();
+ break;
+ default:
+ uri = Contacts.CONTENT_URI;
+ break;
+ }
+ break;
+ }
+ case MODE_SEARCH_CONTACT:
+ uri = Contacts.CONTENT_URI;
+ break;
+ case MODE_DEFAULT_EMAIL:
+ case MODE_SEARCH_EMAIL:
+ uri = Email.CONTENT_URI;
+ break;
+ case MODE_DEFAULT_PHONE:
+ case MODE_SEARCH_PHONE:
+ uri = Phone.CONTENT_URI;
+ break;
+ case MODE_DEFAULT_CALL:
+ case MODE_SEARCH_CALL:
+ uri = Calls.CONTENT_URI_WITH_VOICEMAIL;
+ break;
+ case MODE_DEFAULT_SIM:
+ case MODE_SEARCH_SIM: {
+ int subscription = getIntent().getIntExtra(SimContactsConstants.SUB, 0);
+ uri = querySimContacts(subscription);
+ break;
+ }
+ default:
+ throw new IllegalArgumentException("getUriToQuery: Incorrect mode: " + mMode);
+ }
+ return uri.buildUpon()
+ .appendQueryParameter(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX, "true")
+ .build();
+ }
+
+ private Uri getFilterUri() {
+ switch (mMode) {
+ case MODE_SEARCH_CONTACT:
+ return getContactsFilterUri();
+ case MODE_SEARCH_PHONE:
+ return Phone.CONTENT_FILTER_URI;
+ case MODE_SEARCH_EMAIL:
+ return Email.CONTENT_FILTER_URI;
+ default:
+ log("getFilterUri: Incorrect mode: " + mMode);
+ }
+ return Contacts.CONTENT_FILTER_URI;
+ }
+
+ public String[] getProjectionForQuery() {
+ switch (mMode) {
+ case MODE_DEFAULT_CONTACT:
+ case MODE_SEARCH_CONTACT:
+ return CONTACTS_SUMMARY_PROJECTION;
+ case MODE_DEFAULT_PHONE:
+ case MODE_SEARCH_PHONE:
+ return PHONES_PROJECTION;
+ case MODE_DEFAULT_EMAIL:
+ case MODE_SEARCH_EMAIL:
+ return EMAILS_PROJECTION;
+ case MODE_DEFAULT_CALL:
+ case MODE_SEARCH_CALL:
+ return CALL_LOG_PROJECTION;
+ case MODE_DEFAULT_SIM:
+ case MODE_SEARCH_SIM:
+ return SIM_COLUMN_NAMES;
+ default:
+ log("getProjectionForQuery: Incorrect mode: " + mMode);
+ }
+ return CONTACTS_SUMMARY_PROJECTION;
+ }
+
+ private String getSortOrder(String[] projection) {
+ switch (mMode) {
+ case MODE_DEFAULT_CALL:
+ case MODE_SEARCH_CALL:
+ return CALL_LOG_PROJECTION[2] + SORT_ORDER;
+ }
+ return RawContacts.SORT_KEY_PRIMARY;
+ }
+
+ private String getSelectionForQuery() {
+ switch (mMode) {
+ case MODE_DEFAULT_EMAIL:
+ case MODE_SEARCH_EMAIL:
+ case MODE_DEFAULT_PHONE:
+ case MODE_SEARCH_PHONE:
+ if (isShowSIM()) {
+ return null;
+ }
+ return PHONES_SELECTION;
+ case MODE_DEFAULT_CONTACT:
+ return getSelectionForAccount();
+ case MODE_DEFAULT_SIM:
+ case MODE_SEARCH_SIM:
+ return null;
+ case MODE_DEFAULT_CALL:
+ // Add a subscription judgement, if selection = -1 that means
+ // need query both cards.
+ String selection = null;
+ int slot = getIntent().getIntExtra(SimContactsConstants.SUB,
+ SimContactsConstants.SUB_INVALID);
+ int[] subIds = SubscriptionManager.getSubId(slot);
+ if (SimContactsConstants.SUB_INVALID != slot
+ && subIds != null && subIds.length > 0) {
+ selection = Calls.PHONE_ACCOUNT_ID + "=" + Long.toString(subIds[0]);
+ }
+ return selection;
+ default:
+ return null;
+ }
+ }
+
+ private String getSelectionForAccount() {
+ @SuppressWarnings("deprecation")
+ ContactListFilter filter = (ContactListFilter) getIntent().getExtra(
+ AccountFilterActivity.KEY_EXTRA_CONTACT_LIST_FILTER);
+ if (filter == null) {
+ return null;
+ }
+ switch (filter.filterType) {
+ case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS:
+ return null;
+ case ContactListFilter.FILTER_TYPE_CUSTOM:
+ return CONTACTS_SELECTION;
+ case ContactListFilter.FILTER_TYPE_ACCOUNT:
+ return null;
+ }
+ return null;
+ }
+
+ private String[] getSelectionArgsForQuery() {
+ switch (mMode) {
+ case MODE_DEFAULT_EMAIL:
+ case MODE_SEARCH_EMAIL:
+ case MODE_DEFAULT_PHONE:
+ case MODE_SEARCH_PHONE:
+ if (isShowSIM()) {
+ return null;
+ }
+ return PHONES_SELECTION_ARGS;
+ case MODE_DEFAULT_SIM:
+ case MODE_SEARCH_SIM:
+ return null;
+ default:
+ return null;
+ }
+ }
+
+ private boolean isShowSIM() {
+ // if airplane mode on, do not show SIM.
+ return !getIntent().hasExtra(EXTRA_NOT_SHOW_SIM_FLAG)
+ && !MoreContactUtils.isAPMOnAndSIMPowerDown(this);
+ }
+
+ public void startQuery() {
+ Uri uri = getUriToQuery();
+ ContactListFilter filter = (ContactListFilter) getIntent().getExtra(
+ AccountFilterActivity.KEY_EXTRA_CONTACT_LIST_FILTER);
+ if (filter != null) {
+ if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
+ // We should exclude the invisiable contacts.
+ uri = uri.buildUpon()
+ .appendQueryParameter(RawContacts.ACCOUNT_NAME, filter.accountName)
+ .appendQueryParameter(RawContacts.ACCOUNT_TYPE, filter.accountType)
+ .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+ String.valueOf(ContactsContract.Directory.DEFAULT))
+ .build();
+ } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
+ // Do not query sim contacts in airplane mode.
+ if (!isShowSIM()) {
+ uri = uri.buildUpon()
+ .appendQueryParameter(RawContacts.ACCOUNT_TYPE,
+ SimAccountType.ACCOUNT_TYPE)
+ .appendQueryParameter(SimContactsConstants.WITHOUT_SIM_FLAG, "true")
+ .build();
+ }
+ }
+ }
+ String[] projection = getProjectionForQuery();
+ mQueryHandler.startQuery(QUERY_TOKEN, null, uri, projection,
+ getSelectionForQuery(), getSelectionArgsForQuery(), getSortOrder(projection));
+ }
+
+ public void doFilter(CharSequence s) {
+ if (TextUtils.isEmpty(s)) {
+ startQuery();
+ return;
+ }
+
+ Uri uri = Uri.withAppendedPath(getFilterUri(), Uri.encode(s.toString()));
+ String[] projection = getProjectionForQuery();
+ mQueryHandler.startQuery(QUERY_TOKEN, null, uri, projection,
+ getSelectionForQuery(), getSelectionArgsForQuery(), getSortOrder(projection));
+ }
+
+ public void updateContent() {
+ if (isSearchMode()) {
+ doFilter(mSearchView.getQuery().toString());
+ } else {
+ startQuery();
+ }
+ }
+
+ private CharSequence getDisplayNumber(CharSequence number) {
+ if (TextUtils.isEmpty(number)) {
+ return "";
+ }
+ if (PhoneNumberUtils.isVoiceMailNumber(number.toString())) {
+ return getString(R.string.voicemail);
+ }
+ return number;
+ }
+
+ private boolean isPickContact() {
+ return mMode == MODE_DEFAULT_CONTACT || mMode == MODE_SEARCH_CONTACT;
+ }
+
+ private boolean isPickPhone() {
+ return mMode == MODE_DEFAULT_PHONE || mMode == MODE_SEARCH_PHONE;
+ }
+
+ private boolean isPickSim() {
+ return mMode == MODE_DEFAULT_SIM || mMode == MODE_SEARCH_SIM;
+ }
+
+ private boolean isPickEmail() {
+ return mMode == MODE_DEFAULT_EMAIL || mMode == MODE_SEARCH_EMAIL;
+ }
+
+ private boolean isPickCall() {
+ return mMode == MODE_DEFAULT_CALL || mMode == MODE_SEARCH_CALL;
+ }
+
+ private void selectAll(boolean isSelected) {
+ // update mChoiceSet.
+ // TODO: make it more efficient
+ Cursor cursor = mAdapter.getCursor();
+ if (cursor == null) {
+ log("cursor is null.");
+ return;
+ }
+
+ cursor.moveToPosition(-1);
+ while (cursor.moveToNext()) {
+ String id = null;
+ String[] value = null;
+ if (isPickContact()) {
+ id = String.valueOf(cursor.getLong(CONTACT_COLUMN_ID));
+ value = new String[] {
+ cursor.getString(CONTACT_COLUMN_LOOKUP_KEY), id,
+ cursor.getString(CONTACT_COLUMN_RAW_CONTACT_ID),
+ cursor.getString(CONTACT_COLUMN_PHOTO_URI),
+ cursor.getString(CONTACT_COLUMN_DISPLAY_NAME)
+ };
+ } else if (isPickPhone()) {
+ id = String.valueOf(cursor.getLong(PHONE_COLUMN_ID));
+ value = new String[] {
+ cursor.getString(CONTACT_COLUMN_DISPLAY_NAME),
+ cursor.getString(PHONE_COLUMN_NUMBER),
+ String.valueOf(cursor.getInt(PHONE_COLUMN_TYPE)),
+ cursor.getString(PHONE_COLUMN_LABEL),
+ String.valueOf(cursor.getLong(CONTACT_COLUMN_ID))
+ };
+ } else if (isPickEmail()) {
+ id = String.valueOf(cursor.getLong(EMAIL_COLUMN_ID));
+ value = new String[] {
+ cursor.getString(CONTACT_COLUMN_DISPLAY_NAME),
+ cursor.getString(EMAIL_COLUMN_ADDRESS),
+ id
+ };
+ } else if (isPickCall()) {
+ id = String.valueOf(cursor.getLong(CALLLOG_COLUMN_ID));
+ if (mSelectCallLog) {
+ value = new String[] {
+ cursor.getString(CALLLOG_COLUMN_NUMBER),
+ cursor.getString(CALLLOG_COLUMN_CALLER_NAME)
+ };
+ } else {
+ value = new String[] {
+ id
+ };
+ }
+ } else if (isPickSim()) {
+ id = String.valueOf(cursor.getLong(SIM_COLUMN_ID));
+ value = new String[] {
+ cursor.getString(SIM_COLUMN_DISPLAY_NAME),
+ cursor.getString(SIM_COLUMN_NUMBER),
+ cursor.getString(SIM_COLUMN_EMAILS),
+ cursor.getString(SIM_COLUMN_ANRS)
+ };
+ }
+ if (isSelected) {
+ mChoiceSet.putStringArray(id, value);
+ } else {
+ mChoiceSet.remove(id);
+ }
+ }
+
+ updateActionBar();
+ mAdapter.notifyDataSetChanged();
+ }
+
+ private class QueryHandler extends AsyncQueryHandler {
+ public QueryHandler(Context context) {
+ super(context.getContentResolver());
+ }
+
+ @Override
+ protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
+ mAdapter.changeCursor(cursor);
+ if (cursor == null || cursor.getCount() == 0) {
+ Toast.makeText(MultiPickContactActivity.this,
+ R.string.listFoundAllContactsZero, Toast.LENGTH_SHORT).show();
+ }
+ }
+ }
+
+ private final class ContactItemCache {
+ long id;
+ String name;
+ String number;
+ String lookupKey;
+ String type;
+ String label;
+ String contact_id;
+ String email;
+ String anrs;
+ long nameRawContactId;
+ String photoUri;
+ }
+
+ private final class ContactItemListAdapter extends CursorAdapter implements SectionIndexer {
+ Context mContext;
+ protected LayoutInflater mInflater;
+ private ContactsSectionIndexer mIndexer;
+ private ContactPhotoManager mContactPhotoManager;
+
+ public ContactItemListAdapter(Context context) {
+ super(context, null, false);
+
+ mContext = context;
+ mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ mContactPhotoManager = ContactPhotoManager.getInstance(mContext);
+ }
+
+ private void assignContactAndFillCache(ContactListItemView cliv, Cursor cursor,
+ Account account, ContactItemCache cache) {
+ String newLookupKey = cursor.getString(CONTACT_COLUMN_LOOKUP_KEY);
+ boolean rebound = !TextUtils.equals(cache.lookupKey, newLookupKey);
+
+ cache.lookupKey = newLookupKey;
+ cache.name = cursor.getString(CONTACT_COLUMN_DISPLAY_NAME);
+
+ long photoId = cursor.getLong(CONTACT_COLUMN_PHOTO_ID);
+ mContactPhotoManager.loadThumbnail(cliv.getPhotoView(), photoId, account, false, true,
+ new DefaultImageRequest(cache.name, cache.lookupKey, true));
+
+ CharSequence query = mSearchView != null ? mSearchView.getQuery() : null;
+ cliv.setHighlightedPrefix(query != null ? query.toString().toUpperCase() : null);
+ cliv.setDisplayName(cache.name);
+ cliv.setChecked(mChoiceSet.containsKey(String.valueOf(cache.id)), !rebound);
+ }
+
+ @Override
+ public void bindView(View view, Context context, Cursor cursor) {
+ ContactItemCache cache = (ContactItemCache) view.getTag();
+ ContactListItemView cliv = (ContactListItemView) view.findViewById(R.id.contact);
+
+ if (isPickContact()) {
+ cache.id = cursor.getLong(CONTACT_COLUMN_ID);
+ cache.nameRawContactId = cursor.getLong(CONTACT_COLUMN_RAW_CONTACT_ID);
+ cache.photoUri = cursor.getString(CONTACT_COLUMN_PHOTO_URI);
+
+ Account account = null;
+ if (!cursor.isNull(CONTACT_COLUMN_ACCOUNT_TYPE)
+ && !cursor.isNull(CONTACT_COLUMN_ACCOUNT_NAME)) {
+ final String accountType = cursor.getString(CONTACT_COLUMN_ACCOUNT_TYPE);
+ final String accountName = cursor.getString(CONTACT_COLUMN_ACCOUNT_NAME);
+ account = new Account(accountName, accountType);
+ }
+
+ assignContactAndFillCache(cliv, cursor, account, cache);
+ cliv.setPhoneNumber(null, null);
+ } else if (isPickPhone()) {
+ cache.id = cursor.getLong(PHONE_COLUMN_ID);
+ cache.number = cursor.getString(PHONE_COLUMN_NUMBER);
+ cache.label = cursor.getString(PHONE_COLUMN_LABEL);
+ cache.type = String.valueOf(cursor.getInt(PHONE_COLUMN_TYPE));
+
+ assignContactAndFillCache(cliv, cursor, null, cache);
+ cliv.setPhoneNumber(cache.number, null);
+ } else if (isPickSim()) {
+ cache.id = cursor.getLong(SIM_COLUMN_ID);
+ cache.name = cursor.getString(SIM_COLUMN_DISPLAY_NAME);
+ cache.number = cursor.getString(SIM_COLUMN_NUMBER);
+ cache.email = cursor.getString(SIM_COLUMN_EMAILS);
+ cache.anrs = cursor.getString(SIM_COLUMN_ANRS);
+
+ cliv.setDisplayName(cache.name);
+ mContactPhotoManager.loadThumbnail(cliv.getPhotoView(), -1, null, false, true,
+ new DefaultImageRequest(cache.name, cache.lookupKey, true));
+ if (!TextUtils.isEmpty(cache.number)) {
+ cliv.setPhoneNumber(cache.number, null);
+ } else if (!TextUtils.isEmpty(cache.email)) {
+ String[] emailArray = (cache.email).split(",");
+ cliv.setPhoneNumber(emailArray[0], null);
+ } else {
+ cliv.setPhoneNumber(null, null);
+ }
+ cliv.setChecked(mChoiceSet.containsKey(String.valueOf(cache.id)), true);
+ } else if (isPickEmail()) {
+ cache.id = cursor.getLong(EMAIL_COLUMN_ID);
+ cache.email = cursor.getString(EMAIL_COLUMN_ADDRESS);
+
+ assignContactAndFillCache(cliv, cursor, null, cache);
+ cliv.setPhoneNumber(cache.email, null);
+ } else if (isPickCall()) {
+ cache.id = cursor.getLong(CALLLOG_COLUMN_ID);
+ cache.name = cursor.getString(CALLLOG_COLUMN_CALLER_NAME);
+ cache.number = cursor.getString(CALLLOG_COLUMN_NUMBER);
+
+ String callerName = cursor.getString(CALLLOG_COLUMN_CALLER_NAME);
+ int callerNumberType = cursor.getInt(CALLLOG_COLUMN_CALLER_NUMBERTYPE);
+ String callerNumberLabel = cursor.getString(CALLLOG_COLUMN_CALLER_NUMBERLABEL);
+ String geocodedLocation = cursor.getString(CALLLOG_COLUMN_CALLER_LOCATION);
+ String accountId = cursor.getString(CALLLOG_COLUMN_PHONE_ACCOUNT);
+ long date = cursor.getLong(CALLLOG_COLUMN_DATE);
+ long duration = cursor.getLong(CALLLOG_COLUMN_DURATION);
+ int type = cursor.getInt(CALLLOG_COLUMN_CALL_TYPE);
+
+ ImageView callType = (ImageView) view.findViewById(R.id.call_type_icon);
+ TextView dateText = (TextView) view.findViewById(R.id.call_date);
+ TextView durationText = (TextView) view.findViewById(R.id.duration);
+ TextView subSlotText = (TextView) view.findViewById(R.id.subscription);
+ TextView numberLabelText = (TextView) view.findViewById(R.id.label);
+ TextView nameText = (TextView) view.findViewById(R.id.name);
+
+ // only for monkey test, callType can not be null in normal behaviour
+ if (callType == null) {
+ return;
+ }
+
+ callType.setVisibility(View.VISIBLE);
+ // Set the icon
+ switch (type) {
+ case Calls.INCOMING_TYPE:
+ callType.setImageResource(R.drawable.ic_call_incoming_holo_dark);
+ break;
+ case Calls.OUTGOING_TYPE:
+ callType.setImageResource(R.drawable.ic_call_outgoing_holo_dark);
+ break;
+ case Calls.MISSED_TYPE:
+ callType.setImageResource(R.drawable.ic_call_missed_holo_dark);
+ break;
+ default:
+ callType.setVisibility(View.INVISIBLE);
+ break;
+ }
+
+ // set the number
+ if (!TextUtils.isEmpty(callerName)) {
+ nameText.setText(callerName);
+ } else {
+ nameText.setText(getDisplayNumber(cache.number));
+ }
+
+ CharSequence numberLabel = null;
+ if (callerNumberType != 0 && !PhoneNumberUtils.isUriNumber(cache.number)) {
+ numberLabel = Phone.getDisplayLabel(context, callerNumberType,
+ callerNumberLabel);
+ } else {
+ numberLabel = geocodedLocation;
+ }
+ numberLabelText.setText(numberLabel);
+ numberLabelText.setVisibility(TextUtils.isEmpty(numberLabel)
+ ? View.GONE : View.VISIBLE);
+
+ // set date
+ dateText.setText(DateUtils.getRelativeTimeSpanString(date,
+ System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS,
+ DateUtils.FORMAT_ABBREV_RELATIVE));
+
+ // set duration
+ durationText.setText(DateUtils.formatElapsedTime(duration));
+
+ // set slot
+ if (isMultiSimEnabled()) {
+ int slotId = SimContactsConstants.SUB_INVALID;
+ if (accountId != null) {
+ try {
+ slotId = SubscriptionManager.getSlotId(Integer.valueOf(accountId));
+ } catch (NumberFormatException e) {
+ // ignore and keep the default 'invalid'
+ }
+ }
+ subSlotText.setText(MoreContactUtils.getMultiSimAliasesName(
+ MultiPickContactActivity.this, slotId));
+ } else {
+ subSlotText.setVisibility(View.GONE);
+ }
+
+ CheckBox checkBox = (CheckBox) view.findViewById(R.id.pick_contact_check);
+ checkBox.setChecked(mChoiceSet.containsKey(String.valueOf(cache.id)));
+ }
+ }
+
+ @Override
+ public View newView(Context context, Cursor cursor, ViewGroup parent) {
+ int layoutResId = isPickCall() ? R.layout.pick_calls_item : R.layout.pick_contact_item;
+ View v = mInflater.inflate(layoutResId, parent, false);
+ ContactListItemView cliv = (ContactListItemView) v.findViewById(R.id.contact);
+ if (cliv != null) {
+ cliv.setUnknownNameText(getString(R.string.missing_name));
+ }
+ ContactItemCache cache = new ContactItemCache();
+ v.setTag(cache);
+ return v;
+ }
+
+ @Override
+ protected void onContentChanged() {
+ updateContent();
+ }
+
+ @Override
+ public void changeCursor(Cursor cursor) {
+ super.changeCursor(cursor);
+ String[] sections = null;
+ int[] counts = null;
+ Bundle extras = cursor != null ? cursor.getExtras() : null;
+ if (extras != null &&
+ extras.containsKey(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES)) {
+ sections = extras.getStringArray(
+ ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES);
+ counts = extras.getIntArray(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS);
+ } else {
+ sections = new String[0];
+ counts = new int[0];
+ }
+ mIndexer = new ContactsSectionIndexer(sections, counts);
+ updateActionBar();
+ }
+
+ @Override
+ public Object[] getSections() {
+ if (mIndexer != null) {
+ return mIndexer.getSections();
+ }
+ return null;
+ }
+
+ @Override
+ public int getPositionForSection(int section) {
+ Cursor cursor = getCursor();
+ if (cursor == null) {
+ return 0;
+ }
+ if (mIndexer != null) {
+ return mIndexer.getPositionForSection(section);
+ }
+ return 0;
+ }
+
+ @Override
+ public int getSectionForPosition(int position) {
+ if (mIndexer != null) {
+ return mIndexer.getSectionForPosition(position);
+ }
+ return -1;
+ }
+
+ public int getSortIndex() {
+ switch (mMode) {
+ case MODE_DEFAULT_CONTACT:
+ case MODE_SEARCH_CONTACT:
+ case MODE_DEFAULT_PHONE:
+ case MODE_SEARCH_PHONE:
+ case MODE_DEFAULT_EMAIL:
+ case MODE_SEARCH_EMAIL:
+ return CONTACT_COLUMN_DISPLAY_NAME;
+ case MODE_DEFAULT_CALL:
+ case MODE_SEARCH_CALL:
+ return CALLLOG_COLUMN_CALLER_NAME;
+ case MODE_DEFAULT_SIM:
+ case MODE_SEARCH_SIM:
+ return SIM_COLUMN_DISPLAY_NAME;
+ default:
+ throw new IllegalArgumentException("Incorrect mode for multi pick");
+ }
+ }
+ }
+
+ /**
+ * Dismisses the soft keyboard when the list takes focus.
+ */
+ public boolean onTouch(View view, MotionEvent event) {
+ if (view == getListView()) {
+ hideSoftKeyboard();
+ }
+ return false;
+ }
+
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (actionId == EditorInfo.IME_ACTION_DONE) {
+ hideSoftKeyboard();
+ return true;
+ }
+ return false;
+ }
+
+ private void hideSoftKeyboard() {
+ // Hide soft keyboard, if visible
+ InputMethodManager inputMethodManager =
+ (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ inputMethodManager.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0);
+ }
+
+ protected static void log(String msg) {
+ if (DEBUG) Log.d(TAG, msg);
+ }
+
+ private Uri querySimContacts(int subscription) {
+ Uri uri = null;
+ if (subscription != SimContactsConstants.SUB_1
+ && subscription != SimContactsConstants.SUB_2) {
+ return uri;
+ }
+ int[] subId = SubscriptionManager.getSubId(subscription);
+ if (subId != null && isMultiSimEnabled()) {
+ uri = Uri.parse(SimContactsConstants.SIM_SUB_URI + subId[0]);
+ }
+ else {
+ uri = Uri.parse(SimContactsConstants.SIM_URI);
+ }
+
+ return uri;
+ }
+
+ private boolean isMultiSimEnabled() {
+ return TelephonyManager.getDefault().isMultiSimEnabled();
+ }
+
+ protected Account[] getSimAccounts() {
+ return mAccountManager.getAccountsByType(SimContactsConstants.ACCOUNT_TYPE_SIM);
+ }
+
+ private class ImportAllSimContactsThread extends Thread
+ implements DialogInterface.OnCancelListener, DialogInterface.OnClickListener {
+ boolean mCanceled = false;
+ // The total count how many to import.
+ private int mTotalCount = 0;
+ // The real count have imported.
+ private int mActualCount = 0;
+
+ private Account mAccount;
+
+ public ImportAllSimContactsThread() {
+ }
+
+ @Override
+ public void run() {
+ final ContentValues emptyContentValues = new ContentValues();
+ final ContentResolver resolver = getContentResolver();
+
+ String type = getIntent().getStringExtra(SimContactsConstants.ACCOUNT_TYPE);
+ String name = getIntent().getStringExtra(SimContactsConstants.ACCOUNT_NAME);
+ mAccount = new Account(name != null ? name : SimContactsConstants.PHONE_NAME,
+ type != null ? type : SimContactsConstants.ACCOUNT_TYPE_PHONE);
+ log("import sim contact to account: " + mAccount);
+ mTotalCount = mChoiceSet.size();
+
+ for (String key : mChoiceSet.keySet()) {
+ if (mCanceled) {
+ break;
+ }
+ String[] values = mChoiceSet.getStringArray(key);
+ actuallyImportOneSimContact(values, resolver, mAccount);
+ mActualCount++;
+ mProgressDialog.incrementProgressBy(1);
+ }
+ finish();
+ }
+
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ final Context context = MultiPickContactActivity.this;
+ mCanceled = true;
+ // Give a toast show to tell user import termination.
+ if (mActualCount < mTotalCount) {
+ String text = getResources().getQuantityString(R.plurals.import_progress,
+ mActualCount, mActualCount);
+ Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
+ } else {
+ Toast.makeText(context, R.string.import_finish, Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ public void onClick(DialogInterface dialog, int which) {
+ if (which == DialogInterface.BUTTON_NEGATIVE) {
+ mCanceled = true;
+ mProgressDialog.dismiss();
+ }
+ }
+ }
+
+ private static void actuallyImportOneSimContact(
+ String[] values, final ContentResolver resolver, Account account) {
+
+ final String name = values[SIM_COLUMN_DISPLAY_NAME];
+ final String phoneNumber = values[SIM_COLUMN_NUMBER];
+ final String emailAddresses = values[SIM_COLUMN_EMAILS];
+ final String anrs = values[SIM_COLUMN_ANRS];
+ final String[] emailAddressArray;
+ final String[] anrArray;
+ if (!TextUtils.isEmpty(emailAddresses)) {
+ emailAddressArray = emailAddresses.split(",");
+ } else {
+ emailAddressArray = null;
+ }
+ if (!TextUtils.isEmpty(anrs)) {
+ anrArray = anrs.split(",");
+ } else {
+ anrArray = null;
+ }
+ log(" actuallyImportOneSimContact: name= " + name +
+ ", phoneNumber= " + phoneNumber + ", emails= " + emailAddresses
+ + ", anrs= " + anrs + ", account is " + account);
+ final ArrayList<ContentProviderOperation> operationList =
+ new ArrayList<ContentProviderOperation>();
+ ContentProviderOperation.Builder builder =
+ ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
+ builder.withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_SUSPENDED);
+ if (account != null) {
+ builder.withValue(RawContacts.ACCOUNT_NAME, account.name);
+ builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);
+ }
+ operationList.add(builder.build());
+
+ builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
+ builder.withValueBackReference(StructuredName.RAW_CONTACT_ID, 0);
+ builder.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+ builder.withValue(StructuredName.DISPLAY_NAME, name);
+ operationList.add(builder.build());
+
+ builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
+ builder.withValueBackReference(Phone.RAW_CONTACT_ID, 0);
+ builder.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+ builder.withValue(Phone.TYPE, Phone.TYPE_MOBILE);
+ builder.withValue(Phone.NUMBER, phoneNumber);
+ builder.withValue(Data.IS_PRIMARY, 1);
+ operationList.add(builder.build());
+
+ if (anrArray != null) {
+ for (String anr : anrArray) {
+ builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
+ builder.withValueBackReference(Phone.RAW_CONTACT_ID, 0);
+ builder.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+ builder.withValue(Phone.TYPE, Phone.TYPE_HOME);
+ builder.withValue(Phone.NUMBER, anr);
+ operationList.add(builder.build());
+ }
+ }
+
+ if (emailAddresses != null) {
+ for (String emailAddress : emailAddressArray) {
+ builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
+ builder.withValueBackReference(Email.RAW_CONTACT_ID, 0);
+ builder.withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+ builder.withValue(Email.TYPE, Email.TYPE_MOBILE);
+ builder.withValue(Email.ADDRESS, emailAddress);
+ operationList.add(builder.build());
+ }
+ }
+
+ try {
+ resolver.applyBatch(ContactsContract.AUTHORITY, operationList);
+ } catch (RemoteException e) {
+ log(String.format("%s: %s", e.toString(), e.getMessage()));
+ } catch (OperationApplicationException e) {
+ log(String.format("%s: %s", e.toString(), e.getMessage()));
+ }
+ }
+
+ /**
+ * After turn on airplane mode, cancel import sim contacts operation.
+ */
+ private void cancelSimContactsImporting() {
+ if (mProgressDialog != null && mProgressDialog.isShowing()) {
+ mProgressDialog.cancel();
+ }
+ }
+
+ private void showGroupSelectionList(String accountType, long srcGroupId) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(getString(R.string.label_groups));
+ ContentResolver resolver = getContentResolver();
+ String selection = Groups.ACCOUNT_TYPE + " =? AND " + Groups.DELETED + " != ?";
+ ArrayList<String> items = new ArrayList<String>();
+
+ mGroupIds.clear();
+ items.clear();
+ Cursor cursor = resolver.query(Groups.CONTENT_URI, new String[] {
+ Groups._ID, Groups.TITLE
+ },
+ selection,
+ new String[] {
+ accountType, "1"
+ },
+ null);
+ if (cursor == null || cursor.getCount() == 0) {
+ Toast.makeText(this, R.string.message_can_not_move_members,
+ Toast.LENGTH_LONG).show();
+ return;
+ } else {
+ try {
+ while (cursor.moveToNext()) {
+ if (!cursor.getString(0).equals(String.valueOf(srcGroupId))) {
+ mGroupIds.add(cursor.getLong(0));
+ items.add(cursor.getString(1));
+ }
+ }
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ }
+ if (mGroupIds.size() == 0) {
+ Toast.makeText(this, R.string.message_can_not_move_members,
+ Toast.LENGTH_LONG).show();
+ return;
+ }
+ String[] groupItem = new String[items.size()];
+ for (int i = 0; i < items.size(); i++) {
+ groupItem[i] = items.get(i);
+ }
+ builder.setItems(groupItem, new ChooseActionListener());
+ builder.create().show();
+ }
+
+ private class ChooseActionListener implements DialogInterface.OnClickListener {
+ public void onClick(DialogInterface dialog, int which) {
+ new MoveGroupMemberTask(mChoiceSet,
+ getIntent().getLongExtra(EXTRA_GROUP_ID, -1),
+ mGroupIds.get(which)).execute();
+ }
+ }
+
+ class MoveGroupMemberTask extends AsyncTask<Object, Object, Object> {
+
+ private static final String GROUP_QUERY_GROUP_MEMBER_SELECTION =
+ Data.MIMETYPE + "=? AND "
+ + GroupMembership.GROUP_ROW_ID + "=?";
+
+ private static final String GROUP_QUERY_RAW_CONTACTS_SELECTION =
+ RawContacts.CONTACT_ID + "=?";
+
+ private static final String GROUP_DELETE_MEMBER_SELECTION = Data.CONTACT_ID
+ + "=? AND "
+ + Data.MIMETYPE
+ + "=? AND "
+ + GroupMembership.GROUP_ROW_ID
+ + "=?";
+
+ private static final int BUFFER_LENGTH = 499;
+
+ private Bundle mChoiceSet;
+ private long mDestGroupId;
+ private long mSrcGroupId;
+ private boolean mCanceled = false;
+
+ private ArrayList<ContentProviderOperation> mAddOrMoveOperation;
+ private ArrayList<ContentProviderOperation> mDeleteOperation;
+ private ArrayList<String> mGroupMemberList = new ArrayList<String>();
+
+ public MoveGroupMemberTask(Bundle choiceSet,
+ long srcGroupId, long destGroupId) {
+ mChoiceSet = choiceSet;
+ mSrcGroupId = srcGroupId;
+ mDestGroupId = destGroupId;
+ }
+
+ @Override
+ protected void onPreExecute() {
+ mProgressDialog = new ProgressDialog(MultiPickContactActivity.this,
+ com.android.internal.R.style.Theme_Holo_Light_Dialog_Alert);
+ mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+ mProgressDialog.setTitle(getProgressDialogTitle());
+ mProgressDialog.setMessage(getProgressDialogMessage());
+ mProgressDialog.setMax(mChoiceSet != null ? mChoiceSet.keySet().size() : 100);
+ mProgressDialog.setProgress(0);
+ mProgressDialog.setCanceledOnTouchOutside(false);
+ mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ public void onCancel(DialogInterface dialog) {
+ mCanceled = true;
+ }
+ });
+ mProgressDialog.show();
+ }
+
+ @Override
+ protected Bundle doInBackground(Object... params) {
+ if (mChoiceSet == null || mSrcGroupId <= 0) {
+ return null;
+ }
+ ContentResolver resolver = getContentResolver();
+ Cursor memberCursor = null;
+
+ memberCursor = resolver.query(Data.CONTENT_URI,
+ new String[] {
+ Data.CONTACT_ID
+ },
+ GROUP_QUERY_GROUP_MEMBER_SELECTION,
+ new String[] {
+ GroupMembership.CONTENT_ITEM_TYPE,
+ String.valueOf(mDestGroupId)
+ },
+ null);
+
+ if (memberCursor != null && memberCursor.getCount() > 0) {
+ try {
+ while (memberCursor.moveToNext()) {
+ // Mark those contacts that already exist in the dest
+ // group
+ mGroupMemberList.add(String.valueOf(memberCursor.getLong(0)));
+ }
+ } finally {
+ if (memberCursor != null) {
+ memberCursor.close();
+ }
+ }
+ }
+
+ Set<String> keySet = mChoiceSet.keySet();
+ Iterator<String> it = keySet.iterator();
+
+ ContentProviderOperation.Builder builder;
+
+ mAddOrMoveOperation = new ArrayList<ContentProviderOperation>();
+ mDeleteOperation = new ArrayList<ContentProviderOperation>();
+ String id;
+ int count = 0;
+ int maxSize = mChoiceSet.keySet().size();
+ while (!mCanceled && it.hasNext()) {
+ id = it.next();
+ ++count;
+
+ if (mDestGroupId <= 0) {
+ // Invalid group id, cancel the task
+ return null;
+ }
+ if (mProgressDialog != null && mProgressDialog.isShowing()
+ && count < maxSize - (maxSize) / 100) {
+ mProgressDialog.incrementProgressBy(1);
+ }
+ if (mGroupMemberList.contains(id)) {
+ // If the contact already exists in the group, need to
+ // delete those
+ // contacts that in the previous group
+ builder = ContentProviderOperation.newDelete(Data.CONTENT_URI);
+ builder.withSelection(GROUP_DELETE_MEMBER_SELECTION,
+ new String[] {
+ id,
+ GroupMembership.CONTENT_ITEM_TYPE,
+ String.valueOf(mSrcGroupId)
+ });
+ mDeleteOperation.add(builder.build());
+ continue;
+ }
+ ContentValues values = new ContentValues();
+ values.put(GroupMembership.GROUP_ROW_ID, mDestGroupId);
+ builder = ContentProviderOperation.newUpdate(Data.CONTENT_URI);
+ builder.withSelection(GROUP_DELETE_MEMBER_SELECTION,
+ new String[] {
+ id,
+ GroupMembership.CONTENT_ITEM_TYPE,
+ String.valueOf(mSrcGroupId)
+ });
+ builder.withValues(values);
+ mAddOrMoveOperation.add(builder.build());
+ }
+
+ if (mDeleteOperation.size() > 0) {
+ if (mDeleteOperation.size() > BUFFER_LENGTH) {
+ addOrMoveApplyBatchByBuffer(mDeleteOperation, resolver);
+ } else {
+ try {
+ resolver.applyBatch(ContactsContract.AUTHORITY, mDeleteOperation);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ } catch (OperationApplicationException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ if (mAddOrMoveOperation.size() > BUFFER_LENGTH) {
+ addOrMoveApplyBatchByBuffer(mAddOrMoveOperation, resolver);
+ } else {
+ try {
+ resolver.applyBatch(ContactsContract.AUTHORITY, mAddOrMoveOperation);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ } catch (OperationApplicationException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Object result) {
+ if (mProgressDialog != null && mProgressDialog.isShowing()) {
+ mProgressDialog.dismiss();
+ finish();
+ }
+ }
+
+ private void addOrMoveApplyBatchByBuffer(ArrayList<ContentProviderOperation> list,
+ ContentResolver cr) {
+ final ArrayList<ContentProviderOperation> temp
+ = new ArrayList<ContentProviderOperation>(BUFFER_LENGTH);
+ int bufferSize = list.size() / BUFFER_LENGTH;
+ for (int index = 0; index <= bufferSize; index++) {
+ temp.clear();
+ if (index == bufferSize) {
+ for (int i = index * BUFFER_LENGTH; i < list.size(); i++) {
+ temp.add(list.get(i));
+ }
+ } else {
+ for (int i = index * BUFFER_LENGTH;
+ i < index * BUFFER_LENGTH + BUFFER_LENGTH; i++) {
+ temp.add(list.get(i));
+ }
+ }
+ if (!temp.isEmpty()) {
+ try {
+ cr.applyBatch(ContactsContract.AUTHORITY, temp);
+ } catch (Exception e) {
+ Log.e(TAG, "apply batch by buffer error:" + e);
+ }
+ }
+ }
+ }
+
+ private String getProgressDialogTitle() {
+ return getString(R.string.title_move_members);
+ }
+
+ private String getProgressDialogMessage() {
+ return getString(R.string.message_move_members);
+ }
+ }
+} \ No newline at end of file
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 97c6ea028..bad3f6996 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -16,12 +16,15 @@
package com.android.contacts.activities;
+import android.app.DialogFragment;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.ActivityNotFoundException;
import android.content.ContentUris;
import android.content.Context;
+import android.content.BroadcastReceiver;
+import android.content.IntentFilter;
import android.content.Intent;
import android.graphics.Rect;
import android.net.Uri;
@@ -33,6 +36,7 @@ import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.ProviderStatus;
import android.provider.Settings;
+import android.preference.PreferenceManager;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
@@ -59,8 +63,14 @@ import com.android.contacts.common.dialog.ClearFrequentsDialog;
import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.common.widget.FloatingActionButtonController;
import com.android.contacts.editor.EditorIntents;
+import com.android.contacts.common.editor.SelectAccountDialogFragment;
+import com.android.contacts.group.GroupBrowseListFragment;
+import com.android.contacts.group.GroupBrowseListFragment.OnGroupBrowserActionListener;
+import com.android.contacts.group.GroupDetailFragment;
import com.android.contacts.interactions.ContactDeletionInteraction;
import com.android.contacts.common.interactions.ImportExportDialogFragment;
+import com.android.contacts.common.interactions.ImportExportDialogFragment.ExportToSimThread;
+import com.android.contacts.common.list.AccountFilterActivity;
import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.ContactListFilterController;
@@ -82,17 +92,24 @@ import com.android.contacts.list.OnContactsUnavailableActionListener;
import com.android.contacts.list.ProviderStatusWatcher;
import com.android.contacts.list.ProviderStatusWatcher.ProviderStatusListener;
import com.android.contacts.common.list.ViewPagerTabs;
+import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.preference.ContactsPreferenceActivity;
+import com.android.contacts.common.SimContactsConstants;
import com.android.contacts.common.util.AccountFilterUtil;
import com.android.contacts.common.util.ViewUtil;
import com.android.contacts.quickcontact.QuickContactActivity;
import com.android.contacts.util.AccountPromptUtils;
import com.android.contacts.common.util.Constants;
+import com.android.contacts.common.vcard.ExportVCardActivity;
+import com.android.contacts.common.vcard.VCardCommonArguments;
import com.android.contacts.util.DialogManager;
import com.android.contactsbind.HelpUtils;
import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
import java.util.Locale;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -110,11 +127,13 @@ public class PeopleActivity extends ContactsActivity implements
private static final String TAG = "PeopleActivity";
+ public static String EDITABLE_KEY = "search_contacts";
private static final String ENABLE_DEBUG_OPTIONS_HIDDEN_CODE = "debug debug!";
// These values needs to start at 2. See {@link ContactEntryListFragment}.
private static final int SUBACTIVITY_ACCOUNT_FILTER = 2;
-
+ private static final int SUBACTIVITY_NEW_GROUP = 4;
+ private static final int SUBACTIVITY_EDIT_GROUP = 5;
private final DialogManager mDialogManager = new DialogManager(this);
private ContactsIntentResolver mIntentResolver;
@@ -122,6 +141,9 @@ public class PeopleActivity extends ContactsActivity implements
private ActionBarAdapter mActionBarAdapter;
private FloatingActionButtonController mFloatingActionButtonController;
+ private GroupDetailFragment mGroupDetailFragment;
+ private final GroupDetailFragmentListener mGroupDetailFragmentListener =
+ new GroupDetailFragmentListener();
private View mFloatingActionButtonContainer;
private boolean wasLastFabAnimationScaleIn = false;
@@ -141,6 +163,7 @@ public class PeopleActivity extends ContactsActivity implements
*/
private MultiSelectContactsListFragment mAllFragment;
private ContactTileListFragment mFavoritesFragment;
+ private GroupBrowseListFragment mGroupsFragment;
/** ViewPager for swipe */
private ViewPager mTabPager;
@@ -151,6 +174,7 @@ public class PeopleActivity extends ContactsActivity implements
private boolean mEnableDebugMenuOptions;
+ private ExportToSimThread mExportThread = null;
/**
* True if this activity instance is a re-created one. i.e. set true after orientation change.
* This is set in {@link #onCreate} for later use in {@link #onStart}.
@@ -173,6 +197,11 @@ public class PeopleActivity extends ContactsActivity implements
/** Sequential ID assigned to each instance; used for logging */
private final int mInstanceId;
private static final AtomicInteger sNextInstanceId = new AtomicInteger();
+ // TODO: we need to refactor the export code in future release.
+ // QRD enhancement: contacts list for multi contact pick
+ private ArrayList<String[]> mContactList;
+
+ private BroadcastReceiver mExportToSimCompleteListener = null;
public PeopleActivity() {
mInstanceId = sNextInstanceId.getAndIncrement();
@@ -247,6 +276,7 @@ public class PeopleActivity extends ContactsActivity implements
Log.d(Constants.PERFORMANCE_TAG, "PeopleActivity.onCreate finish");
}
getWindow().setBackgroundDrawable(null);
+ registerReceiver();
}
@Override
@@ -266,6 +296,21 @@ public class PeopleActivity extends ContactsActivity implements
invalidateOptionsMenuIfNeeded();
}
+ private void registerReceiver() {
+ mExportToSimCompleteListener = new BroadcastReceiver() {
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (action.equals(SimContactsConstants.INTENT_EXPORT_COMPLETE)) {
+ ImportExportDialogFragment.destroyExportToSimThread();
+ mExportThread = null;
+ }
+ }
+ };
+ IntentFilter exportCompleteFilter = new IntentFilter(
+ SimContactsConstants.INTENT_EXPORT_COMPLETE);
+ registerReceiver(mExportToSimCompleteListener, exportCompleteFilter);
+ }
+
/**
* Resolve the intent and initialize {@link #mRequest}, and launch another activity if redirect
* is needed.
@@ -311,6 +356,7 @@ public class PeopleActivity extends ContactsActivity implements
mTabTitles = new String[TabState.COUNT];
mTabTitles[TabState.FAVORITES] = getString(R.string.favorites_tab_label);
mTabTitles[TabState.ALL] = getString(R.string.all_contacts_tab_label);
+ mTabTitles[TabState.GROUPS] = getString(R.string.contacts_groups_label);
mTabPager = getView(R.id.tab_pager);
mTabPagerAdapter = new TabPagerAdapter();
mTabPager.setAdapter(mTabPagerAdapter);
@@ -333,6 +379,7 @@ public class PeopleActivity extends ContactsActivity implements
final String FAVORITE_TAG = "tab-pager-favorite";
final String ALL_TAG = "tab-pager-all";
+ final String GROUPS_TAG = "tab-pager-groups";
// Create the fragments and add as children of the view pager.
// The pager adapter will only change the visibility; it'll never create/destroy
@@ -344,13 +391,17 @@ public class PeopleActivity extends ContactsActivity implements
fragmentManager.findFragmentByTag(FAVORITE_TAG);
mAllFragment = (MultiSelectContactsListFragment)
fragmentManager.findFragmentByTag(ALL_TAG);
+ mGroupsFragment = (GroupBrowseListFragment)
+ fragmentManager.findFragmentByTag(GROUPS_TAG);
if (mFavoritesFragment == null) {
mFavoritesFragment = new ContactTileListFragment();
mAllFragment = new MultiSelectContactsListFragment();
+ mGroupsFragment = new GroupBrowseListFragment();
transaction.add(R.id.tab_pager, mFavoritesFragment, FAVORITE_TAG);
transaction.add(R.id.tab_pager, mAllFragment, ALL_TAG);
+ transaction.add(R.id.tab_pager, mGroupsFragment, GROUPS_TAG);
}
mFavoritesFragment.setListener(mFavoritesFragmentListener);
@@ -358,10 +409,13 @@ public class PeopleActivity extends ContactsActivity implements
mAllFragment.setOnContactListActionListener(new ContactBrowserActionListener());
mAllFragment.setCheckBoxListListener(new CheckBoxListListener());
+ mGroupsFragment.setListener(new GroupBrowserActionListener());
+
// Hide all fragments for now. We adjust visibility when we get onSelectedTabChanged()
// from ActionBarAdapter.
transaction.hide(mFavoritesFragment);
transaction.hide(mAllFragment);
+ transaction.hide(mGroupsFragment);
transaction.commitAllowingStateLoss();
fragmentManager.executePendingTransactions();
@@ -417,6 +471,8 @@ public class PeopleActivity extends ContactsActivity implements
mOptionsMenuContactsAvailable = false;
mProviderStatusWatcher.stop();
super.onPause();
+ dismissDialog(ImportExportDialogFragment.TAG);
+ dismissDialog(SelectAccountDialogFragment.TAG);
}
@Override
@@ -451,9 +507,22 @@ public class PeopleActivity extends ContactsActivity implements
mContactListFilterController.removeListener(this);
}
+ if (mExportToSimCompleteListener != null) {
+ unregisterReceiver(mExportToSimCompleteListener);
+ }
super.onDestroy();
}
+ private void dismissDialog(String tag) {
+ // when this activity lose focus,dismiss the dialog
+ Fragment dialogFragment = getFragmentManager().findFragmentByTag(tag);
+ if (dialogFragment != null) {
+ if (dialogFragment instanceof DialogFragment) {
+ ((DialogFragment) dialogFragment).dismiss();
+ }
+ }
+ }
+
private void configureFragments(boolean fromRequest) {
if (fromRequest) {
ContactListFilter filter = null;
@@ -480,6 +549,9 @@ public class PeopleActivity extends ContactsActivity implements
case ContactsRequest.ACTION_VIEW_CONTACT:
tabToOpen = TabState.ALL;
break;
+ case ContactsRequest.ACTION_GROUP:
+ tabToOpen = TabState.GROUPS;
+ break;
default:
tabToOpen = -1;
break;
@@ -502,6 +574,7 @@ public class PeopleActivity extends ContactsActivity implements
}
configureContactListFragment();
+ configureGroupListFragment();
invalidateOptionsMenuIfNeeded();
}
@@ -621,6 +694,9 @@ public class PeopleActivity extends ContactsActivity implements
}
invalidateOptionsMenu();
showEmptyStateForTab(tab);
+ if (tab == TabState.GROUPS) {
+ mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
+ }
}
private void showEmptyStateForTab(int tab) {
@@ -630,6 +706,10 @@ public class PeopleActivity extends ContactsActivity implements
mContactsUnavailableFragment.setMessageText(
R.string.listTotalAllContactsZeroStarred, -1);
break;
+ case TabState.GROUPS:
+ mContactsUnavailableFragment.setMessageText(R.string.noGroups,
+ areGroupWritableAccountsAvailable() ? -1 : R.string.noAccounts);
+ break;
case TabState.ALL:
mContactsUnavailableFragment.setMessageText(R.string.noContacts, -1);
break;
@@ -678,6 +758,9 @@ public class PeopleActivity extends ContactsActivity implements
mActionBarAdapter.setCurrentTab(position, false);
mViewPagerTabs.onPageSelected(position);
showEmptyStateForTab(position);
+ if (position == TabState.GROUPS) {
+ mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
+ }
invalidateOptionsMenu();
}
}
@@ -736,6 +819,9 @@ public class PeopleActivity extends ContactsActivity implements
if (object == mAllFragment) {
return getTabPositionForTextDirection(TabState.ALL);
}
+ if (object == mGroupsFragment) {
+ return TabState.GROUPS;
+ }
}
return POSITION_NONE;
}
@@ -759,6 +845,8 @@ public class PeopleActivity extends ContactsActivity implements
return mFavoritesFragment;
} else if (position == TabState.ALL) {
return mAllFragment;
+ } else if (position == TabState.GROUPS) {
+ return mGroupsFragment;
}
}
throw new IllegalArgumentException("position: " + position);
@@ -866,6 +954,11 @@ public class PeopleActivity extends ContactsActivity implements
return TextUtils.getLayoutDirectionFromLocale(locale) == View.LAYOUT_DIRECTION_RTL;
}
+ private void configureGroupListFragment() {
+ mGroupsFragment.setVerticalScrollbarPosition(getScrollBarPosition());
+ mGroupsFragment.setSelectionVisible(false);
+ }
+
@Override
public void onProviderStatusChange() {
updateViewConfiguration(false);
@@ -1040,6 +1133,67 @@ public class PeopleActivity extends ContactsActivity implements
}
}
+ private final class GroupBrowserActionListener implements OnGroupBrowserActionListener {
+
+ GroupBrowserActionListener() {}
+
+ @Override
+ public void onViewGroupAction(Uri groupUri) {
+ Intent intent = new Intent(PeopleActivity.this, GroupDetailActivity.class);
+ intent.setData(groupUri);
+ startActivity(intent);
+ }
+ }
+
+ private class GroupDetailFragmentListener implements GroupDetailFragment.Listener {
+
+ GroupDetailFragmentListener() {}
+
+ @Override
+ public void onGroupSizeUpdated(String size) {
+ // Nothing needs to be done here because the size will be displayed in the detail
+ // fragment
+ }
+
+ @Override
+ public void onGroupTitleUpdated(String title) {
+ // Nothing needs to be done here because the title will be displayed in the detail
+ // fragment
+ }
+
+ @Override
+ public void onAccountTypeUpdated(String accountTypeString, String dataSet) {
+ // Nothing needs to be done here because the group source will be displayed in the
+ // detail fragment
+ }
+
+ @Override
+ public void onEditRequested(Uri groupUri) {
+ final Intent intent = new Intent(PeopleActivity.this, GroupEditorActivity.class);
+ intent.setData(groupUri);
+ intent.setAction(Intent.ACTION_EDIT);
+ startActivityForResult(intent, SUBACTIVITY_EDIT_GROUP);
+ }
+
+ @Override
+ public void onContactSelected(Uri contactUri) {
+ // Nothing needs to be done here because either quickcontact will be displayed
+ // or activity will take care of selection
+ }
+ }
+
+ public void startActivityAndForwardResult(final Intent intent) {
+ intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+
+ // Forward extras to the new activity
+ Bundle extras = getIntent().getExtras();
+ if (extras != null) {
+ intent.putExtras(extras);
+ }
+ startActivity(intent);
+ finish();
+ }
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!areContactsAvailable()) {
@@ -1069,6 +1223,10 @@ public class PeopleActivity extends ContactsActivity implements
return true;
}
+ if (mGroupDetailFragment != null && mGroupDetailFragment.isOptionsMenuChanged()) {
+ return true;
+ }
+
return false;
}
@@ -1081,25 +1239,39 @@ public class PeopleActivity extends ContactsActivity implements
// Get references to individual menu items in the menu
final MenuItem contactsFilterMenu = menu.findItem(R.id.menu_contacts_filter);
+ MenuItem addGroupMenu = menu.findItem(R.id.menu_add_group);
final MenuItem clearFrequentsMenu = menu.findItem(R.id.menu_clear_frequents);
final MenuItem helpMenu = menu.findItem(R.id.menu_help);
final boolean isSearchOrSelectionMode = mActionBarAdapter.isSearchMode()
|| mActionBarAdapter.isSelectionMode();
if (isSearchOrSelectionMode) {
+ addGroupMenu.setVisible(false);
contactsFilterMenu.setVisible(false);
clearFrequentsMenu.setVisible(false);
helpMenu.setVisible(false);
+ makeMenuItemVisible(menu, R.id.menu_delete, false);
} else {
switch (getTabPositionForTextDirection(mActionBarAdapter.getCurrentTab())) {
case TabState.FAVORITES:
+ addGroupMenu.setVisible(false);
contactsFilterMenu.setVisible(false);
clearFrequentsMenu.setVisible(hasFrequents());
break;
case TabState.ALL:
+ addGroupMenu.setVisible(false);
contactsFilterMenu.setVisible(true);
clearFrequentsMenu.setVisible(false);
break;
+ case TabState.GROUPS:
+ // Do not display the "new group" button if no accounts are available
+ if (areGroupWritableAccountsAvailable()) {
+ addGroupMenu.setVisible(true);
+ } else {
+ addGroupMenu.setVisible(false);
+ }
+ contactsFilterMenu.setVisible(false);
+ clearFrequentsMenu.setVisible(false);
}
helpMenu.setVisible(HelpUtils.isHelpAndFeedbackAvailable());
}
@@ -1107,13 +1279,13 @@ public class PeopleActivity extends ContactsActivity implements
makeMenuItemVisible(menu, R.id.menu_search, showMiscOptions);
makeMenuItemVisible(menu, R.id.menu_import_export, showMiscOptions);
makeMenuItemVisible(menu, R.id.menu_accounts, showMiscOptions);
+ makeMenuItemVisible(menu, R.id.menu_memory_status, showMiscOptions);
makeMenuItemVisible(menu, R.id.menu_settings,
showMiscOptions && !ContactsPreferenceActivity.isEmpty(this));
final boolean showSelectedContactOptions = mActionBarAdapter.isSelectionMode()
&& mAllFragment.getSelectedContactIds().size() != 0;
makeMenuItemVisible(menu, R.id.menu_share, showSelectedContactOptions);
- makeMenuItemVisible(menu, R.id.menu_delete, showSelectedContactOptions);
makeMenuItemVisible(menu, R.id.menu_join, showSelectedContactOptions);
makeMenuItemEnabled(menu, R.id.menu_join, mAllFragment.getSelectedContactIds().size() > 1);
@@ -1191,9 +1363,21 @@ public class PeopleActivity extends ContactsActivity implements
case R.id.menu_join:
joinSelectedContacts();
return true;
- case R.id.menu_delete:
- deleteSelectedContacts();
+ case R.id.menu_add_group: {
+ createNewGroup();
+ return true;
+ }
+ case R.id.menu_delete: {
+ final Intent intent = new Intent(Intent.ACTION_DELETE, Contacts.CONTENT_URI);
+ intent.putExtra(EDITABLE_KEY, mActionBarAdapter.getQueryString());
+
+ ContactListFilter filter = ContactListFilter.restoreDefaultPreferences(
+ PreferenceManager.getDefaultSharedPreferences(this));
+ intent.putExtra(AccountFilterActivity.KEY_EXTRA_CONTACT_LIST_FILTER, filter);
+
+ startActivity(intent);
return true;
+ }
case R.id.menu_import_export: {
ImportExportDialogFragment.show(getFragmentManager(), areContactsAvailable(),
PeopleActivity.class);
@@ -1221,6 +1405,12 @@ public class PeopleActivity extends ContactsActivity implements
ImplicitIntentsUtil.startActivityOutsideApp(this, intent);
return true;
}
+
+ case R.id.menu_memory_status: {
+ final Intent intent = new Intent(this, MemoryStatusActivity.class);
+ startActivity(intent);
+ return true;
+ }
}
return false;
}
@@ -1271,6 +1461,12 @@ public class PeopleActivity extends ContactsActivity implements
mAllFragment.getSelectedContactIds());
}
+ private void createNewGroup() {
+ final Intent intent = new Intent(this, GroupEditorActivity.class);
+ intent.setAction(Intent.ACTION_INSERT);
+ startActivityForResult(intent, SUBACTIVITY_NEW_GROUP);
+ }
+
@Override
public void onDeletionFinished() {
mActionBarAdapter.setSelectionMode(false);
@@ -1284,6 +1480,14 @@ public class PeopleActivity extends ContactsActivity implements
mContactListFilterController, resultCode, data);
break;
}
+ case SUBACTIVITY_NEW_GROUP:
+ case SUBACTIVITY_EDIT_GROUP: {
+ if (resultCode == RESULT_OK) {
+ mRequest.setActionCode(ContactsRequest.ACTION_GROUP);
+ mGroupsFragment.setSelectedUri(data.getData());
+ }
+ break;
+ }
// TODO: Using the new startActivityWithResultFromFragment API this should not be needed
// anymore
@@ -1291,6 +1495,7 @@ public class PeopleActivity extends ContactsActivity implements
if (resultCode == RESULT_OK) {
mAllFragment.onPickerResult(data);
}
+ break;
// TODO fix or remove multipicker code
// else if (resultCode == RESULT_CANCELED && mMode == MODE_PICK_MULTIPLE_PHONES) {
@@ -1299,6 +1504,91 @@ public class PeopleActivity extends ContactsActivity implements
// finish();
// }
// break;
+ case ImportExportDialogFragment.SUBACTIVITY_MULTI_PICK_CONTACT:
+ if (resultCode == RESULT_OK) {
+ mContactList = new ArrayList<String[]>();
+ Bundle b = data.getExtras();
+ Bundle choiceSet = b.getBundle(SimContactsConstants.RESULT_KEY);
+ Set<String> set = choiceSet.keySet();
+ Iterator<String> i = set.iterator();
+ while (i.hasNext()) {
+ String contactInfo[] = choiceSet.getStringArray(i.next());
+ mContactList.add(contactInfo);
+ }
+ Log.d(TAG, "return " + mContactList.size() + " contacts");
+ if (!mContactList.isEmpty()) {
+ if (!ImportExportDialogFragment.isExportingToSIM()) {
+ ImportExportDialogFragment.destroyExportToSimThread();
+ mExportThread =
+ new ImportExportDialogFragment().createExportToSimThread(
+ ImportExportDialogFragment.mExportSub, mContactList,
+ PeopleActivity.this);
+ mExportThread.start();
+ }
+ }
+ }
+ break;
+ case ImportExportDialogFragment.SUBACTIVITY_EXPORT_CONTACTS:
+ if (resultCode == RESULT_OK) {
+ Bundle result = data.getExtras().getBundle(
+ SimContactsConstants.RESULT_KEY);
+ Set<String> keySet = result.keySet();
+ Iterator<String> it = keySet.iterator();
+ StringBuilder selExportBuilder = new StringBuilder();
+ while (it.hasNext()) {
+ String id = it.next();
+ if (0 != selExportBuilder.length()) {
+ selExportBuilder.append(",");
+ }
+ selExportBuilder.append(id);
+ }
+ selExportBuilder.insert(0, "_id IN (");
+ selExportBuilder.append(")");
+ Intent exportIntent = new Intent(this,
+ ExportVCardActivity.class);
+ exportIntent.putExtra("SelExport", selExportBuilder.toString());
+ exportIntent.putExtra(
+ VCardCommonArguments.ARG_CALLING_ACTIVITY,
+ PeopleActivity.class.getName());
+ this.startActivity(exportIntent);
+ }
+ break;
+ case ImportExportDialogFragment.SUBACTIVITY_SHARE_VISILBLE_CONTACTS:
+ if (resultCode == RESULT_OK) {
+ Bundle result = data.getExtras().getBundle(
+ SimContactsConstants.RESULT_KEY);
+ StringBuilder uriListBuilder = new StringBuilder();
+ int index = 0;
+ int size = result.keySet().size();
+ // The premise of allowing to share contacts is that the
+ // amount of those contacts which have been selected to
+ // append and will be put into intent as extra data to
+ // deliver is not more that 2000, because too long arguments
+ // will cause TransactionTooLargeException in binder.
+ if (size > ImportExportDialogFragment.MAX_COUNT_ALLOW_SHARE_CONTACT) {
+ Toast.makeText(this, R.string.share_failed,
+ Toast.LENGTH_SHORT).show();
+ return;
+ }
+ Iterator<String> it = result.keySet().iterator();
+ String[] values = null;
+ while (it.hasNext()) {
+ if (index != 0) {
+ uriListBuilder.append(':');
+ }
+ values = result.getStringArray(it.next());
+ uriListBuilder.append(values[0]);
+ index++;
+ }
+ Uri uri = Uri.withAppendedPath(
+ Contacts.CONTENT_MULTI_VCARD_URI,
+ Uri.encode(uriListBuilder.toString()));
+ final Intent intent = new Intent(Intent.ACTION_SEND);
+ intent.setType(Contacts.CONTENT_VCARD_TYPE);
+ intent.putExtra(Intent.EXTRA_STREAM, uri);
+ startActivity(intent);
+ }
+ break;
}
}
diff --git a/src/com/android/contacts/editor/CompactPhotoEditorView.java b/src/com/android/contacts/editor/CompactPhotoEditorView.java
index 5f3e9afad..64df22850 100644
--- a/src/com/android/contacts/editor/CompactPhotoEditorView.java
+++ b/src/com/android/contacts/editor/CompactPhotoEditorView.java
@@ -31,6 +31,7 @@ import com.android.contacts.util.ContactPhotoUtils;
import com.android.contacts.util.SchedulingUtils;
import com.android.contacts.widget.QuickContactImageView;
+import android.accounts.Account;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
@@ -291,8 +292,8 @@ public class CompactPhotoEditorView extends RelativeLayout implements View.OnCli
if (photoUri != null) {
final DefaultImageProvider fallbackToPreviousImage = new DefaultImageProvider() {
@Override
- public void applyDefaultImage(ImageView view, int extent, boolean darkTheme,
- DefaultImageRequest defaultImageRequest) {
+ public void applyDefaultImage(ImageView view, Account account, int extent,
+ boolean darkTheme, DefaultImageRequest defaultImageRequest) {
// Before we finish setting the full sized image, don't change the current
// image that is set in any way.
}
diff --git a/src/com/android/contacts/editor/CompactRawContactsEditorView.java b/src/com/android/contacts/editor/CompactRawContactsEditorView.java
index 6b7df6768..e04343c63 100644..100755
--- a/src/com/android/contacts/editor/CompactRawContactsEditorView.java
+++ b/src/com/android/contacts/editor/CompactRawContactsEditorView.java
@@ -17,6 +17,8 @@
package com.android.contacts.editor;
import com.android.contacts.R;
+import com.android.contacts.common.model.account.PhoneAccountType;
+import com.android.contacts.common.model.account.SimAccountType;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.RawContactDelta;
import com.android.contacts.common.model.RawContactDeltaList;
@@ -24,14 +26,21 @@ import com.android.contacts.common.model.RawContactModifier;
import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountType.EditField;
+import com.android.contacts.common.model.account.AccountType.EditType;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.PhoneAccountType;
+import com.android.contacts.common.model.account.SimAccountType;
import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.SimContactsConstants;
+import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.editor.CompactContactEditorFragment.PhotoHandler;
+import com.android.internal.telephony.PhoneConstants;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
+import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
@@ -365,7 +374,8 @@ public class CompactRawContactsEditorView extends LinearLayout implements View.O
return;
}
vlog("Account info loaded");
- if (accountInfo.first == null) {
+ if (accountInfo.first == null || SimAccountType.ACCOUNT_TYPE.equals(accountType.
+ accountType)|| PhoneAccountType.ACCOUNT_TYPE.equals(accountType.accountType)) {
mAccountNameView.setVisibility(View.GONE);
} else {
mAccountNameView.setVisibility(View.VISIBLE);
@@ -640,7 +650,7 @@ public class CompactRawContactsEditorView extends LinearLayout implements View.O
for (RawContactDelta rawContactDelta : rawContactDeltas) {
if (!rawContactDelta.isVisible()) continue;
final AccountType accountType = rawContactDelta.getAccountType(mAccountTypeManager);
-
+ final String accountName = rawContactDelta.getAccountName();
for (DataKind dataKind : accountType.getSortedDataKinds()) {
if (!dataKind.editable) continue;
@@ -658,7 +668,7 @@ public class CompactRawContactsEditorView extends LinearLayout implements View.O
final ValuesDelta valuesDelta = rawContactDelta.getSuperPrimaryEntry(
StructuredName.CONTENT_ITEM_TYPE, /* forceSelection =*/ true);
if (hasNonEmptyValue(dataKind, valuesDelta)) {
- mPhoneticNames.addView(inflatePhoneticNameEditorView(
+ mPhoneticNames.addView(inflatePhoneticNameEditorView(
mPhoneticNames, accountType, valuesDelta, rawContactDelta));
}
} else if (Nickname.CONTENT_ITEM_TYPE.equals(mimeType)) {
@@ -667,7 +677,7 @@ public class CompactRawContactsEditorView extends LinearLayout implements View.O
rawContactDelta, Nickname.CONTENT_ITEM_TYPE, dataKind);
if (valuesDeltas != null && !valuesDeltas.isEmpty()) {
for (ValuesDelta valuesDelta : valuesDeltas) {
- mNicknames.addView(inflateNicknameEditorView(
+ mNicknames.addView(inflateNicknameEditorView(
mNicknames, dataKind, valuesDelta, rawContactDelta));
}
}
@@ -687,6 +697,31 @@ public class CompactRawContactsEditorView extends LinearLayout implements View.O
updateKindEditorIcons(mPhoneNumbers);
}
});
+ if (SimContactsConstants.ACCOUNT_TYPE_SIM
+ .equals(accountType.accountType)) {
+ int sub = PhoneConstants.SUB1;
+ if (SimContactsConstants.SIM_NAME_2.equals(accountName)) {
+ sub = PhoneConstants.SUB2;
+ }
+ EditType typeHome = new EditType(Phone.TYPE_HOME,
+ Phone.getTypeLabelResource(Phone.TYPE_HOME));
+ if (!MoreContactUtils.canSaveAnr(sub)) {
+ dataKind.typeOverallMax = 1;
+ if (null != dataKind.typeList) {
+ // When the sim card is not 3g the interface should
+ // remove the TYPE_HOME number view.
+ dataKind.typeList.remove(typeHome);
+ }
+ } else {
+ dataKind.typeOverallMax = MoreContactUtils.getOneSimAnrCount(sub) + 1;
+ if (null != dataKind.typeList && !dataKind.typeList.contains(
+ typeHome)) {
+ // When the sim card is 3g the interface should
+ // add the TYPE_HOME number view.
+ dataKind.typeList.add(typeHome);
+ }
+ }
+ }
mPhoneNumbers.addView(kindSectionView);
} else if (Email.CONTENT_ITEM_TYPE.equals(mimeType)) {
final KindSectionView kindSectionView =
@@ -704,7 +739,19 @@ public class CompactRawContactsEditorView extends LinearLayout implements View.O
updateKindEditorIcons(mEmails);
}
});
- mEmails.addView(kindSectionView);
+ if (SimContactsConstants.ACCOUNT_TYPE_SIM.equals(
+ accountType.accountType)) {
+ int sub = PhoneConstants.SUB1;
+ if (SimContactsConstants.SIM_NAME_2.equals(accountName)) {
+ sub = PhoneConstants.SUB2;
+ }
+ if (MoreContactUtils.canSaveEmail(sub)) {
+ dataKind.typeOverallMax = MoreContactUtils.getOneSimEmailCount(sub);
+ mEmails.addView(kindSectionView);
+ }
+ } else {
+ mEmails.addView(kindSectionView);
+ }
} else if (hasNonEmptyValuesDelta(rawContactDelta, mimeType, dataKind)) {
final LinearLayout otherTypeViewGroup;
if (mOtherTypesMap.containsKey(mimeType)) {
@@ -842,6 +889,10 @@ public class CompactRawContactsEditorView extends LinearLayout implements View.O
rawContactDelta,
readOnly,
mViewIdGenerator);
+ if (rawContactDelta.getAccountType() != null && rawContactDelta.getAccountType().equals(
+ SimContactsConstants.ACCOUNT_TYPE_SIM)) {
+ result.setExpansionViewContainerDisabled();
+ }
return result;
}
diff --git a/src/com/android/contacts/editor/ContactEditorBaseFragment.java b/src/com/android/contacts/editor/ContactEditorBaseFragment.java
index 18b138190..646bf4fe2 100644
--- a/src/com/android/contacts/editor/ContactEditorBaseFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorBaseFragment.java
@@ -25,6 +25,7 @@ import com.android.contacts.R;
import com.android.contacts.activities.ContactEditorAccountsChangedActivity;
import com.android.contacts.activities.ContactEditorBaseActivity;
import com.android.contacts.activities.ContactEditorBaseActivity.ContactEditor;
+import com.android.contacts.common.SimContactsConstants;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.Contact;
import com.android.contacts.common.model.ContactLoader;
@@ -35,6 +36,7 @@ import com.android.contacts.common.model.RawContactModifier;
import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.SimAccountType;
import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.editor.AggregationSuggestionEngine.Suggestion;
@@ -652,6 +654,14 @@ abstract public class ContactEditorBaseFragment extends Fragment implements
}
@Override
+ public void onResume() {
+ super.onResume();
+ if (Intent.ACTION_EDIT.equals(mAction)) {
+ mHasNewContact = false;
+ }
+ }
+
+ @Override
public void onStop() {
super.onStop();
@@ -786,10 +796,18 @@ abstract public class ContactEditorBaseFragment extends Fragment implements
// even if they have never added their own information and splitting will create a
// name only contact.
final boolean isSingleReadOnlyContact = mHasNewContact && mState.size() == 2;
+ String accountType = null;
+ if (mState.size() > 0) {
+ accountType = mState.get(0).getAccountType();
+ }
splitMenu.setVisible(mState.size() > 1 && !isEditingUserProfile()
&& !isSingleReadOnlyContact);
// Cannot join a user profile
- joinMenu.setVisible(!isEditingUserProfile());
+ if (accountType != null && SimAccountType.ACCOUNT_TYPE.equals(accountType)) {
+ joinMenu.setVisible(false);
+ } else {
+ joinMenu.setVisible(!isEditingUserProfile());
+ }
deleteMenu.setVisible(!mDisableDeleteMenuOption);
} else {
// something else, so don't show the help menu
@@ -950,7 +968,9 @@ abstract public class ContactEditorBaseFragment extends Fragment implements
}
onSaveCompleted(/* hadChanges =*/ false, saveMode,
/* saveSucceeded =*/ mLookupUri != null, mLookupUri,
- /* updatedPhotos =*/ null, backPressed, mPhotoId, mNameId);
+ /* updatedPhotos =*/ null, backPressed, mPhotoId, mNameId,
+ getActivity().getIntent().getIntExtra(
+ ContactSaveService.SAVE_CONTACT_RESULT, 0));
return true;
}
@@ -1275,7 +1295,8 @@ abstract public class ContactEditorBaseFragment extends Fragment implements
// For profile contacts, we need a different query URI
rawContactDelta.setProfileQueryUri();
// Try to find a local profile contact
- if (rawContactDelta.getValues().getAsString(RawContacts.ACCOUNT_TYPE) == null) {
+ if (SimContactsConstants.ACCOUNT_TYPE_PHONE
+ .equals(rawContactDelta.getAccountType())) {
localProfileExists = true;
}
}
@@ -1401,20 +1422,81 @@ abstract public class ContactEditorBaseFragment extends Fragment implements
@Override
public void onJoinCompleted(Uri uri) {
onSaveCompleted(false, SaveMode.RELOAD, uri != null, uri, /* updatedPhotos =*/ null,
- /* backPressed =*/ false, mPhotoId, mNameId);
+ /* backPressed =*/ false, mPhotoId, mNameId,
+ getActivity().getIntent().getIntExtra(ContactSaveService.SAVE_CONTACT_RESULT,
+ 0));
}
@Override
public void onSaveCompleted(boolean hadChanges, int saveMode, boolean saveSucceeded,
Uri contactLookupUri, Bundle updatedPhotos, boolean backPressed, long photoId,
- long nameId) {
+ long nameId, int result) {
+ Log.d(TAG, "onSaveCompleted(" + saveMode + ", " + contactLookupUri + ", saveResult:"
+ + result);
if (hadChanges) {
if (saveSucceeded) {
if (saveMode != SaveMode.JOIN) {
- Toast.makeText(mContext, R.string.contactSavedToast, Toast.LENGTH_SHORT).show();
+ if (null != contactLookupUri) {
+ Toast.makeText(mContext, R.string.contactSavedToast,
+ Toast.LENGTH_SHORT).show();
+ } else {
+ Toast.makeText(mContext, R.string.contacts_deleted_toast,
+ Toast.LENGTH_SHORT).show();
+ }
}
} else {
- Toast.makeText(mContext, R.string.contactSavedErrorToast, Toast.LENGTH_LONG).show();
+ if (result == ContactSaveService.RESULT_AIR_PLANE_MODE) {
+ // Access SIM card in the "AirPlane"
+ // mode prompt a toast to alert user.
+ Toast.makeText(mContext, R.string.airplane_mode_on, Toast.LENGTH_LONG).show();
+ } else if (result == ContactSaveService.RESULT_SIM_FAILURE) {
+ Toast.makeText(mContext, R.string.contactSavedToSimCardError,
+ Toast.LENGTH_LONG).show();
+ } else if (result == ContactSaveService.RESULT_NUMBER_ANR_FAILURE) {
+ Toast.makeText(mContext, R.string.number_anr_too_long, Toast.LENGTH_LONG)
+ .show();
+ mStatus = Status.EDITING;
+ setEnabled(true);
+ bindEditors();
+ return;
+ } else if (result == ContactSaveService.RESULT_EMAIL_FAILURE) {
+ Toast.makeText(mContext, R.string.email_address_too_long, Toast.LENGTH_LONG)
+ .show();
+ mStatus = Status.EDITING;
+ setEnabled(true);
+ bindEditors();
+ return;
+ } else if (result == ContactSaveService.RESULT_SIM_FULL_FAILURE) {
+ Toast.makeText(mContext, R.string.sim_card_full, Toast.LENGTH_LONG).show();
+ } else if (result == ContactSaveService.RESULT_TAG_FAILURE) {
+ Toast.makeText(mContext, R.string.tag_too_long, Toast.LENGTH_SHORT).show();
+ mStatus = Status.EDITING;
+ setEnabled(true);
+ bindEditors();
+ return;
+ } else if (result == ContactSaveService.RESULT_NO_NUMBER_AND_EMAIL) {
+ Toast.makeText(mContext, R.string.no_phone_number_or_email, Toast.LENGTH_SHORT)
+ .show();
+ mStatus = Status.EDITING;
+ setEnabled(true);
+ bindEditors();
+ return;
+ } else if (result == ContactSaveService.RESULT_NUMBER_INVALID) {
+ Toast.makeText(mContext, R.string.invalid_phone_number, Toast.LENGTH_SHORT)
+ .show();
+ mStatus = Status.EDITING;
+ setEnabled(true);
+ return;
+ } else if (result == ContactSaveService.RESULT_MEMORY_FULL_FAILURE) {
+ Toast.makeText(mContext, R.string.memory_card_full, Toast.LENGTH_SHORT)
+ .show();
+ } else if(result == ContactSaveService.RESULT_NUMBER_TYPE_FAILURE) {
+ Toast.makeText(mContext, R.string.invalid_number_type, Toast.LENGTH_SHORT)
+ .show();
+ } else {
+ Toast.makeText(mContext, R.string.contactSavedErrorToast, Toast.LENGTH_LONG)
+ .show();
+ }
}
}
switch (saveMode) {
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index 4da17faf2..31e8d5155 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -380,7 +380,7 @@ public class ContactEditorFragment extends ContactEditorBaseFragment implements
final RawContactEditorView rawContactEditorView = (RawContactEditorView) view;
final PhoneticNameEditorView phoneticNameEditorView =
(PhoneticNameEditorView) rawContactEditorView.getPhoneticNameEditor();
- if (phoneticNameEditorView != null) {
+ if (phoneticNameEditorView != null && phoneticNameEditorView.getEntry() != null) {
final String phoneticName = phoneticNameEditorView.getPhoneticName();
if (!TextUtils.isEmpty(phoneticName)) {
return phoneticName;
diff --git a/src/com/android/contacts/editor/ContactEditorUtils.java b/src/com/android/contacts/editor/ContactEditorUtils.java
index 105b88552..2f00a2894 100644
--- a/src/com/android/contacts/editor/ContactEditorUtils.java
+++ b/src/com/android/contacts/editor/ContactEditorUtils.java
@@ -30,6 +30,7 @@ import com.android.contacts.common.testing.NeededForTesting;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.SimContactsConstants;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets;
@@ -242,7 +243,12 @@ public class ContactEditorUtils {
String[] getWritableAccountTypeStrings() {
final Set<String> types = Sets.newHashSet();
for (AccountType type : mAccountTypes.getAccountTypes(true)) {
- types.add(type.accountType);
+ if (type.accountType.equals(SimContactsConstants.ACCOUNT_TYPE_SIM)
+ || type.accountType.equals(SimContactsConstants.ACCOUNT_TYPE_PHONE)) {
+ continue;
+ } else {
+ types.add(type.accountType);
+ }
}
return types.toArray(new String[types.size()]);
}
diff --git a/src/com/android/contacts/editor/EditorUiUtils.java b/src/com/android/contacts/editor/EditorUiUtils.java
index 78f7a42d2..78f7a42d2 100644..100755
--- a/src/com/android/contacts/editor/EditorUiUtils.java
+++ b/src/com/android/contacts/editor/EditorUiUtils.java
diff --git a/src/com/android/contacts/editor/PhotoEditorView.java b/src/com/android/contacts/editor/PhotoEditorView.java
index f69c93514..99647312b 100644
--- a/src/com/android/contacts/editor/PhotoEditorView.java
+++ b/src/com/android/contacts/editor/PhotoEditorView.java
@@ -16,6 +16,7 @@
package com.android.contacts.editor;
+import android.accounts.Account;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -208,8 +209,8 @@ public class PhotoEditorView extends LinearLayout implements Editor {
if (photoUri != null) {
final DefaultImageProvider fallbackToPreviousImage = new DefaultImageProvider() {
@Override
- public void applyDefaultImage(ImageView view, int extent, boolean darkTheme,
- DefaultImageRequest defaultImageRequest) {
+ public void applyDefaultImage(ImageView view, Account account, int extent,
+ boolean darkTheme, DefaultImageRequest defaultImageRequest) {
// Before we finish setting the full sized image, don't change the current
// image that is set in any way.
}
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index eeba401de..2741f2a68 100644..100755
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -37,11 +37,14 @@ import android.widget.TextView;
import com.android.contacts.GroupMetaDataLoader;
import com.android.contacts.R;
import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.PhoneAccountType;
+import com.android.contacts.common.model.account.SimAccountType;
import com.android.contacts.common.model.account.AccountType.EditType;
import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.common.model.RawContactDelta;
import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.common.model.RawContactModifier;
+import com.android.contacts.common.SimContactsConstants;
import com.google.common.base.Objects;
@@ -196,7 +199,8 @@ public class RawContactEditorView extends BaseRawContactEditorView {
// Hide this view so the other text view will be centered vertically
mAccountHeaderNameTextView.setVisibility(View.GONE);
} else {
- if (accountInfo.first == null) {
+ if (accountInfo.first == null || SimAccountType.ACCOUNT_TYPE.equals(type.accountType)
+ || PhoneAccountType.ACCOUNT_TYPE.equals(type.accountType)) {
mAccountHeaderNameTextView.setVisibility(View.GONE);
} else {
mAccountHeaderNameTextView.setVisibility(View.VISIBLE);
@@ -249,23 +253,34 @@ public class RawContactEditorView extends BaseRawContactEditorView {
mName.setValues(
type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME),
primary, state, false, vig);
- mPhoneticName.setValues(
- type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME),
- primary, state, false, vig);
- // It is useful to use Nickname outside of a KindSectionView so that we can treat it
- // as a part of StructuredName's fake KindSectionView, even though it uses a
- // different CP2 mime-type. We do a bit of extra work below to make this possible.
- final DataKind nickNameKind = type.getKindForMimetype(Nickname.CONTENT_ITEM_TYPE);
- if (nickNameKind != null) {
- ValuesDelta primaryNickNameEntry = state.getPrimaryEntry(nickNameKind.mimeType);
- if (primaryNickNameEntry == null) {
- primaryNickNameEntry = RawContactModifier.insertChild(state, nickNameKind);
+ if (!(SimContactsConstants.ACCOUNT_TYPE_SIM).equals(type.accountType)) {
+ mPhoneticName.setValues(
+ type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME),
+ primary, state, false, vig);
+ // It is useful to use Nickname outside of a KindSectionView so that we can
+ // treat it as a part of StructuredName's fake KindSectionView, even though
+ // it uses adifferent CP2 mime-type. We do a bit of extra work below to make
+ // this possible.
+ final DataKind nickNameKind = type
+ .getKindForMimetype(Nickname.CONTENT_ITEM_TYPE);
+ if (nickNameKind != null) {
+ ValuesDelta primaryNickNameEntry = state
+ .getPrimaryEntry(nickNameKind.mimeType);
+ if (primaryNickNameEntry == null) {
+ primaryNickNameEntry = RawContactModifier
+ .insertChild(state, nickNameKind);
+ }
+ mNickName.setValues(nickNameKind, primaryNickNameEntry, state, false, vig);
+ mNickName.setDeletable(false);
+ } else {
+ mPhoneticName.setPadding(0, 0, 0, (int) getResources().getDimension(
+ R.dimen.editor_padding_between_editor_views));
+ mNickName.setVisibility(View.GONE);
}
- mNickName.setValues(nickNameKind, primaryNickNameEntry, state, false, vig);
- mNickName.setDeletable(false);
} else {
- mPhoneticName.setPadding(0, 0, 0, (int) getResources().getDimension(
- R.dimen.editor_padding_between_editor_views));
+ //sim card can't store expand fields,so set it disabled.
+ mName.setExpansionViewContainerDisabled();
+ mPhoneticName.setVisibility(View.GONE);
mNickName.setVisibility(View.GONE);
}
} else if (Photo.CONTENT_ITEM_TYPE.equals(mimeType)) {
diff --git a/src/com/android/contacts/editor/TextFieldsEditorView.java b/src/com/android/contacts/editor/TextFieldsEditorView.java
index fe476ed01..88a8e30ee 100644
--- a/src/com/android/contacts/editor/TextFieldsEditorView.java
+++ b/src/com/android/contacts/editor/TextFieldsEditorView.java
@@ -377,10 +377,12 @@ public class TextFieldsEditorView extends LabeledEditorView {
mHideOptional = ss.mHideOptional;
- int numChildren = Math.min(mFieldEditTexts == null ? 0 : mFieldEditTexts.length,
- ss.mVisibilities == null ? 0 : ss.mVisibilities.length);
- for (int i = 0; i < numChildren; i++) {
- mFieldEditTexts[i].setVisibility(ss.mVisibilities[i]);
+ if (mFieldEditTexts != null) {
+ int numChildren = Math.min(mFieldEditTexts == null ? 0 : mFieldEditTexts.length,
+ ss.mVisibilities == null ? 0 : ss.mVisibilities.length);
+ for (int i = 0; i < numChildren; i++) {
+ mFieldEditTexts[i].setVisibility(ss.mVisibilities[i]);
+ }
}
}
@@ -429,4 +431,13 @@ public class TextFieldsEditorView extends LabeledEditorView {
}
}
}
+ /**
+ * use for account type is ACCOUNT_TYPE_SIM only because that sim card
+ * can not store expand fields.
+ */
+
+ public void setExpansionViewContainerDisabled() {
+ mExpansionViewContainer.setEnabled(false);
+ mExpansionView.setVisibility(View.INVISIBLE);
+ }
}
diff --git a/src/com/android/contacts/group/GroupBrowseListAdapter.java b/src/com/android/contacts/group/GroupBrowseListAdapter.java
index 48751e72d..40a3b6fba 100644
--- a/src/com/android/contacts/group/GroupBrowseListAdapter.java
+++ b/src/com/android/contacts/group/GroupBrowseListAdapter.java
@@ -30,6 +30,7 @@ import android.widget.TextView;
import com.android.contacts.GroupListLoader;
import com.android.contacts.R;
import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.PhoneAccountType;
import com.android.contacts.common.model.AccountTypeManager;
import com.google.common.base.Objects;
@@ -198,7 +199,12 @@ public class GroupBrowseListAdapter extends BaseAdapter {
AccountType accountType = mAccountTypeManager.getAccountType(
entry.getAccountType(), entry.getDataSet());
viewCache.accountType.setText(accountType.getDisplayLabel(mContext));
- viewCache.accountName.setText(entry.getAccountName());
+ // According to the UI SPEC, we will not show the account name for Phone account
+ if (!PhoneAccountType.ACCOUNT_TYPE.equals(entry.getAccountType())) {
+ viewCache.accountName.setText(entry.getAccountName());
+ } else {
+ viewCache.accountName.setText("");
+ }
}
private static Uri getGroupUriFromId(long groupId) {
diff --git a/src/com/android/contacts/group/GroupBrowseListFragment.java b/src/com/android/contacts/group/GroupBrowseListFragment.java
index d39501a16..46dc92d79 100644
--- a/src/com/android/contacts/group/GroupBrowseListFragment.java
+++ b/src/com/android/contacts/group/GroupBrowseListFragment.java
@@ -160,17 +160,6 @@ public class GroupBrowseListFragment extends Fragment
private void configureVerticalScrollbar() {
mListView.setVerticalScrollbarPosition(mVerticalScrollbarPosition);
mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
- int leftPadding = 0;
- int rightPadding = 0;
- if (mVerticalScrollbarPosition == View.SCROLLBAR_POSITION_LEFT) {
- leftPadding = mContext.getResources().getDimensionPixelOffset(
- R.dimen.list_visible_scrollbar_padding);
- } else {
- rightPadding = mContext.getResources().getDimensionPixelOffset(
- R.dimen.list_visible_scrollbar_padding);
- }
- mListView.setPadding(leftPadding, mListView.getPaddingTop(),
- rightPadding, mListView.getPaddingBottom());
}
@Override
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index c9cf6bd58..724f37bf8 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -31,6 +31,7 @@ import android.database.Cursor;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
+import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Groups;
import android.text.TextUtils;
import android.util.Log;
@@ -58,6 +59,8 @@ import com.android.contacts.common.list.ContactTileView;
import com.android.contacts.list.GroupMemberTileAdapter;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.activities.MultiPickContactActivity;
+import com.android.contacts.common.SimContactsConstants;
/**
* Displays the details of a group and shows a list of actions possible for the group.
@@ -115,6 +118,7 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener {
private Uri mGroupUri;
private long mGroupId;
private String mGroupName;
+ private String mAccountNameString;
private String mAccountTypeString;
private String mDataSet;
private boolean mIsReadOnly;
@@ -286,6 +290,7 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener {
Log.e(TAG, "Failed to load group members");
return;
}
+ getActivity().invalidateOptionsMenu();
updateSize(data.getCount());
mAdapter.setContactCursor(data);
mMemberListView.setEmptyView(mEmptyView);
@@ -298,6 +303,7 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener {
private void bindGroupMetaData(Cursor cursor) {
cursor.moveToPosition(-1);
if (cursor.moveToNext()) {
+ mAccountNameString = cursor.getString(GroupMetaDataLoader.ACCOUNT_NAME);
mAccountTypeString = cursor.getString(GroupMetaDataLoader.ACCOUNT_TYPE);
mDataSet = cursor.getString(GroupMetaDataLoader.DATA_SET);
mGroupId = cursor.getLong(GroupMetaDataLoader.GROUP_ID);
@@ -454,6 +460,9 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener {
final MenuItem deleteMenu = menu.findItem(R.id.menu_delete_group);
deleteMenu.setVisible(mOptionsMenuGroupDeletable);
+
+ final MenuItem moveMenu = menu.findItem(R.id.menu_move_group_members);
+ moveMenu.setVisible(isVisible() && mAdapter != null && mAdapter.getCount() > 0);
}
@Override
@@ -468,6 +477,18 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener {
mCloseActivityAfterDelete);
return true;
}
+ case R.id.menu_move_group_members: {
+ Intent intent = new Intent(SimContactsConstants.ACTION_MULTI_PICK);
+ intent.setType(Contacts.CONTENT_TYPE);
+ intent.putExtra(SimContactsConstants.IS_CONTACT, true);
+ intent.putExtra(MultiPickContactActivity.EXTRA_GROUP_ID, getGroupId());
+ intent.putExtra(SimContactsConstants.ACCOUNT_TYPE, mAccountTypeString);
+ intent.putExtra(SimContactsConstants.ACCOUNT_NAME, mAccountNameString);
+ intent.putExtra(MultiPickContactActivity.EXTRA_GROUP_ACTION,
+ MultiPickContactActivity.GROUP_ACTION_MOVE_MEMBER);
+ startActivity(intent);
+ return true;
+ }
}
return false;
}
diff --git a/src/com/android/contacts/group/GroupEditorFragment.java b/src/com/android/contacts/group/GroupEditorFragment.java
index eda5d4f39..ff2ee7905 100644
--- a/src/com/android/contacts/group/GroupEditorFragment.java
+++ b/src/com/android/contacts/group/GroupEditorFragment.java
@@ -63,20 +63,25 @@ import com.android.contacts.GroupMemberLoader.GroupEditorQuery;
import com.android.contacts.GroupMetaDataLoader;
import com.android.contacts.R;
import com.android.contacts.activities.GroupEditorActivity;
+import com.android.contacts.activities.MultiPickContactActivity;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.PhoneAccountType;
import com.android.contacts.common.editor.SelectAccountDialogFragment;
import com.android.contacts.group.SuggestedMemberListAdapter.SuggestedMember;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
import com.android.contacts.common.util.ViewUtil;
+import com.android.contacts.common.SimContactsConstants;
import com.google.common.base.Objects;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
+import java.util.Set;
public class GroupEditorFragment extends Fragment implements SelectAccountDialogFragment.Listener {
private static final String TAG = "GroupEditorFragment";
@@ -98,6 +103,8 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
private static final String CURRENT_EDITOR_TAG = "currentEditorForAccount";
+ public static final int REQUEST_CODE_PICK_GROUP_MEM = 1001;
+
public static interface Listener {
/**
* Group metadata was not found, close the fragment now.
@@ -183,6 +190,7 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
private TextView mGroupNameView;
private AutoCompleteTextView mAutoCompleteTextView;
+ private ImageView mAddGroupMemberView;
private String mAccountName;
private String mAccountType;
@@ -311,8 +319,9 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
}
private void selectAccountAndCreateGroup() {
- final List<AccountWithDataSet> accounts =
- AccountTypeManager.getInstance(mContext).getAccounts(true /* writeable */);
+ final List<AccountWithDataSet> accounts = AccountTypeManager
+ .getInstance(mContext).getAccounts(true /* writeable */,
+ AccountTypeManager.FLAG_ALL_ACCOUNTS_WITHOUT_SIM);
// No Accounts available
if (accounts.isEmpty()) {
Log.e(TAG, "No accounts were found.");
@@ -404,6 +413,7 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
mGroupNameView = (TextView) editorView.findViewById(R.id.group_name);
mAutoCompleteTextView = (AutoCompleteTextView) editorView.findViewById(
R.id.add_member_field);
+ mAddGroupMemberView = (ImageView) editorView.findViewById(R.id.addGroupMember);
mListView = (ListView) editorView.findViewById(android.R.id.list);
mListView.setAdapter(mMemberListAdapter);
@@ -414,9 +424,13 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
ImageView accountIcon = (ImageView) editorView.findViewById(R.id.account_icon);
TextView accountTypeTextView = (TextView) editorView.findViewById(R.id.account_type);
TextView accountNameTextView = (TextView) editorView.findViewById(R.id.account_name);
- if (!TextUtils.isEmpty(mAccountName)) {
+ if (!TextUtils.isEmpty(mAccountName)
+ && !SimContactsConstants.PHONE_NAME.equals(mAccountName)) {
accountNameTextView.setText(
mContext.getString(R.string.from_account_format, mAccountName));
+ accountNameTextView.setVisibility(View.VISIBLE);
+ } else {
+ accountNameTextView.setVisibility(View.GONE);
}
accountTypeTextView.setText(accountTypeDisplayLabel);
accountIcon.setImageDrawable(accountType.getDisplayIcon(mContext));
@@ -428,6 +442,7 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
if (mAutoCompleteTextView != null) {
mAutoCompleteAdapter = new SuggestedMemberListAdapter(mContext,
android.R.layout.simple_dropdown_item_1line);
+ mAutoCompleteTextView.setThreshold(1);
mAutoCompleteAdapter.setContentResolver(mContentResolver);
mAutoCompleteAdapter.setAccountType(mAccountType);
mAutoCompleteAdapter.setAccountName(mAccountName);
@@ -455,6 +470,23 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
mAutoCompleteAdapter.updateExistingMembersList(mListToDisplay);
}
+ if (mAddGroupMemberView != null) {
+ mAddGroupMemberView.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(SimContactsConstants.ACTION_MULTI_PICK);
+ intent.setType(Contacts.CONTENT_TYPE);
+ intent.putExtra(SimContactsConstants.IS_CONTACT, true);
+ intent.putExtra(SimContactsConstants.ACCOUNT_NAME, mAccountName);
+ intent.putExtra(SimContactsConstants.ACCOUNT_TYPE, mAccountType);
+ intent.putExtra(MultiPickContactActivity.EXTRA_GROUP_ACTION,
+ MultiPickContactActivity.GROUP_ACTION_ADD_MEMBER);
+ intent.putExtra(MultiPickContactActivity.EXTRA_GROUP_ID, mGroupId);
+ startActivityForResult(intent, REQUEST_CODE_PICK_GROUP_MEM);
+ }
+ });
+ }
+
// If the group name is ready only, don't let the user focus on the field.
mGroupNameView.setFocusable(!mGroupNameIsReadOnly);
if(isNewEditor) {
@@ -463,6 +495,47 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
mStatus = Status.EDITING;
}
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (resultCode != Activity.RESULT_OK) {
+ return;
+ }
+ if (requestCode == REQUEST_CODE_PICK_GROUP_MEM) {
+ Bundle mChoiceSet = data.getExtras();
+ Set<String> keys = mChoiceSet.keySet();
+ Iterator<String> iterator = keys.iterator();
+ String key;
+ String[] info;
+ String contactId;
+ String nameRawContactId;
+ String displayName;
+ String lookupKey;
+ String photoUri;
+
+ while (iterator.hasNext()) {
+ key = iterator.next();
+ info = mChoiceSet.getStringArray(key);
+
+ contactId = info[1];
+
+ if (!mAutoCompleteAdapter.containsMember(Long.valueOf(contactId))) {
+ // Retrieve the contact data fields that will be sufficient
+ // to update
+ // the adapter with a new entry for this contact
+ lookupKey = info[0];
+ nameRawContactId = info[2];
+ photoUri= info[3];
+ displayName = info[4];
+
+ Member member = new Member(Long.valueOf(nameRawContactId), lookupKey,
+ Long.valueOf(contactId), displayName, photoUri);
+ addMember(member);
+ }
+ }
+ }
+ }
+
public void load(String action, Uri groupUri, Bundle intentExtras) {
mAction = action;
mGroupUri = groupUri;
@@ -713,8 +786,13 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
}
private void addMember(Member member) {
- // Update the display list
- mListMembersToAdd.add(member);
+ // If the contact was just removed during this session, remove it from
+ // the list of members to remove
+ if (mListMembersToRemove.contains(member)) {
+ mListMembersToRemove.remove(member);
+ } else {
+ mListMembersToAdd.add(member);
+ }
mListToDisplay.add(member);
mMemberListAdapter.notifyDataSetChanged();
diff --git a/src/com/android/contacts/group/SuggestedMemberListAdapter.java b/src/com/android/contacts/group/SuggestedMemberListAdapter.java
index 19ff61177..18ad34c7c 100644
--- a/src/com/android/contacts/group/SuggestedMemberListAdapter.java
+++ b/src/com/android/contacts/group/SuggestedMemberListAdapter.java
@@ -116,7 +116,13 @@ public class SuggestedMemberListAdapter extends ArrayAdapter<SuggestedMember> {
}
public void addNewMember(long contactId) {
- mExistingMemberContactIds.add(contactId);
+ if (!containsMember(contactId)) {
+ mExistingMemberContactIds.add(contactId);
+ }
+ }
+
+ public boolean containsMember(long contactId) {
+ return mExistingMemberContactIds.contains(contactId);
}
public void removeMember(long contactId) {
@@ -186,7 +192,7 @@ public class SuggestedMemberListAdapter extends ArrayAdapter<SuggestedMember> {
// and have the same account name and type as specified in this adapter
String searchQuery = prefix.toString() + "%";
String accountClause = RawContacts.ACCOUNT_NAME + "=? AND " +
- RawContacts.ACCOUNT_TYPE + "=?";
+ RawContacts.ACCOUNT_TYPE + "=? AND " + RawContacts.DELETED + "!= 1";
String[] args;
if (mDataSet == null) {
accountClause += " AND " + RawContacts.DATA_SET + " IS NULL";
diff --git a/src/com/android/contacts/list/ContactPickerFragment.java b/src/com/android/contacts/list/ContactPickerFragment.java
index 4e8138916..fa1d2679c 100644
--- a/src/com/android/contacts/list/ContactPickerFragment.java
+++ b/src/com/android/contacts/list/ContactPickerFragment.java
@@ -165,7 +165,7 @@ public class ContactPickerFragment extends ContactEntryListFragment<ContactEntry
HeaderEntryContactListAdapter adapter
= new HeaderEntryContactListAdapter(getActivity());
adapter.setFilter(ContactListFilter.createFilterWithType(
- ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS));
+ ContactListFilter.FILTER_TYPE_ALL_WITHOUT_SIM));
adapter.setSectionHeaderDisplayEnabled(true);
adapter.setDisplayPhotos(true);
adapter.setQuickContactEnabled(false);
diff --git a/src/com/android/contacts/list/EmailAddressListAdapter.java b/src/com/android/contacts/list/EmailAddressListAdapter.java
index d19f960b8..b7aeaac4e 100644
--- a/src/com/android/contacts/list/EmailAddressListAdapter.java
+++ b/src/com/android/contacts/list/EmailAddressListAdapter.java
@@ -15,6 +15,7 @@
*/
package com.android.contacts.list;
+import android.accounts.Account;
import android.content.ContentUris;
import android.content.Context;
import android.content.CursorLoader;
@@ -24,6 +25,7 @@ import android.net.Uri.Builder;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.RawContacts;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
@@ -47,6 +49,8 @@ public class EmailAddressListAdapter extends ContactEntryListAdapter {
Email.PHOTO_ID, // 4
Email.LOOKUP_KEY, // 5
Email.DISPLAY_NAME_PRIMARY, // 6
+ RawContacts.ACCOUNT_TYPE, // 7
+ RawContacts.ACCOUNT_NAME // 8
};
private static final String[] PROJECTION_ALTERNATIVE = new String[] {
@@ -57,6 +61,8 @@ public class EmailAddressListAdapter extends ContactEntryListAdapter {
Email.PHOTO_ID, // 4
Email.LOOKUP_KEY, // 5
Email.DISPLAY_NAME_ALTERNATIVE, // 6
+ RawContacts.ACCOUNT_TYPE, // 7
+ RawContacts.ACCOUNT_NAME // 8
};
public static final int EMAIL_ID = 0;
@@ -66,6 +72,8 @@ public class EmailAddressListAdapter extends ContactEntryListAdapter {
public static final int EMAIL_PHOTO_ID = 4;
public static final int EMAIL_LOOKUP_KEY = 5;
public static final int EMAIL_DISPLAY_NAME = 6;
+ public static final int EMAIL_ACCOUNT_TYPE = 7;
+ public static final int EMAIL_ACCOUNT_NAME = 8;
}
private final CharSequence mUnknownNameText;
@@ -173,13 +181,22 @@ public class EmailAddressListAdapter extends ContactEntryListAdapter {
if (!cursor.isNull(EmailQuery.EMAIL_PHOTO_ID)) {
photoId = cursor.getLong(EmailQuery.EMAIL_PHOTO_ID);
}
+
+ Account account = null;
+ if (!cursor.isNull(EmailQuery.EMAIL_ACCOUNT_TYPE)
+ && !cursor.isNull(EmailQuery.EMAIL_ACCOUNT_NAME)) {
+ final String accountType = cursor.getString(EmailQuery.EMAIL_ACCOUNT_TYPE);
+ final String accountName = cursor.getString(EmailQuery.EMAIL_ACCOUNT_NAME);
+ account = new Account(accountName, accountType);
+ }
+
DefaultImageRequest request = null;
if (photoId == 0) {
request = getDefaultImageRequestFromCursor(cursor, EmailQuery.EMAIL_DISPLAY_NAME,
EmailQuery.EMAIL_LOOKUP_KEY);
}
- getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false, getCircularPhotos(),
- request);
+ getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, account,
+ false, getCircularPhotos(), request);
}
//
// protected void bindSearchSnippet(final ContactListItemView view, Cursor cursor) {
diff --git a/src/com/android/contacts/list/JoinContactListAdapter.java b/src/com/android/contacts/list/JoinContactListAdapter.java
index f08fcbbe3..553993702 100644
--- a/src/com/android/contacts/list/JoinContactListAdapter.java
+++ b/src/com/android/contacts/list/JoinContactListAdapter.java
@@ -24,6 +24,7 @@ import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Contacts.AggregationSuggestions;
import android.provider.ContactsContract.Directory;
+import android.provider.ContactsContract.RawContacts;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -34,6 +35,7 @@ import com.android.contacts.R;
import com.android.contacts.common.list.ContactListAdapter;
import com.android.contacts.common.list.ContactListItemView;
import com.android.contacts.common.list.DirectoryListLoader;
+import com.android.contacts.common.SimContactsConstants;
import com.android.contacts.common.preference.ContactsPreferences;
public class JoinContactListAdapter extends ContactListAdapter {
@@ -81,7 +83,10 @@ public class JoinContactListAdapter extends ContactListAdapter {
}
builder.appendQueryParameter("limit", String.valueOf(MAX_SUGGESTIONS));
-
+ builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE,
+ SimContactsConstants.ACCOUNT_TYPE_SIM);
+ builder.appendQueryParameter(SimContactsConstants.WITHOUT_SIM_FLAG,
+ "true");
loader.setSuggestionUri(builder.build());
// TODO simplify projection
@@ -92,11 +97,19 @@ public class JoinContactListAdapter extends ContactListAdapter {
.appendEncodedPath(Uri.encode(filter))
.appendQueryParameter(
ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT))
+ .appendQueryParameter(RawContacts.ACCOUNT_TYPE,
+ SimContactsConstants.ACCOUNT_TYPE_SIM)
+ .appendQueryParameter(
+ SimContactsConstants.WITHOUT_SIM_FLAG, "true")
.build();
} else {
allContactsUri = buildSectionIndexerUri(Contacts.CONTENT_URI).buildUpon()
.appendQueryParameter(
ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT))
+ .appendQueryParameter(RawContacts.ACCOUNT_TYPE,
+ SimContactsConstants.ACCOUNT_TYPE_SIM)
+ .appendQueryParameter(
+ SimContactsConstants.WITHOUT_SIM_FLAG, "true")
.build();
}
loader.setUri(allContactsUri);
diff --git a/src/com/android/contacts/list/PostalAddressListAdapter.java b/src/com/android/contacts/list/PostalAddressListAdapter.java
index 951a933fa..2bff7282a 100644
--- a/src/com/android/contacts/list/PostalAddressListAdapter.java
+++ b/src/com/android/contacts/list/PostalAddressListAdapter.java
@@ -15,6 +15,7 @@
*/
package com.android.contacts.list;
+import android.accounts.Account;
import android.content.ContentUris;
import android.content.Context;
import android.content.CursorLoader;
@@ -24,6 +25,7 @@ import android.net.Uri.Builder;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.RawContacts;
import android.view.View;
import android.view.ViewGroup;
@@ -46,6 +48,8 @@ public class PostalAddressListAdapter extends ContactEntryListAdapter {
StructuredPostal.PHOTO_ID, // 4
StructuredPostal.LOOKUP_KEY, // 5
StructuredPostal.DISPLAY_NAME_PRIMARY, // 6
+ RawContacts.ACCOUNT_TYPE, // 7
+ RawContacts.ACCOUNT_NAME // 8
};
private static final String[] PROJECTION_ALTERNATIVE = new String[] {
@@ -56,6 +60,8 @@ public class PostalAddressListAdapter extends ContactEntryListAdapter {
StructuredPostal.PHOTO_ID, // 4
StructuredPostal.LOOKUP_KEY, // 5
StructuredPostal.DISPLAY_NAME_ALTERNATIVE, // 6
+ RawContacts.ACCOUNT_TYPE, // 7
+ RawContacts.ACCOUNT_NAME, // 8
};
public static final int POSTAL_ID = 0;
@@ -65,6 +71,8 @@ public class PostalAddressListAdapter extends ContactEntryListAdapter {
public static final int POSTAL_PHOTO_ID = 4;
public static final int POSTAL_LOOKUP_KEY = 5;
public static final int POSTAL_DISPLAY_NAME = 6;
+ public static final int POSTAL_ACCOUNT_TYPE = 7;
+ public static final int POSTAL_ACCOUNT_NAME = 8;
}
private final CharSequence mUnknownNameText;
@@ -165,14 +173,22 @@ public class PostalAddressListAdapter extends ContactEntryListAdapter {
photoId = cursor.getLong(PostalQuery.POSTAL_PHOTO_ID);
}
+ Account account = null;
+ if (!cursor.isNull(PostalQuery.POSTAL_ACCOUNT_TYPE)
+ && !cursor.isNull(PostalQuery.POSTAL_ACCOUNT_NAME)) {
+ final String accountType = cursor.getString(PostalQuery.POSTAL_ACCOUNT_TYPE);
+ final String accountName = cursor.getString(PostalQuery.POSTAL_ACCOUNT_NAME);
+ account = new Account(accountName, accountType);
+ }
+
DefaultImageRequest request = null;
if (photoId == 0) {
request = getDefaultImageRequestFromCursor(cursor, PostalQuery.POSTAL_DISPLAY_NAME,
PostalQuery.POSTAL_LOOKUP_KEY);
}
- getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false, getCircularPhotos(),
- request);
+ getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, account,
+ false, getCircularPhotos(), request);
}
//
// protected void bindSearchSnippet(final ContactListItemView view, Cursor cursor) {
diff --git a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
index 10887cb57..c45ed41b8 100644
--- a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
+++ b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
@@ -1056,6 +1056,7 @@ public class ExpandingEntryCardView extends CardView {
private final String mMimeType;
private final long mId;
private final boolean mIsSuperPrimary;
+ private String mData;
public EntryContextMenuInfo(String copyText, String copyLabel, String mimeType, long id,
boolean isSuperPrimary) {
@@ -1066,6 +1067,16 @@ public class ExpandingEntryCardView extends CardView {
mIsSuperPrimary = isSuperPrimary;
}
+ public EntryContextMenuInfo(String copyText, String copyLabel, String mimeType, long id,
+ boolean isSuperPrimary, String data) {
+ mCopyText = copyText;
+ mCopyLabel = copyLabel;
+ mMimeType = mimeType;
+ mId = id;
+ mIsSuperPrimary = isSuperPrimary;
+ mData = data;
+ }
+
public String getCopyText() {
return mCopyText;
}
@@ -1085,6 +1096,10 @@ public class ExpandingEntryCardView extends CardView {
public boolean isSuperPrimary() {
return mIsSuperPrimary;
}
+
+ public String getData() {
+ return mData;
+ }
}
static final class EntryTag {
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 26f84a850..99af33c36 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -20,10 +20,12 @@ import android.accounts.Account;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.app.Activity;
+import android.app.DialogFragment;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.app.SearchManager;
import android.content.ActivityNotFoundException;
+import android.content.ContentValues;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
@@ -32,6 +34,7 @@ import android.content.Loader;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
+import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
@@ -45,6 +48,8 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Trace;
import android.provider.CalendarContract;
+import android.os.Handler;
+import android.os.Message;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
@@ -56,6 +61,7 @@ import android.provider.ContactsContract.CommonDataKinds.Organization;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.Relation;
import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
import android.provider.ContactsContract.Contacts;
@@ -66,6 +72,7 @@ import android.provider.ContactsContract.DataUsageFeedback;
import android.provider.ContactsContract.Intents;
import android.provider.ContactsContract.QuickContact;
import android.provider.ContactsContract.RawContacts;
+import android.provider.Telephony;
import android.support.v7.graphics.Palette;
import android.telecom.PhoneAccount;
import android.telecom.TelecomManager;
@@ -73,6 +80,8 @@ import android.text.BidiFormatter;
import android.text.SpannableString;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils;
+import android.telephony.TelephonyManager;
+import android.telephony.SubscriptionManager;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
@@ -90,14 +99,18 @@ import android.widget.Toolbar;
import com.android.contacts.ContactSaveService;
import com.android.contacts.ContactsActivity;
import com.android.contacts.NfcHandler;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.SimContactsConstants;
import com.android.contacts.R;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ClipboardUtils;
import com.android.contacts.common.Collapser;
import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.GroupMetaData;
import com.android.contacts.common.activity.RequestPermissionsActivity;
import com.android.contacts.common.dialog.CallSubjectDialog;
import com.android.contacts.common.editor.SelectAccountDialogFragment;
+import com.android.contacts.common.activity.fragment.BlockContactDialogFragment;
import com.android.contacts.common.interactions.TouchPointManager;
import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.contacts.common.list.ShortcutIntentBuilder;
@@ -106,12 +119,14 @@ import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.Contact;
import com.android.contacts.common.model.ContactLoader;
import com.android.contacts.common.model.RawContact;
+import com.android.contacts.common.model.RawContactDelta;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.model.dataitem.DataItem;
import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.common.model.dataitem.EmailDataItem;
import com.android.contacts.common.model.dataitem.EventDataItem;
+import com.android.contacts.common.model.dataitem.GroupMembershipDataItem;
import com.android.contacts.common.model.dataitem.ImDataItem;
import com.android.contacts.common.model.dataitem.NicknameDataItem;
import com.android.contacts.common.model.dataitem.NoteDataItem;
@@ -122,7 +137,11 @@ import com.android.contacts.common.model.dataitem.SipAddressDataItem;
import com.android.contacts.common.model.dataitem.StructuredNameDataItem;
import com.android.contacts.common.model.dataitem.StructuredPostalDataItem;
import com.android.contacts.common.model.dataitem.WebsiteDataItem;
+import com.android.contacts.common.util.BlockContactHelper;
import com.android.contacts.common.util.ImplicitIntentsUtil;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.SimContactsConstants;
+import com.android.contacts.common.util.BitmapUtil;
import com.android.contacts.common.util.DateUtils;
import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
@@ -136,6 +155,7 @@ import com.android.contacts.interactions.CallLogInteractionsLoader;
import com.android.contacts.interactions.ContactDeletionInteraction;
import com.android.contacts.interactions.ContactInteraction;
import com.android.contacts.interactions.SmsInteractionsLoader;
+import com.android.internal.telephony.PhoneConstants;
import com.android.contacts.quickcontact.ExpandingEntryCardView.Entry;
import com.android.contacts.quickcontact.ExpandingEntryCardView.EntryContextMenuInfo;
import com.android.contacts.quickcontact.ExpandingEntryCardView.EntryTag;
@@ -150,8 +170,11 @@ import com.android.contacts.widget.MultiShrinkScroller.MultiShrinkScrollerListen
import com.android.contacts.widget.QuickContactImageView;
import com.android.contactsbind.HelpUtils;
+import com.cyanogen.lookup.phonenumber.provider.LookupProviderImpl;
import com.google.common.collect.Lists;
-
+import com.google.common.collect.ImmutableList;
+import com.squareup.picasso.Picasso;
+import com.squareup.picasso.Target;
import java.lang.SecurityException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -169,7 +192,8 @@ import java.util.concurrent.ConcurrentHashMap;
* data asynchronously, and then shows a popup with details centered around
* {@link Intent#getSourceBounds()}.
*/
-public class QuickContactActivity extends ContactsActivity {
+public class QuickContactActivity extends ContactsActivity implements
+ BlockContactDialogFragment.BlockContactCallbacks {
/**
* QuickContacts immediately takes up the full screen. All possible information is shown.
@@ -257,6 +281,9 @@ public class QuickContactActivity extends ContactsActivity {
private final ImageViewDrawableSetter mPhotoSetter = new ImageViewDrawableSetter();
+ private Target mContactBitmapTarget;
+ private BlockContactHelper mBlockContactHelper;
+
/**
* {@link #LEADING_MIMETYPES} is used to sort MIME-types.
*
@@ -311,6 +338,7 @@ public class QuickContactActivity extends ContactsActivity {
private static final int CARD_ENTRY_ID_EDIT_CONTACT = -2;
+ private static final int MAX_NUM_LENGTH = 3; // add limit length to show IP call item
private static final int[] mRecentLoaderIds = new int[]{
LOADER_SMS_ID,
LOADER_CALENDAR_ID,
@@ -342,31 +370,6 @@ public class QuickContactActivity extends ContactsActivity {
return;
}
- // Pass the touch point through the intent for use in the InCallUI
- if (Intent.ACTION_CALL.equals(intent.getAction())) {
- if (TouchPointManager.getInstance().hasValidPoint()) {
- Bundle extras = new Bundle();
- extras.putParcelable(TouchPointManager.TOUCH_POINT,
- TouchPointManager.getInstance().getPoint());
- intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras);
- }
- }
-
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
- mHasIntentLaunched = true;
- try {
- startActivity(intent);
- } catch (SecurityException ex) {
- Toast.makeText(QuickContactActivity.this, R.string.missing_app,
- Toast.LENGTH_SHORT).show();
- Log.e(TAG, "QuickContacts does not have permission to launch "
- + intent);
- } catch (ActivityNotFoundException ex) {
- Toast.makeText(QuickContactActivity.this, R.string.missing_app,
- Toast.LENGTH_SHORT).show();
- }
-
// Default to USAGE_TYPE_CALL. Usage is summed among all types for sorting each data id
// so the exact usage type is not necessary in all cases
String usageType = DataUsageFeedback.USAGE_TYPE_CALL;
@@ -442,10 +445,23 @@ public class QuickContactActivity extends ContactsActivity {
}
};
+ @Override
+ public void onBlockContact(boolean notifyLookupProvider) {
+ mBlockContactHelper.blockContactAsync(notifyLookupProvider);
+ }
+
+ @Override
+ public void onUnblockContact(boolean notifyLookupProvider) {
+ mBlockContactHelper.unblockContactAsync(notifyLookupProvider);
+ }
+
private interface ContextMenuIds {
static final int COPY_TEXT = 0;
static final int CLEAR_DEFAULT = 1;
static final int SET_DEFAULT = 2;
+ static final int EDIT_BEFORE_CALL = 3;
+ static final int IPCALL1 = 4;
+ static final int IPCALL2 = 5; // add for new feature: ip call prefix
}
private final OnCreateContextMenuListener mEntryContextMenuListener =
@@ -485,6 +501,29 @@ public class QuickContactActivity extends ContactsActivity {
menu.add(ContextMenu.NONE, ContextMenuIds.SET_DEFAULT,
ContextMenu.NONE, getString(R.string.set_default));
}
+ if (Phone.CONTENT_ITEM_TYPE.equals(info.getMimeType())) {
+ menu.add(ContextMenu.NONE, ContextMenuIds.EDIT_BEFORE_CALL,
+ ContextMenu.NONE, getString(R.string.edit_before_call));
+ // add limit length to show IP call item
+ if (info.getData().length() > MAX_NUM_LENGTH) {
+ if (MoreContactUtils.isMultiSimEnable(QuickContactActivity.this,
+ PhoneConstants.SUB1)) {
+ String sub1Name = MoreContactUtils.getMultiSimAliasesName(
+ getApplicationContext(), PhoneConstants.SUB1);
+ menu.add(ContextMenu.NONE, ContextMenuIds.IPCALL1, ContextMenu.NONE,
+ getApplicationContext().getString(
+ com.android.contacts.common.R.string.ip_call_by_slot, sub1Name));
+ }
+ if (MoreContactUtils.isMultiSimEnable(QuickContactActivity.this,
+ PhoneConstants.SUB2)) {
+ String sub2Name = MoreContactUtils.getMultiSimAliasesName(
+ getApplicationContext(), PhoneConstants.SUB2);
+ menu.add(ContextMenu.NONE, ContextMenuIds.IPCALL2, ContextMenu.NONE,
+ getApplicationContext().getString(
+ com.android.contacts.common.R.string.ip_call_by_slot, sub2Name));
+ }
+ }
+ }
}
};
@@ -513,11 +552,32 @@ public class QuickContactActivity extends ContactsActivity {
menuInfo.getId());
this.startService(clearIntent);
return true;
+ case ContextMenuIds.EDIT_BEFORE_CALL:
+ callByEdit(menuInfo.getData());
+ return true;
+ case ContextMenuIds.IPCALL1:
+ ipCallBySlot(menuInfo.getData(), PhoneConstants.SUB1);
+ return true;
+ case ContextMenuIds.IPCALL2:
+ ipCallBySlot(menuInfo.getData(), PhoneConstants.SUB2);
+ return true;
default:
throw new IllegalArgumentException("Unknown menu option " + item.getItemId());
}
}
+ private void ipCallBySlot(String data, int subscription) {
+ String ipCallPrefix = MoreContactUtils.getIPCallPrefix(this,
+ subscription);
+ if (!TextUtils.isEmpty(ipCallPrefix)) {
+ Intent callIntent = CallUtil.getCallIntent(ipCallPrefix + data,
+ MoreContactUtils.getAccount(subscription));
+ startActivity(callIntent);
+ } else {
+ MoreContactUtils.showNoIPNumberDialog(this, subscription);
+ }
+ }
+
/**
* Headless fragment used to handle account selection callbacks invoked from
* {@link DirectoryContactUtil}.
@@ -698,7 +758,6 @@ public class QuickContactActivity extends ContactsActivity {
getWindow().setStatusBarColor(Color.TRANSPARENT);
- processIntent(getIntent());
// Show QuickContact in front of soft input
getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
@@ -813,7 +872,12 @@ public class QuickContactActivity extends ContactsActivity {
}
});
}
-
+ processIntent(getIntent());
+ mBlockContactHelper = new BlockContactHelper(this, new LookupProviderImpl(this));
+ if (mContactData != null) {
+ mBlockContactHelper.setContactInfo(mContactData);
+ mBlockContactHelper.gatherDataInBackground();
+ }
Trace.endSection();
}
@@ -863,13 +927,24 @@ public class QuickContactActivity extends ContactsActivity {
mExtraPrioritizedMimeType = getIntent().getStringExtra(QuickContact.EXTRA_PRIORITIZED_MIMETYPE);
final Uri oldLookupUri = mLookupUri;
- if (lookupUri == null) {
+ mLookupUri = lookupUri;
+ mExcludeMimes = intent.getStringArrayExtra(QuickContact.EXTRA_EXCLUDE_MIMES);
+
+ if (mLookupUri == null) {
finish();
return;
}
- mLookupUri = lookupUri;
- mExcludeMimes = intent.getStringArrayExtra(QuickContact.EXTRA_EXCLUDE_MIMES);
- if (oldLookupUri == null) {
+
+ Contact contact = null;
+ if (UriUtils.isEncodedContactUri(mLookupUri)) {
+ // try to parse it as an ENHANCED_CALLER_META_DATA uri
+ contact = ContactLoader.parseEncodedContactEntity(mLookupUri,
+ ContactLoader.EncodedContactEntitySchemaVersion.ENHANCED_CALLER_META_DATA);
+ }
+
+ if (contact != null) {
+ bindContactData(contact);
+ } else if (oldLookupUri == null) {
mContactLoader = (ContactLoader) getLoaderManager().initLoader(
LOADER_CONTACT_ID, null, mLoaderContactCallbacks);
} else if (oldLookupUri != mLookupUri) {
@@ -914,6 +989,21 @@ public class QuickContactActivity extends ContactsActivity {
}
}
+ private void setAttributionText(String value) {
+ if (!TextUtils.isEmpty(value)) {
+ if (mScroller != null) {
+ mScroller.setAttributionText(getString(R.string.powered_by_provider, value));
+ }
+ }
+ }
+
+ private void setSpamCountText(int value) {
+ if (mScroller != null && value > 0) {
+ mScroller.setSpamCountText(
+ getResources().getQuantityString(R.plurals.spam_count_text, value, value));
+ }
+ }
+
/**
* Check if the given MIME-type appears in the list of excluded MIME-types
* that the most-recent caller requested.
@@ -940,7 +1030,28 @@ public class QuickContactActivity extends ContactsActivity {
Trace.beginSection("Set display photo & name");
mPhotoView.setIsBusiness(mContactData.isDisplayNameFromOrganization());
- mPhotoSetter.setupContactPhoto(data, mPhotoView);
+ if (mContactData.getPhotoBinaryData() == null && mContactData.getPhotoUri() != null) {
+ mContactBitmapTarget = new Target() {
+ @Override
+ public void onPrepareLoad(Drawable d){}
+ @Override
+ public void onBitmapLoaded(Bitmap result, Picasso.LoadedFrom from) {
+ if (result != null) {
+ mContactData.setPhotoBinaryData(BitmapUtil.bitmapToByteArray(result));
+ mPhotoSetter.setupContactPhoto(data, mPhotoView);
+ }
+ mContactBitmapTarget = null;
+ }
+ @Override
+ public void onBitmapFailed(Drawable drawable) {
+ mPhotoSetter.setupContactPhoto(data, mPhotoView);
+ mContactBitmapTarget = null;
+ }
+ };
+ Picasso.with(this).load(mContactData.getPhotoUri()).into(mContactBitmapTarget);
+ } else {
+ mPhotoSetter.setupContactPhoto(data, mPhotoView);
+ }
extractAndApplyTintFromPhotoViewAsynchronously();
String phoneticName = ContactDisplayUtils.getPhoneticName(this, data);
String displayName = ContactDisplayUtils.getDisplayName(this, data).toString();
@@ -953,6 +1064,16 @@ public class QuickContactActivity extends ContactsActivity {
setHeaderNameText(displayName);
}
+ setAttributionText(data.getProviderName());
+ final int spamCount = data.getSpamCount();
+ if (spamCount > 0) {
+ mHasComputedThemeColor = true;
+ setThemeColor(mMaterialColorMapUtils
+ .calculatePrimaryAndSecondaryColor(getResources()
+ .getColor(R.color.letter_tile_red_color)));
+ setSpamCountText(spamCount);
+ }
+
Trace.endSection();
mEntriesAndActionsTask = new AsyncTask<Void, Void, Cp2DataCardModel>() {
@@ -1059,7 +1180,7 @@ public class QuickContactActivity extends ContactsActivity {
// the name mimetype.
final List<Entry> aboutEntries = dataItemsToEntries(mimeTypeItems,
/* aboutCardTitleOut = */ null);
- if (aboutEntries.size() > 0) {
+ if (aboutEntries != null && aboutEntries.size() > 0) {
aboutCardEntries.add(aboutEntries);
}
}
@@ -1177,6 +1298,30 @@ public class QuickContactActivity extends ContactsActivity {
}
/**
+ * Maps group ID to the corresponding group name, collapses all synonymous groups. Ignores
+ * default groups (e.g. My Contacts) and favorites groups.
+ */
+ private static String getGroupName(List<GroupMetaData> groupMetaData, long groupId) {
+ if (groupMetaData == null) {
+ return "";
+ }
+
+ for (GroupMetaData group : groupMetaData) {
+ if (group.getGroupId() == groupId) {
+ if (!group.isDefaultGroup() && !group.isFavorites()) {
+ String title = group.getTitle();
+ if (!TextUtils.isEmpty(title)) {
+ return title;
+ }
+ }
+ break;
+ }
+ }
+
+ return "";
+ }
+
+ /**
* Create a card that shows "Add email" and "Add phone number" entries in grey.
*/
private void initializeNoContactDetailCard() {
@@ -1496,7 +1641,7 @@ public class QuickContactActivity extends ContactsActivity {
TextDirectionHeuristics.LTR);
entryContextMenuInfo = new EntryContextMenuInfo(header,
res.getString(R.string.phoneLabelsGroup), dataItem.getMimeType(),
- dataItem.getId(), dataItem.isSuperPrimary());
+ dataItem.getId(), dataItem.isSuperPrimary(), header);
if (phone.hasKindTypeColumn(kind)) {
final int kindTypeColumn = phone.getKindTypeColumn(kind);
final String label = phone.getLabel();
@@ -1634,6 +1779,35 @@ public class QuickContactActivity extends ContactsActivity {
aboutCardName.value = res.getString(R.string.about_card_title);
}
}
+ } else if (dataItem instanceof GroupMembershipDataItem) {
+ GroupMembershipDataItem groupMembership =
+ (GroupMembershipDataItem) dataItem;
+ Long groupId = groupMembership.getGroupRowId();
+ if (groupId != null) {
+ return new Entry(/* viewId = */-1,
+ /* icon = */null,
+ res.getString(R.string.groupsLabel),
+ getGroupName(contactData.getGroupMetaData(),
+ groupId),
+ /* mSubHeaderIcon= */null,
+ /* text = */null,
+ /* mTextIcon= */null,
+ /* primaryContentDescription = */null,
+ /* intent = */null,
+ /* alternateIcon = */null,
+ /* alternateIntent = */null,
+ /* alternateContentDescription = */null,
+ /* shouldApplyColor = */false,
+ /* isEditable = */false,
+ /* EntryContextMenuInfo = */null,
+ /* thirdIcon = */null,
+ /* thirdIntent = */null,
+ /* thirdContentDescription = */null,
+ /* thirdAction = */ Entry.ACTION_NONE,
+ /* thirdExtras = */ null,
+ /* iconResourceId = */0);
+ }
+ return null;
} else {
// Custom DataItem
header = dataItem.buildDataStringForDisplay(context, kind);
@@ -1754,6 +1928,12 @@ public class QuickContactActivity extends ContactsActivity {
if (dataItems.get(0).getMimeType().equals(MIMETYPE_GPLUS_PROFILE) ||
dataItems.get(0).getMimeType().equals(MIMETYPE_HANGOUTS)) {
return gPlusOrHangoutsDataItemsToEntries(dataItems);
+ } else if (dataItems.get(0).getMimeType().equals(GroupMembership.CONTENT_ITEM_TYPE)) {
+ final Entry entry = groupDataItemsToEntry(dataItems);
+ if (entry != null) {
+ return Lists.newArrayList(entry);
+ }
+ return null;
} else {
final List<Entry> entries = new ArrayList<>();
for (DataItem dataItem : dataItems) {
@@ -1767,6 +1947,48 @@ public class QuickContactActivity extends ContactsActivity {
}
}
+ private Entry groupDataItemsToEntry(List<DataItem> dataItems) {
+ final List<String> titles = new ArrayList<>();
+ for (DataItem dataItem : dataItems) {
+ if (!(dataItem instanceof GroupMembershipDataItem)) {
+ continue;
+ }
+
+ final GroupMembershipDataItem groupItem = (GroupMembershipDataItem) dataItem;
+ if (groupItem.isDefaultGroup() || groupItem.isFavoritesGroup()) {
+ continue;
+ }
+ final String title = groupItem.getGroupTitle();
+ if (title != null) {
+ titles.add(title);
+ }
+ }
+ if (titles.isEmpty()) {
+ return null;
+ }
+
+ return new Entry(/* viewId = */ -1, /* icon = */ null,
+ /* header */ getResources().getString(R.string.contacts_groups_label),
+ /* subHeader */ null,
+ /* subHeaderIcon = */ null,
+ /* text = */ TextUtils.join(", ", titles),
+ /* textIcon = */ null,
+ /* primaryContentDescription = */ null,
+ /* intent = */ null,
+ /* alternateIcon = */ null,
+ /* alternateIntent = */ null,
+ /* alternateContentDescription = */ null,
+ /* shouldApplyColor = */ true,
+ /* isEditable = */ false,
+ /* EntryContextMenuInfo = */ null,
+ /* thirdIcon = */ null,
+ /* thirdIntent = */ null,
+ /* thirdContentDescription = */ null,
+ /* thirdAction = */ Entry.ACTION_NONE,
+ /* thirdExtras = */ null,
+ /* iconResourceId = */ 0);
+ }
+
/**
* G+ and Hangout entries are unique in that a single ExpandingEntryCardView.Entry consists
* of two data items. This method attempts to build each entry using the two data items if
@@ -2054,7 +2276,8 @@ public class QuickContactActivity extends ContactsActivity {
finish();
return;
}
-
+ mBlockContactHelper.setContactInfo(data);
+ mBlockContactHelper.gatherDataInBackground();
bindContactData(data);
} finally {
@@ -2092,6 +2315,7 @@ public class QuickContactActivity extends ContactsActivity {
// override transitions to skip the standard window animations
overridePendingTransition(0, 0);
+ mBlockContactHelper.destroy();
}
private final LoaderCallbacks<List<ContactInteraction>> mLoaderInteractionsCallbacks =
@@ -2328,6 +2552,12 @@ public class QuickContactActivity extends ContactsActivity {
}
}
+ private void callByEdit(String data) {
+ Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts(PhoneAccount.SCHEME_TEL,
+ data, null));
+ startActivity(intent);
+ }
+
/**
* Creates a launcher shortcut with the current contact.
*/
@@ -2355,7 +2585,8 @@ public class QuickContactActivity extends ContactsActivity {
private boolean isShortcutCreatable() {
if (mContactData == null || mContactData.isUserProfile() ||
- mContactData.isDirectoryEntry()) {
+ mContactData.isDirectoryEntry() ||
+ !TextUtils.isEmpty(mContactData.getProviderName())) {
return false;
}
final Intent createShortcutIntent = new Intent();
@@ -2365,6 +2596,88 @@ public class QuickContactActivity extends ContactsActivity {
return receivers != null && receivers.size() > 0;
}
+ private void sendContactViaSMS() {
+ // Get name string
+ String name = mContactData.getDisplayName();
+ String phone = null;
+ String email = null;
+ String postal = null;
+ String organization = null;
+ String sipAddress = null;
+
+ Log.d(TAG, "Contact name: " + name);
+
+ for (RawContact raw: mContactData.getRawContacts()) {
+ for (DataItem dataItem : raw.getDataItems()) {
+ final ContentValues entryValues = dataItem.getContentValues();
+ final String mimeType = dataItem.getMimeType();
+
+ Log.d(TAG, " entryValues:" + entryValues);
+
+ if (mimeType == null) continue;
+
+ if (Phone.CONTENT_ITEM_TYPE.equals(mimeType)) { // Get phone string
+ if (phone == null) {
+ phone = entryValues.getAsString(Phone.NUMBER);
+ } else {
+ phone = phone + ", " + entryValues.getAsString(Phone.NUMBER);
+ }
+ } else if (Email.CONTENT_ITEM_TYPE.equals(mimeType)) { // Get email string
+ if (email == null) {
+ email = entryValues.getAsString(Email.ADDRESS);
+ } else {
+ email = email + ", " + entryValues.getAsString(Email.ADDRESS);
+ }
+ } else if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimeType)) {
+ if (postal == null) {
+ postal = entryValues.getAsString(StructuredPostal.FORMATTED_ADDRESS);
+ } else {
+ postal = postal + ", " + entryValues.getAsString(
+ StructuredPostal.FORMATTED_ADDRESS);
+ }
+ } else if (Organization.CONTENT_ITEM_TYPE.equals(mimeType)) {
+ if (organization == null) {
+ organization = entryValues.getAsString(Organization.COMPANY);
+ } else {
+ organization = organization + ", " + entryValues
+ .getAsString(Organization.COMPANY);
+ }
+ } else if (SipAddress.CONTENT_ITEM_TYPE.equals(mimeType)) {
+ if (sipAddress == null) {
+ sipAddress = entryValues.getAsString(SipAddress.SIP_ADDRESS);
+ } else {
+ sipAddress = sipAddress + ", " + entryValues
+ .getAsString(SipAddress.SIP_ADDRESS);
+ }
+ }
+ }
+ }
+
+ if (TextUtils.isEmpty(name)) {
+ name = getResources().getString(R.string.missing_name);
+ }
+
+ name = getString(R.string.nameLabelsGroup) + ":" + name + "\r\n";
+ phone = (phone == null) ? "" : getString(R.string.phoneLabelsGroup)
+ + ":" + phone + "\r\n";
+ email = (email == null )? "" : getString(R.string.emailLabelsGroup)
+ + ":" + email + "\r\n";
+ postal = (postal == null) ? "" : getString(R.string.postalLabelsGroup)
+ + ":" + postal + "\r\n";
+ organization = (organization == null) ? "" : getString(R.string.organizationLabelsGroup)
+ + ":" + organization + "\r\n";
+ sipAddress = (sipAddress == null) ? "" : getString(R.string.label_sip_address) + ":"
+ + sipAddress + "\r\n";
+ String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this);
+ Intent intent = new Intent(Intent.ACTION_SEND);
+ intent.putExtra("sms_body", name + phone + email + postal + organization + sipAddress);
+ intent.setType("text/plain");
+ if (defaultSmsPackageName != null) {
+ intent.setPackage(defaultSmsPackageName);
+ }
+ startActivity(intent);
+ }
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
final MenuInflater inflater = getMenuInflater();
@@ -2405,6 +2718,82 @@ public class QuickContactActivity extends ContactsActivity {
final MenuItem helpMenu = menu.findItem(R.id.menu_help);
helpMenu.setVisible(HelpUtils.isHelpAndFeedbackAvailable());
+ String accoutName = null;
+ String accoutType = null;
+
+ final RawContact rawContact = mContactData.getRawContacts().get(0);
+ accoutName = rawContact.getAccountName();
+ accoutType = rawContact.getAccountTypeString();
+
+ final MenuItem copyToPhoneMenu = menu.findItem(R.id.menu_copy_to_phone);
+ if (copyToPhoneMenu != null) {
+ copyToPhoneMenu.setVisible(false);
+ }
+
+ final MenuItem copyToSim1Menu = menu.findItem(R.id.menu_copy_to_sim1);
+ if (copyToSim1Menu != null) {
+ copyToSim1Menu.setVisible(false);
+ }
+
+ final MenuItem copyToSim2Menu = menu.findItem(R.id.menu_copy_to_sim2);
+ if (copyToSim2Menu != null) {
+ copyToSim2Menu.setVisible(false);
+ }
+
+ if (!TextUtils.isEmpty(accoutType)) {
+ if (SimContactsConstants.ACCOUNT_TYPE_SIM.equals(accoutType)) {
+ copyToPhoneMenu.setVisible(true);
+ copyToPhoneMenu.setTitle(getString(R.string.menu_copyTo,
+ getString(R.string.phoneLabelsGroup)));
+ if (TelephonyManager.getDefault().isMultiSimEnabled()) {
+ if (SimContactsConstants.SIM_NAME_1.equals(accoutName)
+ && simIsReady(PhoneConstants.SUB2)) {
+ copyToSim2Menu.setTitle(getString(R.string.menu_copyTo,
+ MoreContactUtils.getMultiSimAliasesName(
+ this, PhoneConstants.SUB2)));
+ copyToSim2Menu.setVisible(true);
+ }
+ if (SimContactsConstants.SIM_NAME_2.equals(accoutName)
+ && simIsReady(PhoneConstants.SUB1)) {
+ copyToSim1Menu.setTitle(getString(R.string.menu_copyTo,
+ MoreContactUtils.getMultiSimAliasesName(
+ this, PhoneConstants.SUB1)));
+ copyToSim1Menu.setVisible(true);
+ }
+ }
+ } else if (SimContactsConstants.ACCOUNT_TYPE_PHONE.equals(accoutType)) {
+ copyToPhoneMenu.setVisible(false);
+ boolean hasPhoneOrEmail = hasPhoneOrEmailDate(mContactData);
+ if (TelephonyManager.getDefault().isMultiSimEnabled()) {
+ if (hasPhoneOrEmail && simIsReady(PhoneConstants.SUB1)) {
+ copyToSim1Menu.setTitle(getString(R.string.menu_copyTo,
+ MoreContactUtils.getMultiSimAliasesName(
+ this, PhoneConstants.SUB1)));
+ copyToSim1Menu.setVisible(true);
+ }
+ if (hasPhoneOrEmail && simIsReady(PhoneConstants.SUB2)) {
+ copyToSim2Menu.setTitle(getString(R.string.menu_copyTo,
+ MoreContactUtils.getMultiSimAliasesName(
+ this, PhoneConstants.SUB2)));
+ copyToSim2Menu.setVisible(true);
+ }
+ } else {
+ if (hasPhoneOrEmail && simIsReady(PhoneConstants.SUB1)) {
+ copyToSim1Menu.setTitle(getString(R.string.menu_copyTo,
+ SimContactsConstants.SIM_NAME));
+ copyToSim1Menu.setVisible(true);
+ }
+ }
+ }
+ }
+
+ // set block or un-block menu titles accordingly
+ final MenuItem blockMenuItem = menu.findItem(R.id.menu_block_contact);
+ if (mBlockContactHelper.isContactBlacklisted()) {
+ blockMenuItem.setTitle(R.string.menu_unblock_contact);
+ } else {
+ blockMenuItem.setTitle(R.string.menu_block_contact);
+ }
return true;
}
@@ -2495,8 +2884,363 @@ public class QuickContactActivity extends ContactsActivity {
case R.id.menu_help:
HelpUtils.launchHelpAndFeedbackForContactScreen(this);
return true;
+
+ case R.id.menu_send_via_sms: {
+ if (mContactData == null) {
+ return false;
+ }
+ sendContactViaSMS();
+ return true;
+ }
+ case R.id.menu_copy_to_phone: {
+ if (mContactData == null) return false;
+ copyToPhone();
+ return true;
+ }
+ case R.id.menu_copy_to_sim1: {
+ if (mContactData == null) return false;
+ copyToCard(PhoneConstants.SUB1);
+ return true;
+ }
+ case R.id.menu_copy_to_sim2: {
+ if (mContactData == null) return false;
+ copyToCard(PhoneConstants.SUB2);
+ return true;
+ }
+ case R.id.menu_block_contact: {
+ // block contact dialog fragment
+ DialogFragment f = mBlockContactHelper.getBlockContactDialog(
+ mBlockContactHelper.isContactBlacklisted() ?
+ BlockContactHelper.BlockOperation.UNBLOCK :
+ BlockContactHelper.BlockOperation.BLOCK
+ );
+ f.show(getFragmentManager(), "block_contact");
+ return true;
+ }
default:
return super.onOptionsItemSelected(item);
}
}
+ private boolean hasPhoneOrEmailDate(Contact contact){
+ int phoneCount = 0;
+ int emailCount = 0;
+ ImmutableList<RawContact> rawContacts = contact.getRawContacts();
+ for (RawContact rawContact : rawContacts) {
+ RawContactDelta rawContactDelta = RawContactDelta.fromBefore(rawContact);
+ phoneCount += rawContactDelta.getMimeEntriesCount(
+ Phone.CONTENT_ITEM_TYPE, true);
+ emailCount += rawContactDelta.getMimeEntriesCount(
+ Email.CONTENT_ITEM_TYPE, true);
+ }
+ if (phoneCount > 0 || emailCount > 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ //supply phone number and email which could stored in one ADN
+ class UsimEntity {
+ private ArrayList<String> mNumberList = new ArrayList<String>();
+ private ArrayList<String> mEmailList = new ArrayList<String>();
+
+ public ArrayList<String> getEmailList() {
+ return mEmailList;
+ }
+
+ public ArrayList<String> getNumberList() {
+ return mNumberList;
+ }
+
+ public void putEmailList(ArrayList<String> list) {
+ mEmailList = list;
+ }
+
+ public void putNumberList(ArrayList<String> list) {
+ mNumberList = list;
+ }
+
+ public boolean containsEmail() {
+ return !mEmailList.isEmpty();
+ }
+
+ public boolean containsNumber() {
+ return !mNumberList.isEmpty();
+ }
+ }
+
+ private void copyToPhone() {
+ String name = mContactData.getDisplayName();
+ if (TextUtils.isEmpty(name)) {
+ name = "";
+ }
+ String phoneNumber = "";
+ StringBuilder anrNumber = new StringBuilder();
+ StringBuilder email = new StringBuilder();
+
+ //get phonenumber,email,anr from SIM contacts,then insert them to phone
+ for (RawContact rawContact : mContactData.getRawContacts()) {
+ for (DataItem dataItem : rawContact.getDataItems()) {
+ if (dataItem.getMimeType() == null) {
+ continue;
+ }
+ if (dataItem instanceof PhoneDataItem) {
+ PhoneDataItem phoneNum = (PhoneDataItem) dataItem;
+ final String number = phoneNum.getNumber();
+ if (!TextUtils.isEmpty(number)) {
+ if (Phone.TYPE_MOBILE == phoneNum.getContentValues().getAsInteger(
+ Phone.TYPE)) {
+ phoneNumber = number;
+ } else {
+ if(!TextUtils.isEmpty(anrNumber.toString())) {
+ anrNumber.append(",");
+ }
+ anrNumber.append(number);
+ }
+ }
+ } else if (dataItem instanceof EmailDataItem) {
+ EmailDataItem emailData = (EmailDataItem) dataItem;
+ final String address = emailData.getData();
+ if (!TextUtils.isEmpty(address)) {
+ if(!TextUtils.isEmpty(email.toString())) {
+ email.append(",");
+ }
+ email.append(address);
+ }
+ }
+ }
+ }
+
+ String[] value = new String[] {
+ name, phoneNumber, email.toString(), anrNumber.toString()
+ };
+ boolean success = MoreContactUtils
+ .insertToPhone(value, getContentResolver(),
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ Toast.makeText(this, success ? R.string.copy_done : R.string.copy_failure,
+ Toast.LENGTH_SHORT).show();
+ }
+
+ private Handler mHandler = null;
+
+ private void copyToCard(final int sub) {
+ final Contact contactData = mContactData;
+ final int MSG_COPY_DONE = 0;
+ final int MSG_COPY_FAILURE = 1;
+ final int MSG_CARD_NO_SPACE = 2;
+ final int MSG_NO_EMPTY_EMAIL = 3;
+ if (mHandler == null) {
+ mHandler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_COPY_DONE:
+ Toast.makeText(QuickContactActivity.this, R.string.copy_done,
+ Toast.LENGTH_SHORT).show();
+ break;
+ case MSG_COPY_FAILURE:
+ Toast.makeText(QuickContactActivity.this, R.string.copy_failure,
+ Toast.LENGTH_SHORT).show();
+ break;
+ case MSG_CARD_NO_SPACE:
+ Toast.makeText(QuickContactActivity.this, R.string.card_no_space,
+ Toast.LENGTH_SHORT).show();
+ break;
+ case MSG_NO_EMPTY_EMAIL:
+ Toast.makeText(QuickContactActivity.this,
+ R.string.no_empty_email_in_usim,
+ Toast.LENGTH_SHORT).show();
+ break;
+ }
+ }
+ };
+ }
+
+ new Thread(new Runnable() {
+ public void run() {
+ synchronized (this) {
+ int adnCountInSimContact = 1;
+ int anrCountInSimContact = 0;
+ int emailCountInSimContact = 0;
+
+ Cursor cr = null;
+ // call query first, otherwise the count queries will fail
+ try{
+ int[] subId = SubscriptionManager.getSubId(sub);
+ if (subId != null
+ && TelephonyManager.getDefault().isMultiSimEnabled()) {
+ cr = getContentResolver().query(
+ Uri.parse(SimContactsConstants.SIM_SUB_URI
+ + subId[0]), null, null, null, null);
+ } else {
+ cr = getContentResolver().query(
+ Uri.parse(SimContactsConstants.SIM_URI), null,
+ null, null, null);
+ }
+ } catch (NullPointerException e) {
+ Log.e(TAG, "Exception:" + e);
+ } finally {
+ if (cr != null) {
+ cr.close();
+ }
+ }
+
+ if (MoreContactUtils.canSaveAnr(sub)) {
+ anrCountInSimContact = MoreContactUtils.getOneSimAnrCount(sub);
+ }
+ if (MoreContactUtils.canSaveEmail(sub)) {
+ emailCountInSimContact = MoreContactUtils.getOneSimEmailCount(sub);
+ }
+ int totalEmptyAdn = MoreContactUtils.getSimFreeCount(
+ QuickContactActivity.this, sub);
+ int totalEmptyAnr = MoreContactUtils.getSpareAnrCount(sub);
+ int totalEmptyEmail = MoreContactUtils.getSpareEmailCount(sub);
+
+ Message msg = Message.obtain();
+ if (totalEmptyAdn <= 0) {
+ msg.what = MSG_CARD_NO_SPACE;
+ mHandler.sendMessage(msg);
+ return;
+ }
+
+ //to indiacate how many number in one ADN can saved to SIM card,
+ //1 means can only save one number,2,3 ... means can save anr
+ int numEntitySize = adnCountInSimContact + anrCountInSimContact;
+
+ //empty number is equals to the sum of adn and anr
+ int emptyNumTotal = totalEmptyAdn + totalEmptyAnr;
+
+ // Get name string
+ String strName = contactData.getDisplayName();
+
+ ArrayList<String> arrayNumber = new ArrayList<String>();
+ ArrayList<String> arrayEmail = new ArrayList<String>();
+
+ for (RawContact rawContact : contactData.getRawContacts()) {
+ for (DataItem dataItem : rawContact.getDataItems()) {
+ if (dataItem.getMimeType() == null) {
+ continue;
+ }
+ if (dataItem instanceof PhoneDataItem) {
+ // Get phone string
+ PhoneDataItem phoneNum = (PhoneDataItem) dataItem;
+ final String number = phoneNum.getNumber();
+ if (!TextUtils.isEmpty(number) && emptyNumTotal-- > 0) {
+ arrayNumber.add(number);
+ }
+ } else if (dataItem instanceof EmailDataItem) {
+ // Get email string
+ EmailDataItem emailData = (EmailDataItem) dataItem;
+ final String address = emailData.getData();
+ if (!TextUtils.isEmpty(address) && totalEmptyEmail-- > 0) {
+ arrayEmail.add(address);
+ }
+ }
+ }
+ }
+
+ //calculate how many ADN needed according to the number,name,phone,email,
+ //then uses the max of them
+ int nameCount = (strName != null && !strName.equals("")) ? 1 : 0;
+ int groupNumCount = (arrayNumber.size() % numEntitySize) != 0 ? (arrayNumber
+ .size() / numEntitySize + 1) : (arrayNumber.size() / numEntitySize);
+ int groupEmailCount = emailCountInSimContact == 0 ? 0
+ : ((arrayEmail.size() % emailCountInSimContact) != 0 ? (arrayEmail
+ .size() / emailCountInSimContact + 1)
+ : (arrayEmail.size() / emailCountInSimContact));
+
+ int groupCount = Math.max(groupEmailCount, Math.max(nameCount, groupNumCount));
+
+ ArrayList<UsimEntity> results = new ArrayList<UsimEntity>();
+ for (int i = 0; i < groupCount; i++) {
+ results.add(new UsimEntity());
+ }
+
+ UsimEntity value;
+ //get the phone number for each ADN from arrayNumber,put them in UsimEntity
+ for (int i = 0; i < groupNumCount; i++) {
+ value = results.get(i);
+ ArrayList<String> numberItem = new ArrayList<String>();
+ for (int j = 0; j < numEntitySize; j++) {
+ if ((i * numEntitySize + j) < arrayNumber.size()) {
+ numberItem.add(arrayNumber.get(i * numEntitySize + j));
+ }
+ }
+ value.putNumberList(numberItem);
+ }
+
+ for (int i = 0; i < groupEmailCount; i++) {
+ value = results.get(i);
+ ArrayList<String> emailItem = new ArrayList<String>();
+ for (int j = 0; j < emailCountInSimContact; j++) {
+ if ((i * emailCountInSimContact + j) < arrayEmail.size()) {
+ emailItem.add(arrayEmail.get(i * emailCountInSimContact + j));
+ }
+ }
+ value.putEmailList(emailItem);
+ }
+
+ ArrayList<String> emptyList = new ArrayList<String>();
+ Uri itemUri = null;
+ if (totalEmptyEmail < 0 && MoreContactUtils.canSaveEmail(sub)) {
+ Message e_msg = Message.obtain();
+ e_msg.what = MSG_NO_EMPTY_EMAIL;
+ mHandler.sendMessage(e_msg);
+ }
+
+ //get phone number from UsimEntity,then insert to SIM card
+ for (int i = 0; i < groupCount; i++) {
+ value = results.get(i);
+ if (value.containsNumber()) {
+ arrayNumber = (ArrayList<String>) value.getNumberList();
+ } else {
+ arrayNumber = emptyList;
+ }
+
+ if (value.containsEmail()) {
+ arrayEmail = (ArrayList<String>) value.getEmailList();
+ } else {
+ arrayEmail = emptyList;
+ }
+ String strNum = arrayNumber.size() > 0 ? arrayNumber.get(0) : null;
+ StringBuilder strAnrNum = new StringBuilder();
+ for (int j = 1; j < arrayNumber.size(); j++) {
+ String s = arrayNumber.get(j);
+ if (s.length() > MoreContactUtils.MAX_LENGTH_NUMBER_IN_SIM) {
+ s = s.substring(
+ 0, MoreContactUtils.MAX_LENGTH_NUMBER_IN_SIM);
+ }
+ strAnrNum.append(s);
+ strAnrNum.append(SimContactsConstants.ANR_SEP);
+ }
+ StringBuilder strEmail = new StringBuilder();
+ for (int j = 0; j < arrayEmail.size(); j++) {
+ String s = arrayEmail.get(j);
+ if (s.length() > MoreContactUtils.MAX_LENGTH_EMAIL_IN_SIM) {
+ s = s.substring(
+ 0, MoreContactUtils.MAX_LENGTH_EMAIL_IN_SIM);
+ }
+ strEmail.append(s);
+ strEmail.append(SimContactsConstants.EMAIL_SEP);
+ }
+ itemUri = MoreContactUtils.insertToCard(QuickContactActivity.this, strName,
+ strNum, strEmail.toString(), strAnrNum.toString(), sub);
+ }
+ if (itemUri != null) {
+ msg.what = MSG_COPY_DONE;
+ mHandler.sendMessage(msg);
+ } else {
+ msg.what = MSG_COPY_FAILURE;
+ mHandler.sendMessage(msg);
+ }
+ }
+ }
+ }).start();
+ }
+
+ private boolean simIsReady(int sub) {
+ if (TelephonyManager.getDefault().getSimState(sub)
+ == TelephonyManager.SIM_STATE_READY)
+ return true;
+ return false;
+ }
}
diff --git a/src/com/android/contacts/util/ImageViewDrawableSetter.java b/src/com/android/contacts/util/ImageViewDrawableSetter.java
index 6147c3975..1ca82124e 100644
--- a/src/com/android/contacts/util/ImageViewDrawableSetter.java
+++ b/src/com/android/contacts/util/ImageViewDrawableSetter.java
@@ -16,6 +16,8 @@
package com.android.contacts.util;
+import android.accounts.Account;
+import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -30,6 +32,7 @@ import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.contacts.common.model.Contact;
+import com.android.contacts.common.model.RawContact;
import java.util.Arrays;
@@ -53,9 +56,17 @@ public class ImageViewDrawableSetter {
}
public Bitmap setupContactPhoto(Contact contactData, ImageView photoView) {
+ Account account = null;
mContact = contactData;
setTarget(photoView);
- return setCompressedImage(contactData.getPhotoBinaryData());
+ RawContact rawContact = contactData.getRawContacts().get(0);
+ final String accountType = rawContact.getAccountTypeString();
+ final String accountName = rawContact.getAccountName();
+ if (!TextUtils.isEmpty(accountType) && !TextUtils.isEmpty(accountName)) {
+ account = new Account(accountName, accountType);
+ }
+ return setCompressedImage(contactData.getPhotoBinaryData(),
+ photoView.getContext(), account);
}
public void setTransitionDuration(int durationInMillis) {
@@ -83,7 +94,7 @@ public class ImageViewDrawableSetter {
return mCompressed;
}
- protected Bitmap setCompressedImage(byte[] compressed) {
+ protected Bitmap setCompressedImage(byte[] compressed, Context c, Account account) {
if (mPreviousDrawable == null) {
// If we don't already have a drawable, skip the exit-early test
// below; otherwise we might not end up setting the default image.
@@ -97,10 +108,9 @@ public class ImageViewDrawableSetter {
return previousBitmap();
}
- Drawable newDrawable = decodedBitmapDrawable(compressed);
- if (newDrawable == null) {
- newDrawable = defaultDrawable();
- }
+ final Drawable newDrawable = (compressed == null)
+ ? defaultDrawable(c,account)
+ : decodedBitmapDrawable(compressed);
// Remember this for next time, so that we can check if it changed.
mCompressed = compressed;
@@ -140,7 +150,7 @@ public class ImageViewDrawableSetter {
* retrieve a default drawable for this contact. If not, then use the name as the contact
* identifier instead.
*/
- private Drawable defaultDrawable() {
+ private Drawable defaultDrawable(Context c, Account account) {
Resources resources = mTarget.getResources();
DefaultImageRequest request;
int contactType = ContactPhotoManager.TYPE_DEFAULT;
@@ -156,7 +166,8 @@ public class ImageViewDrawableSetter {
request = new DefaultImageRequest(mContact.getDisplayName(), mContact.getLookupKey(),
contactType, false /* isCircular */);
}
- return ContactPhotoManager.getDefaultAvatarDrawableForContact(resources, true, request);
+ return ContactPhotoManager.getDefaultAvatarDrawableForContact(
+ c, resources, true, request, account);
}
private BitmapDrawable decodedBitmapDrawable(byte[] compressed) {
diff --git a/src/com/android/contacts/widget/MultiShrinkScroller.java b/src/com/android/contacts/widget/MultiShrinkScroller.java
index 7c46a86c9..80d69d363 100644
--- a/src/com/android/contacts/widget/MultiShrinkScroller.java
+++ b/src/com/android/contacts/widget/MultiShrinkScroller.java
@@ -20,7 +20,9 @@ import android.graphics.ColorMatrixColorFilter;
import android.graphics.drawable.GradientDrawable;
import android.hardware.display.DisplayManager;
import android.os.Trace;
+import android.text.TextUtils;
import android.util.AttributeSet;
+import android.util.Log;
import android.util.TypedValue;
import android.view.Display;
import android.view.Gravity;
@@ -108,6 +110,9 @@ public class MultiShrinkScroller extends FrameLayout {
private View mTransparentView;
private MultiShrinkScrollerListener mListener;
private TextView mLargeTextView;
+ private TextView mAttributionTextView;
+ private TextView mSpamCountTextView;
+ private View mContactInfo;
private View mPhotoTouchInterceptOverlay;
/** Contains desired size & vertical offset of the title, once the header is fully compressed */
private TextView mInvisiblePlaceholderTextView;
@@ -130,6 +135,7 @@ public class MultiShrinkScroller extends FrameLayout {
*/
private boolean mIsOpenContactSquare;
private int mMaximumHeaderTextSize;
+ private int mMaximumHeaderInfoSize;
private int mCollapsedTitleBottomMargin;
private int mCollapsedTitleStartMargin;
private int mMinimumPortraitHeaderHeight;
@@ -176,7 +182,7 @@ public class MultiShrinkScroller extends FrameLayout {
};
private final PathInterpolator mTextSizePathInterpolator
- = new PathInterpolator(0.16f, 0.4f, 0.2f, 1);
+ = new PathInterpolator(0.19f, 0.0f, 0.2f, 1);
private final int[] mGradientColors = new int[] {0,0x88000000};
private GradientDrawable mTitleGradientDrawable = new GradientDrawable(
@@ -288,7 +294,10 @@ public class MultiShrinkScroller extends FrameLayout {
mToolbar = findViewById(R.id.toolbar_parent);
mPhotoViewContainer = findViewById(R.id.toolbar_parent);
mTransparentView = findViewById(R.id.transparent_view);
+ mContactInfo = findViewById(R.id.contact_info);
mLargeTextView = (TextView) findViewById(R.id.large_title);
+ mAttributionTextView = (TextView) findViewById(R.id.contact_info_attribution);
+ mSpamCountTextView = (TextView) findViewById(R.id.contact_spam_count);
mInvisiblePlaceholderTextView = (TextView) findViewById(R.id.placeholder_textview);
mStartColumn = findViewById(R.id.empty_start_column);
// Touching the empty space should close the card
@@ -340,6 +349,7 @@ public class MultiShrinkScroller extends FrameLayout {
: mPhotoViewContainer.getWidth();
setHeaderHeight(getMaximumScrollableHeaderHeight());
mMaximumHeaderTextSize = mLargeTextView.getHeight();
+ mMaximumHeaderInfoSize = mContactInfo.getHeight();
if (mIsTwoPanel) {
mMaximumHeaderHeight = getHeight();
mMinimumHeaderHeight = mMaximumHeaderHeight;
@@ -353,8 +363,8 @@ public class MultiShrinkScroller extends FrameLayout {
mPhotoViewContainer.setLayoutParams(photoLayoutParams);
// Permanently set title width and margin.
- final FrameLayout.LayoutParams largeTextLayoutParams
- = (FrameLayout.LayoutParams) mLargeTextView.getLayoutParams();
+ final LinearLayout.LayoutParams largeTextLayoutParams
+ = (LinearLayout.LayoutParams) mLargeTextView.getLayoutParams();
largeTextLayoutParams.width = photoLayoutParams.width -
largeTextLayoutParams.leftMargin - largeTextLayoutParams.rightMargin;
largeTextLayoutParams.gravity = Gravity.BOTTOM | Gravity.START;
@@ -382,8 +392,8 @@ public class MultiShrinkScroller extends FrameLayout {
= (FrameLayout.LayoutParams) mTitleGradientView.getLayoutParams();
final float TITLE_GRADIENT_SIZE_COEFFICIENT = 1.25f;
final FrameLayout.LayoutParams largeTextLayoutParms
- = (FrameLayout.LayoutParams) mLargeTextView.getLayoutParams();
- titleGradientLayoutParams.height = (int) ((mLargeTextView.getHeight()
+ = (FrameLayout.LayoutParams) mContactInfo.getLayoutParams();
+ titleGradientLayoutParams.height = (int) ((mContactInfo.getHeight()
+ largeTextLayoutParms.bottomMargin) * TITLE_GRADIENT_SIZE_COEFFICIENT);
mTitleGradientView.setLayoutParams(titleGradientLayoutParams);
}
@@ -393,6 +403,24 @@ public class MultiShrinkScroller extends FrameLayout {
mPhotoTouchInterceptOverlay.setContentDescription(title);
}
+ public void setAttributionText(String attribution) {
+ if (!TextUtils.isEmpty(attribution)) {
+ mAttributionTextView.setText(attribution);
+ mAttributionTextView.setVisibility(View.VISIBLE);
+ } else {
+ mAttributionTextView.setVisibility(View.GONE);
+ }
+ }
+
+ public void setSpamCountText(String spamCount) {
+ if (!TextUtils.isEmpty(spamCount)) {
+ mSpamCountTextView.setText(spamCount);
+ mSpamCountTextView.setVisibility(View.VISIBLE);
+ } else {
+ mSpamCountTextView.setVisibility(View.GONE);
+ }
+ }
+
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (mVelocityTracker == null) {
@@ -997,7 +1025,7 @@ public class MultiShrinkScroller extends FrameLayout {
} else {
mLargeTextView.setPivotX(0);
}
- mLargeTextView.setPivotY(mLargeTextView.getHeight() / 2);
+ mLargeTextView.setPivotY(mContactInfo.getHeight() / 2);
final int toolbarHeight = mToolbar.getLayoutParams().height;
mPhotoTouchInterceptOverlay.setClickable(toolbarHeight != mMaximumHeaderHeight);
@@ -1009,7 +1037,7 @@ public class MultiShrinkScroller extends FrameLayout {
setInterpolatedTitleMargins(1);
return;
}
-
+ mMaximumHeaderInfoSize = mContactInfo.getHeight();
final float ratio = (toolbarHeight - mMinimumHeaderHeight)
/ (float)(mMaximumHeaderHeight - mMinimumHeaderHeight);
final float minimumSize = mInvisiblePlaceholderTextView.getHeight();
@@ -1019,8 +1047,8 @@ public class MultiShrinkScroller extends FrameLayout {
// Clamp to reasonable/finite values before passing into framework. The values
// can be wacky before the first pre-render.
- bezierOutput = (float) Math.min(bezierOutput, 1.0f);
- scale = (float) Math.min(scale, 1.0f);
+ bezierOutput = Math.min(bezierOutput, 1.0f);
+ scale = Math.min(scale, 1.0f);
mLargeTextView.setScaleX(scale);
mLargeTextView.setScaleY(scale);
@@ -1051,7 +1079,7 @@ public class MultiShrinkScroller extends FrameLayout {
*/
private void setInterpolatedTitleMargins(float x) {
final FrameLayout.LayoutParams titleLayoutParams
- = (FrameLayout.LayoutParams) mLargeTextView.getLayoutParams();
+ = (FrameLayout.LayoutParams) mContactInfo.getLayoutParams();
final LinearLayout.LayoutParams toolbarLayoutParams
= (LinearLayout.LayoutParams) mToolbar.getLayoutParams();
@@ -1067,11 +1095,12 @@ public class MultiShrinkScroller extends FrameLayout {
// calling mLargeTextView.getHeight() use the mMaximumHeaderTextSize for this calculation.
// The getHeight() value acts unexpectedly when mLargeTextView is partially clipped by
// its parent.
- titleLayoutParams.topMargin = getTransparentViewHeight()
- + toolbarLayoutParams.height - pretendBottomMargin
- - mMaximumHeaderTextSize;
+ final int minHeaderInfoTopMargin = getTransparentViewHeight()
+ + toolbarLayoutParams.height - pretendBottomMargin - mMaximumHeaderInfoSize;
+ final int topMargin = Math.max(minHeaderInfoTopMargin, 0);
+ titleLayoutParams.topMargin = topMargin;
titleLayoutParams.bottomMargin = 0;
- mLargeTextView.setLayoutParams(titleLayoutParams);
+ mContactInfo.setLayoutParams(titleLayoutParams);
}
private void updatePhotoTintAndDropShadow() {
@@ -1148,7 +1177,11 @@ public class MultiShrinkScroller extends FrameLayout {
mPhotoView.setTint(mHeaderTintColor);
mTitleGradientDrawable.setAlpha(gradientAlpha);
mActionBarGradientDrawable.setAlpha(gradientAlpha);
-
+ final int attributionAlpha = calculateAttributionTextAlpha(toolbarHeight);
+ mAttributionTextView
+ .setTextColor(mAttributionTextView.getTextColors().withAlpha(attributionAlpha));
+ mSpamCountTextView
+ .setTextColor(mSpamCountTextView.getTextColors().withAlpha(attributionAlpha));
Trace.endSection();
}
@@ -1167,6 +1200,16 @@ public class MultiShrinkScroller extends FrameLayout {
return (intermediateHeight - height) / interpolatingHeightRange;
}
+ private int calculateAttributionTextAlpha(int height) {
+ final float ratio = calculateHeightRatioToBlendingStartHeight(height);
+ final float alpha = 1.0f - (float) Math.min(Math.pow(ratio, 1.5f) * 2f, 1f);
+ final float tint = (float) Math.min(Math.pow(ratio, 1.5f) * 3f, 1f);
+ mColorMatrix.setSaturation(alpha);
+ mColorMatrix.postConcat(alphaMatrix(alpha, Color.WHITE));
+ mColorMatrix.postConcat(multiplyBlendMatrix(mHeaderTintColor, tint));
+ return (int) (255 * alpha);
+ }
+
/**
* Simulates alpha blending an image with {@param color}.
*/