diff options
139 files changed, 6989 insertions, 402 deletions
diff --git a/Android.mk b/Android.mk index 1f98b76d8..b4f2e69e1 100644 --- a/Android.mk +++ b/Android.mk @@ -23,7 +23,9 @@ include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional -LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 +LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 \ + android-support-v7-recyclerview \ + guava LOCAL_SRC_FILES := $(call all-java-files-under, src) \ $(call all-java-files-under, WallpaperPicker/src) \ diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 4965c0c8e..e60ae5865 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -82,7 +82,7 @@ android:backupAgent="com.android.launcher3.LauncherBackupAgentHelper" android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher_home" - android:label="@string/application_name" + android:label="@string/cm_application_name" android:largeHeap="@bool/config_largeHeap" android:restoreAnyVersion="true" android:supportsRtl="true" > diff --git a/res/drawable-nodpi/letter_indicator.9.png b/res/drawable-nodpi/letter_indicator.9.png Binary files differnew file mode 100644 index 000000000..af3578ece --- /dev/null +++ b/res/drawable-nodpi/letter_indicator.9.png diff --git a/res/drawable/empty_seek_bar.xml b/res/drawable/empty_seek_bar.xml new file mode 100644 index 000000000..e3cf61d64 --- /dev/null +++ b/res/drawable/empty_seek_bar.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. +--> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <solid android:color="#00000000"/> +</shape>
\ No newline at end of file diff --git a/res/drawable/scrubber_back.xml b/res/drawable/scrubber_back.xml new file mode 100644 index 000000000..c5022dec5 --- /dev/null +++ b/res/drawable/scrubber_back.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. +--> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <solid android:color="@color/scrubber_background"/> +</shape> diff --git a/res/drawable/seek_back.xml b/res/drawable/seek_back.xml new file mode 100644 index 000000000..d97a870ea --- /dev/null +++ b/res/drawable/seek_back.xml @@ -0,0 +1,30 @@ +<?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. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="360dp" + android:height="48dp" + android:viewportWidth="360" + android:viewportHeight="48"> + + <path + android:strokeColor="#FFFFFF" + android:strokeWidth="2" + android:strokeMiterLimit="10" + android:strokeLineCap="round" + android:pathData="M16,24h328" /> +</vector>
\ No newline at end of file diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml index 8cd867366..4c097ba0a 100644 --- a/res/layout-land/launcher.xml +++ b/res/layout-land/launcher.xml @@ -62,5 +62,11 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="invisible" /> + + <include layout="@layout/app_drawer_container" + android:id="@+id/app_drawer_container" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone" /> </com.android.launcher3.DragLayer> </FrameLayout> diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml index ad1027829..e193e4820 100644 --- a/res/layout-port/launcher.xml +++ b/res/layout-port/launcher.xml @@ -83,5 +83,10 @@ android:id="@+id/overview_panel" android:visibility="gone" /> + <include layout="@layout/app_drawer_container" + android:id="@+id/app_drawer_container" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone" /> </com.android.launcher3.DragLayer> </FrameLayout> diff --git a/res/layout-sw720dp/launcher.xml b/res/layout-sw720dp/launcher.xml index 62615411f..772110527 100644 --- a/res/layout-sw720dp/launcher.xml +++ b/res/layout-sw720dp/launcher.xml @@ -81,5 +81,11 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="invisible" /> + + <include layout="@layout/app_drawer_container" + android:id="@+id/app_drawer_container" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone" /> </com.android.launcher3.DragLayer> </FrameLayout> diff --git a/res/layout/app_drawer_container.xml b/res/layout/app_drawer_container.xml new file mode 100644 index 000000000..f5db08ce1 --- /dev/null +++ b/res/layout/app_drawer_container.xml @@ -0,0 +1,83 @@ +<?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. +--> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"> + <FrameLayout + android:id="@+id/fake_page_container" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipChildren="false" + android:clipToPadding="false"> + <FrameLayout + android:id="@+id/fake_page" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="invisible" + android:clipToPadding="false" /> + </FrameLayout> + <FrameLayout + android:id="@+id/app_drawer_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipChildren="false" + android:clipToPadding="false"> + <android.support.v7.widget.RecyclerView + android:id="@+id/app_drawer_recyclerview" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipToPadding="false" + android:paddingBottom="@dimen/scrubber_height" + android:overScrollMode="never"/> + </FrameLayout> + + <RelativeLayout + android:id="@+id/scrubber_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:clipToPadding="false"> + <FrameLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:layout_below="@+id/scrubberIndicator" + android:background="@drawable/scrubber_back" + android:clipToPadding="false"> + + <com.android.launcher3.AppDrawerScrubber + android:id="@+id/app_drawer_scrubber" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clickable="true" + android:layout_gravity="bottom"/> + </FrameLayout> + + <TextView + android:id="@+id/scrubberIndicator" + android:background="@drawable/letter_indicator" + android:layout_width="80dp" + android:textSize="30sp" + android:gravity="center" + android:textColor="@android:color/white" + android:clickable="false" + android:layout_marginBottom="-20dp" + android:visibility="invisible" + android:layout_height="100dp" /> + </RelativeLayout> +</FrameLayout>
\ No newline at end of file diff --git a/res/layout/app_drawer_item.xml b/res/layout/app_drawer_item.xml new file mode 100644 index 000000000..08043eb1f --- /dev/null +++ b/res/layout/app_drawer_item.xml @@ -0,0 +1,47 @@ +<?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. +--> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:autofit="http://schemas.android.com/apk/res-auto" + android:orientation="vertical" + android:splitMotionEvents="false" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + <LinearLayout + android:layout_marginTop="10dp" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" > + <com.android.launcher3.AutoFitTextView + android:id="@+id/drawer_item_title" + android:layout_width="30dp" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:includeFontPadding="false" + android:gravity="start|top" + android:singleLine="true" + autofit:minTextSize="8sp" + android:textSize="24sp" + android:layout_gravity="center" + android:fontFamily="sans-serif-light" + android:textColor="@android:color/white"/> + <LinearLayout + android:id="@+id/drawer_item_flow" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" /> + </LinearLayout> +</LinearLayout> diff --git a/res/layout/drawer_icon.xml b/res/layout/drawer_icon.xml new file mode 100644 index 000000000..6c804f17c --- /dev/null +++ b/res/layout/drawer_icon.xml @@ -0,0 +1,38 @@ +<?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. +--> +<com.android.launcher3.AppDrawerIconView + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="wrap_content" + android:paddingLeft="@dimen/vertical_app_drawer_icon_padding" + android:paddingRight="@dimen/vertical_app_drawer_icon_padding" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/image" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center"/> + + <TextView + android:id="@+id/label" + style="@style/WorkspaceIcon" + android:shadowRadius="0" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + +</com.android.launcher3.AppDrawerIconView> diff --git a/res/layout/scrub_layout.xml b/res/layout/scrub_layout.xml new file mode 100644 index 000000000..90a9d094d --- /dev/null +++ b/res/layout/scrub_layout.xml @@ -0,0 +1,44 @@ +<?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. +--> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/app_drawer_scrubber_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/seek_back" + android:layout_alignParentBottom="true"> + + <LinearLayout + android:clickable="true" + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_marginLeft="20dp" + android:layout_marginRight="20dp" + android:layout_height="@dimen/scrubber_height"> + + <SeekBar + android:id="@+id/scrubber" + android:paddingLeft="0dp" + android:paddingRight="0dp" + android:thumb="@android:color/transparent" + android:progressDrawable="@drawable/empty_seek_bar" + android:layout_width="match_parent" + android:layout_gravity="center" + android:layout_height="match_parent" /> + + </LinearLayout> + +</RelativeLayout> diff --git a/res/mipmap-hdpi/ic_launcher_application.png b/res/mipmap-hdpi/ic_launcher_application.png Binary files differindex b9aa101ad..cde69bccc 100644 --- a/res/mipmap-hdpi/ic_launcher_application.png +++ b/res/mipmap-hdpi/ic_launcher_application.png diff --git a/res/mipmap-hdpi/ic_launcher_home.png b/res/mipmap-hdpi/ic_launcher_home.png Binary files differindex b556d7aba..dc40251c2 100644 --- a/res/mipmap-hdpi/ic_launcher_home.png +++ b/res/mipmap-hdpi/ic_launcher_home.png diff --git a/res/mipmap-mdpi/ic_launcher_application.png b/res/mipmap-mdpi/ic_launcher_application.png Binary files differindex 4771b855f..c133a0cbd 100644 --- a/res/mipmap-mdpi/ic_launcher_application.png +++ b/res/mipmap-mdpi/ic_launcher_application.png diff --git a/res/mipmap-mdpi/ic_launcher_home.png b/res/mipmap-mdpi/ic_launcher_home.png Binary files differindex 961bb7dbd..e2625e431 100644 --- a/res/mipmap-mdpi/ic_launcher_home.png +++ b/res/mipmap-mdpi/ic_launcher_home.png diff --git a/res/mipmap-xhdpi/ic_launcher_application.png b/res/mipmap-xhdpi/ic_launcher_application.png Binary files differindex 932f0f791..bfa42f0e7 100644 --- a/res/mipmap-xhdpi/ic_launcher_application.png +++ b/res/mipmap-xhdpi/ic_launcher_application.png diff --git a/res/mipmap-xhdpi/ic_launcher_home.png b/res/mipmap-xhdpi/ic_launcher_home.png Binary files differindex 46ec2b775..70e72523c 100644 --- a/res/mipmap-xhdpi/ic_launcher_home.png +++ b/res/mipmap-xhdpi/ic_launcher_home.png diff --git a/res/mipmap-xxhdpi/ic_launcher_application.png b/res/mipmap-xxhdpi/ic_launcher_application.png Binary files differindex 7fc739aaf..324e72cdd 100644 --- a/res/mipmap-xxhdpi/ic_launcher_application.png +++ b/res/mipmap-xxhdpi/ic_launcher_application.png diff --git a/res/mipmap-xxhdpi/ic_launcher_home.png b/res/mipmap-xxhdpi/ic_launcher_home.png Binary files differindex d2975a39f..9652a687f 100644 --- a/res/mipmap-xxhdpi/ic_launcher_home.png +++ b/res/mipmap-xxhdpi/ic_launcher_home.png diff --git a/res/mipmap-xxxhdpi/ic_launcher_application.png b/res/mipmap-xxxhdpi/ic_launcher_application.png Binary files differnew file mode 100644 index 000000000..324e72cdd --- /dev/null +++ b/res/mipmap-xxxhdpi/ic_launcher_application.png diff --git a/res/mipmap-xxxhdpi/ic_launcher_home.png b/res/mipmap-xxxhdpi/ic_launcher_home.png Binary files differnew file mode 100644 index 000000000..652593d3f --- /dev/null +++ b/res/mipmap-xxxhdpi/ic_launcher_home.png diff --git a/res/values-af/cm_arrays.xml b/res/values-af/cm_arrays.xml new file mode 100644 index 000000000..4f3440029 --- /dev/null +++ b/res/values-af/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Geen</item> + <item>Vergroot</item> + <item>Verklein</item> + <item>Roteer op</item> + <item>Roteer af</item> + <item>Blokkie in</item> + <item>Blokkie uit</item> + <item>Stapel</item> + <item>Trek klavier</item> + <item>Spieël</item> + <item>Silinder in</item> + <item>Silinder uit</item> + <item>Rondomtalie</item> + <item>Oorsig</item> + </string-array> +</resources> diff --git a/res/values-af/cm_strings.xml b/res/values-af/cm_strings.xml new file mode 100644 index 000000000..44d557399 --- /dev/null +++ b/res/values-af/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">TUIS SKERM INSTELLINGS</string> + <string name="drawer_settings">LAAI INSTELLINGS</string> + <string name="app_settings">PROGRAM INSTELLINGS</string> + <string name="setting_state_on">AAN</string> + <string name="setting_state_off">AF</string> + <string name="themes_button_text">Temas</string> + <string name="scrolling_page_outlines">Bladsy buitelyne</string> + <string name="scrolling_fade_adjacent">Vervaag kant bladsye</string> + <string name="scrolling_wallpaper">Rol agtergrond</string> + <string name="grid_size_text">Rooster grootte</string> + <string name="grid_size_comfortable">Gemaklik</string> + <string name="grid_size_cozy">Snoesig</string> + <string name="grid_size_condensed">Verkorte</string> + <string name="grid_size_custom">Persoonlik (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Kies persoonlike grootte</string> + <string name="scroll_effect_text">Rol effek</string> + <string name="drawer_sorting_text">Sorteer metode</string> + <string name="sort_mode_title">Titel</string> + <string name="sort_mode_launch_count">Begin telling</string> + <string name="sort_mode_install_time">Iinstalleer tyd</string> + <string name="home_screen_search_text">Soekbalk</string> + <string name="larger_icons_text">Groter ikone</string> + <string name="icon_labels">Ikoon etikette</string> + <string name="icon_labels_show">Vertoon</string> + <string name="icon_labels_hide">Wegsteek</string> + <string name="protected_app_settings">Beskermde programme</string> + <string name="dialog_confirm">Bevestig</string> +</resources> diff --git a/res/values-ar/cm_arrays.xml b/res/values-ar/cm_arrays.xml new file mode 100644 index 000000000..01a5ec0e2 --- /dev/null +++ b/res/values-ar/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>لا شيء</item> + <item>تكبير</item> + <item>تصغير</item> + <item>تدوير للأعلى</item> + <item>تدوير للأسفل</item> + <item>مكعب لداخل</item> + <item>مكعب للخارج</item> + <item>جميع</item> + <item>Accordion</item> + <item>لف</item> + <item>اسطوانة لداخل</item> + <item>اسطوانة للخارج</item> + <item>دائري</item> + <item>نظرة عامّة</item> + </string-array> +</resources> diff --git a/res/values-ar/cm_strings.xml b/res/values-ar/cm_strings.xml new file mode 100644 index 000000000..637e159c3 --- /dev/null +++ b/res/values-ar/cm_strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">إعدادات الشاشة الرئيسية</string> + <string name="drawer_settings">إعدادات الفراغ</string> + <string name="app_settings">إعدادات التطبيق</string> + <string name="setting_state_on">يعمل</string> + <string name="setting_state_off">لايعمل</string> + <string name="themes_button_text">المواضيع</string> + <string name="scrolling_page_outlines">الخطوط العريضة لي الصفحة</string> + <string name="scrolling_fade_adjacent">تتلاشى الصفحات الجانبية</string> + <string name="scrolling_wallpaper">تمرير الخلفية</string> + <string name="grid_size_text">حجم الشبكة</string> + <string name="grid_size_comfortable">مريحة</string> + <string name="grid_size_cozy">مريح</string> + <string name="grid_size_condensed">مكثف</string> + <string name="preferences_interface_homescreen_custom">حدد حجم مخصص</string> + <string name="scroll_effect_text">تأثير التمرير</string> + <string name="drawer_sorting_text">وضع الفرز</string> + <string name="sort_mode_title">العنوان</string> + <string name="sort_mode_launch_count">عداد الإنطلاق</string> + <string name="sort_mode_install_time">وقت التثبيت</string> + <string name="home_screen_search_text">شريط البحث</string> + <string name="larger_icons_text">أيقونات كبيرة</string> + <string name="icon_labels">تسميات الرمز</string> + <string name="icon_labels_show">إظهار</string> + <string name="icon_labels_hide">إخفاء</string> + <string name="protected_app_settings">التطبيقات المحمية</string> + <string name="dialog_confirm">تأكيد</string> +</resources> diff --git a/res/values-ast-rES/cm_arrays.xml b/res/values-ast-rES/cm_arrays.xml new file mode 100644 index 000000000..85ecc70f1 --- /dev/null +++ b/res/values-ast-rES/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Nengún</item> + <item>Acercar</item> + <item>Allonxar</item> + <item>Xirar arriba</item> + <item>Xirar abaxo</item> + <item>Cúbicu entrante</item> + <item>Cúbicu saliente</item> + <item>Empilar</item> + <item>Acordión</item> + <item>Voltiar</item> + <item>Cilíndricu entrante</item> + <item>Cilíndricu saliente</item> + <item>Carrusel</item> + <item>Perspeutiva</item> + </string-array> +</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..7d8ccbd8e --- /dev/null +++ b/res/values-ast-rES/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">AXUSTES DE PANTALLA D\'ANICIU</string> + <string name="drawer_settings">AXUSTES DE LES APLICACIONES</string> + <string name="app_settings">AXUSTES D\'APLICACIÓN</string> + <string name="setting_state_on">SÍ</string> + <string name="setting_state_off">NON</string> + <string name="themes_button_text">Temes</string> + <string name="scrolling_page_outlines">Berbesos de pantalla</string> + <string name="scrolling_fade_adjacent">Efeutu de dilíu</string> + <string name="scrolling_wallpaper">Desplazar fondu</string> + <string name="grid_size_text">Tamañu del rexáu</string> + <string name="grid_size_comfortable">Confortable</string> + <string name="grid_size_cozy">Acoyedor</string> + <string name="grid_size_condensed">Condensáu</string> + <string name="grid_size_custom">Personalizar (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Esbilla\'l tamañu personalizáu</string> + <string name="scroll_effect_text">Efeutu de desplazamientu</string> + <string name="drawer_sorting_text">Mou d\'ordenación</string> + <string name="sort_mode_title">Títulu</string> + <string name="sort_mode_launch_count">Vegaes executáu</string> + <string name="sort_mode_install_time">Data d\'instalación</string> + <string name="home_screen_search_text">Barra de gueta</string> + <string name="larger_icons_text">Iconos grandes</string> + <string name="icon_labels">Etiquetes de los iconos</string> + <string name="icon_labels_show">Amosar</string> + <string name="icon_labels_hide">Anubrir</string> + <string name="protected_app_settings">Apps protexíes</string> + <string name="dialog_confirm">Confirmar</string> +</resources> diff --git a/res/values-ast-rES/strings.xml b/res/values-ast-rES/strings.xml new file mode 100644 index 000000000..cdae678a7 --- /dev/null +++ b/res/values-ast-rES/strings.xml @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +/* +* Copyright (C) 2008 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="application_name">Launcher3</string> + <string name="home">Aniciu</string> + <string name="uid_name">Aplicaciones básiques d\'Android</string> + <string name="activity_not_found">L\'aplicación nun ta instalada.</string> + <string name="safemode_shortcut_error">Descargar app deshabilitada en Mou Seguru</string> + <string name="widgets_tab_label">Widgets</string> + <string name="widget_adder">Widgets</string> + <string name="toggle_weight_watcher">Amosar memoria</string> + <string name="long_press_widget_to_add">Caltén primíu\'l widget que quieras esbillar.</string> + <string name="market">Tienda</string> + <string name="widget_dims_format">%1$d \u00d7 %2$d</string> + <string name="external_drop_widget_error">Fallu al arrastrar l\'elementu a la pantalla d\'aniciu.</string> + <string name="external_drop_widget_pick_title">Esbilla un widget p\'amestar</string> + <string name="rename_folder_label">Nome de carpeta</string> + <string name="rename_folder_title">Camudar nome de carpeta</string> + <string name="rename_action">Aceutar</string> + <string name="cancel_action">Encaboxar</string> + <string name="menu_item_add_item">Amestar a la pantalla d\'aniciu</string> + <string name="group_applications">Aplicaciones</string> + <string name="group_shortcuts">Accesos direutos</string> + <string name="group_widgets">Widgets</string> + <string name="completely_out_of_space">Nun queda espaciu nes pantalles d\'aniciu.</string> + <string name="out_of_space">Nun queda espaciu na pantalla d\'aniciu.</string> + <string name="hotseat_out_of_space">Nun queda espaciu na barra d\'accesos direutos</string> + <string name="invalid_hotseat_item">Esti widget ye abondo grande pa la barra d\'accesos direutos</string> + <string name="shortcut_installed">Creóse l\'accesu direutu \"<xliff:g id="NAME">%s</xliff:g>\".</string> + <string name="shortcut_uninstalled">Desanicióse l\'accesu direutu \"<xliff:g id="NAME">%s</xliff:g>\".</string> + <string name="shortcut_duplicate">L\'accesu direutu \"<xliff:g id="NAME">%s</xliff:g>\" yá esiste.</string> + <string name="title_select_shortcut">Esbilla un accesu direutu</string> + <string name="title_select_application">Esbilla una aplicación</string> + <string name="all_apps_button_label">Aplicaciones</string> + <string name="all_apps_home_button_label">Aniciu</string> + <string name="delete_zone_label_workspace">Desaniciar</string> + <string name="delete_zone_label_all_apps">Desinstalar</string> + <string name="delete_target_label">Desaniciar</string> + <string name="delete_target_uninstall_label">Desinstalar</string> + <string name="info_target_label">Información de l\'aplicación</string> + <string name="accessibility_search_button">Guetar</string> + <string name="accessibility_voice_search_button">Gueta por voz</string> + <string name="accessibility_all_apps_button">Aplicaciones</string> + <string name="accessibility_delete_button">Desaniciar</string> + <string name="delete_zone_label_all_apps_system_app">Desinstalar anovamientu</string> + <string name="cab_menu_delete_app">Desinstalar aplicación</string> + <string name="cab_menu_app_info">Información de l\'aplicación</string> + <string name="cab_app_selection_text">1 aplicación esbillada</string> + <string name="cab_widget_selection_text">1 widget esbilláu</string> + <string name="cab_folder_selection_text">1 carpeta esbillada</string> + <string name="cab_shortcut_selection_text">1 accesu direutu esbilláu</string> + <string name="permlab_install_shortcut">instalar accesos direutos</string> + <string name="permdesc_install_shortcut">Permite qu\'una aplicación amieste accesos direutos ensin intervención del usuariu.</string> + <string name="permlab_uninstall_shortcut">desinstalar accesos direutos</string> + <string name="permdesc_uninstall_shortcut">Permite que l\'aplicación desanicie + accesos direutos ensin intervención del usuariu.</string> + <string name="permlab_read_settings">lleer información d\'accesos direutos y d\'axustes</string> + <string name="permdesc_read_settings">Permite que l\'aplicación consulte los axustes y + los accesos direutos de la pantalla d\'aniciu.</string> + <string name="permlab_write_settings">escribir información d\'atayos y d\'axustes de la pantalla d\'aniciu</string> + <string name="permdesc_write_settings">Permite que les aplicaciones camuden los axustes y los accesos direutos de la pantalla d\'aniciu.</string> + <string name="gadget_error_text">Fallu al cargar el widget</string> + <string name="gadget_setup_text">Configuración</string> + <string name="uninstall_system_app_text">Esta aplicación ye del sistema y nun pue desinstalase.</string> + <string name="dream_name">Rocket Launcher</string> + <string name="folder_hint_text">Carpeta ensin nome</string> + <string name="workspace_description_format">Pantalla d\'aniciu %1$d</string> + <string name="default_scroll_format">Páxina %1$d de %2$d</string> + <string name="workspace_scroll_format">Pantalla d\'aniciu %1$d de %2$d</string> + <string name="apps_customize_apps_scroll_format">Páxina d\'aplicaciones %1$d de %2$d</string> + <string name="apps_customize_widgets_scroll_format">Páxina de widgets %1$d de %2$d</string> + <string name="first_run_cling_title">Dámoste l\'acoyida</string> + <string name="first_run_cling_description">Personaliza la to pantalla d\'aniciu.</string> + <string name="first_run_cling_create_screens_hint">Crea más pantalles p\'aplicaciones y carpetes</string> + <string name="migration_cling_title">Copia los tos iconos d\'aplicación</string> + <string name="migration_cling_description">¿Importar los iconos y carpetes de les tos pantalles d\'aniciu vieyes?</string> + <string name="migration_cling_copy_apps">COPIAR ICONOS</string> + <string name="migration_cling_use_default">ANICIAR REFRESCU</string> + <string name="workspace_cling_title">Organiza\'l to espaciu</string> + <string name="workspace_cling_move_item">Caltén primíu\'l fondu p\'alministrar el fondu pantalla, los widgets y los axustes.</string> + <string name="workspace_cling_longpress_title">Fondos pantalla, widgets, & axustes</string> + <string name="workspace_cling_longpress_description">Toca y caltén fondu pa personalizar</string> + <string name="workspace_cling_longpress_dismiss">FECHO</string> + <string name="folder_cling_title">Esto ye una carpeta</string> + <string name="folder_cling_create_folder">Pa crear una carpeta como esta, caltén primida una aplicación y muévila sobre otra.</string> + <string name="cling_dismiss">Aceutar</string> + <string name="dummy_custom_cling_error_message">Error: custom workspace layout passed in but custom cling was not overwritten</string> + <string name="folder_opened">Carpeta abierta, <xliff:g id="WIDTH">%1$d</xliff:g> por <xliff:g id="HEIGHT">%2$d</xliff:g></string> + <string name="folder_tap_to_close">Primi pa zarrar la carpeta</string> + <string name="folder_tap_to_rename">Primi pa camudar el nome nuevu</string> + <string name="folder_closed">Carpeta zarrada</string> + <string name="folder_renamed">Camudóse\'l nome la carpeta a <xliff:g id="NAME">%1$s</xliff:g></string> + <string name="folder_name_format">Carpeta: <xliff:g id="NAME">%1$s</xliff:g></string> + <string name="debug_memory_activity">* HPROF</string> + <string name="widget_button_text">Widgets</string> + <string name="wallpaper_button_text">Fondos de pantalla</string> + <string name="settings_button_text">Axustes</string> + <string name="package_state_enqueued">Esperando</string> + <string name="package_state_downloading">Descargando</string> + <string name="package_state_installing">Instalando</string> + <string name="package_state_unknown">Desconocíu</string> + <string name="package_state_error">Non restauráu</string> + <string name="abandoned_clean_all">Desanicialo too</string> + <string name="abandoned_clean_this">Desaniciar</string> + <string name="abandoned_search">Guetar</string> + <string name="abandoned_promises_title">Esta app nun ta instalada</string> + <string name="abandoned_promise_explanation">La app pa esti iconu nun ta instalada. + Pues desanicialu, o guetar la app ya instalala manualmente. + </string> +</resources> diff --git a/res/values-az-rAZ/cm_arrays.xml b/res/values-az-rAZ/cm_arrays.xml new file mode 100644 index 000000000..0e0df59fa --- /dev/null +++ b/res/values-az-rAZ/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Heç bir</item> + <item>Yaxınlaşdır</item> + <item>Uzaqlaşdır</item> + <item>Yuxarı döndər</item> + <item>Aşağı döndər</item> + <item>Kub daxili</item> + <item>Kub xarici</item> + <item>Yığın</item> + <item>Akkordion</item> + <item>Çevir</item> + <item>Silindir daxili</item> + <item>Silindir xarici</item> + <item>Karusel</item> + <item>İcmal</item> + </string-array> +</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..f9dcf3279 --- /dev/null +++ b/res/values-az-rAZ/cm_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">ƏSAS EKRAN TƏNZİMLƏMƏLƏRİ</string> + <string name="drawer_settings">TƏTBİQETMƏ MENYUSU</string> + <string name="app_settings">TƏTBİQETMƏ TƏNZİMLƏMƏLƏRİ</string> + <string name="setting_state_on">AÇIQ</string> + <string name="setting_state_off">BAĞLI</string> + <string name="themes_button_text">Temalar</string> + <string name="scrolling_page_outlines">Səhifə sərhədi</string> + <string name="scrolling_fade_adjacent">Yan səhifələri soldur</string> + <string name="scrolling_wallpaper">Divar kağızını sürüşdür</string> + <string name="grid_size_text">Tor ölçüsü</string> + <string name="grid_size_cozy">Rahat</string> + <string name="grid_size_condensed">Sıx</string> + <string name="preferences_interface_homescreen_custom">Xüsusi ölçü seçin</string> + <string name="scroll_effect_text">Sürüşdürmə effekti</string> + <string name="sort_mode_title">Başlıq</string> + <string name="sort_mode_launch_count">Başlatma sayı</string> + <string name="sort_mode_install_time">Quraşdırma müddəti</string> + <string name="home_screen_search_text">Axtarış sətri</string> + <string name="larger_icons_text">Böyük nişanlar</string> + <string name="icon_labels">Nişan etiketləri</string> + <string name="icon_labels_show">Göstər</string> + <string name="icon_labels_hide">Gizlət</string> + <string name="protected_app_settings">Qorunan tətbiqetmələr</string> + <string name="dialog_confirm">Təsdiqlə</string> +</resources> diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml deleted file mode 100644 index 2015158d9..000000000 --- a/res/values-be/strings.xml +++ /dev/null @@ -1,212 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* -* Copyright (C) 2008 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- no translation found for application_name (5181331383435256801) --> - <skip /> - <!-- no translation found for home (7658288663002113681) --> - <skip /> - <!-- no translation found for uid_name (7820867637514617527) --> - <skip /> - <string name="folder_name" msgid="7371454440695724752"></string> - <!-- no translation found for wallpaper_instructions (563973358787555519) --> - <skip /> - <!-- no translation found for image_load_fail (2821429163328561136) --> - <skip /> - <!-- no translation found for wallpaper_load_fail (1261270681127096352) --> - <skip /> - <!-- no translation found for number_of_items_selected:zero (7464587177007785408) --> - <!-- no translation found for number_of_items_selected:one (142482526010824029) --> - <!-- no translation found for number_of_items_selected:other (1418352074806573570) --> - <!-- no translation found for wallpaper_accessibility_name (1655953108132967972) --> - <skip /> - <!-- no translation found for announce_selection (8338254712932127413) --> - <skip /> - <!-- no translation found for wallpaper_delete (8095005658756613921) --> - <skip /> - <!-- no translation found for pick_image (1272073934062909527) --> - <skip /> - <!-- no translation found for pick_wallpaper (8179698221502010609) --> - <skip /> - <!-- no translation found for crop_wallpaper (8334345984491368009) --> - <skip /> - <!-- no translation found for activity_not_found (8071924732094499514) --> - <skip /> - <!-- no translation found for widgets_tab_label (2921133187116603919) --> - <skip /> - <!-- no translation found for widget_adder (3201040140710381657) --> - <skip /> - <!-- no translation found for toggle_weight_watcher (5645299835184636119) --> - <skip /> - <!-- no translation found for long_press_widget_to_add (7699152356777458215) --> - <skip /> - <!-- no translation found for market (2619650989819296998) --> - <skip /> - <!-- no translation found for widget_dims_format (2370757736025621599) --> - <skip /> - <!-- no translation found for external_drop_widget_error (3165821058322217155) --> - <skip /> - <!-- no translation found for external_drop_widget_pick_title (3486317258037690630) --> - <skip /> - <!-- no translation found for rename_folder_label (3727762225964550653) --> - <skip /> - <!-- no translation found for rename_folder_title (3771389277707820891) --> - <skip /> - <!-- no translation found for rename_action (5559600076028658757) --> - <skip /> - <!-- no translation found for cancel_action (7009134900002915310) --> - <skip /> - <!-- no translation found for menu_item_add_item (1264911265836810421) --> - <skip /> - <!-- no translation found for group_applications (3797214114206693605) --> - <skip /> - <!-- no translation found for group_shortcuts (6012256992764410535) --> - <skip /> - <!-- no translation found for group_widgets (1569030723286851002) --> - <skip /> - <!-- no translation found for completely_out_of_space (6106288382070760318) --> - <skip /> - <!-- no translation found for out_of_space (4691004494942118364) --> - <skip /> - <!-- no translation found for hotseat_out_of_space (9139760413395605841) --> - <skip /> - <!-- no translation found for invalid_hotseat_item (1211534262129849507) --> - <skip /> - <!-- no translation found for shortcut_installed (1701742129426969556) --> - <skip /> - <!-- no translation found for shortcut_uninstalled (8176767991305701821) --> - <skip /> - <!-- no translation found for shortcut_duplicate (9167217446062498127) --> - <skip /> - <!-- no translation found for title_select_shortcut (6680642571148153868) --> - <skip /> - <!-- no translation found for title_select_application (3280812711670683644) --> - <skip /> - <!-- no translation found for all_apps_button_label (9110807029020582876) --> - <skip /> - <!-- no translation found for all_apps_home_button_label (252062713717058851) --> - <skip /> - <!-- no translation found for delete_zone_label_workspace (4009607676751398685) --> - <skip /> - <!-- no translation found for delete_zone_label_all_apps (8083826390278958980) --> - <skip /> - <!-- no translation found for delete_target_label (1822697352535677073) --> - <skip /> - <!-- no translation found for delete_target_uninstall_label (5100785476250872595) --> - <skip /> - <!-- no translation found for info_target_label (8053346143994679532) --> - <skip /> - <!-- no translation found for accessibility_search_button (1628520399424565142) --> - <skip /> - <!-- no translation found for accessibility_voice_search_button (4637324840434406584) --> - <skip /> - <!-- no translation found for accessibility_all_apps_button (2603132375383800483) --> - <skip /> - <!-- no translation found for accessibility_delete_button (6466114477993744621) --> - <skip /> - <!-- no translation found for delete_zone_label_all_apps_system_app (449755632749610895) --> - <skip /> - <!-- no translation found for cab_menu_delete_app (7435191475867183689) --> - <skip /> - <!-- no translation found for cab_menu_app_info (8593722221450362342) --> - <skip /> - <!-- no translation found for cab_app_selection_text (374688303047985416) --> - <skip /> - <!-- no translation found for cab_widget_selection_text (1833458597831541241) --> - <skip /> - <!-- no translation found for cab_folder_selection_text (7999992513806132118) --> - <skip /> - <!-- no translation found for cab_shortcut_selection_text (2103811025667946450) --> - <skip /> - <!-- no translation found for permlab_install_shortcut (5632423390354674437) --> - <skip /> - <!-- no translation found for permdesc_install_shortcut (923466509822011139) --> - <skip /> - <!-- no translation found for permlab_uninstall_shortcut (864595034498083837) --> - <skip /> - <!-- no translation found for permdesc_uninstall_shortcut (5134129545001836849) --> - <skip /> - <!-- no translation found for permlab_read_settings (1941457408239617576) --> - <skip /> - <!-- no translation found for permdesc_read_settings (5833423719057558387) --> - <skip /> - <!-- no translation found for permlab_write_settings (3574213698004620587) --> - <skip /> - <!-- no translation found for permdesc_write_settings (5440712911516509985) --> - <skip /> - <!-- no translation found for gadget_error_text (6081085226050792095) --> - <skip /> - <!-- no translation found for uninstall_system_app_text (4172046090762920660) --> - <skip /> - <!-- no translation found for dream_name (1530253749244328964) --> - <skip /> - <!-- no translation found for folder_hint_text (6617836969016293992) --> - <skip /> - <!-- no translation found for workspace_description_format (2950174241104043327) --> - <skip /> - <!-- no translation found for default_scroll_format (7475544710230993317) --> - <skip /> - <!-- no translation found for workspace_scroll_format (8458889198184077399) --> - <skip /> - <!-- no translation found for apps_customize_apps_scroll_format (370005296147130238) --> - <skip /> - <!-- no translation found for apps_customize_widgets_scroll_format (3106209519974971521) --> - <skip /> - <!-- no translation found for first_run_cling_title (7257389003637362144) --> - <skip /> - <!-- no translation found for first_run_cling_description (6447072552696253358) --> - <skip /> - <string name="first_run_cling_custom_content_hint" msgid="6090628589029352439"></string> - <string name="first_run_cling_search_bar_hint" msgid="5909062802402452582"></string> - <!-- no translation found for first_run_cling_create_screens_hint (6950729526680114157) --> - <skip /> - <!-- no translation found for workspace_cling_title (5626202359865825661) --> - <skip /> - <!-- no translation found for workspace_cling_move_item (528201129978005352) --> - <skip /> - <!-- no translation found for folder_cling_title (3894908818693254164) --> - <skip /> - <!-- no translation found for folder_cling_create_folder (6158215559475836131) --> - <skip /> - <!-- no translation found for cling_dismiss (8962359497601507581) --> - <skip /> - <!-- no translation found for folder_opened (94695026776264709) --> - <skip /> - <!-- no translation found for folder_tap_to_close (1884479294466410023) --> - <skip /> - <!-- no translation found for folder_tap_to_rename (9191075570492871147) --> - <skip /> - <!-- no translation found for folder_closed (4100806530910930934) --> - <skip /> - <!-- no translation found for folder_renamed (1794088362165669656) --> - <skip /> - <!-- no translation found for folder_name_format (6629239338071103179) --> - <skip /> - <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string> - <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string> - <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string> - <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string> - <!-- no translation found for widget_button_text (2880537293434387943) --> - <skip /> - <!-- no translation found for wallpaper_button_text (8404103075899945851) --> - <skip /> - <!-- no translation found for settings_button_text (8119458837558863227) --> - <skip /> -</resources> diff --git a/res/values-bn-rBD/cm_arrays.xml b/res/values-bn-rBD/cm_arrays.xml new file mode 100644 index 000000000..886fce712 --- /dev/null +++ b/res/values-bn-rBD/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>কোনটি না</item> + <item>জুম ইন</item> + <item>জুম আউট</item> + <item>Rotate up</item> + <item>Rotate down</item> + <item>Cube in</item> + <item>Cube out</item> + <item>Stack</item> + <item>Accordion</item> + <item>Flip</item> + <item>Cylinder in</item> + <item>Cylinder out</item> + <item>Carousel</item> + <item>Overview</item> + </string-array> +</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..a54889156 --- /dev/null +++ b/res/values-bn-rBD/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_settings">অ্যাপ এর রুপান্তর নির্ধারণ</string> +</resources> diff --git a/res/values-ca/cm_arrays.xml b/res/values-ca/cm_arrays.xml new file mode 100644 index 000000000..9895c3eb5 --- /dev/null +++ b/res/values-ca/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Cap</item> + <item>Amplia</item> + <item>Allunya</item> + <item>Rota amunt</item> + <item>Rota avall</item> + <item>Cúbic entrant</item> + <item>Cúbic sortint</item> + <item>Apila</item> + <item>Acordió</item> + <item>Regira</item> + <item>Cilíndric entrant</item> + <item>Cilíndric sortint</item> + <item>Carrusel</item> + <item>Perspectiva general</item> + </string-array> +</resources> diff --git a/res/values-ca/cm_strings.xml b/res/values-ca/cm_strings.xml new file mode 100644 index 000000000..665cb3c75 --- /dev/null +++ b/res/values-ca/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">CONFIGURACIÓ DE LA PANTALLA D\'INICI</string> + <string name="drawer_settings">CONFIGURACIÓ DEL CALAIX</string> + <string name="app_settings">CONFIGURACIÓ DE L\'APP</string> + <string name="setting_state_on">SÍ</string> + <string name="setting_state_off">NO</string> + <string name="themes_button_text">Temes</string> + <string name="scrolling_page_outlines">Vores de la pàgina</string> + <string name="scrolling_fade_adjacent">Esvaeix els costats de les pàgines</string> + <string name="scrolling_wallpaper">Desplaça el fons de pantalla</string> + <string name="grid_size_text">Mida de la graella</string> + <string name="grid_size_comfortable">Còmoda</string> + <string name="grid_size_cozy">Acollidora</string> + <string name="grid_size_condensed">Condensada</string> + <string name="grid_size_custom">Personalitzat (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Selecciona la mida personalitzada</string> + <string name="scroll_effect_text">Efecte desplaçament</string> + <string name="drawer_sorting_text">Mode d\'ordenació</string> + <string name="sort_mode_title">Títol</string> + <string name="sort_mode_launch_count">Vegades executat</string> + <string name="sort_mode_install_time">Hora d\'instal·lació</string> + <string name="home_screen_search_text">Barra de cerca</string> + <string name="larger_icons_text">Icones grans</string> + <string name="icon_labels">Etiquetes de les icones</string> + <string name="icon_labels_show">Mostra</string> + <string name="icon_labels_hide">Amaga</string> + <string name="protected_app_settings">Apps protegides</string> + <string name="dialog_confirm">Confirma</string> +</resources> diff --git a/res/values-cs/cm_arrays.xml b/res/values-cs/cm_arrays.xml new file mode 100644 index 000000000..43a35bb7a --- /dev/null +++ b/res/values-cs/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Žádný</item> + <item>Příblížení</item> + <item>Oddálení</item> + <item>Otočení nahoru</item> + <item>Otočení dolu</item> + <item>Uvnitř krychle</item> + <item>Vně krychle</item> + <item>Vrstvy</item> + <item>Harmonika</item> + <item>Překlopení</item> + <item>Uvnitř válce</item> + <item>Mimo válec</item> + <item>Kolotoč</item> + <item>Přehled</item> + </string-array> +</resources> diff --git a/res/values-cs/cm_strings.xml b/res/values-cs/cm_strings.xml new file mode 100644 index 000000000..2b4257195 --- /dev/null +++ b/res/values-cs/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">NASTAVENÍ DOMOVSKÉ OBRAZOVKY</string> + <string name="drawer_settings">NASTAVENÍ SLOŽKY</string> + <string name="app_settings">NASTAVENÍ APL</string> + <string name="setting_state_on">Zap.</string> + <string name="setting_state_off">Vyp.</string> + <string name="themes_button_text">Motivy</string> + <string name="scrolling_page_outlines">Ohraničení stránek</string> + <string name="scrolling_fade_adjacent">Prolínat hrany ploch</string> + <string name="scrolling_wallpaper">Posouvání tapety</string> + <string name="grid_size_text">Velikost mřížky</string> + <string name="grid_size_comfortable">Komfortní</string> + <string name="grid_size_cozy">Pohodlná</string> + <string name="grid_size_condensed">Zůžená</string> + <string name="grid_size_custom">Vlastní (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Zvolte vlastní velikost</string> + <string name="scroll_effect_text">Efekt přechodu</string> + <string name="drawer_sorting_text">Režim třídění</string> + <string name="sort_mode_title">Název</string> + <string name="sort_mode_launch_count">Počet spuštění</string> + <string name="sort_mode_install_time">Čas instalace</string> + <string name="home_screen_search_text">Vyhledávací lišta</string> + <string name="larger_icons_text">Větší ikony</string> + <string name="icon_labels">Popisky ikon</string> + <string name="icon_labels_show">Zobrazit</string> + <string name="icon_labels_hide">Skrýt</string> + <string name="protected_app_settings">Chráněné aplikace</string> + <string name="dialog_confirm">Potvrdit</string> +</resources> diff --git a/res/values-da/cm_arrays.xml b/res/values-da/cm_arrays.xml new file mode 100644 index 000000000..43c85521d --- /dev/null +++ b/res/values-da/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Ingen</item> + <item>Zoom ind</item> + <item>Zoom ud</item> + <item>Rotere op</item> + <item>Rotere ned</item> + <item>Indvendig terning</item> + <item>Udvendig terning</item> + <item>Stak</item> + <item>Harmonika</item> + <item>Flip</item> + <item>Indvendig cylinder</item> + <item>Udvendig cylinder</item> + <item>Karrusel</item> + <item>Overblik</item> + </string-array> +</resources> diff --git a/res/values-da/cm_strings.xml b/res/values-da/cm_strings.xml new file mode 100644 index 000000000..0f571e564 --- /dev/null +++ b/res/values-da/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">INDSTILLINGER FOR STARTSKÆRM</string> + <string name="drawer_settings">INDSTILLINGER FOR OVERSIGT</string> + <string name="app_settings">APP-INDSTILLINGER</string> + <string name="setting_state_on">TIL</string> + <string name="setting_state_off">FRA</string> + <string name="themes_button_text">Temaer</string> + <string name="scrolling_page_outlines">Sideomrids</string> + <string name="scrolling_fade_adjacent">Sideovergange</string> + <string name="scrolling_wallpaper">Rul baggrund</string> + <string name="grid_size_text">Gitterstørrelse</string> + <string name="grid_size_comfortable">Behageligt</string> + <string name="grid_size_cozy">Hyggeligt</string> + <string name="grid_size_condensed">Sammentrængt</string> + <string name="grid_size_custom">Brugerdefineret (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Vælg brugerdefineret størrelse</string> + <string name="scroll_effect_text">Rulleeffekt</string> + <string name="drawer_sorting_text">Sorteringstilstand</string> + <string name="sort_mode_title">Titel</string> + <string name="sort_mode_launch_count">Antal gange brugt</string> + <string name="sort_mode_install_time">Installationstidspunkt</string> + <string name="home_screen_search_text">Søgelinje</string> + <string name="larger_icons_text">Større ikoner</string> + <string name="icon_labels">Ikontekster</string> + <string name="icon_labels_show">Vis</string> + <string name="icon_labels_hide">Skjul</string> + <string name="protected_app_settings">Beskyttede apps</string> + <string name="dialog_confirm">Bekræft</string> +</resources> diff --git a/res/values-de/cm_arrays.xml b/res/values-de/cm_arrays.xml new file mode 100644 index 000000000..a4ea2ce1b --- /dev/null +++ b/res/values-de/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Keine</item> + <item>Hineinzoomen</item> + <item>Herauszoomen</item> + <item>Rotieren oben</item> + <item>Rotieren unten</item> + <item>Würfel innen</item> + <item>Würfel außen</item> + <item>Stapeln</item> + <item>Akkordeon</item> + <item>Blättern</item> + <item>Zylinder innen</item> + <item>Zylinder außen</item> + <item>Karussell</item> + <item>Übersicht</item> + </string-array> +</resources> diff --git a/res/values-de/cm_strings.xml b/res/values-de/cm_strings.xml new file mode 100644 index 000000000..872d728a2 --- /dev/null +++ b/res/values-de/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">STARTBILDSCHIRM-EINSTELLUNGEN</string> + <string name="drawer_settings">APP-ÜBERSICHT-EINSTELLUNGEN</string> + <string name="app_settings">APP-EINSTELLUNGEN</string> + <string name="setting_state_on">AN</string> + <string name="setting_state_off">AUS</string> + <string name="themes_button_text">Designs</string> + <string name="scrolling_page_outlines">Seitenumriss anzeigen</string> + <string name="scrolling_fade_adjacent">Seiten einblenden</string> + <string name="scrolling_wallpaper">Hintergrundbild scrollen</string> + <string name="grid_size_text">Rastergröße</string> + <string name="grid_size_comfortable">Normal</string> + <string name="grid_size_cozy">Mittel</string> + <string name="grid_size_condensed">Klein</string> + <string name="grid_size_custom">Benutzerdefiniert (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Benutzerdefinierte Größe auswählen</string> + <string name="scroll_effect_text">Scroll-Effekt</string> + <string name="drawer_sorting_text">Sortiermodus</string> + <string name="sort_mode_title">Titel</string> + <string name="sort_mode_launch_count">Aufrufanzahl</string> + <string name="sort_mode_install_time">Installationsdatum</string> + <string name="home_screen_search_text">Suchleiste</string> + <string name="larger_icons_text">Große Symbole</string> + <string name="icon_labels">Symbol-Beschriftungen</string> + <string name="icon_labels_show">Anzeigen</string> + <string name="icon_labels_hide">Verbergen</string> + <string name="protected_app_settings">Geschützte Apps</string> + <string name="dialog_confirm">Bestätigen</string> +</resources> diff --git a/res/values-el/cm_arrays.xml b/res/values-el/cm_arrays.xml new file mode 100644 index 000000000..561f2611d --- /dev/null +++ b/res/values-el/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Κανένα</item> + <item>Μεγέθυνση</item> + <item>Σμίκρυνση</item> + <item>Περιστροφή επάνω</item> + <item>Περιστροφή κάτω</item> + <item>Κύβος μέσα</item> + <item>Κύβος έξω</item> + <item>Στοίβα</item> + <item>Ακορντεόν</item> + <item>Αναποδογύρισμα</item> + <item>Κύλινδρος μέσα</item> + <item>Κύλινδρος έξω</item> + <item>Καρουσέλ</item> + <item>Επισκόπηση</item> + </string-array> +</resources> diff --git a/res/values-el/cm_strings.xml b/res/values-el/cm_strings.xml new file mode 100644 index 000000000..a49e89176 --- /dev/null +++ b/res/values-el/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">ΡΥΘΜΙΣΕΙΣ ΑΡΧΙΚΗΣ ΟΘΟΝΗΣ</string> + <string name="drawer_settings">ΡΥΘΜΙΣΕΙΣ ΣΥΡΤΑΡΙΟΥ</string> + <string name="app_settings">ΡΥΘΜΙΣΕΙΣ ΕΦΑΡΜΟΓΩΝ</string> + <string name="setting_state_on">ΕΝΕΡΓΟ</string> + <string name="setting_state_off">ΑΝΕΝΕΡΓΟ</string> + <string name="themes_button_text">Θέματα</string> + <string name="scrolling_page_outlines">Περίγραμμα σελιδών</string> + <string name="scrolling_fade_adjacent">Ξεθώριασμα πλευρικών σελίδων</string> + <string name="scrolling_wallpaper">Κύλιση ταπετσαρίας</string> + <string name="grid_size_text">Μέγεθος πλέγματος</string> + <string name="grid_size_comfortable">Άνετο</string> + <string name="grid_size_cozy">Κανονικό</string> + <string name="grid_size_condensed">Συμπυκνωμένο</string> + <string name="grid_size_custom">Προσαρμοσμένο (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Επιλέξτε προσαρμοσμένο μέγεθος</string> + <string name="scroll_effect_text">Εφέ κύλισης</string> + <string name="drawer_sorting_text">Ταξινόμηση</string> + <string name="sort_mode_title">Τίτλος</string> + <string name="sort_mode_launch_count">Αριθμός εκκινήσεων</string> + <string name="sort_mode_install_time">Χρόνος εγκατάστασης</string> + <string name="home_screen_search_text">Μπάρα αναζήτησης</string> + <string name="larger_icons_text">Μεγαλύτερα εικονίδια</string> + <string name="icon_labels">Ετικέτες εικονιδίων</string> + <string name="icon_labels_show">Εμφάνιση</string> + <string name="icon_labels_hide">Απόκρυψη</string> + <string name="protected_app_settings">Προστατευμένες εφαρμογές</string> + <string name="dialog_confirm">Επιβεβαίωση</string> +</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..4b4145c2c --- /dev/null +++ b/res/values-en-rAU/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">HOME SCREEN SETTINGS</string> + <string name="drawer_settings">DRAWER SETTINGS</string> + <string name="app_settings">APP SETTINGS</string> + <string name="setting_state_on">ON</string> + <string name="setting_state_off">OFF</string> + <string name="themes_button_text">Themes</string> + <string name="scrolling_page_outlines">Page outlines</string> + <string name="scrolling_fade_adjacent">Fade side pages</string> + <string name="scrolling_wallpaper">Scroll wallpaper</string> + <string name="grid_size_text">Grid size</string> + <string name="grid_size_comfortable">Comfortable</string> + <string name="grid_size_cozy">Cozy</string> + <string name="grid_size_condensed">Condensed</string> + <string name="grid_size_custom">Custom (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Select custom size</string> + <string name="scroll_effect_text">Scroll effect</string> + <string name="drawer_sorting_text">Sorting mode</string> + <string name="sort_mode_title">Title</string> + <string name="sort_mode_launch_count">Launch count</string> + <string name="sort_mode_install_time">Install time</string> + <string name="home_screen_search_text">Search bar</string> + <string name="larger_icons_text">Larger icons</string> + <string name="icon_labels">Icon labels</string> + <string name="icon_labels_show">Show</string> + <string name="icon_labels_hide">Hide</string> + <string name="protected_app_settings">Protected apps</string> + <string name="dialog_confirm">Confirm</string> +</resources> diff --git a/res/values-es/cm_arrays.xml b/res/values-es/cm_arrays.xml new file mode 100644 index 000000000..1d16cfd00 --- /dev/null +++ b/res/values-es/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Ninguno</item> + <item>Zoom entrante</item> + <item>Zoom saliente</item> + <item>Rotar arriba</item> + <item>Rotar abajo</item> + <item>Cúbico entrante</item> + <item>Cúbico saliente</item> + <item>Apilar</item> + <item>Acordeón</item> + <item>Voltear</item> + <item>Cilíndrico entrante</item> + <item>Cilíndrico saliente</item> + <item>Carrusel</item> + <item>Perspectiva</item> + </string-array> +</resources> diff --git a/res/values-es/cm_strings.xml b/res/values-es/cm_strings.xml new file mode 100644 index 000000000..15880f3f7 --- /dev/null +++ b/res/values-es/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">AJUSTES DE INICIO</string> + <string name="drawer_settings">AJUSTES DE LAS APLICACIONES</string> + <string name="app_settings">AJUSTES DE LAS APLICACIONES</string> + <string name="setting_state_on">SÍ</string> + <string name="setting_state_off">NO</string> + <string name="themes_button_text">Temas</string> + <string name="scrolling_page_outlines">Bordes de pantalla</string> + <string name="scrolling_fade_adjacent">Efecto de fundido</string> + <string name="scrolling_wallpaper">Desplazar fondo de pantalla</string> + <string name="grid_size_text">Tamaño de la cuadrícula</string> + <string name="grid_size_comfortable">Normal</string> + <string name="grid_size_cozy">Cómoda</string> + <string name="grid_size_condensed">Comprimida</string> + <string name="grid_size_custom">Personalizado (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Selecciona el tamaño personalizado</string> + <string name="scroll_effect_text">Efecto de desplazamiento</string> + <string name="drawer_sorting_text">Modo de ordenación</string> + <string name="sort_mode_title">Título</string> + <string name="sort_mode_launch_count">Veces ejecutado</string> + <string name="sort_mode_install_time">Fecha de instalación</string> + <string name="home_screen_search_text">Barra de búsqueda</string> + <string name="larger_icons_text">Iconos grandes</string> + <string name="icon_labels">Etiquetas de iconos</string> + <string name="icon_labels_show">Mostrar</string> + <string name="icon_labels_hide">Ocultar</string> + <string name="protected_app_settings">Aplicaciones protegidas</string> + <string name="dialog_confirm">Confirmar</string> +</resources> diff --git a/res/values-et-rEE/cm_arrays.xml b/res/values-et-rEE/cm_arrays.xml new file mode 100644 index 000000000..420fd97e3 --- /dev/null +++ b/res/values-et-rEE/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Puudub</item> + <item>Suumi sisse</item> + <item>Suumi välja</item> + <item>Pööra üles</item> + <item>Pööra alla</item> + <item>Kuubik sisse</item> + <item>Kuubik välja</item> + <item>Kihid</item> + <item>Akordion</item> + <item>Pööra ümber</item> + <item>Silinder sisse</item> + <item>Silinder välja</item> + <item>Karussell</item> + <item>Ülevaade</item> + </string-array> +</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..84860e737 --- /dev/null +++ b/res/values-et-rEE/cm_strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">KODUEKRAANI SEADED</string> + <string name="drawer_settings">SAHTLI SEADED</string> + <string name="app_settings">RAKENDUSE SEADED</string> + <string name="setting_state_on">SEES</string> + <string name="setting_state_off">VÄLJAS</string> + <string name="themes_button_text">Teemad</string> + <string name="scrolling_page_outlines">Lehe äärisjooned</string> + <string name="scrolling_fade_adjacent">Sulanda äärislehed</string> + <string name="scrolling_wallpaper">Keri taustapilti</string> + <string name="grid_size_text">Ruudustiku suurus</string> + <string name="grid_size_comfortable">Mugav</string> + <string name="grid_size_cozy">Kodune</string> + <string name="grid_size_condensed">Kärbitud</string> + <string name="preferences_interface_homescreen_custom">Vali sobiv suurus</string> + <string name="scroll_effect_text">Kerimisefekt</string> + <string name="drawer_sorting_text">Sortimisrežiim</string> + <string name="sort_mode_title">Pealkiri</string> + <string name="sort_mode_launch_count">Käivitamiste arv</string> + <string name="sort_mode_install_time">Installeerimise aeg</string> + <string name="home_screen_search_text">Otsinguriba</string> + <string name="larger_icons_text">Suuremad ikoonid</string> + <string name="icon_labels">Ikooni sildid</string> + <string name="icon_labels_show">Näita</string> + <string name="icon_labels_hide">Peida</string> + <string name="protected_app_settings">Kaitstud rakendused</string> + <string name="dialog_confirm">Kinnita</string> +</resources> diff --git a/res/values-eu-rES/cm_arrays.xml b/res/values-eu-rES/cm_arrays.xml new file mode 100644 index 000000000..7f2cc6518 --- /dev/null +++ b/res/values-eu-rES/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Bat ere ez</item> + <item>Zoom sarkorra</item> + <item>Zoom irtenkorra</item> + <item>Gorantz biratu</item> + <item>Beherantz biratu</item> + <item>Kubiko sarkorra</item> + <item>Kubiko irtenkorra</item> + <item>Pilatu</item> + <item>Akordeoia</item> + <item>Irauli</item> + <item>Zilindro sarkorra</item> + <item>Zilindro irtenkorra</item> + <item>Zaldiko-maldikoa</item> + <item>Perspektiba</item> + </string-array> +</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..23a547386 --- /dev/null +++ b/res/values-eu-rES/cm_strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">HASIERA PANTAILAREN EZARPENAK</string> + <string name="drawer_settings">APLIKAZIOEN EZARPENAK</string> + <string name="app_settings">APLIKAZIOAREN EZARPENAK</string> + <string name="setting_state_on">BAI</string> + <string name="setting_state_off">EZ</string> + <string name="themes_button_text">Gaiak</string> + <string name="scrolling_page_outlines">Pantaila ertzak</string> + <string name="scrolling_fade_adjacent">Bat egite efektua</string> + <string name="scrolling_wallpaper">Hormairudia mugitu</string> + <string name="grid_size_text">Sarearen tamaina</string> + <string name="grid_size_comfortable">Arrunta</string> + <string name="grid_size_cozy">Erosoa</string> + <string name="grid_size_condensed">Konprimatua</string> + <string name="preferences_interface_homescreen_custom">Tamaina pertsonalizatua hautatu</string> + <string name="scroll_effect_text">Mugitze efektua</string> + <string name="drawer_sorting_text">Antolatze era</string> + <string name="sort_mode_title">Izena</string> + <string name="sort_mode_launch_count">Zenbat aldiz exekutatua</string> + <string name="sort_mode_install_time">Noiz instalatua</string> + <string name="home_screen_search_text">Bilaketa barra</string> + <string name="larger_icons_text">Ikono handiak</string> + <string name="icon_labels">Ikonoen etiketak</string> + <string name="icon_labels_show">Erakutsi</string> + <string name="icon_labels_hide">izkutatu</string> + <string name="protected_app_settings">Babesturiko aplikazioak</string> + <string name="dialog_confirm">Berretsi</string> +</resources> diff --git a/res/values-fi/cm_arrays.xml b/res/values-fi/cm_arrays.xml new file mode 100644 index 000000000..d6218f8d2 --- /dev/null +++ b/res/values-fi/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Ei mitään</item> + <item>Lähennä</item> + <item>Loitonna</item> + <item>Käännä ylös</item> + <item>Käännä alas</item> + <item>Kuutio sisään</item> + <item>Kuutio ulos</item> + <item>Pino</item> + <item>Harmonikka</item> + <item>Käännä</item> + <item>Sylinteri sisään</item> + <item>Sylinteri ulos</item> + <item>Karuselli</item> + <item>Yhteenveto</item> + </string-array> +</resources> diff --git a/res/values-fi/cm_strings.xml b/res/values-fi/cm_strings.xml new file mode 100644 index 000000000..a6eab9f23 --- /dev/null +++ b/res/values-fi/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">KOTINÄYTÖN ASETUKSET</string> + <string name="drawer_settings">SOVELLUSVALIKON ASETUKSET</string> + <string name="app_settings">SOVELLUKSEN ASETUKSET</string> + <string name="setting_state_on">PÄÄLLÄ</string> + <string name="setting_state_off">POIS</string> + <string name="themes_button_text">Teemat</string> + <string name="scrolling_page_outlines">Sivun ulkoreunat</string> + <string name="scrolling_fade_adjacent">Häivytä sivun reunat</string> + <string name="scrolling_wallpaper">Vieritä taustakuvaa</string> + <string name="grid_size_text">Ruudukon koko</string> + <string name="grid_size_comfortable">Mukava</string> + <string name="grid_size_cozy">Kodikas</string> + <string name="grid_size_condensed">Tiivistetty</string> + <string name="grid_size_custom">Mukautettu (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Valitse mukautettu koko</string> + <string name="scroll_effect_text">Vieritysefekti</string> + <string name="drawer_sorting_text">Lajittelu</string> + <string name="sort_mode_title">Nimi</string> + <string name="sort_mode_launch_count">Käynnistyskerrat</string> + <string name="sort_mode_install_time">Asennuspäivä</string> + <string name="home_screen_search_text">Hakupalkki</string> + <string name="larger_icons_text">Suuremmat kuvakkeet</string> + <string name="icon_labels">Kuvakkeiden otsikot</string> + <string name="icon_labels_show">Näytä</string> + <string name="icon_labels_hide">Piilota</string> + <string name="protected_app_settings">Suojatut sovellukset</string> + <string name="dialog_confirm">Vahvista</string> +</resources> diff --git a/res/values-fr/cm_arrays.xml b/res/values-fr/cm_arrays.xml new file mode 100644 index 000000000..6d8e088cd --- /dev/null +++ b/res/values-fr/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Aucun</item> + <item>Zoom</item> + <item>Dézoom</item> + <item>Rotation vers le haut</item> + <item>Rotation vers le bas</item> + <item>Cube intérieur</item> + <item>Cube extérieur</item> + <item>Empilement</item> + <item>Accordéon</item> + <item>Retourner</item> + <item>Cylindre intérieur</item> + <item>Cylindre extérieur</item> + <item>Carrousel</item> + <item>Aperçu</item> + </string-array> +</resources> diff --git a/res/values-fr/cm_strings.xml b/res/values-fr/cm_strings.xml new file mode 100644 index 000000000..a7d826a48 --- /dev/null +++ b/res/values-fr/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">PARAMÈTRES DE L\'ÉCRAN D\'ACCUEIL</string> + <string name="drawer_settings">PARAMÈTRES DE L\'ÉCRAN DES APPLICATIONS</string> + <string name="app_settings">PARAMÈTRES DE L\'APPLICATION</string> + <string name="setting_state_on">OUI</string> + <string name="setting_state_off">NON</string> + <string name="themes_button_text">Thèmes</string> + <string name="scrolling_page_outlines">Espacement des pages</string> + <string name="scrolling_fade_adjacent">Estomper les pages adjacentes</string> + <string name="scrolling_wallpaper">Défilement du fond d\'écran</string> + <string name="grid_size_text">Taille de la grille</string> + <string name="grid_size_comfortable">Confortable</string> + <string name="grid_size_cozy">Cosy</string> + <string name="grid_size_condensed">Condensé</string> + <string name="grid_size_custom">Personnalisé (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Sélectionner la taille personnalisée</string> + <string name="scroll_effect_text">Effet de défilement</string> + <string name="drawer_sorting_text">Mode de tri</string> + <string name="sort_mode_title">Titre</string> + <string name="sort_mode_launch_count">Nombre de lancements</string> + <string name="sort_mode_install_time">Date d\'installation</string> + <string name="home_screen_search_text">Barre de recherche</string> + <string name="larger_icons_text">Grandes icônes</string> + <string name="icon_labels">Nom des icônes</string> + <string name="icon_labels_show">Afficher</string> + <string name="icon_labels_hide">Masquer</string> + <string name="protected_app_settings">Applications protégées</string> + <string name="dialog_confirm">Confirmer</string> +</resources> diff --git a/res/values-gl-rES/cm_arrays.xml b/res/values-gl-rES/cm_arrays.xml new file mode 100644 index 000000000..b74a88ee3 --- /dev/null +++ b/res/values-gl-rES/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>None</item> + <item>Achegar</item> + <item>Afastar</item> + <item>Rotate up</item> + <item>Rotate down</item> + <item>Cube in</item> + <item>Cube out</item> + <item>Stack</item> + <item>Acordeón</item> + <item>Flip</item> + <item>Cilindro para dentro</item> + <item>Cilindro para fóra</item> + <item>Carrusel</item> + <item>Overview</item> + </string-array> +</resources> diff --git a/res/values-hu/cm_arrays.xml b/res/values-hu/cm_arrays.xml new file mode 100644 index 000000000..fa175897c --- /dev/null +++ b/res/values-hu/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Nincs</item> + <item>Nagyítás</item> + <item>Kicsinyítés</item> + <item>Forgatás felfelé</item> + <item>Forgatás lefelé</item> + <item>Kocka belül</item> + <item>Kocka kívül</item> + <item>Kártyapakli</item> + <item>Harmónika</item> + <item>Forgatás</item> + <item>Henger belül</item> + <item>Henger kívül</item> + <item>Körhinta</item> + <item>Áttekintés</item> + </string-array> +</resources> diff --git a/res/values-hu/cm_strings.xml b/res/values-hu/cm_strings.xml new file mode 100644 index 000000000..2b177b158 --- /dev/null +++ b/res/values-hu/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">KEZDŐKÉPERNYŐ BEÁLLÍTÁSOK</string> + <string name="drawer_settings">ALKALMAZÁSKÉPERNYŐ BEÁLLÍTÁSOK</string> + <string name="app_settings">ALKALMAZÁS BEÁLLÍTÁSAI</string> + <string name="setting_state_on">BE</string> + <string name="setting_state_off">KI</string> + <string name="themes_button_text">Témák</string> + <string name="scrolling_page_outlines">Oldal körvonalak</string> + <string name="scrolling_fade_adjacent">Elhalványuló váltás az oldalak közt</string> + <string name="scrolling_wallpaper">Háttérkép görgetése</string> + <string name="grid_size_text">Rácsméret</string> + <string name="grid_size_comfortable">Kényelmes</string> + <string name="grid_size_cozy">Hangulatos</string> + <string name="grid_size_condensed">Tömörített</string> + <string name="grid_size_custom">Egyéni (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Válassza ki az egyéni méretet</string> + <string name="scroll_effect_text">Görgetés effekt</string> + <string name="drawer_sorting_text">Rendezési mód</string> + <string name="sort_mode_title">Név</string> + <string name="sort_mode_launch_count">Indítások száma</string> + <string name="sort_mode_install_time">Telepítés ideje</string> + <string name="home_screen_search_text">Keresési sáv</string> + <string name="larger_icons_text">Nagyobb ikonok</string> + <string name="icon_labels">Ikon feliratok</string> + <string name="icon_labels_show">Megjelenítés</string> + <string name="icon_labels_hide">Elrejtés</string> + <string name="protected_app_settings">Védett alkalmazások</string> + <string name="dialog_confirm">Megerősítés</string> +</resources> diff --git a/res/values-in/cm_arrays.xml b/res/values-in/cm_arrays.xml new file mode 100644 index 000000000..14b59cc8c --- /dev/null +++ b/res/values-in/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Tidak Ada</item> + <item>Memperbesar</item> + <item>Memperkecil</item> + <item>Memutar keatas</item> + <item>Memutar kebawah</item> + <item>Kubus masuk</item> + <item>Kubus keluar</item> + <item>Tumpukan</item> + <item>Akordion</item> + <item>Membalik</item> + <item>Silinder masuk</item> + <item>Silinder keluar</item> + <item>Komedi putar</item> + <item>Overview</item> + </string-array> +</resources> diff --git a/res/values-in/cm_strings.xml b/res/values-in/cm_strings.xml new file mode 100644 index 000000000..92c473f5d --- /dev/null +++ b/res/values-in/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">PENGATURAN LAYAR HOME</string> + <string name="drawer_settings">PENGATURAN DRAWER</string> + <string name="app_settings">PENGATURAN APL</string> + <string name="setting_state_on">ON</string> + <string name="setting_state_off">OFF</string> + <string name="themes_button_text">Tema</string> + <string name="scrolling_page_outlines">Garis luar halaman</string> + <string name="scrolling_fade_adjacent">Fade side pages</string> + <string name="scrolling_wallpaper">Gulir wallpaper</string> + <string name="grid_size_text">Ukuran grid</string> + <string name="grid_size_comfortable">Comfortable</string> + <string name="grid_size_cozy">Cozy</string> + <string name="grid_size_condensed">Condensed</string> + <string name="grid_size_custom">Kustom (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Pilih ukuran kustom</string> + <string name="scroll_effect_text">Efek gulir</string> + <string name="drawer_sorting_text">Mode penyortiran</string> + <string name="sort_mode_title">Judul</string> + <string name="sort_mode_launch_count">Hitungan peluncur</string> + <string name="sort_mode_install_time">Waktu pemasangan</string> + <string name="home_screen_search_text">Bar pencarian</string> + <string name="larger_icons_text">Ikon lebih besar</string> + <string name="icon_labels">Label ikon</string> + <string name="icon_labels_show">Tampilkan</string> + <string name="icon_labels_hide">Sembunyikan</string> + <string name="protected_app_settings">Aplikasi yang di lindungi</string> + <string name="dialog_confirm">Konfirmasi</string> +</resources> diff --git a/res/values-it/cm_arrays.xml b/res/values-it/cm_arrays.xml new file mode 100644 index 000000000..d9ec497c7 --- /dev/null +++ b/res/values-it/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Nessuno</item> + <item>Ingrandisci</item> + <item>Riduci</item> + <item>Ruota su</item> + <item>Ruota giù</item> + <item>Cubo interno</item> + <item>Cubo esterno</item> + <item>Pila</item> + <item>Fisarmonica</item> + <item>Specchia</item> + <item>Cilindro interno</item> + <item>Cilindro esterno</item> + <item>Carosello</item> + <item>Panoramica</item> + </string-array> +</resources> diff --git a/res/values-it/cm_strings.xml b/res/values-it/cm_strings.xml new file mode 100644 index 000000000..bd7b96021 --- /dev/null +++ b/res/values-it/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">IMPOSTAZIONI SCHERMATA HOME</string> + <string name="drawer_settings">IMPOSTAZIONI DRAWER</string> + <string name="app_settings">IMPOSTAZIONI APP</string> + <string name="setting_state_on">ON</string> + <string name="setting_state_off">OFF</string> + <string name="themes_button_text">Temi</string> + <string name="scrolling_page_outlines">Contorni pagina</string> + <string name="scrolling_fade_adjacent">Dissolvenza pagine laterali</string> + <string name="scrolling_wallpaper">Sfondo scorrevole</string> + <string name="grid_size_text">Dimensione griglia</string> + <string name="grid_size_comfortable">Confortevole</string> + <string name="grid_size_cozy">Accogliente</string> + <string name="grid_size_condensed">Condensato</string> + <string name="grid_size_custom">Personalizzato (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Personalizza dimensione</string> + <string name="scroll_effect_text">Effetto scorrimento</string> + <string name="drawer_sorting_text">Modalità ordinamento</string> + <string name="sort_mode_title">Titolo</string> + <string name="sort_mode_launch_count">Numero avvii</string> + <string name="sort_mode_install_time">Tempo installazione</string> + <string name="home_screen_search_text">Barra di ricerca</string> + <string name="larger_icons_text">Icone grandi</string> + <string name="icon_labels">Etichette icone</string> + <string name="icon_labels_show">Mostra</string> + <string name="icon_labels_hide">Nascondi</string> + <string name="protected_app_settings">App protette</string> + <string name="dialog_confirm">Conferma</string> +</resources> diff --git a/res/values-iw/cm_arrays.xml b/res/values-iw/cm_arrays.xml new file mode 100644 index 000000000..870511f8f --- /dev/null +++ b/res/values-iw/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>ללא</item> + <item>התקרבות</item> + <item>התרחקות</item> + <item>סובב למעלה</item> + <item>סובב למטע</item> + <item>קובייה פנימה</item> + <item>קוביה החוצה</item> + <item>מחסנית</item> + <item>אקורדיון</item> + <item>היפוך</item> + <item>גליל פנימה</item> + <item>גליל החוצה</item> + <item>קרוסלה</item> + <item>תקציר</item> + </string-array> +</resources> diff --git a/res/values-iw/cm_strings.xml b/res/values-iw/cm_strings.xml new file mode 100644 index 000000000..ea9316d4e --- /dev/null +++ b/res/values-iw/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">הגדרות מסך הבית</string> + <string name="drawer_settings">הגדרות מגירת יישומים</string> + <string name="app_settings">הגדרות יישום</string> + <string name="setting_state_on">מופעל</string> + <string name="setting_state_off">מושבת</string> + <string name="themes_button_text">ערכות עיצוב</string> + <string name="scrolling_page_outlines">תיאור דף</string> + <string name="scrolling_fade_adjacent">עימום דפים צדדיים</string> + <string name="scrolling_wallpaper">גלילת טפט</string> + <string name="grid_size_text">גודל רשת</string> + <string name="grid_size_comfortable">נוח</string> + <string name="grid_size_cozy">נעים</string> + <string name="grid_size_condensed">מרוכז</string> + <string name="grid_size_custom">מותאם אישית (<xliff:g id="rows">%1$d </xliff:g> \u00d7 <xliff:g id="columns">%2$d </xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">בחר גודל מותאם אישית</string> + <string name="scroll_effect_text">אפקט גלילה</string> + <string name="drawer_sorting_text">מצב המיון</string> + <string name="sort_mode_title">כותרת</string> + <string name="sort_mode_launch_count">מספר הפעלות</string> + <string name="sort_mode_install_time">זמן התקנה</string> + <string name="home_screen_search_text">סרגל החיפוש</string> + <string name="larger_icons_text">סמלים גדולים יותר</string> + <string name="icon_labels">תוויות סמלים</string> + <string name="icon_labels_show">הצג</string> + <string name="icon_labels_hide">הסתר</string> + <string name="protected_app_settings">יישומים מוגנים</string> + <string name="dialog_confirm">אשר</string> +</resources> diff --git a/res/values-ja/cm_arrays.xml b/res/values-ja/cm_arrays.xml new file mode 100644 index 000000000..b53618465 --- /dev/null +++ b/res/values-ja/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>なし</item> + <item>Zoom in</item> + <item>Zoom out</item> + <item>Rotate up</item> + <item>Rotate down</item> + <item>Cube in</item> + <item>Cube out</item> + <item>Stack</item> + <item>Accordion</item> + <item>Flip</item> + <item>Cylinder in</item> + <item>Cylinder out</item> + <item>Carousel</item> + <item>Overview</item> + </string-array> +</resources> diff --git a/res/values-ja/cm_strings.xml b/res/values-ja/cm_strings.xml new file mode 100644 index 000000000..757417f0c --- /dev/null +++ b/res/values-ja/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">ホーム画面の設定</string> + <string name="drawer_settings">ドロワーの設定</string> + <string name="app_settings">アプリの設定</string> + <string name="setting_state_on">ON</string> + <string name="setting_state_off">OFF</string> + <string name="themes_button_text">テーマ</string> + <string name="scrolling_page_outlines">ページの外枠</string> + <string name="scrolling_fade_adjacent">側面のページをフェード</string> + <string name="scrolling_wallpaper">壁紙をスクロール</string> + <string name="grid_size_text">グリッドサイズ</string> + <string name="grid_size_comfortable">Comfortable</string> + <string name="grid_size_cozy">Cozy</string> + <string name="grid_size_condensed">Condensed</string> + <string name="grid_size_custom">カスタム(<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">カスタムのサイズを選択</string> + <string name="scroll_effect_text">スクロール効果</string> + <string name="drawer_sorting_text">並べ替えモード</string> + <string name="sort_mode_title">タイトル</string> + <string name="sort_mode_launch_count">起動回数</string> + <string name="sort_mode_install_time">インストール日時</string> + <string name="home_screen_search_text">検索バー</string> + <string name="larger_icons_text">大きいアイコン</string> + <string name="icon_labels">アイコンラベル</string> + <string name="icon_labels_show">表示する</string> + <string name="icon_labels_hide">表示しない</string> + <string name="protected_app_settings">アプリの保護</string> + <string name="dialog_confirm">確認</string> +</resources> diff --git a/res/values-ko/cm_arrays.xml b/res/values-ko/cm_arrays.xml new file mode 100644 index 000000000..7ce4da79c --- /dev/null +++ b/res/values-ko/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>없음</item> + <item>확대</item> + <item>축소</item> + <item>위로 회전</item> + <item>아래로 회전</item> + <item>큐브 인</item> + <item>큐브 아웃</item> + <item>스택</item> + <item>아코디언</item> + <item>뒤집기</item> + <item>실린더 인</item> + <item>실린더 아웃</item> + <item>회전목마</item> + <item>개요</item> + </string-array> +</resources> diff --git a/res/values-ko/cm_strings.xml b/res/values-ko/cm_strings.xml new file mode 100644 index 000000000..743a859c5 --- /dev/null +++ b/res/values-ko/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">홈 화면 설정</string> + <string name="drawer_settings">서랍 설정</string> + <string name="app_settings">애플리케이션 설정</string> + <string name="setting_state_on">켜짐</string> + <string name="setting_state_off">꺼짐</string> + <string name="themes_button_text">테마</string> + <string name="scrolling_page_outlines">페이지 외곽선</string> + <string name="scrolling_fade_adjacent">옆 페이지를 페이드</string> + <string name="scrolling_wallpaper">배경 스크롤</string> + <string name="grid_size_text">격자 크기</string> + <string name="grid_size_comfortable">느슨하게</string> + <string name="grid_size_cozy">적당히</string> + <string name="grid_size_condensed">빽빽하게</string> + <string name="grid_size_custom">사용자 지정 (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">사용자 정의 크기 선택</string> + <string name="scroll_effect_text">스크롤 효과</string> + <string name="drawer_sorting_text">정렬 모드</string> + <string name="sort_mode_title">이름</string> + <string name="sort_mode_launch_count">실행 횟수</string> + <string name="sort_mode_install_time">설치 시간</string> + <string name="home_screen_search_text">검색 바</string> + <string name="larger_icons_text">큰 아이콘</string> + <string name="icon_labels">아이콘 레이블</string> + <string name="icon_labels_show">보이기</string> + <string name="icon_labels_hide">숨기기</string> + <string name="protected_app_settings">보호된 앱</string> + <string name="dialog_confirm">확인</string> +</resources> diff --git a/res/values-ku/cm_arrays.xml b/res/values-ku/cm_arrays.xml new file mode 100644 index 000000000..8b5b93e9b --- /dev/null +++ b/res/values-ku/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>هیچ</item> + <item>زومکردن بۆ ناو</item> + <item>زومکردن بۆ دەرەوە</item> + <item>سوڕانەوە بۆ سەرەوە</item> + <item>سوڕانەوە بۆ خوارەوە</item> + <item>شەشپاڵو بۆ ناو</item> + <item>شەشپاڵو دەرەوە</item> + <item>كەتەكە</item> + <item>ئۆكۆردێون</item> + <item>قاتکردن</item> + <item>لولەک لەناو</item> + <item>لولەک بۆ دەرەوە</item> + <item>غارغارێن</item> + <item>پیشاندانی گشتی</item> + </string-array> +</resources> diff --git a/res/values-ku/cm_strings.xml b/res/values-ku/cm_strings.xml new file mode 100644 index 000000000..b7f7fbc5b --- /dev/null +++ b/res/values-ku/cm_strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">رێکخستنی ڕوونمای سەرەکی</string> + <string name="drawer_settings">ڕێکخستنی کێشان</string> + <string name="app_settings">ڕێکخستنەکانی بەرنامە</string> + <string name="setting_state_on">هەڵگیرساو</string> + <string name="setting_state_off">کووژاوە</string> + <string name="themes_button_text">رووکارەکان</string> + <string name="scrolling_page_outlines">دهرهێڵی لاپهڕه</string> + <string name="scrolling_fade_adjacent">کاڵبوونهوهی لاپهڕه هێڵ</string> + <string name="scrolling_wallpaper">بابۆڵهکردنی سهرڕوونما</string> + <string name="grid_size_text">قهبارهی تۆڕ</string> + <string name="grid_size_comfortable">ئاسووده</string> + <string name="grid_size_cozy">پێدانی ئاسودهیی</string> + <string name="grid_size_condensed">خهستکراو</string> + <string name="preferences_interface_homescreen_custom">دیاریکردنی قهبارهی خوازراو</string> + <string name="scroll_effect_text">کاریگهری بابۆڵهکردن</string> + <string name="drawer_sorting_text">جۆری پۆڵێنکردن</string> + <string name="sort_mode_title">ناونیشان</string> + <string name="sort_mode_launch_count">دانانی ههژمار</string> + <string name="sort_mode_install_time">کاتی دامەزراندن</string> + <string name="home_screen_search_text">شریتی گەڕان</string> + <string name="larger_icons_text">وێنۆچکەی گەورەتر</string> + <string name="icon_labels">تهختهی وێنۆچکهکان</string> + <string name="icon_labels_show">پیشاندان</string> + <string name="icon_labels_hide">شاردنەوە</string> + <string name="protected_app_settings">بەرنامە پارێزراوەکان</string> + <string name="dialog_confirm">دلنیاکردنەوە</string> +</resources> diff --git a/res/values-ku/strings.xml b/res/values-ku/strings.xml new file mode 100644 index 000000000..b8eb048ed --- /dev/null +++ b/res/values-ku/strings.xml @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +/* +* Copyright (C) 2008 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="application_name">کارخەری٣</string> + <string name="home">ماڵەوە</string> + <string name="uid_name">نەرمەواڵاکانی ناوەکی ئەندرۆید</string> + <string name="activity_not_found">بەرنامە دانهبهزیوه.</string> + <string name="widgets_tab_label">ویدجێتەکان</string> + <string name="widget_adder">ویدجێتەکان</string> + <string name="toggle_weight_watcher">پیشاندانی بیرگە</string> + <string name="long_press_widget_to_add">بیسوو & دەست ڕاگرە بۆ هەڵگرتنی ویجێتێک.</string> + <string name="market">فرۆشگا</string> + <string name="widget_dims_format">%1$d \u00d7 %2$d</string> + <string name="external_drop_widget_error">نەیتوانی بڕگەکە فڕێداتە سەر ئەم ڕوونمایە.</string> + <string name="external_drop_widget_pick_title">ویجێت هەڵبژێرە بۆ دروستکردن</string> + <string name="rename_folder_label">ناوی بوخچە</string> + <string name="rename_folder_title">ناولێنانەوەی بوخچە</string> + <string name="rename_action">باشه</string> + <string name="cancel_action">لابردن</string> + <string name="menu_item_add_item">زیاکردن بۆ پاشبنەمای ڕوونما</string> + <string name="group_applications">بەرنامەکان</string> + <string name="group_shortcuts">کورتەرێگەکان</string> + <string name="group_widgets">ویجێتەکان</string> + <string name="completely_out_of_space">لە ناو ماڵی ڕوونماکانت دیوی تری لێ نییە.</string> + <string name="out_of_space">لەم ماڵی ڕوونمایەدا دیوی تر نییە.</string> + <string name="hotseat_out_of_space">لە کەشەفەی دڵخوازەکانت دیوی تری لێ نییە</string> + <string name="invalid_hotseat_item">ئەم ویجێتە زۆر گەورەیە بۆ کەشەفەی دڵخوازەکان</string> + <string name="shortcut_installed">کورتەڕێی \"<xliff:g id="name" example="Browser">%s</xliff:g>\" دروست کرا.</string> + <string name="shortcut_uninstalled">کورتەڕێی \"<xliff:g id="name" example="Browser">%s</xliff:g>\" لا برابوو.</string> + <string name="shortcut_duplicate">کورتەڕێی \"<xliff:g id="name" example="Browser">%s</xliff:g>\" پێشتر هەیە.</string> + <string name="title_select_shortcut">کورتەڕێ دیاری بکە</string> + <string name="title_select_application">بەرنامە هەڵبژێرە</string> + <string name="all_apps_button_label">بەرنامەکان</string> + <string name="all_apps_home_button_label">ماڵەوە</string> + <string name="delete_zone_label_workspace">لابردن</string> + <string name="delete_zone_label_all_apps">دامهزرانسڕینهوه</string> + <string name="delete_target_label">لابردن</string> + <string name="delete_target_uninstall_label">دامهزرانسڕینهوه</string> + <string name="info_target_label">زانیاریی بەرنامە</string> + <string name="accessibility_search_button">گهڕان</string> + <string name="accessibility_voice_search_button">گەڕانی دەنگی</string> + <string name="accessibility_all_apps_button">بەرنامەکان</string> + <string name="accessibility_delete_button">لابردن</string> + <string name="delete_zone_label_all_apps_system_app">دامهزرانسڕینهوهی بەڕۆژکردنەوە</string> + <string name="cab_menu_delete_app">دامهزرانسڕینهوهی بەرنامە</string> + <string name="cab_menu_app_info">وردەکارییەکانی بەرنامە</string> + <string name="cab_app_selection_text">١ بەرنامە دیاری کرا</string> + <string name="cab_widget_selection_text">١ ویجێت دیاری کرا</string> + <string name="cab_folder_selection_text">١ بۆخچە دیاری کرا</string> + <string name="cab_shortcut_selection_text">١ کورتەڕێ دیاری کرا</string> + <string name="permlab_install_shortcut">دامەزراندنی کورتەڕێگەکان</string> + <string name="permdesc_install_shortcut">ڕێگە بە بەرنامەیەک بدە بۆ + زیاکردنی کورتەڕێگەکان بەبێ دەستێوەردانی بەکارهێنەر.</string> + <string name="permlab_uninstall_shortcut">دامەزرانسڕینەوەی کورتەڕێگەکان</string> + <string name="permdesc_uninstall_shortcut">ڕێگە بە بەرنامەکە بدە بۆ + لابردنی کورتەڕێگەکان بەبێ دەستێوەردانی بەکارهێنەر.</string> + <string name="permlab_read_settings">خوێندنەوەی ڕێکخستنەکانی ماڵەوە و کورتەڕێگەکان</string> + <string name="permdesc_read_settings">ڕێگە بە بەرنامەکە بدە بۆ خوێندنەوەی ڕێکخستنەکان و + کورتەڕێگەکانی سەر ماڵ.</string> + <string name="permlab_write_settings">نووسینی ڕێکخستنەکانی ماڵەوە و کورتەڕێگەکان</string> + <string name="permdesc_write_settings">ڕێگە بە بەرنامەکە بدە بۆ نووسینی ڕێکخستنەکان و + کورتەڕێگەکانی سەر ماڵ.</string> + <string name="gadget_error_text">کێشەی بارکردنی ویجێت</string> + <string name="uninstall_system_app_text">ئەمە بەرنامەیەکی سیستەمییە و ناتوانرێت دامەزرانسڕینەوەی بۆ بکرێت.</string> + <string name="dream_name">داگیرسێنەری مووشەک</string> + <string name="folder_hint_text">بوخچەی ناونەنراو</string> + <string name="workspace_description_format">ڕوونمای ماڵەوە %1$d</string> + <string name="default_scroll_format">پەڕەی %1$d لە %2$d</string> + <string name="workspace_scroll_format">ڕوونمای ماڵەوە %1$d of %2$d</string> + <string name="apps_customize_apps_scroll_format">پەڕەی بەرنامەکان %1$d لە %2$d</string> + <string name="apps_customize_widgets_scroll_format">پەڕەی ویجێتەکان %1$d لە %2$d</string> + <string name="first_run_cling_title">بە خێربێيت</string> + <string name="first_run_cling_description">خۆت بخەرە ماڵەوە.</string> + <string name="first_run_cling_create_screens_hint">ڕوونمای زیاتر دروست بکە بۆ بەرنامەکان و بوخچەکان</string> + <string name="migration_cling_title">وێنۆچکهی بهرنامهکهت لەبەر بگرەوە</string> + <string name="migration_cling_description">هاوردنی وێنۆچکە و بوخچەکان لە ماڵی ڕوونما کۆنەکانتەوە؟</string> + <string name="migration_cling_copy_apps">لهبهرگرتنهوهی وێنۆچکهکان</string> + <string name="migration_cling_use_default">دهستپێکردنی بووژاندنەوە</string> + <string name="workspace_cling_title">بۆشایییەکەت بەڕێوەبەرە</string> + <string name="workspace_cling_move_item">بسوو & یان پاشبنەما ڕاگرە بۆ بەڕێوەبردنی دیوارپۆش، ویجێتەکان و ڕێکخستنەکان.</string> + <string name="folder_cling_title">لێرە بۆخچەیەک هەیە</string> + <string name="folder_cling_create_folder">بۆ دروستکردنی دانەیەک وەکوو ئەم, بسوو & و دەست ڕاگرە لەسەر بەرنامەیەک، پاشان بیگوازەوە بۆ سەر ئەوی تر.</string> + <string name="cling_dismiss">باشه</string> + <string name="folder_opened">بوخچە کراوە, <xliff:g id="width" example="5">%1$d</xliff:g> لەلایەن <xliff:g id="height" example="3">%2$d</xliff:g></string> + <string name="folder_tap_to_close">بسوو بۆ داخستنی بوخچە</string> + <string name="folder_tap_to_rename">بسوو بۆ پاشەکەوتکردنی ناولێنانەوە</string> + <string name="folder_closed">بوخچە داخرا</string> + <string name="folder_renamed">بوخچە نالێنرایەوە بۆ <xliff:g id="name" example="Games">%1$s</xliff:g></string> + <string name="folder_name_format">بوخچە: <xliff:g id="name" example="Games">%1$s</xliff:g></string> + <string name="debug_memory_activity">* HPROF</string> + <string name="widget_button_text">ویجێتەکان</string> + <string name="wallpaper_button_text">دیوارپۆشەکان</string> + <string name="settings_button_text">ڕێکخستنەکان</string> +</resources> diff --git a/res/values-lb/cm_arrays.xml b/res/values-lb/cm_arrays.xml new file mode 100644 index 000000000..365ac5eec --- /dev/null +++ b/res/values-lb/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Keen</item> + <item>Erazoomen</item> + <item>Erauszoomen</item> + <item>Eroprotéieren</item> + <item>Erofrotéieren</item> + <item>Cube eran</item> + <item>Cube eraus</item> + <item>Koup</item> + <item>Akkordeon</item> + <item>Ëmdréinen</item> + <item>Zylinder eran</item> + <item>Zylinder eraus</item> + <item>Karussell</item> + <item>Iwwersiicht</item> + </string-array> +</resources> diff --git a/res/values-lb/cm_strings.xml b/res/values-lb/cm_strings.xml new file mode 100644 index 000000000..14f7a1217 --- /dev/null +++ b/res/values-lb/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">STARTSCHIERM-ASTELLUNGEN</string> + <string name="drawer_settings">ASTELLUNGE VUN DER APP-IWWERSIICHT</string> + <string name="app_settings">APP-ASTELLUNGEN</string> + <string name="setting_state_on">UN</string> + <string name="setting_state_off">AUS</string> + <string name="themes_button_text">Designen</string> + <string name="scrolling_page_outlines">Säiterummen</string> + <string name="scrolling_fade_adjacent">Säiten um Rand ausblenden</string> + <string name="scrolling_wallpaper">Hannergrondbild scrollen</string> + <string name="grid_size_text">Gittergréisst</string> + <string name="grid_size_comfortable">Gemittlech</string> + <string name="grid_size_cozy">Heemlech</string> + <string name="grid_size_condensed">Schmuel</string> + <string name="grid_size_custom">Personaliséiert (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Personaliséiert Gréisst auswielen</string> + <string name="scroll_effect_text">Scrolleffekt</string> + <string name="drawer_sorting_text">Zortéiermodus</string> + <string name="sort_mode_title">Titel</string> + <string name="sort_mode_launch_count">Startunzuel</string> + <string name="sort_mode_install_time">Installatiounszäit</string> + <string name="home_screen_search_text">Sichkëscht</string> + <string name="larger_icons_text">Grouss Symboler</string> + <string name="icon_labels">Symbol-Beschrëftungen</string> + <string name="icon_labels_show">Uweisen</string> + <string name="icon_labels_hide">Verstoppen</string> + <string name="protected_app_settings">Geschützt Appen</string> + <string name="dialog_confirm">Bestätegen</string> +</resources> diff --git a/res/values-lb/strings.xml b/res/values-lb/strings.xml new file mode 100644 index 000000000..f56d6b912 --- /dev/null +++ b/res/values-lb/strings.xml @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +/* +* Copyright (C) 2008 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="application_name">Launcher3</string> + <string name="home">Startschierm</string> + <string name="uid_name">Kär-Appe vun Android</string> + <string name="activity_not_found">D\'App ass net installéiert.</string> + <string name="safemode_shortcut_error">Erofgelueden App am séchere Modus desaktivéiert</string> + <string name="widgets_tab_label">Widgeten</string> + <string name="widget_adder">Widgeten</string> + <string name="toggle_weight_watcher">Späicher uweisen</string> + <string name="long_press_widget_to_add">Drécken an halen, fir e Widget opzerafen.</string> + <string name="market">Geschäft</string> + <string name="widget_dims_format">%1$d \u00d7 %2$d</string> + <string name="external_drop_widget_error">Konnt d\'Element net um Startschierm ofleeën.</string> + <string name="external_drop_widget_pick_title">Widget auswielen den erstallt soll ginn</string> + <string name="rename_folder_label">Dossiersnumm</string> + <string name="rename_folder_title">Dossier ëmbenennen</string> + <string name="rename_action">OK</string> + <string name="cancel_action">Ofbriechen</string> + <string name="menu_item_add_item">Op de Startschierm setzen</string> + <string name="group_applications">Appen</string> + <string name="group_shortcuts">Ofkierzungen</string> + <string name="group_widgets">Widgeten</string> + <string name="completely_out_of_space">Keng Plaz méi op de Startschiermer.</string> + <string name="out_of_space">Keng Plaz méi op dësem Startschierm.</string> + <string name="hotseat_out_of_space">Keng Plaz méi an der Favoritteläischt</string> + <string name="invalid_hotseat_item">Dëse Widget ass ze breet fir d\'Favoritteläischt</string> + <string name="shortcut_installed">Ofkierzung \"<xliff:g id="name" example="Browser">%s</xliff:g>\" erstallt.</string> + <string name="shortcut_uninstalled">Ofkierzung \"<xliff:g id="name" example="Browser">%s</xliff:g>\" ewechgeholl.</string> + <string name="shortcut_duplicate">D\'Ofkierzung \"<xliff:g id="name" example="Browser">%s</xliff:g>\" existéiert schonn.</string> + <string name="title_select_shortcut">Ofkierzung auswielen</string> + <string name="title_select_application">App auswielen</string> + <string name="all_apps_button_label">Appen</string> + <string name="all_apps_home_button_label">Startschierm</string> + <string name="delete_zone_label_workspace">Ewechhuelen</string> + <string name="delete_zone_label_all_apps">Desinstalléieren</string> + <string name="delete_target_label">Läschen</string> + <string name="delete_target_uninstall_label">Desinstalléieren</string> + <string name="info_target_label">App-Info</string> + <string name="accessibility_search_button">Sichen</string> + <string name="accessibility_voice_search_button">Stëmmsich</string> + <string name="accessibility_all_apps_button">Appen</string> + <string name="accessibility_delete_button">Ewechhuelen</string> + <string name="delete_zone_label_all_apps_system_app">Aktualiséierung desinstalléieren</string> + <string name="cab_menu_delete_app">App desinstalléieren</string> + <string name="cab_menu_app_info">App-Detailer</string> + <string name="cab_app_selection_text">1 App ausgewielt</string> + <string name="cab_widget_selection_text">1 Widget ausgewielt</string> + <string name="cab_folder_selection_text">1 Dossier ausgewielt</string> + <string name="cab_shortcut_selection_text">1 Ofkierzung ausgewielt</string> + <string name="permlab_install_shortcut">Ofkierzungen installéieren</string> + <string name="permdesc_install_shortcut">Erlaabt der App, Ofkierzungen ouni Benotzerinterventioun dobäizesetzen.</string> + <string name="permlab_uninstall_shortcut">Ofkierzungen desinstalléieren</string> + <string name="permdesc_uninstall_shortcut">Erlaabt der App, Ofkierzungen ouni Benotzerinterventioun ewechzehuelen.</string> + <string name="permlab_read_settings">Startschierm-Astellungen an Ofkierzunge liesen</string> + <string name="permdesc_read_settings">Erlaabt der App, d\'Startschierm-Astellungen an -Ofkierzungen ze liesen.</string> + <string name="permlab_write_settings">Startschierm-Astellungen an Ofkierzunge schreiwen</string> + <string name="permdesc_write_settings">Erlaabt der App, d\'Startschierm-Astellungen an -Ofkierzungen z\'änneren.</string> + <string name="gadget_error_text">Problem beim Luede vum Widget</string> + <string name="gadget_setup_text">Astellen</string> + <string name="uninstall_system_app_text">Dëst ass eng System-App a kann net desinstalléiert ginn.</string> + <string name="dream_name">Rocket Launcher</string> + <string name="folder_hint_text">Onbenannten Dossier</string> + <string name="workspace_description_format">Startschierm %1$d</string> + <string name="default_scroll_format">Säit %1$d / %2$d</string> + <string name="workspace_scroll_format">Startschierm %1$d / %2$d</string> + <string name="apps_customize_apps_scroll_format">Appe-Säit %1$d / %2$d</string> + <string name="apps_customize_widgets_scroll_format">Widgete-Säit %1$d / %2$d</string> + <string name="first_run_cling_title">Wëllkomm</string> + <string name="first_run_cling_description">Fill dech wéi doheem.</string> + <string name="first_run_cling_create_screens_hint">Méi Schiermer fir Appen an Dossieren dobäisetzen</string> + <string name="migration_cling_title">App-Symboler kopéieren</string> + <string name="migration_cling_description">Symboler an Dossieren vun dengem ale Startschierm importéieren?</string> + <string name="migration_cling_copy_apps">SYMBOLER KOPÉIEREN</string> + <string name="migration_cling_use_default">FRËSCH UFÄNKEN</string> + <string name="workspace_cling_title">Aarbechtsberäich organiséieren</string> + <string name="workspace_cling_move_item">Hannergrond drécken an halen, fir d\'Hannergrondbiller, Widgeten an Astellungen ze geréieren.</string> + <string name="workspace_cling_longpress_title">Hannergrondbiller, Widgeten an Astellungen</string> + <string name="workspace_cling_longpress_description">Hannergrond drécken an hale fir unzepassen</string> + <string name="workspace_cling_longpress_dismiss">OK</string> + <string name="folder_cling_title">Hei ass en Dossier</string> + <string name="folder_cling_create_folder">Dréck an hal eng App, an da réckel s\'iwwer eng aner, fir en Dossier z\'erstellen.</string> + <string name="cling_dismiss">OK</string> + <string name="folder_opened">Dossier opgemaach, <xliff:g id="width" example="5">%1$d</xliff:g>-mol <xliff:g id="height" example="3">%2$d</xliff:g></string> + <string name="folder_tap_to_close">Dréck fir den Dossier zouzemaachen</string> + <string name="folder_tap_to_rename">Dréck fir den ëmbenannten Dossier ze späicheren</string> + <string name="folder_closed">Dossier zougemaach</string> + <string name="folder_renamed">Dossier ëmbenannt a(n) <xliff:g id="name" example="Games">%1$s</xliff:g></string> + <string name="folder_name_format">Dossier: <xliff:g id="name" example="Games">%1$s</xliff:g></string> + <string name="debug_memory_activity">* HPROF</string> + <string name="widget_button_text">Widgeten</string> + <string name="wallpaper_button_text">Hannergrondbiller</string> + <string name="settings_button_text">Astellungen</string> + <string name="package_state_enqueued">Waarden</string> + <string name="package_state_downloading">Gëtt erofgelueden</string> + <string name="package_state_installing">Installatioun leeft</string> + <string name="package_state_unknown">Onbekannt</string> + <string name="package_state_error">Net erëmhiergestallt</string> + <string name="abandoned_clean_all">All ewechhuelen</string> + <string name="abandoned_clean_this">Ewechhuelen</string> + <string name="abandoned_search">Sichen</string> + <string name="abandoned_promises_title">Dës App ass net installéiert</string> + <string name="abandoned_promise_explanation">D\'App fir dëst Symbol ass net installéiert. Du kanns et läschen, oder no der App sichen a se manuell installéieren.</string> +</resources> diff --git a/res/values-lt/cm_arrays.xml b/res/values-lt/cm_arrays.xml new file mode 100644 index 000000000..96ffba2c7 --- /dev/null +++ b/res/values-lt/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Joks</item> + <item>Padidinti</item> + <item>Pamažinti</item> + <item>Pasukti aukštyn</item> + <item>Pasukti žemyn</item> + <item>Kubo vidus</item> + <item>Kubo išorė</item> + <item>Krūva</item> + <item>Akordeonas</item> + <item>Apversti</item> + <item>Cilindro vidus</item> + <item>Cilindro išorė</item> + <item>Karuselė</item> + <item>Apžvalga</item> + </string-array> +</resources> diff --git a/res/values-lt/cm_strings.xml b/res/values-lt/cm_strings.xml new file mode 100644 index 000000000..92753f469 --- /dev/null +++ b/res/values-lt/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">PAGRINDINIO EKRANO NUSTATYMAI</string> + <string name="drawer_settings">STALČIAUS NUSTATYMAI</string> + <string name="app_settings">PROGRAMOS NUSTATYMAI</string> + <string name="setting_state_on">ĮJUNGTA</string> + <string name="setting_state_off">IŠJUNGTA</string> + <string name="themes_button_text">Temos</string> + <string name="scrolling_page_outlines">Puslapio kontūrai</string> + <string name="scrolling_fade_adjacent">Išblukinti šoninius puslapius</string> + <string name="scrolling_wallpaper">Slinkti darbalaukio foną</string> + <string name="grid_size_text">Tinklelio dydis</string> + <string name="grid_size_comfortable">Patogus</string> + <string name="grid_size_cozy">Jaukus</string> + <string name="grid_size_condensed">Suglaustas</string> + <string name="grid_size_custom">Priskirtas (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Pasirinkite tinkintą dydį</string> + <string name="scroll_effect_text">Slinkimo efektas</string> + <string name="drawer_sorting_text">Rūšiavimo režimas</string> + <string name="sort_mode_title">Pavadinimas</string> + <string name="sort_mode_launch_count">Paleidimų kiekis</string> + <string name="sort_mode_install_time">Įdiegimo laikas</string> + <string name="home_screen_search_text">Paieškos juosta</string> + <string name="larger_icons_text">Didesnės piktogramos</string> + <string name="icon_labels">Piktogramų pavadinimai</string> + <string name="icon_labels_show">Rodyti</string> + <string name="icon_labels_hide">Paslėpti</string> + <string name="protected_app_settings">Apsaugotos programos</string> + <string name="dialog_confirm">Patvirtinti</string> +</resources> diff --git a/res/values-lv/cm_arrays.xml b/res/values-lv/cm_arrays.xml new file mode 100644 index 000000000..5c26e733f --- /dev/null +++ b/res/values-lv/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Neviens</item> + <item>Tuvināt</item> + <item>Tālināt</item> + <item>Pagriezt uz augšu</item> + <item>Pagriezt uz leju</item> + <item>Kubs uz iekšu</item> + <item>Kubs uz āru</item> + <item>Kaudzē</item> + <item>Akordeons</item> + <item>Apmest</item> + <item>Cilindrs uz iekšu</item> + <item>Cilindrs uz āru</item> + <item>Karuselis</item> + <item>Pārskats</item> + </string-array> +</resources> diff --git a/res/values-lv/cm_strings.xml b/res/values-lv/cm_strings.xml new file mode 100644 index 000000000..3edfe25c7 --- /dev/null +++ b/res/values-lv/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">MĀJAS EKRĀNA IESTATĪJUMI</string> + <string name="drawer_settings">ATVILKTNES IESTATĪJUMI</string> + <string name="app_settings">LIETOTŅU IESTATĪJUMI</string> + <string name="setting_state_on">IESLĒGTS</string> + <string name="setting_state_off">IZSLĒGTS</string> + <string name="themes_button_text">Tēmas</string> + <string name="scrolling_page_outlines">Lapas struktūra</string> + <string name="scrolling_fade_adjacent">Izbalināt malējās lapas</string> + <string name="scrolling_wallpaper">Pārtīt tapeti</string> + <string name="grid_size_text">Režģa izmērs</string> + <string name="grid_size_comfortable">Ērts</string> + <string name="grid_size_cozy">Mājīgs</string> + <string name="grid_size_condensed">Saīspiests</string> + <string name="grid_size_custom">Pielāgots (<xliff:g id="rows">%1$d </xliff:g> \u00d7 <xliff:g id="columns">%2$d </xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Izvēlieties pielāgotu izmēru</string> + <string name="scroll_effect_text">Ritināšanas efekts</string> + <string name="drawer_sorting_text">Kārtošanas režīms</string> + <string name="sort_mode_title">Nosaukums</string> + <string name="sort_mode_launch_count">Palaišanas reizes</string> + <string name="sort_mode_install_time">Uzstādīšanas laiks</string> + <string name="home_screen_search_text">Meklēšanas josla</string> + <string name="larger_icons_text">Lielākas ikonas</string> + <string name="icon_labels">Ikonas etiķete</string> + <string name="icon_labels_show">Rādīt</string> + <string name="icon_labels_hide">Slēpt</string> + <string name="protected_app_settings">Aizsargātās lietotnes</string> + <string name="dialog_confirm">Apstiprināt</string> +</resources> diff --git a/res/values-nb/cm_arrays.xml b/res/values-nb/cm_arrays.xml new file mode 100644 index 000000000..1e730b230 --- /dev/null +++ b/res/values-nb/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Ingen</item> + <item>Zoome inn</item> + <item>Zoome ut</item> + <item>Rotere opp</item> + <item>Rotere ned</item> + <item>Kube inn</item> + <item>Kube ut</item> + <item>Stabel</item> + <item>Trekkspill</item> + <item>Vend</item> + <item>Sylinder inn</item> + <item>Sylinder ut</item> + <item>Karusell</item> + <item>Oversikt</item> + </string-array> +</resources> diff --git a/res/values-nb/cm_strings.xml b/res/values-nb/cm_strings.xml new file mode 100644 index 000000000..5e2a93587 --- /dev/null +++ b/res/values-nb/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">HJEMMESKJERM INNSTILLINGER</string> + <string name="drawer_settings">SKUFF INNSTILLINGER</string> + <string name="app_settings">APP-INNSTILLINGER</string> + <string name="setting_state_on">PÅ</string> + <string name="setting_state_off">AV</string> + <string name="themes_button_text">Temaer</string> + <string name="scrolling_page_outlines">Skjermkontur</string> + <string name="scrolling_fade_adjacent">Fade skjermsider</string> + <string name="scrolling_wallpaper">Scroll bakgrunn</string> + <string name="grid_size_text">Rutenettstørrelse</string> + <string name="grid_size_comfortable">Komfortabel</string> + <string name="grid_size_cozy">Koselig</string> + <string name="grid_size_condensed">Kondensert</string> + <string name="grid_size_custom">Egendefinert (<xliff:g id="rows">%1$d </xliff:g> \u00d7 <xliff:g id="columns">%2$d </xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Velg egendefinert størrelse</string> + <string name="scroll_effect_text">Bla effekt</string> + <string name="drawer_sorting_text">Sorteringsmodus</string> + <string name="sort_mode_title">Tittel</string> + <string name="sort_mode_launch_count">Start teller</string> + <string name="sort_mode_install_time">Installeringstid</string> + <string name="home_screen_search_text">Søkefelt</string> + <string name="larger_icons_text">Større ikoner</string> + <string name="icon_labels">Ikonetiketter</string> + <string name="icon_labels_show">Vis</string> + <string name="icon_labels_hide">Skjul</string> + <string name="protected_app_settings">Beskyttede apps</string> + <string name="dialog_confirm">Bekreft</string> +</resources> diff --git a/res/values-nl/cm_arrays.xml b/res/values-nl/cm_arrays.xml new file mode 100644 index 000000000..dadaedf0b --- /dev/null +++ b/res/values-nl/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Geen</item> + <item>Inzoomen</item> + <item>Uitzoomen</item> + <item>Naar boven draaien</item> + <item>Naar beneden draaien</item> + <item>Kubus-in</item> + <item>Kubus-uit</item> + <item>Stapelen</item> + <item>Accordeon</item> + <item>Spiegelen</item> + <item>Cilinder-in</item> + <item>Cilinder-uit</item> + <item>Carrousel</item> + <item>Overzicht</item> + </string-array> +</resources> diff --git a/res/values-nl/cm_strings.xml b/res/values-nl/cm_strings.xml new file mode 100644 index 000000000..78008fd73 --- /dev/null +++ b/res/values-nl/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">INSTELLINGEN THUISSCHERM</string> + <string name="drawer_settings">INSTELLINGEN OVERZICHT</string> + <string name="app_settings">INSTELLINGEN APPS</string> + <string name="setting_state_on">AAN</string> + <string name="setting_state_off">UIT</string> + <string name="themes_button_text">Thema\'s</string> + <string name="scrolling_page_outlines">Paginacontouren</string> + <string name="scrolling_fade_adjacent">Zijkant pagina\'s vervagen</string> + <string name="scrolling_wallpaper">Achtergrond schuiven</string> + <string name="grid_size_text">Rastergrootte</string> + <string name="grid_size_comfortable">Comfortabel</string> + <string name="grid_size_cozy">Knus</string> + <string name="grid_size_condensed">Smal</string> + <string name="grid_size_custom">Aangepast (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Aangepaste grootte</string> + <string name="scroll_effect_text">Overgangseffect</string> + <string name="drawer_sorting_text">Sorteren op</string> + <string name="sort_mode_title">Titel</string> + <string name="sort_mode_launch_count">Aantal starts</string> + <string name="sort_mode_install_time">Tijd van installatie</string> + <string name="home_screen_search_text">Zoekbalk</string> + <string name="larger_icons_text">Grote pictogrammen</string> + <string name="icon_labels">Pictogramlabels</string> + <string name="icon_labels_show">Aan</string> + <string name="icon_labels_hide">Uit</string> + <string name="protected_app_settings">Beschermde apps</string> + <string name="dialog_confirm">Bevestig</string> +</resources> diff --git a/res/values-pl/cm_arrays.xml b/res/values-pl/cm_arrays.xml new file mode 100644 index 000000000..f93e1b4e9 --- /dev/null +++ b/res/values-pl/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Brak</item> + <item>Zbliżanie</item> + <item>Oddalanie</item> + <item>Obrót do góry</item> + <item>Obrót w dół</item> + <item>Kostka (w środku)</item> + <item>Kostka (na zewnątrz)</item> + <item>Stos</item> + <item>Akordeon</item> + <item>Obrót</item> + <item>Cylinder (w środku)</item> + <item>Cylinder (na zewnątrz)</item> + <item>Karuzela</item> + <item>Przegląd</item> + </string-array> +</resources> diff --git a/res/values-pl/cm_strings.xml b/res/values-pl/cm_strings.xml new file mode 100644 index 000000000..1d1fbd08d --- /dev/null +++ b/res/values-pl/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">USTAWIENIA EKRANU GŁÓWNEGO</string> + <string name="drawer_settings">USTAWIENIA SZUFLADY APLIKACJI</string> + <string name="app_settings">USTAWIENIA APLIKACJI</string> + <string name="setting_state_on">WŁĄCZONE</string> + <string name="setting_state_off">WYŁĄCZONE</string> + <string name="themes_button_text">Motywy</string> + <string name="scrolling_page_outlines">Kontury strony</string> + <string name="scrolling_fade_adjacent">Przenikaj strony boczne</string> + <string name="scrolling_wallpaper">Przewijanie tapety</string> + <string name="grid_size_text">Rozmiar siatki</string> + <string name="grid_size_comfortable">Wygodny</string> + <string name="grid_size_cozy">Luźny</string> + <string name="grid_size_condensed">Zagęszczony</string> + <string name="grid_size_custom">Niestandardowy (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Wybierz własny rozmiar</string> + <string name="scroll_effect_text">Efekt przewijania</string> + <string name="drawer_sorting_text">Tryb sortowania</string> + <string name="sort_mode_title">Tytuł</string> + <string name="sort_mode_launch_count">Liczba uruchomień</string> + <string name="sort_mode_install_time">Data instalacji</string> + <string name="home_screen_search_text">Pasek wyszukiwania</string> + <string name="larger_icons_text">Większe ikony</string> + <string name="icon_labels">Etykiety ikon</string> + <string name="icon_labels_show">Pokaż</string> + <string name="icon_labels_hide">Ukryj</string> + <string name="protected_app_settings">Chronione aplikacje</string> + <string name="dialog_confirm">Potwierdź</string> +</resources> diff --git a/res/values-pt-rBR/cm_arrays.xml b/res/values-pt-rBR/cm_arrays.xml new file mode 100644 index 000000000..81f8c5f4d --- /dev/null +++ b/res/values-pt-rBR/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Nenhum</item> + <item>Aumentar zoom</item> + <item>Diminuir o zoom</item> + <item>Girar para cima</item> + <item>Girar para baixo</item> + <item>Cubo interno</item> + <item>Cubo externo</item> + <item>Pilha</item> + <item>Acordeão</item> + <item>Girar</item> + <item>Cilindro Interno</item> + <item>Cilindro Externo</item> + <item>Carrossel</item> + <item>Visão Geral</item> + </string-array> +</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..db3a1f260 --- /dev/null +++ b/res/values-pt-rBR/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">CONFIGURAÇÕES DA TELA DE INÍCIO</string> + <string name="drawer_settings">CONFIGURAÇÕES DA GAVETA APLICAÇÕES</string> + <string name="app_settings">CONFIGURAÇÕES DE APLICATIVO</string> + <string name="setting_state_on">LIG</string> + <string name="setting_state_off">DESL</string> + <string name="themes_button_text">Temas</string> + <string name="scrolling_page_outlines">Contorno de página</string> + <string name="scrolling_fade_adjacent">Esmaecer páginas laterais</string> + <string name="scrolling_wallpaper">Rolar papel de parede</string> + <string name="grid_size_text">Tamanho da grade</string> + <string name="grid_size_comfortable">Confortável</string> + <string name="grid_size_cozy">Aconchegante</string> + <string name="grid_size_condensed">Condensado</string> + <string name="grid_size_custom">Personalizado (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Selecione tamanho personalizado</string> + <string name="scroll_effect_text">Efeito de rolagem</string> + <string name="drawer_sorting_text">Modo de ordenação</string> + <string name="sort_mode_title">Título</string> + <string name="sort_mode_launch_count">Contador de inicialização</string> + <string name="sort_mode_install_time">Hora da instalação</string> + <string name="home_screen_search_text">Barra de pesquisa</string> + <string name="larger_icons_text">Ícones grandes</string> + <string name="icon_labels">Etiquetas de ícones</string> + <string name="icon_labels_show">Mostrar</string> + <string name="icon_labels_hide">Ocultar</string> + <string name="protected_app_settings">Aplicativos protegidos</string> + <string name="dialog_confirm">Confirmar</string> +</resources> diff --git a/res/values-pt-rPT/cm_arrays.xml b/res/values-pt-rPT/cm_arrays.xml new file mode 100644 index 000000000..85f7cfa64 --- /dev/null +++ b/res/values-pt-rPT/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Nenhum</item> + <item>Zoom para dentro</item> + <item>Zoom para fora</item> + <item>Rodar para cima</item> + <item>Rodar para baixo</item> + <item>Cubo para dentro</item> + <item>Cubo para fora</item> + <item>Pilha</item> + <item>Acordeão</item> + <item>Virar</item> + <item>Cilindro para dentro</item> + <item>Cilindro para Fora</item> + <item>Carrossel</item> + <item>Vista geral</item> + </string-array> +</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..b3faf639e --- /dev/null +++ b/res/values-pt-rPT/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">DEFINIÇÕES DO ECRÃ INICIAL</string> + <string name="drawer_settings">DEFINIÇÕES DA GAVETA APLICAÇÕES</string> + <string name="app_settings">DEFINIÇÕES DA APLICAÇÃO</string> + <string name="setting_state_on">LIG.</string> + <string name="setting_state_off">DESL.</string> + <string name="themes_button_text">Temas</string> + <string name="scrolling_page_outlines">Contorno das páginas</string> + <string name="scrolling_fade_adjacent">Desvanecer as laterais das páginas</string> + <string name="scrolling_wallpaper">Deslizar imagem de fundo</string> + <string name="grid_size_text">Tamanho da grelha</string> + <string name="grid_size_comfortable">Confortável</string> + <string name="grid_size_cozy">Cómodo</string> + <string name="grid_size_condensed">Condensado</string> + <string name="grid_size_custom">Personalizado (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Selecionar o tamanho personalizado</string> + <string name="scroll_effect_text">Efeito de transição</string> + <string name="drawer_sorting_text">Ordenar por</string> + <string name="sort_mode_title">Título</string> + <string name="sort_mode_launch_count">Contagem de inicializações</string> + <string name="sort_mode_install_time">Data de instalação</string> + <string name="home_screen_search_text">Barra de pesquisa</string> + <string name="larger_icons_text">Ícones grandes</string> + <string name="icon_labels">Legendas dos ícones</string> + <string name="icon_labels_show">Mostrar</string> + <string name="icon_labels_hide">Ocultar</string> + <string name="protected_app_settings">Aplicações protegidas</string> + <string name="dialog_confirm">Confirmar</string> +</resources> diff --git a/res/values-ro/cm_arrays.xml b/res/values-ro/cm_arrays.xml new file mode 100644 index 000000000..a888a8793 --- /dev/null +++ b/res/values-ro/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Nimic</item> + <item>Zoom in</item> + <item>Zoom out</item> + <item>Rotire în sus</item> + <item>Rotire în jos</item> + <item>Cub interior</item> + <item>Cub exterior</item> + <item>Stivă</item> + <item>Acordeon</item> + <item>Flip</item> + <item>Cilindru interor</item> + <item>Cilindru exterior</item> + <item>Carusel</item> + <item>Privire de ansamblu</item> + </string-array> +</resources> diff --git a/res/values-ro/cm_strings.xml b/res/values-ro/cm_strings.xml new file mode 100644 index 000000000..183467af8 --- /dev/null +++ b/res/values-ro/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">SETĂRI ECRAN PRINCIPAL</string> + <string name="drawer_settings">SETĂRI ECRAN APLICAȚII</string> + <string name="app_settings">SETĂRI APLICAȚIE</string> + <string name="setting_state_on">ACTIV</string> + <string name="setting_state_off">INACTIV</string> + <string name="themes_button_text">Teme</string> + <string name="scrolling_page_outlines">Contururi pagină</string> + <string name="scrolling_fade_adjacent">Estompează paginile secundare</string> + <string name="scrolling_wallpaper">Scroll-ează fundal</string> + <string name="grid_size_text">Dimensiune grilă</string> + <string name="grid_size_comfortable">Confortabil</string> + <string name="grid_size_cozy">Comod</string> + <string name="grid_size_condensed">Condensat</string> + <string name="grid_size_custom">Particularizat (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Selectare dimensiune particularizată</string> + <string name="scroll_effect_text">Efect scroll</string> + <string name="drawer_sorting_text">Mod sortare</string> + <string name="sort_mode_title">Titlu</string> + <string name="sort_mode_launch_count">Numărare lansare</string> + <string name="sort_mode_install_time">Timp de instalare</string> + <string name="home_screen_search_text">Bară de căutare</string> + <string name="larger_icons_text">Icon-uri mai mari</string> + <string name="icon_labels">Etichete icon-uri</string> + <string name="icon_labels_show">Arată</string> + <string name="icon_labels_hide">Ascunde</string> + <string name="protected_app_settings">Aplicații protejate</string> + <string name="dialog_confirm">Confirmă</string> +</resources> diff --git a/res/values-ru/cm_arrays.xml b/res/values-ru/cm_arrays.xml new file mode 100644 index 000000000..4003a4b44 --- /dev/null +++ b/res/values-ru/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Нет</item> + <item>Увеличение</item> + <item>Уменьшение</item> + <item>Поворот вверх</item> + <item>Поворот вниз</item> + <item>Внутри куба</item> + <item>Снаружи куба</item> + <item>Стопка</item> + <item>Сжатие</item> + <item>Переворот</item> + <item>Внутри цилиндра</item> + <item>Снаружи цилиндра</item> + <item>Карусель</item> + <item>Обзор</item> + </string-array> +</resources> diff --git a/res/values-ru/cm_strings.xml b/res/values-ru/cm_strings.xml new file mode 100644 index 000000000..2a6ba41a6 --- /dev/null +++ b/res/values-ru/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">ДОМАШНИЙ ЭКРАН</string> + <string name="drawer_settings">МЕНЮ ПРИЛОЖЕНИЙ</string> + <string name="app_settings">НАСТРОЙКИ ПРИЛОЖЕНИЯ</string> + <string name="setting_state_on">ВКЛ.</string> + <string name="setting_state_off">ВЫКЛ.</string> + <string name="themes_button_text">Темы</string> + <string name="scrolling_page_outlines">Границы страниц</string> + <string name="scrolling_fade_adjacent">Затемнять края при переходе</string> + <string name="scrolling_wallpaper">Прокрутка обоев</string> + <string name="grid_size_text">Размер сетки</string> + <string name="grid_size_comfortable">Комфортная</string> + <string name="grid_size_cozy">Удобная</string> + <string name="grid_size_condensed">Сжатая</string> + <string name="grid_size_custom">Своя (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Выберите размер сетки</string> + <string name="scroll_effect_text">Эффект прокрутки</string> + <string name="drawer_sorting_text">Режим сортировки</string> + <string name="sort_mode_title">По назв.</string> + <string name="sort_mode_launch_count">По частоте исп.</string> + <string name="sort_mode_install_time">По врем. устан.</string> + <string name="home_screen_search_text">Строка поиска</string> + <string name="larger_icons_text">Крупные значки</string> + <string name="icon_labels">Подписи значков</string> + <string name="icon_labels_show">Показ.</string> + <string name="icon_labels_hide">Скрывать</string> + <string name="protected_app_settings">Заблокированные приложения</string> + <string name="dialog_confirm">Подтвердить</string> +</resources> diff --git a/res/values-si-rLK/cm_arrays.xml b/res/values-si-rLK/cm_arrays.xml new file mode 100644 index 000000000..09a4544ed --- /dev/null +++ b/res/values-si-rLK/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>කිසිවක් නැත</item> + <item>ඇතුලට විශාලනය</item> + <item>පිටතට විශාලනය</item> + <item>ඉහළට භ්රමණය</item> + <item>පහළට භ්රමණය</item> + <item>ඇතුලට ඝනකය</item> + <item>පිටතට ඝනකය</item> + <item>අට්ටි ගැසීම</item> + <item>එකෝඩින්</item> + <item>පෙරළීම</item> + <item>ඇතුලට සිලින්ඩරය</item> + <item>පිටතට සිලින්ඩරය</item> + <item>බීමත්වූ</item> + <item>දළ විශ්ලේෂණය</item> + </string-array> +</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..18a9a152b --- /dev/null +++ b/res/values-si-rLK/cm_strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">මුල් තිරයේ සැකසීම්</string> + <string name="drawer_settings">ලාච්චුවේ සැකසීම්</string> + <string name="app_settings">යෙදුම් සැකසීම්</string> + <string name="setting_state_on">සක්රීයයි</string> + <string name="setting_state_off">අක්රීයයි</string> + <string name="themes_button_text">තේමා</string> + <string name="scrolling_page_outlines">පිටුවේ පිට මායිම්</string> + <string name="scrolling_fade_adjacent">පැති පිටු අවපැහැ කරන්න</string> + <string name="scrolling_wallpaper">වෝල්පේපරය අනුචලනය කරන්න</string> + <string name="grid_size_text">කොටු සැලැස්මේ ප්රමාණය</string> + <string name="grid_size_comfortable">සැපපහසු</string> + <string name="grid_size_cozy">ප්රියජනක</string> + <string name="grid_size_condensed">ඝනීභූත</string> + <string name="preferences_interface_homescreen_custom">රිසිකළ ප්රමාණය තෝරන්න</string> + <string name="scroll_effect_text">අනුචලන ආටෝපය</string> + <string name="drawer_sorting_text">සුබෙදීමේ ප්රකාරය</string> + <string name="sort_mode_title">පටබැඳිනාමය</string> + <string name="sort_mode_launch_count">දියත් කල වාර ගණන</string> + <string name="sort_mode_install_time">ස්ථාපිත වේලාව</string> + <string name="home_screen_search_text">සෙවුම් තීරුව</string> + <string name="larger_icons_text">විශාල අයිකන</string> + <string name="icon_labels">අයිකන ලේබල</string> + <string name="icon_labels_show">පෙන්වන්න</string> + <string name="icon_labels_hide">සඟවන්න</string> + <string name="protected_app_settings">ආරක්ෂිත යෙදුම්</string> + <string name="dialog_confirm">තහවුරු කරන්න</string> +</resources> diff --git a/res/values-sk/cm_arrays.xml b/res/values-sk/cm_arrays.xml new file mode 100644 index 000000000..0de34705b --- /dev/null +++ b/res/values-sk/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Žiadny</item> + <item>Priblíženie</item> + <item>Oddialenie</item> + <item>Otočenie hore</item> + <item>Otočenie dolu</item> + <item>Kocka zvnútra</item> + <item>Kocka zvonku</item> + <item>Hromadenie</item> + <item>Akordeón</item> + <item>Preklopenie</item> + <item>Valec zvnútra</item> + <item>Valec zvonku</item> + <item>Kolotoč</item> + <item>Prehľad</item> + </string-array> +</resources> diff --git a/res/values-sk/cm_strings.xml b/res/values-sk/cm_strings.xml new file mode 100644 index 000000000..c37ad8f0a --- /dev/null +++ b/res/values-sk/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">NASTAVENIA DOMOVSKEJ OBRAZOVKY</string> + <string name="drawer_settings">NASTAVENIA PONUKY</string> + <string name="app_settings">NASTAVENIA APLIKÁCIÍ</string> + <string name="setting_state_on">Zapnuté</string> + <string name="setting_state_off">VYPNUTÉ</string> + <string name="themes_button_text">Témy</string> + <string name="scrolling_page_outlines">Obrysy stránky</string> + <string name="scrolling_fade_adjacent">Stmavnuté bočné strany</string> + <string name="scrolling_wallpaper">Posun tapety</string> + <string name="grid_size_text">Veľkosť mriežky</string> + <string name="grid_size_comfortable">Pohodlná</string> + <string name="grid_size_cozy">Útulná</string> + <string name="grid_size_condensed">Zhustená</string> + <string name="grid_size_custom">Vlastná (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Vyberte vlastnú veľkosť</string> + <string name="scroll_effect_text">Efekt posunu</string> + <string name="drawer_sorting_text">Režim triedenia</string> + <string name="sort_mode_title">Názov</string> + <string name="sort_mode_launch_count">Počet spustení</string> + <string name="sort_mode_install_time">Čas inštalácie</string> + <string name="home_screen_search_text">Vyhľadávací panel</string> + <string name="larger_icons_text">Väčšie ikony</string> + <string name="icon_labels">Menovky ikon</string> + <string name="icon_labels_show">Zobraziť</string> + <string name="icon_labels_hide">Skryť</string> + <string name="protected_app_settings">Chránené aplikácie</string> + <string name="dialog_confirm">Potvrdiť</string> +</resources> diff --git a/res/values-sr/cm_arrays.xml b/res/values-sr/cm_arrays.xml new file mode 100644 index 000000000..011ea479c --- /dev/null +++ b/res/values-sr/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Ниједан</item> + <item>Увећавање</item> + <item>Умањивање</item> + <item>Ротирање нагоре</item> + <item>Ротирање надоле</item> + <item>Коцка унутра</item> + <item>Коцка споља</item> + <item>Листање карата</item> + <item>Хармоника</item> + <item>Окрет</item> + <item>Цилиндар унутра</item> + <item>Цилиндар споља</item> + <item>Рингишпил</item> + <item>Преглед</item> + </string-array> +</resources> diff --git a/res/values-sr/cm_strings.xml b/res/values-sr/cm_strings.xml new file mode 100644 index 000000000..cddf785f0 --- /dev/null +++ b/res/values-sr/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">ПОДЕШАВАЊА ПОЧЕТНОГ ЕКРАНА</string> + <string name="drawer_settings">ПОДЕШАВАЊА ФИОКЕ</string> + <string name="app_settings">ПОДЕШАВАЊА АПЛИКАЦИЈА</string> + <string name="setting_state_on">ДА</string> + <string name="setting_state_off">НЕ</string> + <string name="themes_button_text">Теме</string> + <string name="scrolling_page_outlines">Контура странице</string> + <string name="scrolling_fade_adjacent">Замагљени крајеви страница</string> + <string name="scrolling_wallpaper">Скроловање позадине</string> + <string name="grid_size_text">Величина мреже</string> + <string name="grid_size_comfortable">Комфорно</string> + <string name="grid_size_cozy">Удобно</string> + <string name="grid_size_condensed">Кондензовано</string> + <string name="grid_size_custom">Прилагођено (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Изабери прилагођену величину</string> + <string name="scroll_effect_text">Ефекат</string> + <string name="drawer_sorting_text">Сортирање</string> + <string name="sort_mode_title">Наслов</string> + <string name="sort_mode_launch_count">Број покретања</string> + <string name="sort_mode_install_time">Време инсталирања</string> + <string name="home_screen_search_text">Трака за претрагу</string> + <string name="larger_icons_text">Веће иконе</string> + <string name="icon_labels">Ознаке икона</string> + <string name="icon_labels_show">Прикажи</string> + <string name="icon_labels_hide">Сакриј</string> + <string name="protected_app_settings">Заштићене апликације</string> + <string name="dialog_confirm">Потврди</string> +</resources> diff --git a/res/values-sv/cm_arrays.xml b/res/values-sv/cm_arrays.xml new file mode 100644 index 000000000..9ccd98016 --- /dev/null +++ b/res/values-sv/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Ingen</item> + <item>Zooma in</item> + <item>Zooma ut</item> + <item>Rotera uppåt</item> + <item>Rotera nedåt</item> + <item>Kub inåt</item> + <item>Kub utåt</item> + <item>Stack</item> + <item>Dragspel</item> + <item>Vänd</item> + <item>Cylinder inåt</item> + <item>Cylinder utåt</item> + <item>Karusell</item> + <item>Översikt</item> + </string-array> +</resources> diff --git a/res/values-sv/cm_strings.xml b/res/values-sv/cm_strings.xml new file mode 100644 index 000000000..36a0d9cf1 --- /dev/null +++ b/res/values-sv/cm_strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">HEMSKÄRMSINSTÄLLNINGAR</string> + <string name="drawer_settings">APPMENYINSTÄLLNINGAR</string> + <string name="app_settings">APPINSTÄLLNINGAR</string> + <string name="setting_state_on">PÅ</string> + <string name="setting_state_off">AV</string> + <string name="themes_button_text">Teman</string> + <string name="scrolling_page_outlines">Skärmkonturer</string> + <string name="scrolling_fade_adjacent">Tona skärmsidor</string> + <string name="scrolling_wallpaper">Rulla bakgrundsbild</string> + <string name="grid_size_text">Rutnätsstorlek</string> + <string name="grid_size_comfortable">Komfortabel</string> + <string name="grid_size_cozy">Mysig</string> + <string name="grid_size_condensed">Kondenserad</string> + <string name="preferences_interface_homescreen_custom">Välj anpassad storlek</string> + <string name="scroll_effect_text">Rullningseffekt</string> + <string name="drawer_sorting_text">Sorteringsläge</string> + <string name="sort_mode_title">Titel</string> + <string name="sort_mode_launch_count">Startantal</string> + <string name="sort_mode_install_time">Installationstillfälle</string> + <string name="home_screen_search_text">Sökfält</string> + <string name="larger_icons_text">Större ikoner</string> + <string name="icon_labels">Ikonetiketter</string> + <string name="icon_labels_show">Visa</string> + <string name="icon_labels_hide">Dölj</string> + <string name="protected_app_settings">Skyddade appar</string> + <string name="dialog_confirm">Bekräfta</string> +</resources> diff --git a/res/values-th/cm_arrays.xml b/res/values-th/cm_arrays.xml new file mode 100644 index 000000000..8640fb156 --- /dev/null +++ b/res/values-th/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>ไม่มี</item> + <item>ซูมเข้า</item> + <item>ซูมออก</item> + <item>หมุนขึ้น</item> + <item>หมุนลง</item> + <item>เข้าลูกบาศก์</item> + <item>ออกลูกบาศก์</item> + <item>ไพ่</item> + <item>หีบเพลง</item> + <item>พลิก</item> + <item>เข้าทรงกระบอก</item> + <item>ออกทรงกระบอก</item> + <item>Carousel</item> + <item>ภาพรวม</item> + </string-array> +</resources> diff --git a/res/values-th/cm_strings.xml b/res/values-th/cm_strings.xml new file mode 100644 index 000000000..c32e370c5 --- /dev/null +++ b/res/values-th/cm_strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">ตั้งค่าหน้าจอหลัก</string> + <string name="drawer_settings">ตั้งค่าแผงแสดงแอป</string> + <string name="app_settings">ตั้งค่าแอป</string> + <string name="setting_state_on">เปิด</string> + <string name="setting_state_off">ปิด</string> + <string name="themes_button_text">ชุดรูปแบบ</string> + <string name="scrolling_page_outlines">โครงร่างหน้า</string> + <string name="scrolling_fade_adjacent">จากหน้าด้านข้าง</string> + <string name="scrolling_wallpaper">เลื่อนภาพพื้นหลัง</string> + <string name="grid_size_text">ขนาดกริด</string> + <string name="grid_size_comfortable">สะดวกสบาย</string> + <string name="grid_size_cozy">โคซี่</string> + <string name="grid_size_condensed">บีบ</string> + <string name="preferences_interface_homescreen_custom">เลือกขนาดกำหนดเอง</string> + <string name="scroll_effect_text">เอฟเฟกต์เลื่อน</string> + <string name="drawer_sorting_text">วิธีการเรียง</string> + <string name="sort_mode_title">ชื่อเรื่อง</string> + <string name="sort_mode_launch_count">ตัวนับครั้งการเปิด</string> + <string name="sort_mode_install_time">เวลาติดตั้ง</string> + <string name="home_screen_search_text">แถบค้นหา</string> + <string name="larger_icons_text">ไอคอนขนาดใหญ่</string> + <string name="icon_labels">ป้ายชื่อไอคอน</string> + <string name="icon_labels_show">แสดง</string> + <string name="icon_labels_hide">ซ่อน</string> + <string name="protected_app_settings">แอปที่ป้องกัน</string> + <string name="dialog_confirm">Google</string> +</resources> diff --git a/res/values-tr/cm_arrays.xml b/res/values-tr/cm_arrays.xml new file mode 100644 index 000000000..a43170d91 --- /dev/null +++ b/res/values-tr/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Hiçbiri</item> + <item>Yakınlaştır</item> + <item>Uzaklaştır</item> + <item>Yukarı döndür</item> + <item>Aşağı döndür</item> + <item>Küp içi</item> + <item>Küp dışı</item> + <item>Yığın</item> + <item>Akordiyon</item> + <item>Çevir</item> + <item>Silindir içi</item> + <item>Silindir dışı</item> + <item>Karusel</item> + <item>Genel Görünüm</item> + </string-array> +</resources> diff --git a/res/values-tr/cm_strings.xml b/res/values-tr/cm_strings.xml new file mode 100644 index 000000000..1eefcf37b --- /dev/null +++ b/res/values-tr/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">ANA EKRAN AYARLARI</string> + <string name="drawer_settings">ÇEKMECE AYARLARI</string> + <string name="app_settings">UYGULAMA AYARLARI</string> + <string name="setting_state_on">AÇIK</string> + <string name="setting_state_off">KAPALI</string> + <string name="themes_button_text">Temalar</string> + <string name="scrolling_page_outlines">Sayfa anahatları</string> + <string name="scrolling_fade_adjacent">Yan sayfaları soldur</string> + <string name="scrolling_wallpaper">Duvarkağıdını kaydır</string> + <string name="grid_size_text">Izgara boyutu</string> + <string name="grid_size_comfortable">Seyrek</string> + <string name="grid_size_cozy">Rahat</string> + <string name="grid_size_condensed">Yoğun</string> + <string name="grid_size_custom">Özel (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Özel boyut seçin</string> + <string name="scroll_effect_text">Kaydırma efekti</string> + <string name="drawer_sorting_text">Sıralama modu</string> + <string name="sort_mode_title">Başlık</string> + <string name="sort_mode_launch_count">Çalıştırma sayısı</string> + <string name="sort_mode_install_time">Kurulum zamanı</string> + <string name="home_screen_search_text">Arama çubuğu</string> + <string name="larger_icons_text">Daha büyük simgeler</string> + <string name="icon_labels">Simge etiketleri</string> + <string name="icon_labels_show">Göster</string> + <string name="icon_labels_hide">Gizle</string> + <string name="protected_app_settings">Korunan uygulamalar</string> + <string name="dialog_confirm">Onayla</string> +</resources> diff --git a/res/values-uk/cm_arrays.xml b/res/values-uk/cm_arrays.xml new file mode 100644 index 000000000..3026f97fa --- /dev/null +++ b/res/values-uk/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>Немає</item> + <item>Збільшення</item> + <item>Зменшення</item> + <item>Поворот угору</item> + <item>Поворот униз</item> + <item>Всередині куба</item> + <item>Зовні куба</item> + <item>Стек</item> + <item>Гармошка</item> + <item>Переворот</item> + <item>Всередині циліндра</item> + <item>Зовні циліндра</item> + <item>Карусель</item> + <item>Огляд</item> + </string-array> +</resources> diff --git a/res/values-uk/cm_strings.xml b/res/values-uk/cm_strings.xml new file mode 100644 index 000000000..88ad2145e --- /dev/null +++ b/res/values-uk/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">НАЛАШТУВАННЯ ДОМІВКИ</string> + <string name="drawer_settings">МЕНЮ ПРОГРАМ</string> + <string name="app_settings">НАЛАШТУВАННЯ ПРОГРАМ</string> + <string name="setting_state_on">УВІМК</string> + <string name="setting_state_off">ВИМК</string> + <string name="themes_button_text">Теми</string> + <string name="scrolling_page_outlines">Межі сторінок</string> + <string name="scrolling_fade_adjacent">Затемняти краї при гортанні</string> + <string name="scrolling_wallpaper">Прокручувати шпалери</string> + <string name="grid_size_text">Розмір сітки</string> + <string name="grid_size_comfortable">Комфортна</string> + <string name="grid_size_cozy">Зручна</string> + <string name="grid_size_condensed">Стиснута</string> + <string name="grid_size_custom">Користувацький (<xliff:g id="rows">%1$d</xliff:g>\u00d7<xliff:g id="columns">%2$d </xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">Виберіть розмір сітки</string> + <string name="scroll_effect_text">Ефект гортання</string> + <string name="drawer_sorting_text">Режим сортування</string> + <string name="sort_mode_title">За назвою</string> + <string name="sort_mode_launch_count">За частотою використання</string> + <string name="sort_mode_install_time">За часом встановлення</string> + <string name="home_screen_search_text">Рядок пошуку</string> + <string name="larger_icons_text">Великі піктограми</string> + <string name="icon_labels">Мітки піктограм</string> + <string name="icon_labels_show">Показати</string> + <string name="icon_labels_hide">Приховати</string> + <string name="protected_app_settings">Заблоковані програми</string> + <string name="dialog_confirm">Підтвердити</string> +</resources> diff --git a/res/values-zh-rCN/cm_strings.xml b/res/values-zh-rCN/cm_strings.xml index 3ce89ea6e..6c7675cd8 100644 --- a/res/values-zh-rCN/cm_strings.xml +++ b/res/values-zh-rCN/cm_strings.xml @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. --> -<resources> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="home_screen_settings">主屏幕设置</string> <string name="drawer_settings">抽屉设置</string> <string name="app_settings">应用设置</string> @@ -29,9 +29,12 @@ <string name="grid_size_comfortable">宽松</string> <string name="grid_size_cozy">合适</string> <string name="grid_size_condensed">紧凑</string> - <string name="grid_size_custom">自定义 %1$d \u00d7 %2$d</string> + <string name="grid_size_custom">自定义(<xliff:g id="rows">%1$d</xliff:g>\u00d7<xliff:g id="columns">%2$d</xliff:g>)</string> <string name="preferences_interface_homescreen_custom">选择自定义尺寸</string> <string name="scroll_effect_text">滚动特效</string> + <string name="drawer_sorting_text">排序模式</string> + <string name="sort_mode_title">标题</string> + <string name="sort_mode_launch_count">启动次数</string> <string name="sort_mode_install_time">安装时间</string> <string name="home_screen_search_text">搜索栏</string> <string name="larger_icons_text">大图标</string> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index a2f5e9ff3..6e3d85b11 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -123,7 +123,4 @@ <string name="abandoned_search" msgid="891119232568284442">"搜索"</string> <string name="abandoned_promises_title" msgid="7096178467971716750">"未安装此应用"</string> <string name="abandoned_promise_explanation" msgid="3990027586878167529">"未安装此图标对应的应用。您可以移除此图标,也可以尝试搜索相应的应用并手动安装。"</string> - <string name="drawer_sorting_text">"排序"</string> - <string name="sort_mode_title">"按字母顺序排序"</string> - <string name="sort_mode_launch_count">"按喜爱程度排</string> </resources> diff --git a/res/values-zh-rHK/cm_arrays.xml b/res/values-zh-rHK/cm_arrays.xml new file mode 100644 index 000000000..76396cfb1 --- /dev/null +++ b/res/values-zh-rHK/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>無</item> + <item>放大</item> + <item>縮小</item> + <item>向上旋轉</item> + <item>Rotate down</item> + <item>Cube in</item> + <item>Cube out</item> + <item>堆疊</item> + <item>手風琴</item> + <item>翻轉</item> + <item>Cylinder in</item> + <item>Cylinder out</item> + <item>幻燈片 </item> + <item>概述</item> + </string-array> +</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..4891ace8c --- /dev/null +++ b/res/values-zh-rHK/cm_strings.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">主螢幕設定</string> + <string name="drawer_settings">抽屜設定</string> + <string name="setting_state_on">開啟</string> + <string name="setting_state_off">關閉</string> + <string name="themes_button_text">主題</string> + <string name="scrolling_page_outlines">頁面輪廓</string> + <string name="scrolling_fade_adjacent">邊頁淡出</string> + <string name="scrolling_wallpaper">捲動牆紙</string> + <string name="scroll_effect_text">滾動效果</string> + <string name="drawer_sorting_text">排序模式</string> + <string name="sort_mode_title">標題</string> + <string name="sort_mode_launch_count">啟動次數</string> + <string name="sort_mode_install_time">安裝時間</string> + <string name="home_screen_search_text">搜尋列</string> + <string name="larger_icons_text">大圖示</string> +</resources> diff --git a/res/values-zh-rTW/cm_arrays.xml b/res/values-zh-rTW/cm_arrays.xml new file mode 100644 index 000000000..d7082e85e --- /dev/null +++ b/res/values-zh-rTW/cm_arrays.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources> + <string-array name="transition_effect_entries"> + <item>無</item> + <item>放大</item> + <item>縮小</item> + <item>向上旋轉</item> + <item>向下旋轉</item> + <item>四方體內部</item> + <item>四方體外部</item> + <item>堆疊</item> + <item>手風琴</item> + <item>翻轉</item> + <item>圓柱體內部</item> + <item>圓柱體外部</item> + <item>幻燈片</item> + <item>概述</item> + </string-array> +</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..27ca54323 --- /dev/null +++ b/res/values-zh-rTW/cm_strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="home_screen_settings">主螢幕設定</string> + <string name="drawer_settings">抽屜設定</string> + <string name="app_settings">應用程式設定</string> + <string name="setting_state_on">開啟</string> + <string name="setting_state_off">關閉</string> + <string name="themes_button_text">主題</string> + <string name="scrolling_page_outlines">頁面邊框</string> + <string name="scrolling_fade_adjacent">邊頁淡出</string> + <string name="scrolling_wallpaper">滾動桌面</string> + <string name="grid_size_text">網格大小</string> + <string name="grid_size_comfortable">舒適</string> + <string name="grid_size_cozy">自在</string> + <string name="grid_size_condensed">密集</string> + <string name="grid_size_custom">自訂 (<xliff:g id="rows">%1$d</xliff:g> \u00d7 <xliff:g id="columns">%2$d</xliff:g>)</string> + <string name="preferences_interface_homescreen_custom">選擇自訂大小</string> + <string name="scroll_effect_text">滾動效果</string> + <string name="drawer_sorting_text">排列模式</string> + <string name="sort_mode_title">標題</string> + <string name="sort_mode_launch_count">啟動次數</string> + <string name="sort_mode_install_time">安裝時間</string> + <string name="home_screen_search_text">搜尋列</string> + <string name="larger_icons_text">大圖示</string> + <string name="icon_labels">程式名稱</string> + <string name="icon_labels_show">顯示</string> + <string name="icon_labels_hide">隱藏</string> + <string name="protected_app_settings">受保護的應用程式</string> + <string name="dialog_confirm">確認</string> +</resources> diff --git a/res/values/attrs.xml b/res/values/attrs.xml index 240f31171..b32c5a2bc 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -154,4 +154,9 @@ <attr name="overlay" format="boolean"/> </declare-styleable> + <declare-styleable name="AutofitTextView"> + <attr name="minTextSize" format="dimension" /> + <attr name="precision" format="float" /> + <attr name="sizeToFit" format="boolean" /> + </declare-styleable> </resources> diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index df151c064..6f1899a9e 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -77,4 +77,12 @@ <!-- Dialog --> <string name="dialog_confirm">Confirm</string> + + <!-- Drawer type --> + <string name="drawer_type">Layout</string> + + <string name="drawer_type_drawer">Vertical</string> + <string name="drawer_type_pager">Paged</string> + + <string name="setting_state_disabled">DISABLED</string> </resources> diff --git a/res/values/colors.xml b/res/values/colors.xml index 948801f5b..3cf7d39a6 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -49,4 +49,8 @@ <color name="dynamic_grid_preview_background">#FFFFFFFF</color> <color name="dynamic_grid_preview_foreground">#FF000000</color> + + <color name="app_drawer_background">#76000000</color> + + <color name="scrubber_background">#CC14191E</color> </resources> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index d591535d3..81e40bfb2 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -118,4 +118,10 @@ <dimen name="grid_padding">15dp</dimen> <dimen name="grid_custom_text">50dp</dimen> + + <dimen name="scrubber_bottom_padding">30dp</dimen> + <dimen name="scrubber_height">48dp</dimen> + + <!-- Vertical app drawer padding --> + <dimen name="vertical_app_drawer_icon_padding">5dp</dimen> </resources> diff --git a/res/values/preferences_defaults.xml b/res/values/preferences_defaults.xml index 7dab6aca2..008c42a81 100644 --- a/res/values/preferences_defaults.xml +++ b/res/values/preferences_defaults.xml @@ -16,4 +16,5 @@ <string name="preferences_interface_general_icons_text_font_family_default">sans-serif-condensed</string> <integer name="preferences_interface_general_icons_text_font_style_default">0</integer> <bool name="preferences_interface_general_app_icon_animation">false</bool> + <integer name="preferences_interface_drawer_type_default">1</integer> </resources> diff --git a/res/xml/default_workspace_4x4.xml b/res/xml/default_workspace_4x4.xml index d2f2ccab8..ac2af79a5 100644 --- a/res/xml/default_workspace_4x4.xml +++ b/res/xml/default_workspace_4x4.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2009 The Android Open Source Project +<!-- 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. @@ -19,46 +19,111 @@ <!-- Left screen [1] --> <appwidget - launcher:packageName="com.android.settings" - launcher:className="com.android.settings.widget.SettingsAppWidgetProvider" + launcher:packageName="com.cyanogenmod.lockclock" + launcher:className="com.cyanogenmod.lockclock.ClockWidgetProvider" launcher:screen="1" launcher:x="0" - launcher:y="3" + launcher:y="0" launcher:spanX="4" - launcher:spanY="1" /> + launcher:spanY="2" /> + + <folder launcher:screen="1" launcher:x="0" launcher:y="3" launcher:title="@string/google_title"> + <favorite + launcher:className="com.google.android.gm.ConversationListActivityGmail" + launcher:packageName="com.google.android.gm" /> + <favorite + launcher:className="com.google.android.apps.plus.phone.HomeActivity" + launcher:packageName="com.google.android.apps.plus" /> + <favorite + launcher:className="com.google.android.maps.MapsActivity" + launcher:packageName="com.google.android.apps.maps" /> + <favorite + launcher:className="com.android.music.activitymanagement.TopLevelActivity" + launcher:packageName="com.google.android.music" /> + <favorite + launcher:className="com.google.android.youtube.videos.EntryPoint" + launcher:packageName="com.google.android.videos" /> + <favorite + launcher:className="com.google.android.apps.books.app.BooksActivity" + launcher:packageName="com.google.android.apps.books" /> + <favorite + launcher:className="com.google.apps.dots.android.app.activity.CurrentsStartActivity" + launcher:packageName="com.google.android.apps.magazines" /> + <favorite + launcher:className="com.google.android.gms.games.ui.destination.main.MainActivity" + launcher:packageName="com.google.android.play.games" /> + <favorite + launcher:className="com.google.android.apps.docs.app.NewMainProxyActivity" + launcher:packageName="com.google.android.apps.docs" /> + <favorite + launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity" + launcher:packageName="com.google.android.youtube" /> + <favorite + launcher:className="com.google.android.apps.plus.phone.ConversationListActivity" + launcher:packageName="com.google.android.apps.plus" /> + <favorite + launcher:className="com.google.android.talk.SigningInActivity" + launcher:packageName="com.google.android.talk" /> + </folder> + + <favorite + launcher:packageName="com.cyanogenmod.eleven" + launcher:className="com.cyanogenmod.eleven.ui.activities.HomeActivity" + launcher:screen="1" + launcher:x="0" + launcher:y="3" /> + + <resolve + launcher:screen="1" + launcher:x="3" + launcher:y="3" > + <favorite + launcher:packageName="com.android.vending" + launcher:className="com.android.vending.AssetBrowserActivity" /> + <favorite + launcher:packageName="org.cyanogenmod.theme.chooser" + launcher:className="org.cyanogenmod.theme.chooser.ChooserActivity" /> + </resolve> + + <!-- Screen [2] --> - <!-- Middle screen [2] --> <appwidget - launcher:packageName="com.android.deskclock" - launcher:className="com.android.alarmclock.AnalogAppWidgetProvider" + launcher:packageName="com.android.vending" + launcher:className="com.google.android.finsky.widget.consumption.NowPlayingWidgetProvider" launcher:screen="2" - launcher:x="1" + launcher:x="0" launcher:y="0" - launcher:spanX="2" + launcher:spanX="4" launcher:spanY="2" /> - <favorite - launcher:packageName="com.android.camera" - launcher:className="com.android.camera.Camera" + + <appwidget + launcher:packageName="com.cyanogenmod.eleven" + launcher:className="com.cyanogenmod.eleven.appwidgets.AppWidgetLarge" launcher:screen="2" launcher:x="0" - launcher:y="3" /> + launcher:y="0" + launcher:spanX="4" + launcher:spanY="2" /> + + <resolve + launcher:screen="2" + launcher:x="0" + launcher:y="3" > + <favorite + launcher:packageName="com.cyngn.gallerynext" + launcher:className="com.cyngn.gallerynext.app.GalleryActivity" /> + <favorite + launcher:packageName="com.android.gallery3d" + launcher:className="com.android.gallery3d.app.GalleryActivity" /> + </resolve> - <!-- Right screen [3] --> - <favorite - launcher:packageName="com.android.gallery3d" - launcher:className="com.android.gallery3d.app.GalleryActivity" - launcher:screen="3" - launcher:x="1" - launcher:y="3" /> <favorite launcher:packageName="com.android.settings" launcher:className="com.android.settings.Settings" - launcher:screen="3" - launcher:x="2" + launcher:screen="2" + launcher:x="3" launcher:y="3" /> - <!-- Far-right screen [4] --> - <!-- Hotseat (We use the screen as the position of the item in the hotseat) --> <!-- Dialer, Contacts, [All Apps], Messaging, Browser --> <resolve @@ -73,15 +138,23 @@ <favorite launcher:packageName="com.android.dialer" launcher:className="com.android.dialer.DialtactsActivity" /> + <favorite + launcher:packageName="com.android.contacts" + launcher:className="com.android.contacts.activities.PeopleActivity" /> </resolve> - <favorite - launcher:packageName="com.android.contacts" - launcher:className="com.android.contacts.activities.PeopleActivity" + <resolve launcher:container="-101" launcher:screen="1" launcher:x="1" - launcher:y="0" /> + launcher:y="0" > + <favorite + launcher:packageName="com.android.mms" + launcher:className="com.android.mms.ui.ConversationList" /> + <favorite + launcher:packageName="com.android.email" + launcher:className="com.android.email.activity.Welcome" /> + </resolve> <resolve launcher:container="-101" @@ -89,28 +162,24 @@ launcher:x="3" launcher:y="0" > <favorite - launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" /> - <favorite launcher:uri="sms:" /> - <favorite launcher:uri="smsto:" /> - <favorite launcher:uri="mms:" /> - <favorite launcher:uri="mmsto:" /> - + launcher:packageName="com.android.chrome" + launcher:className="com.google.android.apps.chrome.Main" /> <favorite - launcher:packageName="com.android.mms" - launcher:className="com.android.mms.ui.ConversationList" /> + launcher:packageName="com.android.browser" + launcher:className="com.android.browser.BrowserActivity" /> </resolve> + <resolve launcher:container="-101" launcher:screen="4" launcher:x="4" launcher:y="0" > <favorite - launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" /> - <favorite launcher:uri="http://www.example.com/" /> - + launcher:packageName="com.cyngn.cameranext" + launcher:className="com.android.camera.CameraLauncher" /> <favorite - launcher:packageName="com.android.browser" - launcher:className="com.android.browser.BrowserActivity" /> + launcher:packageName="com.android.camera2" + launcher:className="com.android.camera.CameraLauncher" /> </resolve> -</favorites> +</favorites>
\ No newline at end of file diff --git a/res/xml/default_workspace_5x5.xml b/res/xml/default_workspace_5x5.xml index d2f2ccab8..1d41e3f27 100644 --- a/res/xml/default_workspace_5x5.xml +++ b/res/xml/default_workspace_5x5.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2009 The Android Open Source Project +<!-- 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. @@ -19,45 +19,110 @@ <!-- Left screen [1] --> <appwidget - launcher:packageName="com.android.settings" - launcher:className="com.android.settings.widget.SettingsAppWidgetProvider" + launcher:packageName="com.cyanogenmod.lockclock" + launcher:className="com.cyanogenmod.lockclock.ClockWidgetProvider" + launcher:screen="1" + launcher:x="0" + launcher:y="0" + launcher:spanX="5" + launcher:spanY="2" /> + + <folder launcher:screen="1" launcher:x="0" launcher:y="4" launcher:title="@string/google_title"> + <favorite + launcher:className="com.google.android.gm.ConversationListActivityGmail" + launcher:packageName="com.google.android.gm" /> + <favorite + launcher:className="com.google.android.apps.plus.phone.HomeActivity" + launcher:packageName="com.google.android.apps.plus" /> + <favorite + launcher:className="com.google.android.maps.MapsActivity" + launcher:packageName="com.google.android.apps.maps" /> + <favorite + launcher:className="com.android.music.activitymanagement.TopLevelActivity" + launcher:packageName="com.google.android.music" /> + <favorite + launcher:className="com.google.android.youtube.videos.EntryPoint" + launcher:packageName="com.google.android.videos" /> + <favorite + launcher:className="com.google.android.apps.books.app.BooksActivity" + launcher:packageName="com.google.android.apps.books" /> + <favorite + launcher:className="com.google.apps.dots.android.app.activity.CurrentsStartActivity" + launcher:packageName="com.google.android.apps.magazines" /> + <favorite + launcher:className="com.google.android.gms.games.ui.destination.main.MainActivity" + launcher:packageName="com.google.android.play.games" /> + <favorite + launcher:className="com.google.android.apps.docs.app.NewMainProxyActivity" + launcher:packageName="com.google.android.apps.docs" /> + <favorite + launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity" + launcher:packageName="com.google.android.youtube" /> + <favorite + launcher:className="com.google.android.apps.plus.phone.ConversationListActivity" + launcher:packageName="com.google.android.apps.plus" /> + <favorite + launcher:className="com.google.android.talk.SigningInActivity" + launcher:packageName="com.google.android.talk" /> + </folder> + + <favorite + launcher:packageName="com.cyanogenmod.eleven" + launcher:className="com.cyanogenmod.eleven.ui.activities.HomeActivity" launcher:screen="1" launcher:x="0" - launcher:y="3" - launcher:spanX="4" - launcher:spanY="1" /> + launcher:y="4" /> + + <resolve + launcher:screen="1" + launcher:x="4" + launcher:y="4" > + <favorite + launcher:packageName="com.android.vending" + launcher:className="com.android.vending.AssetBrowserActivity" /> + <favorite + launcher:packageName="org.cyanogenmod.theme.chooser" + launcher:className="org.cyanogenmod.theme.chooser.ChooserActivity" /> + </resolve> + + <!-- Screen [2] --> - <!-- Middle screen [2] --> <appwidget - launcher:packageName="com.android.deskclock" - launcher:className="com.android.alarmclock.AnalogAppWidgetProvider" + launcher:packageName="com.android.vending" + launcher:className="com.google.android.finsky.widget.consumption.NowPlayingWidgetProvider" launcher:screen="2" - launcher:x="1" + launcher:x="0" launcher:y="0" - launcher:spanX="2" + launcher:spanX="5" launcher:spanY="2" /> - <favorite - launcher:packageName="com.android.camera" - launcher:className="com.android.camera.Camera" + + <appwidget + launcher:packageName="com.cyanogenmod.eleven" + launcher:className="com.cyanogenmod.eleven.appwidgets.AppWidgetLarge" launcher:screen="2" launcher:x="0" - launcher:y="3" /> + launcher:y="0" + launcher:spanX="5" + launcher:spanY="2" /> + + <resolve + launcher:screen="2" + launcher:x="0" + launcher:y="4" > + <favorite + launcher:packageName="com.cyngn.gallerynext" + launcher:className="com.cyngn.gallerynext.app.GalleryActivity" /> + <favorite + launcher:packageName="com.android.gallery3d" + launcher:className="com.android.gallery3d.app.GalleryActivity" /> + </resolve> - <!-- Right screen [3] --> - <favorite - launcher:packageName="com.android.gallery3d" - launcher:className="com.android.gallery3d.app.GalleryActivity" - launcher:screen="3" - launcher:x="1" - launcher:y="3" /> <favorite launcher:packageName="com.android.settings" launcher:className="com.android.settings.Settings" - launcher:screen="3" - launcher:x="2" - launcher:y="3" /> - - <!-- Far-right screen [4] --> + launcher:screen="2" + launcher:x="4" + launcher:y="4" /> <!-- Hotseat (We use the screen as the position of the item in the hotseat) --> <!-- Dialer, Contacts, [All Apps], Messaging, Browser --> @@ -73,15 +138,23 @@ <favorite launcher:packageName="com.android.dialer" launcher:className="com.android.dialer.DialtactsActivity" /> + <favorite + launcher:packageName="com.android.contacts" + launcher:className="com.android.contacts.activities.PeopleActivity" /> </resolve> - <favorite - launcher:packageName="com.android.contacts" - launcher:className="com.android.contacts.activities.PeopleActivity" + <resolve launcher:container="-101" launcher:screen="1" launcher:x="1" - launcher:y="0" /> + launcher:y="0" > + <favorite + launcher:packageName="com.android.mms" + launcher:className="com.android.mms.ui.ConversationList" /> + <favorite + launcher:packageName="com.android.email" + launcher:className="com.android.email.activity.Welcome" /> + </resolve> <resolve launcher:container="-101" @@ -89,28 +162,24 @@ launcher:x="3" launcher:y="0" > <favorite - launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" /> - <favorite launcher:uri="sms:" /> - <favorite launcher:uri="smsto:" /> - <favorite launcher:uri="mms:" /> - <favorite launcher:uri="mmsto:" /> - + launcher:packageName="com.android.chrome" + launcher:className="com.google.android.apps.chrome.Main" /> <favorite - launcher:packageName="com.android.mms" - launcher:className="com.android.mms.ui.ConversationList" /> + launcher:packageName="com.android.browser" + launcher:className="com.android.browser.BrowserActivity" /> </resolve> + <resolve launcher:container="-101" launcher:screen="4" launcher:x="4" launcher:y="0" > <favorite - launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" /> - <favorite launcher:uri="http://www.example.com/" /> - + launcher:packageName="com.cyngn.cameranext" + launcher:className="com.android.camera.CameraLauncher" /> <favorite - launcher:packageName="com.android.browser" - launcher:className="com.android.browser.BrowserActivity" /> + launcher:packageName="com.android.camera2" + launcher:className="com.android.camera.CameraLauncher" /> </resolve> -</favorites> +</favorites>
\ No newline at end of file diff --git a/res/xml/default_workspace_5x6.xml b/res/xml/default_workspace_5x6.xml index e98ce986f..2892991cd 100644 --- a/res/xml/default_workspace_5x6.xml +++ b/res/xml/default_workspace_5x6.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2012 The Android Open Source Project +<!-- 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. @@ -19,71 +19,142 @@ <!-- Left screen [1] --> <appwidget - launcher:packageName="com.android.settings" - launcher:className="com.android.settings.widget.SettingsAppWidgetProvider" + launcher:packageName="com.cyanogenmod.lockclock" + launcher:className="com.cyanogenmod.lockclock.ClockWidgetProvider" launcher:screen="1" launcher:x="0" - launcher:y="3" - launcher:spanX="4" - launcher:spanY="1" /> + launcher:y="0" + launcher:spanX="6" + launcher:spanY="2" /> + + <folder launcher:screen="1" launcher:x="0" launcher:y="4" launcher:title="@string/google_title"> + <favorite + launcher:className="com.google.android.gm.ConversationListActivityGmail" + launcher:packageName="com.google.android.gm" /> + <favorite + launcher:className="com.google.android.apps.plus.phone.HomeActivity" + launcher:packageName="com.google.android.apps.plus" /> + <favorite + launcher:className="com.google.android.maps.MapsActivity" + launcher:packageName="com.google.android.apps.maps" /> + <favorite + launcher:className="com.android.music.activitymanagement.TopLevelActivity" + launcher:packageName="com.google.android.music" /> + <favorite + launcher:className="com.google.android.youtube.videos.EntryPoint" + launcher:packageName="com.google.android.videos" /> + <favorite + launcher:className="com.google.android.apps.books.app.BooksActivity" + launcher:packageName="com.google.android.apps.books" /> + <favorite + launcher:className="com.google.apps.dots.android.app.activity.CurrentsStartActivity" + launcher:packageName="com.google.android.apps.magazines" /> + <favorite + launcher:className="com.google.android.gms.games.ui.destination.main.MainActivity" + launcher:packageName="com.google.android.play.games" /> + <favorite + launcher:className="com.google.android.apps.docs.app.NewMainProxyActivity" + launcher:packageName="com.google.android.apps.docs" /> + <favorite + launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity" + launcher:packageName="com.google.android.youtube" /> + <favorite + launcher:className="com.google.android.apps.plus.phone.ConversationListActivity" + launcher:packageName="com.google.android.apps.plus" /> + <favorite + launcher:className="com.google.android.talk.SigningInActivity" + launcher:packageName="com.google.android.talk" /> + </folder> + + <favorite + launcher:packageName="com.cyanogenmod.eleven" + launcher:className="com.cyanogenmod.eleven.ui.activities.HomeActivity" + launcher:screen="1" + launcher:x="0" + launcher:y="4" /> + + <resolve + launcher:screen="1" + launcher:x="5" + launcher:y="4" > + <favorite + launcher:packageName="com.android.vending" + launcher:className="com.android.vending.AssetBrowserActivity" /> + <favorite + launcher:packageName="org.cyanogenmod.theme.chooser" + launcher:className="org.cyanogenmod.theme.chooser.ChooserActivity" /> + </resolve> + + <!-- Screen [2] --> - <!-- Middle screen [2] --> <appwidget - launcher:packageName="com.android.deskclock" - launcher:className="com.android.alarmclock.AnalogAppWidgetProvider" + launcher:packageName="com.android.vending" + launcher:className="com.google.android.finsky.widget.consumption.NowPlayingWidgetProvider" launcher:screen="2" - launcher:x="1" + launcher:x="0" launcher:y="0" - launcher:spanX="2" + launcher:spanX="6" launcher:spanY="2" /> - <favorite - launcher:packageName="com.android.camera" - launcher:className="com.android.camera.Camera" + + <appwidget + launcher:packageName="com.cyanogenmod.eleven" + launcher:className="com.cyanogenmod.eleven.appwidgets.AppWidgetLarge" launcher:screen="2" launcher:x="0" - launcher:y="3" /> + launcher:y="0" + launcher:spanX="6" + launcher:spanY="2" /> + + <resolve + launcher:screen="2" + launcher:x="0" + launcher:y="4" > + <favorite + launcher:packageName="com.cyngn.gallerynext" + launcher:className="com.cyngn.gallerynext.app.GalleryActivity" /> + <favorite + launcher:packageName="com.android.gallery3d" + launcher:className="com.android.gallery3d.app.GalleryActivity" /> + </resolve> - <!-- Right screen [3] --> - <favorite - launcher:packageName="com.android.gallery3d" - launcher:className="com.android.gallery3d.app.GalleryActivity" - launcher:screen="3" - launcher:x="1" - launcher:y="3" /> <favorite launcher:packageName="com.android.settings" launcher:className="com.android.settings.Settings" - launcher:screen="3" - launcher:x="2" - launcher:y="3" /> - - <!-- Far-right screen [4] --> + launcher:screen="2" + launcher:x="5" + launcher:y="4" /> <!-- Hotseat (We use the screen as the position of the item in the hotseat) --> - <!-- Dialer (if available, fallback to File Manager), Contacts, [All Apps], Messaging, Browser --> + <!-- Dialer, Contacts, [All Apps], Messaging, Browser --> <resolve launcher:container="-101" launcher:screen="1" launcher:x="1" launcher:y="0" > <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" /> + <favorite launcher:uri="tel:123" /> <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" /> <favorite launcher:packageName="com.android.dialer" launcher:className="com.android.dialer.DialtactsActivity" /> <favorite - launcher:packageName="com.cyanogenmod.filemanager" - launcher:className="com.cyanogenmod.filemanager.activities.NavigationActivity" /> + launcher:packageName="com.android.contacts" + launcher:className="com.android.contacts.activities.PeopleActivity" /> </resolve> - <favorite - launcher:packageName="com.android.contacts" - launcher:className="com.android.contacts.activities.PeopleActivity" + <resolve launcher:container="-101" launcher:screen="2" launcher:x="2" - launcher:y="0" /> + launcher:y="0" > + <favorite + launcher:packageName="com.android.mms" + launcher:className="com.android.mms.ui.ConversationList" /> + <favorite + launcher:packageName="com.android.email" + launcher:className="com.android.email.activity.Welcome" /> + </resolve> <resolve launcher:container="-101" @@ -91,27 +162,24 @@ launcher:x="4" launcher:y="0" > <favorite - launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" /> - <favorite launcher:uri="sms:" /> - <favorite launcher:uri="smsto:" /> - <favorite launcher:uri="mms:" /> - <favorite launcher:uri="mmsto:" /> - + launcher:packageName="com.android.chrome" + launcher:className="com.google.android.apps.chrome.Main" /> <favorite - launcher:packageName="com.android.mms" - launcher:className="com.android.mms.ui.ConversationList" /> + launcher:packageName="com.android.browser" + launcher:className="com.android.browser.BrowserActivity" /> </resolve> + <resolve launcher:container="-101" launcher:screen="5" launcher:x="5" launcher:y="0" > <favorite - launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" /> - <favorite launcher:uri="http://www.example.com/" /> - + launcher:packageName="com.cyngn.cameranext" + launcher:className="com.android.camera.CameraLauncher" /> <favorite - launcher:packageName="com.android.browser" - launcher:className="com.android.browser.BrowserActivity" /> + launcher:packageName="com.android.camera2" + launcher:className="com.android.camera.CameraLauncher" /> </resolve> -</favorites> + +</favorites>
\ No newline at end of file diff --git a/src/com/android/launcher3/AppDrawerIconView.java b/src/com/android/launcher3/AppDrawerIconView.java new file mode 100644 index 000000000..d8564b6ed --- /dev/null +++ b/src/com/android/launcher3/AppDrawerIconView.java @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2013 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. + */ + +package com.android.launcher3; + +import android.content.Context; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.MotionEvent; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +/** + * AppDrawerIconView - represents icons in the vertical app drawer. + * Found to be more performant than the BubbleTextView used in the + * legacy app drawer. + */ +public class AppDrawerIconView extends LinearLayout { + + TextView mLabel; + ImageView mIcon; + + public AppDrawerIconView(Context context) { + super(context); + } + + public AppDrawerIconView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AppDrawerIconView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + mLabel = (TextView) findViewById(R.id.label); + mIcon = (ImageView) findViewById(R.id.image); + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); + mLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX, grid.iconTextSizePx); + mLabel.setShadowLayer(BubbleTextView.SHADOW_LARGE_RADIUS, 0.0f, + BubbleTextView.SHADOW_Y_OFFSET, BubbleTextView.SHADOW_LARGE_COLOUR); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + setAlpha(PagedViewIcon.PRESS_ALPHA); + break; + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + setAlpha(1f); + break; + } + return super.onTouchEvent(event); + } +}
\ No newline at end of file diff --git a/src/com/android/launcher3/AppDrawerListAdapter.java b/src/com/android/launcher3/AppDrawerListAdapter.java new file mode 100644 index 000000000..a16937308 --- /dev/null +++ b/src/com/android/launcher3/AppDrawerListAdapter.java @@ -0,0 +1,566 @@ +/* + * 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. + */ + +package com.android.launcher3; + +import android.content.ComponentName; +import android.content.Context; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.provider.Settings; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.support.v7.widget.RecyclerView; +import android.widget.LinearLayout; +import android.widget.SectionIndexer; +import com.android.launcher3.locale.LocaleSetManager; +import com.android.launcher3.locale.LocaleUtils; +import com.android.launcher3.settings.SettingsProvider; + +import java.text.Collator; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; + +/** + * AppDrawerListAdapter - list adapter for the vertical app drawer + */ +public class AppDrawerListAdapter extends RecyclerView.Adapter<AppDrawerListAdapter.ViewHolder> + implements View.OnLongClickListener, DragSource, SectionIndexer { + + private static final String NUMERIC_OR_SPECIAL_HEADER = "#"; + + private ArrayList<AppItemIndexedInfo> mHeaderList; + private LayoutInflater mLayoutInflater; + + private Launcher mLauncher; + private DeviceProfile mDeviceProfile; + private LinkedHashMap<String, Integer> mSectionHeaders; + private LinearLayout.LayoutParams mIconParams; + private Rect mIconRect; + private LocaleSetManager mLocaleSetManager; + + private ArrayList<ComponentName> mProtectedApps; + + private boolean mHideIconLabels; + + public enum DrawerType { + Drawer(0), + Pager(1); + + private final int mValue; + private DrawerType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static DrawerType getModeForValue(int value) { + switch (value) { + case 1: + return Pager; + default : + return Drawer; + } + } + } + + public static class ViewHolder extends RecyclerView.ViewHolder { + public AutoFitTextView mTextView; + public ViewGroup mLayout; + public ViewHolder(View itemView) { + super(itemView); + mTextView = (AutoFitTextView) itemView.findViewById(R.id.drawer_item_title); + mLayout = (ViewGroup) itemView.findViewById(R.id.drawer_item_flow); + } + } + + public AppDrawerListAdapter(Launcher launcher) { + mLauncher = launcher; + mHeaderList = new ArrayList<AppItemIndexedInfo>(); + mLayoutInflater = LayoutInflater.from(launcher); + + mLocaleSetManager = new LocaleSetManager(mLauncher); + mLocaleSetManager.updateLocaleSet(mLocaleSetManager.getSystemLocaleSet()); + initParams(); + + updateProtectedAppsList(mLauncher); + } + + private void initParams() { + mDeviceProfile = LauncherAppState.getInstance().getDynamicGrid().getDeviceProfile(); + + int width = mDeviceProfile.cellWidthPx + 2 * mDeviceProfile.edgeMarginPx; + mIconParams = new + LinearLayout.LayoutParams(width, ViewGroup.LayoutParams.WRAP_CONTENT); + mIconRect = new Rect(0, 0, mDeviceProfile.allAppsIconSizePx, + mDeviceProfile.allAppsIconSizePx); + + mHideIconLabels = SettingsProvider.getBoolean(mLauncher, + SettingsProvider.SETTINGS_UI_DRAWER_HIDE_ICON_LABELS, + R.bool.preferences_interface_drawer_hide_icon_labels_default); + } + + /** + * Create and populate mHeaderList (buckets for app sorting) + * @param info + */ + public void populateByCharacter(ArrayList<AppInfo> info) { + if (info == null || info.size() <= 0) { + Collections.sort(mHeaderList); + return; + } + + // Create a clone of AppInfo ArrayList to preserve data + ArrayList<AppInfo> tempInfo = (ArrayList<AppInfo>) info.clone(); + + ArrayList<AppInfo> appInfos = new ArrayList<AppInfo>(); + + // get next app + AppInfo app = tempInfo.get(0); + + // get starting character + LocaleUtils localeUtils = LocaleUtils.getInstance(); + int bucketIndex = localeUtils.getBucketIndex(app.title.toString()); + String startString + = localeUtils.getBucketLabel(bucketIndex); + if (TextUtils.isEmpty(startString)) { + startString = NUMERIC_OR_SPECIAL_HEADER; + bucketIndex = localeUtils.getBucketIndex(startString); + } + + // now iterate through + for (AppInfo info1 : tempInfo) { + int newBucketIndex = localeUtils.getBucketIndex(info1.title.toString()); + + String newChar + = localeUtils.getBucketLabel(newBucketIndex); + if (TextUtils.isEmpty(newChar)) { + newChar = NUMERIC_OR_SPECIAL_HEADER; + } + // if same character + if (newChar.equals(startString)) { + // add it + appInfos.add(info1); + } + } + + Collections.sort(appInfos, LauncherModel.getAppNameComparator()); + + for (int i = 0; i < appInfos.size(); i += mDeviceProfile.numColumnsBase) { + int endIndex = (int) Math.min(i + mDeviceProfile.numColumnsBase, appInfos.size()); + ArrayList<AppInfo> subList = new ArrayList<AppInfo>(appInfos.subList(i, endIndex)); + AppItemIndexedInfo indexInfo; + indexInfo = new AppItemIndexedInfo(startString, bucketIndex, subList, i != 0); + mHeaderList.add(indexInfo); + } + + for (AppInfo remove : appInfos) { + // remove from mApps + tempInfo.remove(remove); + } + populateByCharacter(tempInfo); + } + + public void setApps(ArrayList<AppInfo> list) { + if (!LauncherAppState.isDisableAllApps()) { + initParams(); + + filterProtectedApps(list); + + mHeaderList.clear(); + populateByCharacter(list); + populateSectionHeaders(); + mLauncher.updateScrubber(); + this.notifyDataSetChanged(); + } + } + + private void populateSectionHeaders() { + if (mSectionHeaders == null || mSectionHeaders.size() != mHeaderList.size()) { + mSectionHeaders = new LinkedHashMap<String, Integer>(); + } + int count = 0; + for (int i = 0; i < mHeaderList.size(); i++) { + AppItemIndexedInfo info = mHeaderList.get(i); + if (!mHeaderList.get(i).isChild) { + mSectionHeaders.put(String.valueOf(mHeaderList.get(i).mStartString), count); + } + if (info.mInfo.size() < mDeviceProfile.numColumnsBase) { + count++; + } else { + count += info.mInfo.size() / mDeviceProfile.numColumnsBase; + } + } + } + + public void reset() { + ArrayList<AppInfo> infos = getAllApps(); + + mLauncher.mAppDrawer.getLayoutManager().removeAllViews(); + setApps(infos); + } + + private ArrayList<AppInfo> getAllApps() { + ArrayList<AppInfo> indexedInfos = new ArrayList<AppInfo>(); + + for (int j = 0; j < mHeaderList.size(); ++j) { + AppItemIndexedInfo indexedInfo = mHeaderList.get(j); + for (AppInfo info : indexedInfo.mInfo) { + indexedInfos.add(info); + } + } + return indexedInfos; + } + + public void updateApps(ArrayList<AppInfo> list) { + // We remove and re-add the updated applications list because it's properties may have + // changed (ie. the title), and this will ensure that the items will be in their proper + // place in the list. + if (!LauncherAppState.isDisableAllApps()) { + removeAppsWithoutInvalidate(list); + addAppsWithoutInvalidate(list); + reset(); + } + } + + + public void addApps(ArrayList<AppInfo> list) { + if (!LauncherAppState.isDisableAllApps()) { + addAppsWithoutInvalidate(list); + reset(); + } + } + + private void addAppsWithoutInvalidate(ArrayList<AppInfo> list) { + // We add it in place, in alphabetical order + LocaleUtils localeUtils = LocaleUtils.getInstance(); + + int count = list.size(); + for (int i = 0; i < count; ++i) { + AppInfo info = list.get(i); + boolean found = false; + AppItemIndexedInfo lastInfoForSection = null; + int bucketIndex = localeUtils.getBucketIndex(info.title.toString()); + String start = localeUtils.getBucketLabel(bucketIndex); + if (TextUtils.isEmpty(start)) { + start = NUMERIC_OR_SPECIAL_HEADER; + bucketIndex = localeUtils.getBucketIndex(start); + } + for (int j = 0; j < mHeaderList.size(); ++j) { + AppItemIndexedInfo indexedInfo = mHeaderList.get(j); + if (start.equals(indexedInfo.mStartString)) { + Collections.sort(indexedInfo.mInfo, LauncherModel.getAppNameComparator()); + int index = + Collections.binarySearch(indexedInfo.mInfo, + info, LauncherModel.getAppNameComparator()); + if (index >= 0) { + found = true; + break; + } else { + lastInfoForSection = indexedInfo; + } + } + } + if (!found) { + if (lastInfoForSection != null) { + lastInfoForSection.mInfo.add(info); + } else { + // we need to create a new section + ArrayList<AppInfo> newInfos = new ArrayList<AppInfo>(); + newInfos.add(info); + AppItemIndexedInfo newInfo = + new AppItemIndexedInfo(start, bucketIndex, newInfos, false); + mHeaderList.add(newInfo); + Collections.sort(mHeaderList); + } + } + } + } + + public void removeApps(ArrayList<AppInfo> appInfos) { + if (!LauncherAppState.isDisableAllApps()) { + removeAppsWithoutInvalidate(appInfos); + //recreate everything + reset(); + } + } + + private void removeAppsWithoutInvalidate(ArrayList<AppInfo> list) { + // loop through all the apps and remove apps that have the same component + int length = list.size(); + for (int i = 0; i < length; ++i) { + AppInfo info = list.get(i); + for (int j = 0; j < mHeaderList.size(); ++j) { + AppItemIndexedInfo indexedInfo = mHeaderList.get(j); + ArrayList<AppInfo> clonedIndexedInfoApps = + (ArrayList<AppInfo>) indexedInfo.mInfo.clone(); + int index = + findAppByComponent(clonedIndexedInfoApps, info); + if (index > -1) { + indexedInfo.mInfo.remove(info); + } + } + } + } + + private int findAppByComponent(List<AppInfo> list, AppInfo item) { + ComponentName removeComponent = item.intent.getComponent(); + int length = list.size(); + for (int i = 0; i < length; ++i) { + AppInfo info = list.get(i); + if (info.intent.getComponent().equals(removeComponent)) { + return i; + } + } + return -1; + } + + /* + * AllAppsView implementation + */ + public void setup(Launcher launcher) { + mLauncher = launcher; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View v = LayoutInflater.from(parent.getContext()). + inflate(R.layout.app_drawer_item, parent, false); + ViewHolder holder = new ViewHolder(v); + holder.mTextView.setPadding(0, 0, 0, mDeviceProfile.iconTextSizePx + 10); + for (int i = 0; i < mDeviceProfile.numColumnsBase; i++) { + AppDrawerIconView icon = (AppDrawerIconView) mLayoutInflater.inflate( + R.layout.drawer_icon, holder.mLayout, false); + icon.setOnClickListener(mLauncher); + icon.setOnLongClickListener(this); + holder.mLayout.addView(icon); + } + return holder; + } + + @Override + public int getItemCount() { + return mHeaderList.size(); + } + + public AppItemIndexedInfo getItemAt(int position) { + if (position < mHeaderList.size()) + return mHeaderList.get(position); + return null; + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + AppItemIndexedInfo indexedInfo = mHeaderList.get(position); + holder.mTextView.setVisibility(indexedInfo.isChild ? View.INVISIBLE : View.VISIBLE); + if (!indexedInfo.isChild) { + if (indexedInfo.mStartString.equals(NUMERIC_OR_SPECIAL_HEADER)) { + holder.mTextView.setText(NUMERIC_OR_SPECIAL_HEADER); + } else { + holder.mTextView.setText(String.valueOf(indexedInfo.mStartString)); + } + } + final int size = indexedInfo.mInfo.size(); + for (int i = 0; i < holder.mLayout.getChildCount(); i++) { + AppDrawerIconView icon = (AppDrawerIconView) holder.mLayout.getChildAt(i); + icon.setLayoutParams(mIconParams); + if (i >= size) { + icon.setVisibility(View.INVISIBLE); + } else { + icon.setVisibility(View.VISIBLE); + AppInfo info = indexedInfo.mInfo.get(i); + icon.setTag(info); + Drawable d = Utilities.createIconDrawable(info.iconBitmap); + d.setBounds(mIconRect); + icon.mIcon.setImageDrawable(d); + icon.mLabel.setText(info.title); + icon.mLabel.setVisibility(mHideIconLabels ? View.INVISIBLE : View.VISIBLE); + } + } + holder.itemView.setTag(indexedInfo); + } + + @Override + public boolean onLongClick(View v) { + if (v instanceof AppDrawerIconView) { + beginDraggingApplication(v); + mLauncher.enterSpringLoadedDragMode(); + } + return false; + } + + @Override + public void onDropCompleted(View target, DropTarget.DragObject d, boolean isFlingToDelete, + boolean success) { + // Return early and wait for onFlingToDeleteCompleted if this was the result of a fling + if (isFlingToDelete) return; + + endDragging(target, false, success); + + // Display an error message if the drag failed due to there not being enough space on the + // target layout we were dropping on. + if (!success) { + boolean showOutOfSpaceMessage = false; + if (target instanceof Workspace) { + int currentScreen = mLauncher.getCurrentWorkspaceScreen(); + Workspace workspace = (Workspace) target; + CellLayout layout = (CellLayout) workspace.getChildAt(currentScreen); + ItemInfo itemInfo = (ItemInfo) d.dragInfo; + if (layout != null) { + layout.calculateSpans(itemInfo); + showOutOfSpaceMessage = + !layout.findCellForSpan(null, itemInfo.spanX, itemInfo.spanY); + } + } + if (showOutOfSpaceMessage) { + mLauncher.showOutOfSpaceMessage(false); + } + + d.deferDragViewCleanupPostAnimation = false; + } + } + + /** + * Clean up after dragging. + * + * @param target where the item was dragged to (can be null if the item was flung) + */ + private void endDragging(View target, boolean isFlingToDelete, boolean success) { + if (isFlingToDelete || !success || (target != mLauncher.getWorkspace() && + !(target instanceof DeleteDropTarget) && !(target instanceof Folder))) { + // Exit spring loaded mode if we have not successfully dropped or have not handled the + // drop in Workspace + mLauncher.getWorkspace().removeExtraEmptyScreenDelayed(true, new Runnable() { + @Override + public void run() { + mLauncher.exitSpringLoadedDragMode(); + mLauncher.unlockScreenOrientation(false); + } + }, 0, true); + } else { + mLauncher.unlockScreenOrientation(false); + } + } + + @Override + public boolean supportsFlingToDelete() { + return false; + } + + @Override + public boolean supportsAppInfoDropTarget() { + return true; + } + + @Override + public boolean supportsDeleteDropTarget() { + return false; + } + + @Override + public float getIntrinsicIconScaleFactor() { + return (float) mDeviceProfile.allAppsIconSizePx / mDeviceProfile.iconSizePx; + } + + private void beginDraggingApplication(View v) { + mLauncher.getWorkspace().beginDragShared(v, this); + } + + @Override + public void onFlingToDeleteCompleted() { + // We just dismiss the drag when we fling, so cleanup here + } + + public class AppItemIndexedInfo implements Comparable { + private boolean isChild; + private String mStartString; + private int mStringIndex; + private ArrayList<AppInfo> mInfo; + + private AppItemIndexedInfo(String startString, int bucketIndex, ArrayList<AppInfo> info, + boolean isChild) { + this.mStartString = startString; + this.mStringIndex = bucketIndex; + this.mInfo = info; + this.isChild = isChild; + + if (mStartString.equals(NUMERIC_OR_SPECIAL_HEADER)) { + this.mStringIndex = 0; + } + } + + public String getString() { + return mStartString; + } + + @Override + public int compareTo(Object o) { + if (o instanceof AppItemIndexedInfo) { + int otherBucketIndex = ((AppItemIndexedInfo) o).mStringIndex; + return Integer.compare(mStringIndex, otherBucketIndex); + } + return 0; + } + } + + @Override + public Object[] getSections() { + return mSectionHeaders.keySet().toArray(new String[mSectionHeaders.size()]); + } + + @Override + public int getPositionForSection(int sectionIndex) { + return mSectionHeaders.get(getSections()[sectionIndex]); + } + + @Override + public int getSectionForPosition(int position) { + return mSectionHeaders.get(mHeaderList.get(position).mStartString); + } + + private void filterProtectedApps(ArrayList<AppInfo> list) { + updateProtectedAppsList(mLauncher); + + Iterator<AppInfo> iterator = list.iterator(); + while (iterator.hasNext()) { + AppInfo appInfo = iterator.next(); + if (mProtectedApps.contains(appInfo.componentName)) { + iterator.remove(); + } + } + } + + private void updateProtectedAppsList(Context context) { + String protectedComponents = Settings.Secure.getString(context.getContentResolver(), + LauncherModel.SETTINGS_PROTECTED_COMPONENTS); + protectedComponents = protectedComponents == null ? "" : protectedComponents; + String [] flattened = protectedComponents.split("\\|"); + mProtectedApps = new ArrayList<ComponentName>(flattened.length); + for (String flat : flattened) { + ComponentName cmp = ComponentName.unflattenFromString(flat); + if (cmp != null) { + mProtectedApps.add(cmp); + } + } + } +} diff --git a/src/com/android/launcher3/AppDrawerScrubber.java b/src/com/android/launcher3/AppDrawerScrubber.java new file mode 100644 index 000000000..0ace60da8 --- /dev/null +++ b/src/com/android/launcher3/AppDrawerScrubber.java @@ -0,0 +1,130 @@ +/* + * Copyright (C) 2013 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. + */ + +package com.android.launcher3; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.content.Context; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.SeekBar; +import android.widget.TextView; + +public class AppDrawerScrubber extends LinearLayout { + + private final int SCRUBBER_INDICATOR_DISPLAY_DURATION = 200; + private final float SCRUBBER_INDICATOR_DISPLAY_TRANSLATIONY = 20f; + + private AppDrawerListAdapter mAdapter; + private RecyclerView mListView; + private TextView mScrubberIndicator; + private SeekBar mSeekBar; + private String[] mSections; + private LinearLayoutManager mLayoutManager; + + public AppDrawerScrubber(Context context, AttributeSet attrs) { + super(context, attrs); + init(context); + } + + public AppDrawerScrubber(Context context) { + super(context); + init(context); + } + + public void updateSections() { + mSections = (String[]) mAdapter.getSections(); + mSeekBar.setMax(mSections.length - 1); + } + + public void setSource(RecyclerView listView) { + mListView = listView; + mAdapter = (AppDrawerListAdapter) listView.getAdapter(); + mLayoutManager = (LinearLayoutManager) listView.getLayoutManager(); + } + + public void setScrubberIndicator(TextView scrubberIndicator) { + mScrubberIndicator = scrubberIndicator; + } + + private boolean isReady() { + return mListView != null && + mAdapter != null && + mSections != null; + } + + private void init(Context context) { + LayoutInflater.from(context).inflate(R.layout.scrub_layout, this); + mSeekBar = (SeekBar) findViewById(R.id.scrubber); + + mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, final int progress, boolean fromUser) { + if (!isReady()) { + return; + } + resetScrubber(); + + String section = String.valueOf(mSections[progress]); + + if (mScrubberIndicator != null) { + float translateX = (progress * seekBar.getWidth()) / mSections.length; + translateX -= (mScrubberIndicator.getWidth() / 6); // offset for alignment + mScrubberIndicator.setTranslationX(translateX); + mScrubberIndicator.setText(section); + } + + mLayoutManager.smoothScrollToPosition(mListView, null, + mAdapter.getPositionForSection(progress)); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + resetScrubber(); + if (mScrubberIndicator != null) { + mScrubberIndicator.setAlpha(1f); + mScrubberIndicator.setVisibility(View.VISIBLE); + } + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + resetScrubber(); + if (mScrubberIndicator != null) { + mScrubberIndicator.animate().alpha(0f).translationYBy(20f) + .setDuration(200).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mScrubberIndicator.setVisibility(View.INVISIBLE); + } + }); + } + } + + private void resetScrubber() { + if (mScrubberIndicator != null) { + mScrubberIndicator.animate().cancel(); + mScrubberIndicator.setTranslationY(0f); + } + } + }); + } +}
\ No newline at end of file diff --git a/src/com/android/launcher3/AutoFitTextView.java b/src/com/android/launcher3/AutoFitTextView.java new file mode 100644 index 000000000..208dd4073 --- /dev/null +++ b/src/com/android/launcher3/AutoFitTextView.java @@ -0,0 +1,381 @@ +/* + * Copyright (C) 2014 Grantland Chew + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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.launcher3; + +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.text.Layout; +import android.text.StaticLayout; +import android.text.TextPaint; +import android.text.method.TransformationMethod; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.TypedValue; +import android.widget.TextView; + +/** + * A TextView that resizes it's text to be no larger than the width of the view. + * + * @author Grantland Chew <grantlandchew@gmail.com> + */ +public class AutoFitTextView extends TextView { + + private static final String TAG = "AutoFitTextView"; + private static final boolean SPEW = false; + + // Minimum size of the text in pixels + private static final int DEFAULT_MIN_TEXT_SIZE = 8; //sp + // How precise we want to be when reaching the target textWidth size + private static final float PRECISION = 0.5f; + + // Attributes + private boolean mSizeToFit; + private int mMaxLines; + private float mMinTextSize; + private float mMaxTextSize; + private float mPrecision; + private TextPaint mPaint; + + public AutoFitTextView(Context context) { + super(context); + init(context, null, 0); + } + + public AutoFitTextView(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs, 0); + } + + public AutoFitTextView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context, attrs, defStyle); + } + + private void init(Context context, AttributeSet attrs, int defStyle) { + float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity; + boolean sizeToFit = true; + int minTextSize = (int) scaledDensity * DEFAULT_MIN_TEXT_SIZE; + float precision = PRECISION; + + if (attrs != null) { + TypedArray ta = context.obtainStyledAttributes( + attrs, + R.styleable.AutofitTextView, + defStyle, + 0); + sizeToFit = ta.getBoolean(R.styleable.AutofitTextView_sizeToFit, sizeToFit); + minTextSize = ta.getDimensionPixelSize(R.styleable.AutofitTextView_minTextSize, + minTextSize); + precision = ta.getFloat(R.styleable.AutofitTextView_precision, precision); + ta.recycle(); + } + + mPaint = new TextPaint(); + setSizeToFit(sizeToFit); + setRawTextSize(super.getTextSize()); + setRawMinTextSize(minTextSize); + setPrecision(precision); + } + + // Getters and Setters + + /** + * @return whether or not the text will be automatically resized to fit its constraints. + */ + public boolean isSizeToFit() { + return mSizeToFit; + } + + /** + * Sets the property of this field (singleLine, to automatically resize the text to fit its constraints. + */ + public void setSizeToFit() { + setSizeToFit(true); + } + + /** + * If true, the text will automatically be resized to fit its constraints; if false, it will + * act like a normal TextView. + * + * @param sizeToFit + */ + public void setSizeToFit(boolean sizeToFit) { + mSizeToFit = sizeToFit; + refitText(); + } + + /** + * {@inheritDoc} + */ + @Override + public float getTextSize() { + return mMaxTextSize; + } + + /** + * {@inheritDoc} + */ + @Override + public void setTextSize(int unit, float size) { + Context context = getContext(); + Resources r = Resources.getSystem(); + + if (context != null) { + r = context.getResources(); + } + + setRawTextSize(TypedValue.applyDimension(unit, size, r.getDisplayMetrics())); + } + + private void setRawTextSize(float size) { + if (size != mMaxTextSize) { + mMaxTextSize = size; + refitText(); + } + } + + /** + * @return the minimum size (in pixels) of the text size in this AutofitTextView + */ + public float getMinTextSize() { + return mMinTextSize; + } + + /** + * Set the minimum text size to a given unit and value. See TypedValue for the possible + * dimension units. + * + * @param unit The desired dimension unit. + * @param minSize The desired size in the given units. + * + * @attr ref me.grantland.R.styleable#AutofitTextView_minTextSize + */ + public void setMinTextSize(int unit, float minSize) { + Context context = getContext(); + Resources r = Resources.getSystem(); + + if (context != null) { + r = context.getResources(); + } + + setRawMinTextSize(TypedValue.applyDimension(unit, minSize, r.getDisplayMetrics())); + } + + /** + * Set the minimum text size to the given value, interpreted as "scaled pixel" units. This size + * is adjusted based on the current density and user font size preference. + * + * @param minSize The scaled pixel size. + * + * @attr ref me.grantland.R.styleable#AutofitTextView_minTextSize + */ + public void setMinTextSize(int minSize) { + setMinTextSize(TypedValue.COMPLEX_UNIT_SP, minSize); + } + + private void setRawMinTextSize(float minSize) { + if (minSize != mMinTextSize) { + mMinTextSize = minSize; + refitText(); + } + } + + /** + * @return the amount of precision used to calculate the correct text size to fit within it's + * bounds. + */ + public float getPrecision() { + return mPrecision; + } + + /** + * Set the amount of precision used to calculate the correct text size to fit within it's + * bounds. Lower precision is more precise and takes more time. + * + * @param precision The amount of precision. + */ + public void setPrecision(float precision) { + if (precision != mPrecision) { + mPrecision = precision; + refitText(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void setLines(int lines) { + super.setLines(lines); + mMaxLines = lines; + refitText(); + } + + /** + * {@inheritDoc} + */ + @Override + public int getMaxLines() { + return mMaxLines; + } + + /** + * {@inheritDoc} + */ + @Override + public void setMaxLines(int maxLines) { + super.setMaxLines(maxLines); + if (maxLines != mMaxLines) { + mMaxLines = maxLines; + refitText(); + } + } + + /** + * Re size the font so the specified text fits in the text box assuming the text box is the + * specified width. + */ + private void refitText() { + if (!mSizeToFit) { + return; + } + + if (mMaxLines <= 0) { + // Don't auto-size since there's no limit on lines. + return; + } + + CharSequence text = getText(); + TransformationMethod method = getTransformationMethod(); + if (method != null) { + text = method.getTransformation(text, this); + } + int targetWidth = getWidth() - getPaddingLeft() - getPaddingRight(); + if (targetWidth > 0) { + Context context = getContext(); + Resources r = Resources.getSystem(); + DisplayMetrics displayMetrics; + + float size = mMaxTextSize; + float high = size; + float low = 0; + + if (context != null) { + r = context.getResources(); + } + displayMetrics = r.getDisplayMetrics(); + + mPaint.set(getPaint()); + mPaint.setTextSize(size); + + if ((mMaxLines == 1 && mPaint.measureText(text, 0, text.length()) > targetWidth) + || getLineCount(text, mPaint, size, targetWidth, displayMetrics) > mMaxLines) { + size = getTextSize(text, mPaint, targetWidth, mMaxLines, low, high, mPrecision, + displayMetrics); + } + + if (size < mMinTextSize) { + size = mMinTextSize; + } + + super.setTextSize(TypedValue.COMPLEX_UNIT_PX, size); + } + } + + /** + * Recursive binary search to find the best size for the text + */ + private static float getTextSize(CharSequence text, TextPaint paint, + float targetWidth, int maxLines, + float low, float high, float precision, + DisplayMetrics displayMetrics) { + float mid = (low + high) / 2.0f; + int lineCount = 1; + StaticLayout layout = null; + + paint.setTextSize(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, mid, + displayMetrics)); + + if (maxLines != 1) { + layout = new StaticLayout(text, paint, (int)targetWidth, Layout.Alignment.ALIGN_NORMAL, + 1.0f, 0.0f, true); + lineCount = layout.getLineCount(); + } + + if (SPEW) Log.d(TAG, "low=" + low + " high=" + high + " mid=" + mid + + " target=" + targetWidth + " maxLines=" + maxLines + " lineCount=" + lineCount); + + if (lineCount > maxLines) { + return getTextSize(text, paint, targetWidth, maxLines, low, mid, precision, + displayMetrics); + } + else if (lineCount < maxLines) { + return getTextSize(text, paint, targetWidth, maxLines, mid, high, precision, + displayMetrics); + } + else { + float maxLineWidth = 0; + if (maxLines == 1) { + maxLineWidth = paint.measureText(text, 0, text.length()); + } else { + for (int i = 0; i < lineCount; i++) { + if (layout.getLineWidth(i) > maxLineWidth) { + maxLineWidth = layout.getLineWidth(i); + } + } + } + + if ((high - low) < precision) { + return low; + } else if (maxLineWidth > targetWidth) { + return getTextSize(text, paint, targetWidth, maxLines, low, mid, precision, + displayMetrics); + } else if (maxLineWidth < targetWidth) { + return getTextSize(text, paint, targetWidth, maxLines, mid, high, precision, + displayMetrics); + } else { + return mid; + } + } + } + + private static int getLineCount(CharSequence text, TextPaint paint, float size, float width, + DisplayMetrics displayMetrics) { + paint.setTextSize(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, size, + displayMetrics)); + StaticLayout layout = new StaticLayout(text, paint, (int)width, + Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, true); + return layout.getLineCount(); + } + + @Override + protected void onTextChanged(final CharSequence text, final int start, + final int lengthBefore, final int lengthAfter) { + super.onTextChanged(text, start, lengthBefore, lengthAfter); + refitText(); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + if (w != oldw) { + refitText(); + } + } +}
\ No newline at end of file diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index 5bc17b674..c7e85575a 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -42,11 +42,11 @@ public class BubbleTextView extends TextView { private static SparseArray<Theme> sPreloaderThemes = new SparseArray<>(2); - private static final float SHADOW_LARGE_RADIUS = 4.0f; - private static final float SHADOW_SMALL_RADIUS = 1.75f; - private static final float SHADOW_Y_OFFSET = 2.0f; - private static final int SHADOW_LARGE_COLOUR = 0xDD000000; - private static final int SHADOW_SMALL_COLOUR = 0xCC000000; + public static final float SHADOW_LARGE_RADIUS = 4.0f; + public static final float SHADOW_SMALL_RADIUS = 1.75f; + public static final float SHADOW_Y_OFFSET = 2.0f; + public static final int SHADOW_LARGE_COLOUR = 0xDD000000; + public static final int SHADOW_SMALL_COLOUR = 0xCC000000; static final float PADDING_V = 3.0f; private HolographicOutlineHelper mOutlineHelper; diff --git a/src/com/android/launcher3/DragLayer.java b/src/com/android/launcher3/DragLayer.java index 691b09558..328c31173 100644 --- a/src/com/android/launcher3/DragLayer.java +++ b/src/com/android/launcher3/DragLayer.java @@ -135,6 +135,10 @@ public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChang lp.bottomMargin += insets.bottom - mInsets.bottom; layout.setLayoutParams(lp); continue; + } else if (child.getId() == R.id.app_drawer_container) { + setAppDrawerInsets(child, insets); + + continue; } setInsets(child, insets, mInsets); if (child.getId() == R.id.search_drop_target_bar) { @@ -145,6 +149,23 @@ public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChang return true; // I'll take it from here } + private void setAppDrawerInsets(View child, Rect insets) { + // List view + View view = child.findViewById(R.id.app_drawer_recyclerview); + FrameLayout.LayoutParams lp = + (FrameLayout.LayoutParams) view.getLayoutParams(); + int paddingBottom = view.getPaddingBottom() + insets.bottom - mInsets.bottom; + int paddingTop = view.getPaddingTop() + insets.top - mInsets.top; + view.setLayoutParams(lp); + view.setPadding(view.getPaddingLeft(), paddingTop, view.getPaddingRight(), paddingBottom); + + // Scrubber + view = child.findViewById(R.id.app_drawer_scrubber_container); + LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams) view.getLayoutParams(); + llp.bottomMargin += insets.bottom - mInsets.bottom; + view.setLayoutParams(llp); + } + Rect getInsets() { return mInsets; } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 80781c642..15df77fe6 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -70,6 +70,8 @@ import android.os.Message; import android.os.StrictMode; import android.os.SystemClock; import android.speech.RecognizerIntent; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.text.Selection; import android.text.SpannableStringBuilder; import android.text.TextUtils; @@ -98,6 +100,7 @@ import android.view.accessibility.AccessibilityEvent; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.view.animation.Interpolator; +import android.view.animation.OvershootInterpolator; import android.view.inputmethod.InputMethodManager; import android.widget.Advanceable; import android.widget.FrameLayout; @@ -166,6 +169,8 @@ public class Launcher extends Activity private static final int REQUEST_RECONFIGURE_APPWIDGET = 12; public static final int REQUEST_TRANSITION_EFFECTS = 14; + private static final float OVERSHOOT_TENSION = 1.4f; + static final int REQUEST_PICK_ICON = 13; private static final int REQUEST_LOCK_PATTERN = 14; @@ -299,6 +304,9 @@ public class Launcher extends Activity OverviewSettingsPanel mOverviewSettingsPanel; private View mAllAppsButton; + protected RecyclerView mAppDrawer; + private AppDrawerListAdapter mAppDrawerAdapter; + private AppDrawerScrubber mScrubber; protected SearchDropTargetBar mSearchDropTargetBar; private AppsCustomizeTabHost mAppsCustomizeTabHost; @@ -389,6 +397,7 @@ public class Launcher extends Activity // Preferences private boolean mHideIconLabels; + private AppDrawerListAdapter.DrawerType mDrawerType; private Runnable mBuildLayersRunnable = new Runnable() { public void run() { @@ -563,6 +572,10 @@ public class Launcher extends Activity mHideIconLabels = SettingsProvider.getBoolean(this, SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, R.bool.preferences_interface_homescreen_hide_icon_labels_default); + mDrawerType = AppDrawerListAdapter.DrawerType.getModeForValue( + SettingsProvider.getInt(this, + SettingsProvider.SETTINGS_UI_DRAWER_TYPE, + R.integer.preferences_interface_drawer_type_default)); // Determine the dynamic grid properties Point smallestSize = new Point(); @@ -598,6 +611,24 @@ public class Launcher extends Activity protected void populateCustomContentContainer() { } + private void initializeScrubber() { + if (mScrubber == null) { + FrameLayout view = (FrameLayout) findViewById(R.id.app_drawer_container); + mScrubber = (AppDrawerScrubber) view.findViewById(R.id.app_drawer_scrubber); + mScrubber.setSource(mAppDrawer); + mScrubber.setScrubberIndicator((TextView) view.findViewById(R.id.scrubberIndicator)); + } + } + + public void updateScrubber() { + mScrubber.updateSections(); + } + + public void initializeAdapter() { + mAppDrawerAdapter = new AppDrawerListAdapter(this); + mAppDrawerAdapter.notifyDataSetChanged(); + } + /** * Invoked by subclasses to signal a change to the {@link #addCustomContentToLeft} value to * ensure the custom content page is added or removed if necessary. @@ -1239,6 +1270,17 @@ public class Launcher extends Activity return false; } + public void updateDrawerType() { + mDrawerType = AppDrawerListAdapter.DrawerType.getModeForValue( + SettingsProvider.getInt(this, + SettingsProvider.SETTINGS_UI_DRAWER_TYPE, + R.integer.preferences_interface_drawer_type_default)); + } + + public AppDrawerListAdapter.DrawerType getDrawerType() { + return mDrawerType; + } + public void onClickSortModeButton(View v) { final PopupMenu popupMenu = new PopupMenu(this, v); final Menu menu = popupMenu.getMenu(); @@ -1289,7 +1331,18 @@ public class Launcher extends Activity public void setDynamicGridSize(DeviceProfile.GridSize size) { int gridSize = SettingsProvider.getIntCustomDefault(this, SettingsProvider.SETTINGS_UI_DYNAMIC_GRID_SIZE, 0); - if (gridSize != size.getValue()) { + boolean customValuesChanged = false; + if (gridSize == size.getValue() && size == DeviceProfile.GridSize.Custom) { + int tempRows = SettingsProvider.getIntCustomDefault(this, + SettingsProvider.SETTINGS_UI_HOMESCREEN_ROWS, (int)mGrid.numRows); + int tempColumns = SettingsProvider.getIntCustomDefault(this, + SettingsProvider.SETTINGS_UI_HOMESCREEN_COLUMNS, (int)mGrid.numColumns); + if (tempColumns != (int) mGrid.numColumns || tempRows != (int) mGrid.numRows) { + customValuesChanged = true; + } + } + + if (gridSize != size.getValue() || customValuesChanged) { SettingsProvider.putInt(this, SettingsProvider.SETTINGS_UI_DYNAMIC_GRID_SIZE, size.getValue()); @@ -1644,6 +1697,9 @@ public class Launcher extends Activity mAppsCustomizeTabHost.findViewById(R.id.apps_customize_pane_content); mAppsCustomizeContent.setup(this, dragController); + // Setup AppDrawer + setupAppDrawer(); + // Setup the drag controller (drop targets have to be added in reverse order in priority) dragController.setDragScoller(mWorkspace); dragController.setScrollView(mDragLayer); @@ -1669,6 +1725,20 @@ public class Launcher extends Activity } } + private void setupAppDrawer() { + if (mAppDrawer == null) { + FrameLayout view = (FrameLayout) findViewById(R.id.app_drawer_container); + mAppDrawer = (RecyclerView) view.findViewById(R.id.app_drawer_recyclerview); + mAppDrawer.setLayoutManager(new LinearLayoutManager(this)); + if (mAppDrawerAdapter == null) { + initializeAdapter(); + } + mAppDrawer.setHasFixedSize(true); + mAppDrawer.setAdapter(mAppDrawerAdapter); + initializeScrubber(); + } + } + /** * Sets the all apps button. This method is called from {@link Hotseat}. */ @@ -2203,11 +2273,6 @@ public class Launcher extends Activity imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } - // Reset the apps customize page - if (!alreadyOnHome && mAppsCustomizeTabHost != null) { - mAppsCustomizeTabHost.reset(); - } - onHomeIntent(); } @@ -3205,7 +3270,7 @@ public class Launcher extends Activity return false; } - boolean startActivitySafely(View v, Intent intent, Object tag) { + public boolean startActivitySafely(View v, Intent intent, Object tag) { boolean success = false; if (mIsSafeModeEnabled && !Utilities.isSystemApp(this, intent)) { Toast.makeText(this, R.string.safemode_shortcut_error, Toast.LENGTH_SHORT).show(); @@ -3583,7 +3648,7 @@ public class Launcher extends Activity } boolean material = Utilities.isLmpOrAbove(); - + boolean drawer = mDrawerType == AppDrawerListAdapter.DrawerType.Drawer; final Resources res = getResources(); final int duration = res.getInteger(R.integer.config_appsCustomizeZoomInTime); @@ -3594,7 +3659,13 @@ public class Launcher extends Activity final float scale = (float) res.getInteger(R.integer.config_appsCustomizeZoomScaleFactor); final View fromView = mWorkspace; - final AppsCustomizeTabHost toView = mAppsCustomizeTabHost; + final View toView; + + if (drawer && contentType == AppsCustomizePagedView.ContentType.Applications) { + toView = findViewById(R.id.app_drawer_container); + } else { + toView = mAppsCustomizeTabHost; + } final ArrayList<View> layerViews = new ArrayList<View>(); @@ -3616,7 +3687,8 @@ public class Launcher extends Activity final AppsCustomizePagedView content = (AppsCustomizePagedView) toView.findViewById(R.id.apps_customize_pane_content); - final View page = content.getPageAt(content.getCurrentPage()); + final View page = content != null ? content.getPageAt(content.getCurrentPage()) + : toView.findViewById(R.id.app_drawer_view); final View revealView = toView.findViewById(R.id.fake_page); final float initialPanelAlpha = 1f; @@ -3625,11 +3697,19 @@ public class Launcher extends Activity if (isWidgetTray) { revealView.setBackground(res.getDrawable(R.drawable.quantum_panel_dark)); } else { - revealView.setBackground(res.getDrawable(R.drawable.quantum_panel)); + if (drawer) { + revealView.setBackgroundColor(res.getColor(R.color.app_drawer_background)); + } else { + revealView.setBackground(res.getDrawable(R.drawable.quantum_panel)); + } } // Hide the real page background, and swap in the fake one - content.setPageBackgroundsVisible(false); + if (content != null) { + content.setPageBackgroundsVisible(false); + } else { + toView.setBackgroundColor(Color.TRANSPARENT); + } revealView.setVisibility(View.VISIBLE); // We need to hide this view as the animation start will be posted. revealView.setAlpha(0); @@ -3674,6 +3754,11 @@ public class Launcher extends Activity mStateAnimation.play(panelAlphaAndDrift); + final View drawerContent = content == null ? + toView.findViewById(R.id.app_drawer_recyclerview) : null; + final View drawerScrubber = content == null ? + toView.findViewById(R.id.scrubber_container) : null; + if (page != null) { page.setVisibility(View.VISIBLE); page.setLayerType(View.LAYER_TYPE_HARDWARE, null); @@ -3692,14 +3777,32 @@ public class Launcher extends Activity itemsAlpha.setInterpolator(new AccelerateInterpolator(1.5f)); itemsAlpha.setStartDelay(itemsAlphaStagger); mStateAnimation.play(itemsAlpha); + + if (drawerContent != null) { + drawerContent.setTranslationY(toView.getHeight()); + ObjectAnimator slideIn = ObjectAnimator.ofFloat(drawerContent, + "translationY", 1000, 0); + slideIn.setInterpolator(new OvershootInterpolator(OVERSHOOT_TENSION)); + slideIn.setStartDelay(revealDuration / 2); + mStateAnimation.play(slideIn); + } + if (drawerScrubber != null) { + drawerScrubber.setAlpha(0f); + ObjectAnimator fadeIn = ObjectAnimator.ofFloat(drawerScrubber, + "alpha", 0f, 1f); + fadeIn.setStartDelay(revealDuration / 2); + mStateAnimation.play(fadeIn); + } } View pageIndicators = toView.findViewById(R.id.apps_customize_page_indicator); - pageIndicators.setAlpha(0.01f); - ObjectAnimator indicatorsAlpha = - ObjectAnimator.ofFloat(pageIndicators, "alpha", 1f); - indicatorsAlpha.setDuration(revealDuration); - mStateAnimation.play(indicatorsAlpha); + if (pageIndicators != null) { + pageIndicators.setAlpha(0.01f); + ObjectAnimator indicatorsAlpha = + ObjectAnimator.ofFloat(pageIndicators, "alpha", 1f); + indicatorsAlpha.setDuration(revealDuration); + mStateAnimation.play(indicatorsAlpha); + } if (material) { final View allApps = getAllAppsButton(); @@ -3737,7 +3840,11 @@ public class Launcher extends Activity if (page != null) { page.setLayerType(View.LAYER_TYPE_NONE, null); } - content.setPageBackgroundsVisible(true); + if (content != null) { + content.setPageBackgroundsVisible(true); + } else { + toView.setBackgroundColor(res.getColor(R.color.app_drawer_background)); + } // Hide the search bar if (mSearchDropTargetBar != null) { @@ -3820,7 +3927,8 @@ public class Launcher extends Activity } boolean material = Utilities.isLmpOrAbove(); - Resources res = getResources(); + boolean drawer = mDrawerType == AppDrawerListAdapter.DrawerType.Drawer; + final Resources res = getResources(); final int duration = res.getInteger(R.integer.config_appsCustomizeZoomOutTime); final int fadeOutDuration = res.getInteger(R.integer.config_appsCustomizeFadeOutTime); @@ -3830,7 +3938,15 @@ public class Launcher extends Activity final float scaleFactor = (float) res.getInteger(R.integer.config_appsCustomizeZoomScaleFactor); - final View fromView = mAppsCustomizeTabHost; + final View fromView; + + if (drawer && mAppsCustomizeContent.getContentType() + != AppsCustomizePagedView.ContentType.Widgets) { + fromView = (FrameLayout) findViewById(R.id.app_drawer_container); + } else { + fromView = mAppsCustomizeTabHost; + } + final View toView = mWorkspace; Animator workspaceAnim = null; final ArrayList<View> layerViews = new ArrayList<View>(); @@ -3856,10 +3972,11 @@ public class Launcher extends Activity final AppsCustomizePagedView content = (AppsCustomizePagedView) fromView.findViewById(R.id.apps_customize_pane_content); - final View page = content.getPageAt(content.getNextPage()); + final View page = content != null ? content.getPageAt(content.getNextPage()) + : fromView.findViewById(R.id.app_drawer_view); // We need to hide side pages of the Apps / Widget tray to avoid some ugly edge cases - int count = content.getChildCount(); + int count = content != null ? content.getChildCount() : 0; for (int i = 0; i < count; i++) { View child = content.getChildAt(i); if (child != page) { @@ -3872,14 +3989,20 @@ public class Launcher extends Activity // don't perform all these no-op animations. In particularly, this was causing // the all-apps button to pop in and out. if (fromView.getVisibility() == View.VISIBLE) { - AppsCustomizePagedView.ContentType contentType = content.getContentType(); + AppsCustomizePagedView.ContentType contentType = + mAppsCustomizeContent.getContentType(); final boolean isWidgetTray = contentType == AppsCustomizePagedView.ContentType.Widgets; if (isWidgetTray) { revealView.setBackground(res.getDrawable(R.drawable.quantum_panel_dark)); } else { - revealView.setBackground(res.getDrawable(R.drawable.quantum_panel)); + if (drawer) { + revealView.setBackgroundColor(res.getColor( + R.color.app_drawer_background)); + } else { + revealView.setBackground(res.getDrawable(R.drawable.quantum_panel)); + } } int width = revealView.getMeasuredWidth(); @@ -3888,7 +4011,11 @@ public class Launcher extends Activity // Hide the real page background, and swap in the fake one revealView.setVisibility(View.VISIBLE); - content.setPageBackgroundsVisible(false); + if (content != null) { + content.setPageBackgroundsVisible(false); + } else { + fromView.setBackgroundColor(Color.TRANSPARENT); + } final View allAppsButton = getAllAppsButton(); revealView.setTranslationY(0); @@ -3938,6 +4065,9 @@ public class Launcher extends Activity mStateAnimation.play(panelAlpha); } + final View drawerScrubber = content == null ? + fromView.findViewById(R.id.scrubber_container) : null; + if (page != null) { page.setLayerType(View.LAYER_TYPE_HARDWARE, null); @@ -3954,15 +4084,24 @@ public class Launcher extends Activity itemsAlpha.setDuration(100); itemsAlpha.setInterpolator(decelerateInterpolator); mStateAnimation.play(itemsAlpha); + + if (drawerScrubber != null) { + drawerScrubber.setAlpha(1f); + ObjectAnimator fadeOut = ObjectAnimator.ofFloat(drawerScrubber, + "alpha", 1f, 0f); + mStateAnimation.play(fadeOut); + } } View pageIndicators = fromView.findViewById(R.id.apps_customize_page_indicator); - pageIndicators.setAlpha(1f); - ObjectAnimator indicatorsAlpha = - LauncherAnimUtils.ofFloat(pageIndicators, "alpha", 0f); - indicatorsAlpha.setDuration(revealDuration); - indicatorsAlpha.setInterpolator(new DecelerateInterpolator(1.5f)); - mStateAnimation.play(indicatorsAlpha); + if (pageIndicators != null) { + pageIndicators.setAlpha(1f); + ObjectAnimator indicatorsAlpha = + LauncherAnimUtils.ofFloat(pageIndicators, "alpha", 0f); + indicatorsAlpha.setDuration(revealDuration); + indicatorsAlpha.setInterpolator(new DecelerateInterpolator(1.5f)); + mStateAnimation.play(indicatorsAlpha); + } width = revealView.getMeasuredWidth(); @@ -4011,9 +4150,13 @@ public class Launcher extends Activity if (page != null) { page.setLayerType(View.LAYER_TYPE_NONE, null); } - content.setPageBackgroundsVisible(true); + if (content != null) { + content.setPageBackgroundsVisible(true); + } else { + fromView.setBackgroundColor(res.getColor(R.color.app_drawer_background)); + } // Unhide side pages - int count = content.getChildCount(); + int count = content != null ? content.getChildCount() : 0; for (int i = 0; i < count; i++) { View child = content.getChildAt(i); child.setVisibility(View.VISIBLE); @@ -4025,7 +4168,9 @@ public class Launcher extends Activity page.setTranslationY(0); page.setAlpha(1); } - content.setCurrentPage(content.getNextPage()); + if (content != null) { + content.setCurrentPage(content.getNextPage()); + } mAppsCustomizeContent.updateCurrentPageScroll(); } @@ -4676,6 +4821,7 @@ public class Launcher extends Activity if (!LauncherAppState.isDisableAllApps() && addedApps != null && mAppsCustomizeContent != null) { mAppsCustomizeContent.addApps(addedApps); + mAppDrawerAdapter.addApps(addedApps); } } @@ -5059,6 +5205,9 @@ public class Launcher extends Activity LauncherModel.getSortedWidgetsAndShortcuts(this)); } } else { + if (mAppDrawerAdapter != null) { + mAppDrawerAdapter.setApps(apps); + } if (mAppsCustomizeContent != null) { mAppsCustomizeContent.setApps(apps); mAppsCustomizeContent.onPackagesUpdated( @@ -5089,6 +5238,7 @@ public class Launcher extends Activity if (!LauncherAppState.isDisableAllApps() && mAppsCustomizeContent != null) { mAppsCustomizeContent.updateApps(apps); + mAppDrawerAdapter.updateApps(apps); } } @@ -5168,6 +5318,7 @@ public class Launcher extends Activity if (!LauncherAppState.isDisableAllApps() && mAppsCustomizeContent != null) { mAppsCustomizeContent.removeApps(appInfos); + mAppDrawerAdapter.removeApps(appInfos); } } @@ -5425,16 +5576,24 @@ public class Launcher extends Activity if (mWorkspace != null) mWorkspace.setAlpha(1f); if (mHotseat != null) mHotseat.setAlpha(1f); if (mPageIndicators != null) mPageIndicators.setAlpha(1f); - if (mSearchDropTargetBar != null) mSearchDropTargetBar.showSearchBar(false); + showSearch(); } void hideWorkspaceSearchAndHotseat() { if (mWorkspace != null) mWorkspace.setAlpha(0f); if (mHotseat != null) mHotseat.setAlpha(0f); if (mPageIndicators != null) mPageIndicators.setAlpha(0f); + hideSearch(); + } + + void hideSearch() { if (mSearchDropTargetBar != null) mSearchDropTargetBar.hideSearchBar(false); } + void showSearch() { + if (mSearchDropTargetBar != null) mSearchDropTargetBar.showSearchBar(false); + } + public ItemInfo createAppDragInfo(Intent appLaunchIntent) { // Called from search suggestion, not supported in other profiles. final UserHandleCompat myUser = UserHandleCompat.myUserHandle(); @@ -5623,9 +5782,11 @@ public class Launcher extends Activity mGrid.layout(Launcher.this); // Synchronized reload + mModel.stopLoader(); //make sure the loader isn't running mModel.startLoader(true, page); mWorkspace.updateCustomContentVisibility(); + mAppDrawerAdapter.reset(); } public void setUpdateDynamicGrid() { diff --git a/src/com/android/launcher3/OverviewSettingsPanel.java b/src/com/android/launcher3/OverviewSettingsPanel.java index 983c5aaf6..4ea86a31c 100644 --- a/src/com/android/launcher3/OverviewSettingsPanel.java +++ b/src/com/android/launcher3/OverviewSettingsPanel.java @@ -49,6 +49,7 @@ public class OverviewSettingsPanel { res.getString(R.string.grid_size_text)}; String[] valuesDrawer = new String[] { + res.getString(R.string.drawer_type), res.getString(R.string.scroll_effect_text), res.getString(R.string.drawer_sorting_text), res.getString(R.string.icon_labels)}; diff --git a/src/com/android/launcher3/PagedViewIcon.java b/src/com/android/launcher3/PagedViewIcon.java new file mode 100644 index 000000000..660251e31 --- /dev/null +++ b/src/com/android/launcher3/PagedViewIcon.java @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Region; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.widget.TextView; + +/** + * An icon on a PagedView, specifically for items in the launcher's paged view (with compound + * drawables on the top). + */ +public class PagedViewIcon extends TextView { + /** A simple callback interface to allow a PagedViewIcon to notify when it has been pressed */ + public static interface PressedCallback { + void iconPressed(PagedViewIcon icon); + } + + @SuppressWarnings("unused") + private static final String TAG = "PagedViewIcon"; + static final float PRESS_ALPHA = 0.4f; + + private PagedViewIcon.PressedCallback mPressedCallback; + private boolean mLockDrawableState = false; + + private Bitmap mIcon; + + public PagedViewIcon(Context context) { + this(context, null); + } + + public PagedViewIcon(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public PagedViewIcon(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public void onFinishInflate() { + super.onFinishInflate(); + + // Ensure we are using the right text size + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); + setTextSize(TypedValue.COMPLEX_UNIT_PX, grid.allAppsIconTextSizePx); + } + + public void applyFromApplicationInfo(AppInfo info, boolean scaleUp, + PagedViewIcon.PressedCallback cb) { + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); + + mIcon = info.iconBitmap; + mPressedCallback = cb; + Drawable icon = Utilities.createIconDrawable(mIcon); + icon.setBounds(0, 0, grid.allAppsIconSizePx, grid.allAppsIconSizePx); + setCompoundDrawables(null, icon, null, null); + setCompoundDrawablePadding(grid.iconDrawablePaddingPx); + setText(info.title); + setTag(info); + } + + public void lockDrawableState() { + mLockDrawableState = true; + } + + public void resetDrawableState() { + mLockDrawableState = false; + post(new Runnable() { + @Override + public void run() { + refreshDrawableState(); + } + }); + } + + protected void drawableStateChanged() { + super.drawableStateChanged(); + + // We keep in the pressed state until resetDrawableState() is called to reset the press + // feedback + if (isPressed()) { + setAlpha(PRESS_ALPHA); + if (mPressedCallback != null) { + mPressedCallback.iconPressed(this); + } + } else if (!mLockDrawableState) { + setAlpha(1f); + } + } + + @Override + public void draw(Canvas canvas) { + // If text is transparent, don't draw any shadow + if (getCurrentTextColor() == getResources().getColor(android.R.color.transparent)) { + getPaint().clearShadowLayer(); + super.draw(canvas); + return; + } + + // We enhance the shadow by drawing the shadow twice + getPaint().setShadowLayer(BubbleTextView.SHADOW_LARGE_RADIUS, 0.0f, + BubbleTextView.SHADOW_Y_OFFSET, BubbleTextView.SHADOW_LARGE_COLOUR); + super.draw(canvas); + canvas.save(Canvas.CLIP_SAVE_FLAG); + canvas.clipRect(getScrollX(), getScrollY() + getExtendedPaddingTop(), + getScrollX() + getWidth(), + getScrollY() + getHeight(), Region.Op.INTERSECT); + getPaint().setShadowLayer(BubbleTextView.SHADOW_SMALL_RADIUS, 0.0f, 0.0f, + BubbleTextView.SHADOW_SMALL_COLOUR); + super.draw(canvas); + canvas.restore(); + } +} diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java index addd74cfc..fcd4b8587 100644 --- a/src/com/android/launcher3/Utilities.java +++ b/src/com/android/launcher3/Utilities.java @@ -41,6 +41,7 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.PaintDrawable; import android.os.Build; +import android.util.DisplayMetrics; import android.util.Log; import android.util.Pair; import android.util.SparseArray; @@ -558,4 +559,11 @@ public final class Utilities { } return null; } + + public static float convertDpToPixel(float dp, Context context){ + Resources resources = context.getResources(); + DisplayMetrics metrics = resources.getDisplayMetrics(); + float px = dp * (metrics.densityDpi / (float) DisplayMetrics.DENSITY_DEFAULT); + return px; + } } diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java index 5aa719027..d496c1c08 100644 --- a/src/com/android/launcher3/WidgetPreviewLoader.java +++ b/src/com/android/launcher3/WidgetPreviewLoader.java @@ -12,6 +12,7 @@ import android.database.sqlite.SQLiteCantOpenDatabaseException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDiskIOException; import android.database.sqlite.SQLiteOpenHelper; +import android.database.sqlite.SQLiteReadOnlyDatabaseException; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; @@ -379,6 +380,7 @@ public class WidgetPreviewLoader { db.delete(CacheDb.TABLE_NAME, null, null); } catch (SQLiteDiskIOException e) { } catch (SQLiteCantOpenDatabaseException e) { + } catch (SQLiteReadOnlyDatabaseException e) { dumpOpenFiles(); throw e; } diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index a93fff47b..ee812aa0e 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -2567,7 +2567,7 @@ public class Workspace extends SmoothPagedView } mLauncher.updateVoiceButtonProxyVisible(false); - if (stateIsNormal) { + if (stateIsNormal || stateIsNormalHidden) { animateBackgroundGradient(0f, animated); } else { animateBackgroundGradient(getResources().getInteger( diff --git a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java index 4e25a3b15..c4b5dee47 100644 --- a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java +++ b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java @@ -6,7 +6,9 @@ import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; +import android.graphics.Color; import android.graphics.Typeface; +import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; @@ -14,6 +16,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.TextView; +import com.android.launcher3.AppDrawerListAdapter; import com.android.launcher3.AppsCustomizePagedView; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; @@ -24,6 +27,8 @@ import com.android.launcher3.settings.SettingsProvider; public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { private static final int PARTITION_TAG = 0; private static final int POSITION_TAG = 1; + private static final float ENABLED_ALPHA = 1f; + private static final float DISABLED_ALPHA = 1f; private Launcher mLauncher; private Context mContext; @@ -90,6 +95,7 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { Resources res = mLauncher.getResources(); + boolean current = false; String state = ""; @@ -131,14 +137,21 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { case OverviewSettingsPanel.DRAWER_SETTINGS_POSITION: switch (position) { case 0: - state = mLauncher.getAppsCustomizeTransitionEffect(); - state = mapEffectToValue(state); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + updateDrawerTypeSettingsItem(v); break; case 1: - updateDrawerSortSettingsItem(v); + if (!setDisabled(v)) { + state = mLauncher.getAppsCustomizeTransitionEffect(); + state = mapEffectToValue(state); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } break; case 2: + if (!setDisabled(v)) { + updateDrawerSortSettingsItem(v); + } + break; + case 3: current = SettingsProvider.getBoolean(mContext, SettingsProvider.SETTINGS_UI_DRAWER_HIDE_ICON_LABELS, R.bool.preferences_interface_drawer_hide_icon_labels_default); @@ -209,6 +222,20 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { ((TextView) v.findViewById(R.id.item_state)).setText(state); } + public void updateDrawerTypeSettingsItem(View v) { + String state = ""; + AppDrawerListAdapter.DrawerType type = mLauncher.getDrawerType(); + switch (type) { + case Drawer: + state = mLauncher.getResources().getString(R.string.drawer_type_drawer); + break; + case Pager: + state = mLauncher.getResources().getString(R.string.drawer_type_pager); + break; + } + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } + public void updateDynamicGridSizeSettingsItem(View v) { DeviceProfile.GridSize gridSize = DeviceProfile.GridSize.getModeForValue( SettingsProvider.getIntCustomDefault(mLauncher, @@ -295,12 +322,17 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { case OverviewSettingsPanel.DRAWER_SETTINGS_POSITION: switch (position) { case 0: - mLauncher.onClickTransitionEffectButton(v, true); + onClickDrawerTypeButton(); break; case 1: - onClickSortButton(); + mLauncher.onClickTransitionEffectButton(v, true); + break; case 2: + onClickSortButton(); + + break; + case 3: onIconLabelsBooleanChanged(v, SettingsProvider.SETTINGS_UI_DRAWER_HIDE_ICON_LABELS, R.bool.preferences_interface_drawer_hide_icon_labels_default); @@ -384,4 +416,44 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { notifyDataSetChanged(); } + + private void onClickDrawerTypeButton() { + int type = SettingsProvider.getInt(mLauncher, + SettingsProvider.SETTINGS_UI_DRAWER_TYPE, + R.integer.preferences_interface_drawer_type_default); + + type = (type + 1) % AppDrawerListAdapter.DrawerType.values().length; + SettingsProvider.putInt(mLauncher, SettingsProvider.SETTINGS_UI_DRAWER_TYPE, type); + + mLauncher.updateDrawerType(); + + notifyDataSetChanged(); + } + + private boolean setDisabled(View v) { + TextView itemState = ((TextView) v.findViewById(R.id.item_state)); + TextView itemName = ((TextView) v.findViewById(R.id.item_name)); + + AppDrawerListAdapter.DrawerType type = mLauncher.getDrawerType(); + + boolean isDisabled = false; + + switch (type) { + case Drawer: + itemState.setAlpha(DISABLED_ALPHA); + itemState.setText(mLauncher.getResources() + .getString(R.string.setting_state_disabled)); + itemName.setAlpha(DISABLED_ALPHA); + v.setEnabled(false); + isDisabled = true; + break; + case Pager: + itemState.setAlpha(ENABLED_ALPHA); + itemName.setAlpha(ENABLED_ALPHA); + v.setEnabled(true); + break; + } + + return isDisabled; + } } diff --git a/src/com/android/launcher3/locale/HanziToPinyin.java b/src/com/android/launcher3/locale/HanziToPinyin.java new file mode 100644 index 000000000..9e398fac0 --- /dev/null +++ b/src/com/android/launcher3/locale/HanziToPinyin.java @@ -0,0 +1,186 @@ +/* + * 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.launcher3.locale; + +import android.text.TextUtils; +import android.util.Log; + +import java.util.ArrayList; + +import libcore.icu.Transliterator; + +/** + * An object to convert Chinese character to its corresponding pinyin string. + * For characters with multiple possible pinyin string, only one is selected + * according to ICU Transliterator class. Polyphone is not supported in this + * implementation. + */ +public class HanziToPinyin { + private static final String TAG = "HanziToPinyin"; + + private static HanziToPinyin sInstance; + private Transliterator mPinyinTransliterator; + private Transliterator mAsciiTransliterator; + + public static class Token { + /** + * Separator between target string for each source char + */ + public static final String SEPARATOR = " "; + + public static final int LATIN = 1; + public static final int PINYIN = 2; + public static final int UNKNOWN = 3; + + public Token() { + } + + public Token(int type, String source, String target) { + this.type = type; + this.source = source; + this.target = target; + } + + /** + * Type of this token, ASCII, PINYIN or UNKNOWN. + */ + public int type; + /** + * Original string before translation. + */ + public String source; + /** + * Translated string of source. For Han, target is corresponding Pinyin. Otherwise target is + * original string in source. + */ + public String target; + } + + private HanziToPinyin() { + try { + mPinyinTransliterator = new Transliterator("Han-Latin/Names; Latin-Ascii; Any-Upper"); + mAsciiTransliterator = new Transliterator("Latin-Ascii"); + } catch (RuntimeException e) { + Log.w(TAG, "Han-Latin/Names transliterator data is missing," + + " HanziToPinyin is disabled"); + } + } + + public boolean hasChineseTransliterator() { + return mPinyinTransliterator != null; + } + + public static HanziToPinyin getInstance() { + synchronized (HanziToPinyin.class) { + if (sInstance == null) { + sInstance = new HanziToPinyin(); + } + return sInstance; + } + } + + private void tokenize(char character, Token token) { + token.source = Character.toString(character); + + // ASCII + if (character < 128) { + token.type = Token.LATIN; + token.target = token.source; + return; + } + + // Extended Latin. Transcode these to ASCII equivalents + if (character < 0x250 || (0x1e00 <= character && character < 0x1eff)) { + token.type = Token.LATIN; + token.target = mAsciiTransliterator == null ? token.source : + mAsciiTransliterator.transliterate(token.source); + return; + } + + token.type = Token.PINYIN; + token.target = mPinyinTransliterator.transliterate(token.source); + if (TextUtils.isEmpty(token.target) || + TextUtils.equals(token.source, token.target)) { + token.type = Token.UNKNOWN; + token.target = token.source; + } + } + + public String transliterate(final String input) { + if (!hasChineseTransliterator() || TextUtils.isEmpty(input)) { + return null; + } + return mPinyinTransliterator.transliterate(input); + } + + /** + * Convert the input to a array of tokens. The sequence of ASCII or Unknown characters without + * space will be put into a Token, One Hanzi character which has pinyin will be treated as a + * Token. If there is no Chinese transliterator, the empty token array is returned. + */ + public ArrayList<Token> getTokens(final String input) { + ArrayList<Token> tokens = new ArrayList<Token>(); + if (!hasChineseTransliterator() || TextUtils.isEmpty(input)) { + // return empty tokens. + return tokens; + } + + final int inputLength = input.length(); + final StringBuilder sb = new StringBuilder(); + int tokenType = Token.LATIN; + Token token = new Token(); + + // Go through the input, create a new token when + // a. Token type changed + // b. Get the Pinyin of current charater. + // c. current character is space. + for (int i = 0; i < inputLength; i++) { + final char character = input.charAt(i); + if (Character.isSpaceChar(character)) { + if (sb.length() > 0) { + addToken(sb, tokens, tokenType); + } + } else { + tokenize(character, token); + if (token.type == Token.PINYIN) { + if (sb.length() > 0) { + addToken(sb, tokens, tokenType); + } + tokens.add(token); + token = new Token(); + } else { + if (tokenType != token.type && sb.length() > 0) { + addToken(sb, tokens, tokenType); + } + sb.append(token.target); + } + tokenType = token.type; + } + } + if (sb.length() > 0) { + addToken(sb, tokens, tokenType); + } + return tokens; + } + + private void addToken( + final StringBuilder sb, final ArrayList<Token> tokens, final int tokenType) { + String str = sb.toString(); + tokens.add(new Token(tokenType, str, str)); + sb.setLength(0); + } +} diff --git a/src/com/android/launcher3/locale/LocaleSet.java b/src/com/android/launcher3/locale/LocaleSet.java new file mode 100644 index 000000000..34634ab7e --- /dev/null +++ b/src/com/android/launcher3/locale/LocaleSet.java @@ -0,0 +1,253 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.launcher3.locale; + +import android.text.TextUtils; +import com.google.common.annotations.VisibleForTesting; +import java.util.Locale; + +public class LocaleSet { + private static final String CHINESE_LANGUAGE = Locale.CHINESE.getLanguage().toLowerCase(); + private static final String JAPANESE_LANGUAGE = Locale.JAPANESE.getLanguage().toLowerCase(); + private static final String KOREAN_LANGUAGE = Locale.KOREAN.getLanguage().toLowerCase(); + + private static class LocaleWrapper { + private final Locale mLocale; + private final String mLanguage; + private final boolean mLocaleIsCJK; + + private static boolean isLanguageCJK(String language) { + return CHINESE_LANGUAGE.equals(language) || + JAPANESE_LANGUAGE.equals(language) || + KOREAN_LANGUAGE.equals(language); + } + + public LocaleWrapper(Locale locale) { + mLocale = locale; + if (mLocale != null) { + mLanguage = mLocale.getLanguage().toLowerCase(); + mLocaleIsCJK = isLanguageCJK(mLanguage); + } else { + mLanguage = null; + mLocaleIsCJK = false; + } + } + + public boolean hasLocale() { + return mLocale != null; + } + + public Locale getLocale() { + return mLocale; + } + + public boolean isLocale(Locale locale) { + return mLocale == null ? (locale == null) : mLocale.equals(locale); + } + + public boolean isLocaleCJK() { + return mLocaleIsCJK; + } + + public boolean isLanguage(String language) { + return mLanguage == null ? (language == null) + : mLanguage.equalsIgnoreCase(language); + } + + public String toString() { + return mLocale != null ? mLocale.toLanguageTag() : "(null)"; + } + } + + public static LocaleSet getDefault() { + return new LocaleSet(Locale.getDefault()); + } + + public LocaleSet(Locale locale) { + this(locale, null); + } + + /** + * Returns locale set for a given set of IETF BCP-47 tags separated by ';'. + * BCP-47 tags are what is used by ICU 52's toLanguageTag/forLanguageTag + * methods to represent individual Locales: "en-US" for Locale.US, + * "zh-CN" for Locale.CHINA, etc. So eg "en-US;zh-CN" specifies the locale + * set LocaleSet(Locale.US, Locale.CHINA). + * + * @param localeString One or more BCP-47 tags separated by ';'. + * @return LocaleSet for specified locale string, or default set if null + * or unable to parse. + */ + public static LocaleSet getLocaleSet(String localeString) { + // Locale.toString() generates strings like "en_US" and "zh_CN_#Hans". + // Locale.toLanguageTag() generates strings like "en-US" and "zh-Hans-CN". + // We can only parse language tags. + if (localeString != null && localeString.indexOf('_') == -1) { + final String[] locales = localeString.split(";"); + final Locale primaryLocale = Locale.forLanguageTag(locales[0]); + // ICU tags undefined/unparseable locales "und" + if (primaryLocale != null && + !TextUtils.equals(primaryLocale.toLanguageTag(), "und")) { + if (locales.length > 1 && locales[1] != null) { + final Locale secondaryLocale = Locale.forLanguageTag(locales[1]); + if (secondaryLocale != null && + !TextUtils.equals(secondaryLocale.toLanguageTag(), "und")) { + return new LocaleSet(primaryLocale, secondaryLocale); + } + } + return new LocaleSet(primaryLocale); + } + } + return getDefault(); + } + + private final LocaleWrapper mPrimaryLocale; + private final LocaleWrapper mSecondaryLocale; + + public LocaleSet(Locale primaryLocale, Locale secondaryLocale) { + mPrimaryLocale = new LocaleWrapper(primaryLocale); + mSecondaryLocale = new LocaleWrapper( + mPrimaryLocale.equals(secondaryLocale) ? null : secondaryLocale); + } + + public LocaleSet normalize() { + final Locale primaryLocale = getPrimaryLocale(); + if (primaryLocale == null) { + return getDefault(); + } + Locale secondaryLocale = getSecondaryLocale(); + // disallow both locales with same language (redundant and/or conflicting) + // disallow both locales CJK (conflicting rules) + if (secondaryLocale == null || + isPrimaryLanguage(secondaryLocale.getLanguage()) || + (isPrimaryLocaleCJK() && isSecondaryLocaleCJK())) { + return new LocaleSet(primaryLocale); + } + // unnecessary to specify English as secondary locale (redundant) + if (isSecondaryLanguage(Locale.ENGLISH.getLanguage())) { + return new LocaleSet(primaryLocale); + } + return this; + } + + public boolean hasSecondaryLocale() { + return mSecondaryLocale.hasLocale(); + } + + public Locale getPrimaryLocale() { + return mPrimaryLocale.getLocale(); + } + + public Locale getSecondaryLocale() { + return mSecondaryLocale.getLocale(); + } + + public boolean isPrimaryLocale(Locale locale) { + return mPrimaryLocale.isLocale(locale); + } + + public boolean isSecondaryLocale(Locale locale) { + return mSecondaryLocale.isLocale(locale); + } + + private static final String SCRIPT_SIMPLIFIED_CHINESE = "Hans"; + private static final String SCRIPT_TRADITIONAL_CHINESE = "Hant"; + + @VisibleForTesting + public static boolean isLocaleSimplifiedChinese(Locale locale) { + // language must match + if (locale == null || !TextUtils.equals(locale.getLanguage(), CHINESE_LANGUAGE)) { + return false; + } + // script is optional but if present must match + if (!TextUtils.isEmpty(locale.getScript())) { + return locale.getScript().equals(SCRIPT_SIMPLIFIED_CHINESE); + } + // if no script, must match known country + return locale.equals(Locale.SIMPLIFIED_CHINESE); + } + + public boolean isPrimaryLocaleSimplifiedChinese() { + return isLocaleSimplifiedChinese(getPrimaryLocale()); + } + + public boolean isSecondaryLocaleSimplifiedChinese() { + return isLocaleSimplifiedChinese(getSecondaryLocale()); + } + + @VisibleForTesting + public static boolean isLocaleTraditionalChinese(Locale locale) { + // language must match + if (locale == null || !TextUtils.equals(locale.getLanguage(), CHINESE_LANGUAGE)) { + return false; + } + // script is optional but if present must match + if (!TextUtils.isEmpty(locale.getScript())) { + return locale.getScript().equals(SCRIPT_TRADITIONAL_CHINESE); + } + // if no script, must match known country + return locale.equals(Locale.TRADITIONAL_CHINESE); + } + + public boolean isPrimaryLocaleTraditionalChinese() { + return isLocaleTraditionalChinese(getPrimaryLocale()); + } + + public boolean isSecondaryLocaleTraditionalChinese() { + return isLocaleTraditionalChinese(getSecondaryLocale()); + } + + public boolean isPrimaryLocaleCJK() { + return mPrimaryLocale.isLocaleCJK(); + } + + public boolean isSecondaryLocaleCJK() { + return mSecondaryLocale.isLocaleCJK(); + } + + public boolean isPrimaryLanguage(String language) { + return mPrimaryLocale.isLanguage(language); + } + + public boolean isSecondaryLanguage(String language) { + return mSecondaryLocale.isLanguage(language); + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof LocaleSet) { + final LocaleSet other = (LocaleSet) object; + return other.isPrimaryLocale(mPrimaryLocale.getLocale()) + && other.isSecondaryLocale(mSecondaryLocale.getLocale()); + } + return false; + } + + @Override + public final String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(mPrimaryLocale.toString()); + if (hasSecondaryLocale()) { + builder.append(";"); + builder.append(mSecondaryLocale.toString()); + } + return builder.toString(); + } +} diff --git a/src/com/android/launcher3/locale/LocaleSetManager.java b/src/com/android/launcher3/locale/LocaleSetManager.java new file mode 100644 index 000000000..b058718f3 --- /dev/null +++ b/src/com/android/launcher3/locale/LocaleSetManager.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2014 The CyanogenMod Project + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ +package com.android.launcher3.locale; + +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; + +import com.google.common.annotations.VisibleForTesting; + +import java.util.Locale; + +import libcore.icu.ICU; + +public class LocaleSetManager { + private static final String TAG = LocaleSetManager.class.getSimpleName(); + + private LocaleSet mCurrentLocales; + private final Context mContext; + + public LocaleSetManager(final Context context) { + mContext = context; + } + + /** + * Sets up the locale set + * @param localeSet value to set it to + */ + public void updateLocaleSet(LocaleSet localeSet) { + Log.d(TAG, "Locale Changed from: " + mCurrentLocales + " to " + localeSet); + mCurrentLocales = localeSet; + LocaleUtils.getInstance().setLocales(mCurrentLocales); + } + + /** + * This takes an old and new locale set and creates a combined locale set. If they share a + * primary then the old one is returned + * @return the combined locale set + */ + private static LocaleSet getCombinedLocaleSet(LocaleSet oldLocales, Locale newLocale) { + Locale prevLocale = null; + + if (oldLocales != null) { + prevLocale = oldLocales.getPrimaryLocale(); + // If primary locale is unchanged then no change to locale set. + if (newLocale.equals(prevLocale)) { + return oldLocales; + } + } + + // Otherwise, construct a new locale set based on the new locale + // and the previous primary locale. + return new LocaleSet(newLocale, prevLocale).normalize(); + } + + /** + * @return the system locale set + */ + public LocaleSet getSystemLocaleSet() { + final Locale curLocale = getLocale(); + return getCombinedLocaleSet(mCurrentLocales, curLocale); + } + + @VisibleForTesting + protected Locale getLocale() { + return Locale.getDefault(); + } +} diff --git a/src/com/android/launcher3/locale/LocaleUtils.java b/src/com/android/launcher3/locale/LocaleUtils.java new file mode 100644 index 000000000..cc8277a6c --- /dev/null +++ b/src/com/android/launcher3/locale/LocaleUtils.java @@ -0,0 +1,484 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.launcher3.locale; + +import android.provider.ContactsContract.FullNameStyle; +import android.provider.ContactsContract.PhoneticNameStyle; +import android.text.TextUtils; +import android.util.Log; + +import com.android.launcher3.locale.HanziToPinyin.Token; + +import com.google.common.annotations.VisibleForTesting; + +import java.lang.Character.UnicodeBlock; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Locale; +import java.util.Set; + +import libcore.icu.AlphabeticIndex; +import libcore.icu.AlphabeticIndex.ImmutableIndex; +import libcore.icu.Transliterator; + +/** + * This utility class provides specialized handling for locale specific + * information: labels, name lookup keys. + * + * This class has been modified from ContactLocaleUtils.java for now to rip out + * Chinese/Japanese specific Alphabetic Indexers because the MediaProvider's sort + * is using a Collator sort which can result in confusing behavior, so for now we will + * simplify and batch up those results until we later support our own internal databases + * An example of what This is, if we have songs "Able", "Xylophone" and "上" in + * simplified chinese language The media provider would give it to us in that order sorted, + * but the ICU lib would return "A", "X", "S". Unless we write our own db or do our own sort + * there is no good easy solution + */ +public class LocaleUtils { + public static final String TAG = "LauncherLocale"; + + public static final Locale LOCALE_ARABIC = new Locale("ar"); + public static final Locale LOCALE_GREEK = new Locale("el"); + public static final Locale LOCALE_HEBREW = new Locale("he"); + // Serbian and Ukrainian labels are complementary supersets of Russian + public static final Locale LOCALE_SERBIAN = new Locale("sr"); + public static final Locale LOCALE_UKRAINIAN = new Locale("uk"); + public static final Locale LOCALE_THAI = new Locale("th"); + + /** + * This class is the default implementation and should be the base class + * for other locales. + * + * sortKey: same as name + * nameLookupKeys: none + * labels: uses ICU AlphabeticIndex for labels and extends by labeling + * phone numbers "#". Eg English labels are: [A-Z], #, " " + */ + private static class LocaleUtilsBase { + private static final String EMPTY_STRING = ""; + private static final String NUMBER_STRING = "#"; + + protected final ImmutableIndex mAlphabeticIndex; + private final int mAlphabeticIndexBucketCount; + private final int mNumberBucketIndex; + private final boolean mEnableSecondaryLocalePinyin; + + public LocaleUtilsBase(LocaleSet locales) { + // AlphabeticIndex.getBucketLabel() uses a binary search across + // the entire label set so care should be taken about growing this + // set too large. The following set determines for which locales + // we will show labels other than your primary locale. General rules + // of thumb for adding a locale: should be a supported locale; and + // should not be included if from a name it is not deterministic + // which way to label it (so eg Chinese cannot be added because + // the labeling of a Chinese character varies between Simplified, + // Traditional, and Japanese locales). Use English only for all + // Latin based alphabets. Ukrainian and Serbian are chosen for + // Cyrillic because their alphabets are complementary supersets + // of Russian. + final Locale secondaryLocale = locales.getSecondaryLocale(); + mEnableSecondaryLocalePinyin = locales.isSecondaryLocaleSimplifiedChinese(); + AlphabeticIndex ai = new AlphabeticIndex(locales.getPrimaryLocale()) + .setMaxLabelCount(300); + if (secondaryLocale != null) { + ai.addLabels(secondaryLocale); + } + mAlphabeticIndex = ai.addLabels(Locale.ENGLISH) + .addLabels(Locale.JAPANESE) + .addLabels(Locale.KOREAN) + .addLabels(LOCALE_THAI) + .addLabels(LOCALE_ARABIC) + .addLabels(LOCALE_HEBREW) + .addLabels(LOCALE_GREEK) + .addLabels(LOCALE_UKRAINIAN) + .addLabels(LOCALE_SERBIAN) + .getImmutableIndex(); + mAlphabeticIndexBucketCount = mAlphabeticIndex.getBucketCount(); + mNumberBucketIndex = mAlphabeticIndexBucketCount - 1; + } + + public String getSortKey(String name) { + return name; + } + + /** + * Returns the bucket index for the specified string. AlphabeticIndex + * sorts strings into buckets numbered in order from 0 to N, where the + * exact value of N depends on how many representative index labels are + * used in a particular locale. This routine adds one additional bucket + * for phone numbers. It attempts to detect phone numbers and shifts + * the bucket indexes returned by AlphabeticIndex in order to make room + * for the new # bucket, so the returned range becomes 0 to N+1. + */ + public int getBucketIndex(String name) { + boolean prefixIsNumeric = false; + final int length = name.length(); + int offset = 0; + while (offset < length) { + int codePoint = Character.codePointAt(name, offset); + // Ignore standard phone number separators and identify any + // string that otherwise starts with a number. + if (Character.isDigit(codePoint)) { + prefixIsNumeric = true; + break; + } else if (!Character.isSpaceChar(codePoint) && + codePoint != '+' && codePoint != '(' && + codePoint != ')' && codePoint != '.' && + codePoint != '-' && codePoint != '#') { + break; + } + offset += Character.charCount(codePoint); + } + if (prefixIsNumeric) { + return mNumberBucketIndex; + } + + /** + * TODO: ICU 52 AlphabeticIndex doesn't support Simplified Chinese + * as a secondary locale. Remove the following if that is added. + */ + if (mEnableSecondaryLocalePinyin) { + name = HanziToPinyin.getInstance().transliterate(name); + } + final int bucket = mAlphabeticIndex.getBucketIndex(name); + if (bucket < 0) { + return -1; + } + if (bucket >= mNumberBucketIndex) { + return bucket + 1; + } + return bucket; + } + + /** + * Returns the number of buckets in use (one more than AlphabeticIndex + * uses, because this class adds a bucket for phone numbers). + */ + public int getBucketCount() { + return mAlphabeticIndexBucketCount + 1; + } + + /** + * Returns the label for the specified bucket index if a valid index, + * otherwise returns an empty string. '#' is returned for the phone + * number bucket; for all others, the AlphabeticIndex label is returned. + */ + public String getBucketLabel(int bucketIndex) { + if (bucketIndex < 0 || bucketIndex >= getBucketCount()) { + return EMPTY_STRING; + } else if (bucketIndex == mNumberBucketIndex) { + return NUMBER_STRING; + } else if (bucketIndex > mNumberBucketIndex) { + --bucketIndex; + } + return mAlphabeticIndex.getBucketLabel(bucketIndex); + } + + @SuppressWarnings("unused") + public Iterator<String> getNameLookupKeys(String name, int nameStyle) { + return null; + } + + public ArrayList<String> getLabels() { + final int bucketCount = getBucketCount(); + final ArrayList<String> labels = new ArrayList<String>(bucketCount); + for(int i = 0; i < bucketCount; ++i) { + labels.add(getBucketLabel(i)); + } + return labels; + } + } + + /** + * Japanese specific locale overrides. + * + * sortKey: unchanged (same as name) + * nameLookupKeys: unchanged (none) + * labels: extends default labels by labeling unlabeled CJ characters + * with the Japanese character 他 ("misc"). Japanese labels are: + * あ, か, さ, た, な, は, ま, や, ら, わ, 他, [A-Z], #, " " + */ + private static class JapaneseContactUtils extends LocaleUtilsBase { + // \u4ed6 is Japanese character 他 ("misc") + private static final String JAPANESE_MISC_LABEL = "\u4ed6"; + private final int mMiscBucketIndex; + + public JapaneseContactUtils(LocaleSet locales) { + super(locales); + // Determine which bucket AlphabeticIndex is lumping unclassified + // Japanese characters into by looking up the bucket index for + // a representative Kanji/CJK unified ideograph (\u65e5 is the + // character '日'). + mMiscBucketIndex = super.getBucketIndex("\u65e5"); + } + + // Set of UnicodeBlocks for unified CJK (Chinese) characters and + // Japanese characters. This includes all code blocks that might + // contain a character used in Japanese (which is why unified CJK + // blocks are included but Korean Hangul and jamo are not). + private static final Set<Character.UnicodeBlock> CJ_BLOCKS; + static { + Set<UnicodeBlock> set = new HashSet<UnicodeBlock>(); + set.add(UnicodeBlock.HIRAGANA); + set.add(UnicodeBlock.KATAKANA); + set.add(UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS); + set.add(UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS); + set.add(UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS); + set.add(UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A); + set.add(UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B); + set.add(UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION); + set.add(UnicodeBlock.CJK_RADICALS_SUPPLEMENT); + set.add(UnicodeBlock.CJK_COMPATIBILITY); + set.add(UnicodeBlock.CJK_COMPATIBILITY_FORMS); + set.add(UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS); + set.add(UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT); + CJ_BLOCKS = Collections.unmodifiableSet(set); + } + + /** + * Helper routine to identify unlabeled Chinese or Japanese characters + * to put in a 'misc' bucket. + * + * @return true if the specified Unicode code point is Chinese or + * Japanese + */ + private static boolean isChineseOrJapanese(int codePoint) { + return CJ_BLOCKS.contains(UnicodeBlock.of(codePoint)); + } + + /** + * Returns the bucket index for the specified string. Adds an + * additional 'misc' bucket for Kanji characters to the base class set. + */ + @Override + public int getBucketIndex(String name) { + final int bucketIndex = super.getBucketIndex(name); + if ((bucketIndex == mMiscBucketIndex && + !isChineseOrJapanese(Character.codePointAt(name, 0))) || + bucketIndex > mMiscBucketIndex) { + return bucketIndex + 1; + } + return bucketIndex; + } + + /** + * Returns the number of buckets in use (one more than the base class + * uses, because this class adds a bucket for Kanji). + */ + @Override + public int getBucketCount() { + return super.getBucketCount() + 1; + } + + /** + * Returns the label for the specified bucket index if a valid index, + * otherwise returns an empty string. '他' is returned for unclassified + * Kanji; for all others, the label determined by the base class is + * returned. + */ + @Override + public String getBucketLabel(int bucketIndex) { + if (bucketIndex == mMiscBucketIndex) { + return JAPANESE_MISC_LABEL; + } else if (bucketIndex > mMiscBucketIndex) { + --bucketIndex; + } + return super.getBucketLabel(bucketIndex); + } + + @Override + public Iterator<String> getNameLookupKeys(String name, int nameStyle) { + // Hiragana and Katakana will be positively identified as Japanese. + if (nameStyle == PhoneticNameStyle.JAPANESE) { + return getRomajiNameLookupKeys(name); + } + return null; + } + + private static boolean mInitializedTransliterator; + private static Transliterator mJapaneseTransliterator; + + private static Transliterator getJapaneseTransliterator() { + synchronized(JapaneseContactUtils.class) { + if (!mInitializedTransliterator) { + mInitializedTransliterator = true; + Transliterator t = null; + try { + t = new Transliterator("Hiragana-Latin; Katakana-Latin;" + + " Latin-Ascii"); + } catch (RuntimeException e) { + Log.w(TAG, "Hiragana/Katakana-Latin transliterator data" + + " is missing"); + } + mJapaneseTransliterator = t; + } + return mJapaneseTransliterator; + } + } + + public static Iterator<String> getRomajiNameLookupKeys(String name) { + final Transliterator t = getJapaneseTransliterator(); + if (t == null) { + return null; + } + final String romajiName = t.transliterate(name); + if (TextUtils.isEmpty(romajiName) || + TextUtils.equals(name, romajiName)) { + return null; + } + final HashSet<String> keys = new HashSet<String>(); + keys.add(romajiName); + return keys.iterator(); + } + } + + /** + * Simplified Chinese specific locale overrides. Uses ICU Transliterator + * for generating pinyin transliteration. + * + * sortKey: unchanged (same as name) + * nameLookupKeys: adds additional name lookup keys + * - Chinese character's pinyin and pinyin's initial character. + * - Latin word and initial character. + * labels: unchanged + * Simplified Chinese labels are the same as English: [A-Z], #, " " + */ + private static class SimplifiedChineseContactUtils + extends LocaleUtilsBase { + public SimplifiedChineseContactUtils(LocaleSet locales) { + super(locales); + } + + @Override + public Iterator<String> getNameLookupKeys(String name, int nameStyle) { + if (nameStyle != FullNameStyle.JAPANESE && + nameStyle != FullNameStyle.KOREAN) { + return getPinyinNameLookupKeys(name); + } + return null; + } + + public static Iterator<String> getPinyinNameLookupKeys(String name) { + // TODO : Reduce the object allocation. + HashSet<String> keys = new HashSet<String>(); + ArrayList<Token> tokens = HanziToPinyin.getInstance().getTokens(name); + final int tokenCount = tokens.size(); + final StringBuilder keyPinyin = new StringBuilder(); + final StringBuilder keyInitial = new StringBuilder(); + // There is no space among the Chinese Characters, the variant name + // lookup key wouldn't work for Chinese. The keyOriginal is used to + // build the lookup keys for itself. + final StringBuilder keyOriginal = new StringBuilder(); + for (int i = tokenCount - 1; i >= 0; i--) { + final Token token = tokens.get(i); + if (Token.UNKNOWN == token.type) { + continue; + } + if (Token.PINYIN == token.type) { + keyPinyin.insert(0, token.target); + keyInitial.insert(0, token.target.charAt(0)); + } else if (Token.LATIN == token.type) { + // Avoid adding space at the end of String. + if (keyPinyin.length() > 0) { + keyPinyin.insert(0, ' '); + } + if (keyOriginal.length() > 0) { + keyOriginal.insert(0, ' '); + } + keyPinyin.insert(0, token.source); + keyInitial.insert(0, token.source.charAt(0)); + } + keyOriginal.insert(0, token.source); + keys.add(keyOriginal.toString()); + keys.add(keyPinyin.toString()); + keys.add(keyInitial.toString()); + } + return keys.iterator(); + } + } + + private static final String JAPANESE_LANGUAGE = Locale.JAPANESE.getLanguage().toLowerCase(); + private static LocaleUtils sSingleton; + + private final LocaleSet mLocales; + private final LocaleUtilsBase mUtils; + + private LocaleUtils(LocaleSet locales) { + if (locales == null) { + mLocales = LocaleSet.getDefault(); + } else { + mLocales = locales; + } + if (mLocales.isPrimaryLanguage(JAPANESE_LANGUAGE)) { + mUtils = new JapaneseContactUtils(mLocales); + } else if (mLocales.isPrimaryLocaleSimplifiedChinese()) { + mUtils = new SimplifiedChineseContactUtils(mLocales); + } else { + mUtils = new LocaleUtilsBase(mLocales); + } + Log.i(TAG, "AddressBook Labels [" + mLocales.toString() + "]: " + + getLabels().toString()); + } + + public boolean isLocale(LocaleSet locales) { + return mLocales.equals(locales); + } + + public static synchronized LocaleUtils getInstance() { + if (sSingleton == null) { + sSingleton = new LocaleUtils(LocaleSet.getDefault()); + } + return sSingleton; + } + + @VisibleForTesting + public static synchronized void setLocale(Locale locale) { + setLocales(new LocaleSet(locale)); + } + + public static synchronized void setLocales(LocaleSet locales) { + if (sSingleton == null || !sSingleton.isLocale(locales)) { + sSingleton = new LocaleUtils(locales); + } + } + + public String getSortKey(String name, int nameStyle) { + return mUtils.getSortKey(name); + } + + public int getBucketIndex(String name) { + return mUtils.getBucketIndex(name); + } + + public int getBucketCount() { + return mUtils.getBucketCount(); + } + + public String getBucketLabel(int bucketIndex) { + return mUtils.getBucketLabel(bucketIndex); + } + + public String getLabel(String name) { + return getBucketLabel(getBucketIndex(name)); + } + + public ArrayList<String> getLabels() { + return mUtils.getLabels(); + } +} diff --git a/src/com/android/launcher3/settings/SettingsProvider.java b/src/com/android/launcher3/settings/SettingsProvider.java index 0bcdc69ae..2f36fc422 100644 --- a/src/com/android/launcher3/settings/SettingsProvider.java +++ b/src/com/android/launcher3/settings/SettingsProvider.java @@ -44,6 +44,7 @@ public final class SettingsProvider { public static final String SETTINGS_UI_GENERAL_ICONS_TEXT_FONT_FAMILY = "ui_general_icons_text_font"; public static final String SETTINGS_UI_GENERAL_ICONS_TEXT_FONT_STYLE = "ui_general_icons_text_font_style"; public static final String SETTINGS_UI_DRAWER_SORT_MODE = "ui_drawer_sort_mode"; + public static final String SETTINGS_UI_DRAWER_TYPE = "ui_drawer_type"; public static SharedPreferences get(Context context) { return context.getSharedPreferences(SETTINGS_KEY, Context.MODE_MULTI_PROCESS); |