diff options
551 files changed, 31206 insertions, 809 deletions
diff --git a/Android.mk b/Android.mk index 308851225..106299d31 100644..100755 --- a/Android.mk +++ b/Android.mk @@ -4,23 +4,14 @@ include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional +LOCAL_JAVA_LIBRARIES := telephony-common + LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 LOCAL_STATIC_JAVA_LIBRARIES += com.android.gallery3d.common2 LOCAL_STATIC_JAVA_LIBRARIES += xmp_toolkit LOCAL_STATIC_JAVA_LIBRARIES += mp4parser -LOCAL_STATIC_JAVA_LIBRARIES += android-support-v8-renderscript - -LOCAL_RENDERSCRIPT_TARGET_API := 18 -LOCAL_RENDERSCRIPT_COMPATIBILITY := 18 -LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript - -# Keep track of previously compiled RS files too (from bundled GalleryGoogle). -prev_compiled_rs_files := $(call all-renderscript-files-under, src) -# We already have these files from GalleryGoogle, so don't install them. -LOCAL_RENDERSCRIPT_SKIP_INSTALL := $(prev_compiled_rs_files) - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(prev_compiled_rs_files) +LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) LOCAL_SRC_FILES += $(call all-java-files-under, src_pd) LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res @@ -29,12 +20,26 @@ LOCAL_AAPT_FLAGS := --auto-add-overlay LOCAL_PACKAGE_NAME := Gallery2 +LOCAL_CERTIFICATE := platform + LOCAL_OVERRIDES_PACKAGES := Gallery Gallery3D GalleryNew3D -LOCAL_SDK_VERSION := current +LOCAL_PROGUARD_ENABLED := disabled + +#LOCAL_SDK_VERSION := current LOCAL_JNI_SHARED_LIBRARIES := libjni_eglfence libjni_filtershow_filters librsjni libjni_jpegstream +ifeq ($(TARGET_TS_MAKEUP), true) + LOCAL_REQUIRED_MODULES := libts_detected_face_jni libts_face_beautify_jni +endif + +ifeq ($(WITH_SLIM_GALLERY2), true) + LOCAL_MANIFEST_FILE := slim_manifest/AndroidManifest.xml +else + LOCAL_MANIFEST_FILE := AndroidManifest.xml +endif + LOCAL_PROGUARD_FLAG_FILES := proguard.flags LOCAL_JAVA_LIBRARIES += org.apache.http.legacy diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 2aea5699c..937a46199 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,4 +1,21 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (c) 2010-2014, The Linux Foundation. All rights reserved. + Not a Contribution. + + Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> <manifest android:versionCode="40030" android:versionName="1.1.40030" @@ -7,11 +24,14 @@ <original-package android:name="com.android.gallery3d" /> - <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" /> + <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" /> <permission android:name="com.android.gallery3d.permission.GALLERY_PROVIDER" android:protectionLevel="signatureOrSystem" /> + <permission android:name="com.android.gallery3d.permission.STORAGE_CHANGE" + android:protectionLevel="signatureOrSystem" /> + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> @@ -19,6 +39,7 @@ <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> + <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> @@ -29,8 +50,11 @@ <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> + <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/> <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> + <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/> <uses-permission android:name="com.android.gallery3d.permission.GALLERY_PROVIDER" /> + <uses-permission android:name="android.permission.BLUETOOTH" /> <supports-screens android:smallScreens="false" android:normalScreens="true" android:largeScreens="true" @@ -64,6 +88,7 @@ <data android:scheme="https" /> <data android:scheme="content" /> <data android:scheme="file" /> + <data android:scheme="rtsp" /> <data android:mimeType="video/mpeg4" /> <data android:mimeType="video/mp4" /> <data android:mimeType="video/3gp" /> @@ -72,6 +97,14 @@ <data android:mimeType="video/webm" /> <data android:mimeType="video/avi" /> <data android:mimeType="application/sdp" /> + <data android:mimeType="video/mp2ts" /> + <data android:mimeType="video/x-ms-asf" /> + <data android:mimeType="video/x-ms-wmv" /> + <data android:mimeType="video/x-matroska" /> + <data android:mimeType="video/x-msvideo"/> + <data android:mimeType="video/divx" /> + <data android:mimeType="video/mkv" /> + <data android:mimeType="video/mpeg" /> </intent-filter> <intent-filter> <!-- HTTP live support --> @@ -84,11 +117,13 @@ <data android:mimeType="audio/mpegurl" /> <data android:mimeType="application/vnd.apple.mpegurl" /> <data android:mimeType="application/x-mpegurl" /> + <data android:mimeType="application/dash+xml" /> </intent-filter> </activity> - <activity android:name="com.android.gallery3d.app.GalleryActivity" android:label="@string/app_name" - android:configChanges="keyboardHidden|orientation|screenSize"> + <activity android:name="com.android.gallery3d.app.GalleryActivity" + android:label="@string/app_name" + android:configChanges="keyboardHidden|orientation|screenSize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> @@ -165,8 +200,7 @@ <!-- This activity acts as a trampoline to the new Gallery activity, so that existing shortcuts are preserved. --> - <activity android:name="com.android.gallery3d.app.Gallery" - android:theme="@style/android:Theme.NoDisplay"> + <activity android:name="com.android.gallery3d.app.Gallery"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> @@ -298,6 +332,16 @@ android:theme="@style/Theme.Gallery" android:configChanges="orientation|keyboardHidden|screenSize" /> + <activity android:name="com.android.gallery3d.util.ViewGifImage" + android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" + android:configChanges="orientation|keyboardHidden|screenSize|keyboard|navigation"> + <intent-filter> + <action android:name="com.android.gallery3d.VIEW_GIF" /> + <data android:mimeType="image/gif" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + </activity> + <provider android:name="com.android.gallery3d.provider.GalleryProvider" android:syncable="false" android:grantUriPermissions="true" @@ -354,6 +398,54 @@ </intent-filter> </receiver> + <!-- Receiver to keep the storage path for the camera in sync --> + <receiver android:name="com.android.gallery3d.app.StorageChangeReceiver" + android:permission="com.android.gallery3d.permission.STORAGE_CHANGE" > + <intent-filter> + <action android:name="com.android.gallery3d.STORAGE_CHANGE" /> + </intent-filter> + </receiver> + <service android:name="com.android.camera.MediaSaveService" /> + + <activity android:name="org.codeaurora.gallery3d.video.SettingsActivity" + android:configChanges="keyboardHidden|orientation|screenSize" + android:label="@string/streaming_settings" > + <intent-filter> + <action android:name="org.codeaurora.settings.streaming" /> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + </activity> + <receiver android:name="org.codeaurora.gallery3d.video.DmReceiver" > + <intent-filter> + <action android:name="android.intent.action.BOOT_COMPLETED" /> + <action android:name="streaming.action.WRITE_SETTINGS" /> + </intent-filter> + </receiver> + + <activity android:name="org.codeaurora.gallery3d.video.BookmarkActivity" + android:configChanges="keyboardHidden|orientation|screenSize" + android:icon="@drawable/ic_menu_display_bookmark" + android:label="@string/bookmark_list" + android:theme="@android:style/Theme.Holo" > + <intent-filter> + <action android:name="org.codeaurora.bookmark.VIEW" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + </activity> + <activity android:name="org.codeaurora.gallery3d.video.VideoSettingsActivity" + android:label="@string/movie_view_label" + android:configChanges="orientation|keyboardHidden|screenSize|mnc|mcc"> + </activity> + <provider + android:name="android.support.v4.content.FileProvider" + android:authorities="com.android.gallery3d.fileprovider" + android:exported="false" + android:grantUriPermissions="true"> + <meta-data + android:name="android.support.FILE_PROVIDER_PATHS" + android:resource="@xml/file_paths" /> + </provider> </application> </manifest> diff --git a/CleanSpec.mk b/CleanSpec.mk index 20db30919..dede88e61 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -50,6 +50,8 @@ $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Gallery*) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Gallery*) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Gallery*) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Gallery*) +$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Gallery2_intermediates) + # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST diff --git a/gallerycommon/src/com/android/gallery3d/exif/ExifInterface.java b/gallerycommon/src/com/android/gallery3d/exif/ExifInterface.java index a1cf0fc85..21422095e 100644 --- a/gallerycommon/src/com/android/gallery3d/exif/ExifInterface.java +++ b/gallerycommon/src/com/android/gallery3d/exif/ExifInterface.java @@ -318,6 +318,13 @@ public class ExifInterface { public static final int TAG_INTEROPERABILITY_INDEX = defineTag(IfdId.TYPE_IFD_INTEROPERABILITY, (short) 1); + private static final String GPS_DATE_FORMAT_STR = "yyyy:MM:dd"; + private static final String DATETIME_FORMAT_STR = "yyyy:MM:dd kk:mm:ss"; + public static final DateFormat DATETIME_FORMAT = new SimpleDateFormat(DATETIME_FORMAT_STR); + private final DateFormat mGPSDateStampFormat = new SimpleDateFormat(GPS_DATE_FORMAT_STR); + private final Calendar mGPSTimeStampCalendar = Calendar + .getInstance(TimeZone.getTimeZone("UTC")); + /** * Tags that contain offset markers. These are included in the banned * defines. @@ -732,7 +739,7 @@ public class ExifInterface { * @param inStream an InputStream containing a jpeg compressed image. * @throws IOException */ - public void readExif(InputStream inStream) throws IOException { + public void readExif(InputStream inStream) throws IOException, NullPointerException { if (inStream == null) { throw new IllegalArgumentException(NULL_ARGUMENT_STRING); } @@ -1944,13 +1951,6 @@ public class ExifInterface { return latLon; } - private static final String GPS_DATE_FORMAT_STR = "yyyy:MM:dd"; - private static final String DATETIME_FORMAT_STR = "yyyy:MM:dd kk:mm:ss"; - private final DateFormat mDateTimeStampFormat = new SimpleDateFormat(DATETIME_FORMAT_STR); - private final DateFormat mGPSDateStampFormat = new SimpleDateFormat(GPS_DATE_FORMAT_STR); - private final Calendar mGPSTimeStampCalendar = Calendar - .getInstance(TimeZone.getTimeZone("UTC")); - /** * Creates, formats, and sets the DateTimeStamp tag for one of: * {@link #TAG_DATE_TIME}, {@link #TAG_DATE_TIME_DIGITIZED}, @@ -1964,8 +1964,8 @@ public class ExifInterface { public boolean addDateTimeStampTag(int tagId, long timestamp, TimeZone timezone) { if (tagId == TAG_DATE_TIME || tagId == TAG_DATE_TIME_DIGITIZED || tagId == TAG_DATE_TIME_ORIGINAL) { - mDateTimeStampFormat.setTimeZone(timezone); - ExifTag t = buildTag(tagId, mDateTimeStampFormat.format(timestamp)); + DATETIME_FORMAT.setTimeZone(timezone); + ExifTag t = buildTag(tagId, DATETIME_FORMAT.format(timestamp)); if (t == null) { return false; } diff --git a/gallerycommon/src/com/android/gallery3d/exif/ExifTag.java b/gallerycommon/src/com/android/gallery3d/exif/ExifTag.java index b8b387201..186cb81cf 100644 --- a/gallerycommon/src/com/android/gallery3d/exif/ExifTag.java +++ b/gallerycommon/src/com/android/gallery3d/exif/ExifTag.java @@ -17,7 +17,6 @@ package com.android.gallery3d.exif; import java.nio.charset.Charset; -import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; @@ -102,8 +101,6 @@ public class ExifTag { // Value offset in exif header. private int mOffset; - private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyy:MM:dd kk:mm:ss"); - /** * Returns true if the given IFD is a valid IFD. */ @@ -314,13 +311,17 @@ public class ExifTag { * Sets a string value into this tag. This method should be used for tags of * type {@link #TYPE_ASCII}. The string is converted to an ASCII string. * Characters that cannot be converted are replaced with '?'. The length of - * the string must be equal to either (component count -1) or (component - * count). The final byte will be set to the string null terminator '\0', - * overwriting the last character in the string if the value.length is equal - * to the component count. This method will fail if: + * the string must be equal to either + * <ul> + * <li>component count - 1 when the terminating '\0' is not present</li> + * <li>component count when the terminating '\0' is present</li> + * <li>to comply with some non-conformant implementations, the terminating + * '\0' will be appended if it's not present and component count equals + * the string length; the component count will be updated in that case</li> + * This method will fail if: * <ul> * <li>The data type is not {@link #TYPE_ASCII} or {@link #TYPE_UNDEFINED}.</li> - * <li>The length of the string is not equal to (component count -1) or + * <li>The length of the string is not equal to (component count - 1) or * (component count) in the definition for this tag.</li> * </ul> */ @@ -331,11 +332,20 @@ public class ExifTag { byte[] buf = value.getBytes(US_ASCII); byte[] finalBuf = buf; - if (buf.length > 0) { - finalBuf = (buf[buf.length - 1] == 0 || mDataType == TYPE_UNDEFINED) ? buf : Arrays - .copyOf(buf, buf.length + 1); - } else if (mDataType == TYPE_ASCII && mComponentCountActual == 1) { - finalBuf = new byte[] { 0 }; + if (mDataType == TYPE_ASCII) { + if (buf.length > 0) { + if (buf[buf.length - 1] != 0) { + finalBuf = Arrays.copyOf(buf, buf.length + 1); + // Apply the workaround for non conformant implementations + // (e.g. Samsung Wave 2): Accept a string with missing + // termination character + if (mComponentCountActual == buf.length) { + mComponentCountActual++; + } + } + } else if (mComponentCountActual == 1) { + finalBuf = new byte[] { 0 }; + } } int count = finalBuf.length; if (checkBadComponentCount(count)) { @@ -524,9 +534,10 @@ public class ExifTag { * @return true on success */ public boolean setTimeValue(long time) { - // synchronized on TIME_FORMAT as SimpleDateFormat is not thread safe - synchronized (TIME_FORMAT) { - return setValue(TIME_FORMAT.format(new Date(time))); + // synchronized on DATETIME_FORMAT as SimpleDateFormat is not thread + // safe + synchronized (ExifInterface.DATETIME_FORMAT) { + return setValue(ExifInterface.DATETIME_FORMAT.format(new Date(time))); } } diff --git a/proguard.flags b/proguard.flags index 65104ec1e..d190434b7 100644 --- a/proguard.flags +++ b/proguard.flags @@ -1,6 +1,10 @@ # Disable the warnings of using dynamic method call in common library. -dontnote com.android.gallery3d.common.* +#Avoid the library class dependency error +-dontwarn android.view.inputmethod.InputMethodManager +-dontwarn android.content.res.Resources + # Keep all classes extended from com.android.gallery3d.common.Entry # Since we annotate on the fields and use reflection to create SQL # according to those field. @@ -84,3 +88,7 @@ -keep class com.android.gallery3d.jpegstream.JPEGOutputStream { *; } -keep class com.android.gallery3d.jpegstream.JPEGInputStream { *; } -keep class com.android.gallery3d.jpegstream.StreamUtils { *; } + +-keep class com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine{ + *; +} diff --git a/res/drawable-hdpi/dropdown_ic_arrow_normal_holo_dark.png b/res/drawable-hdpi/dropdown_ic_arrow_normal_holo_dark.png Binary files differdeleted file mode 100644 index 06e5b4730..000000000 --- a/res/drawable-hdpi/dropdown_ic_arrow_normal_holo_dark.png +++ /dev/null diff --git a/res/drawable-hdpi/frame_overlay_gallery_camera.png b/res/drawable-hdpi/frame_overlay_gallery_camera.png Binary files differindex b27bbe57f..aa3a3e571 100644 --- a/res/drawable-hdpi/frame_overlay_gallery_camera.png +++ b/res/drawable-hdpi/frame_overlay_gallery_camera.png diff --git a/res/drawable-hdpi/ic_cameraalbum_overlay.png b/res/drawable-hdpi/ic_cameraalbum_overlay.png Binary files differindex e58777f11..90ffbbd1a 100644 --- a/res/drawable-hdpi/ic_cameraalbum_overlay.png +++ b/res/drawable-hdpi/ic_cameraalbum_overlay.png diff --git a/res/drawable-hdpi/ic_media_bigscreen.png b/res/drawable-hdpi/ic_media_bigscreen.png Binary files differnew file mode 100644 index 000000000..b68002df8 --- /dev/null +++ b/res/drawable-hdpi/ic_media_bigscreen.png diff --git a/res/drawable-hdpi/ic_media_cropscreen.png b/res/drawable-hdpi/ic_media_cropscreen.png Binary files differnew file mode 100644 index 000000000..d6e4e7009 --- /dev/null +++ b/res/drawable-hdpi/ic_media_cropscreen.png diff --git a/res/drawable-hdpi/ic_media_fullscreen.png b/res/drawable-hdpi/ic_media_fullscreen.png Binary files differnew file mode 100644 index 000000000..a4569fb6e --- /dev/null +++ b/res/drawable-hdpi/ic_media_fullscreen.png diff --git a/res/drawable-hdpi/ic_menu_disabled_forward.png b/res/drawable-hdpi/ic_menu_disabled_forward.png Binary files differnew file mode 100644 index 000000000..c9683df0a --- /dev/null +++ b/res/drawable-hdpi/ic_menu_disabled_forward.png diff --git a/res/drawable-hdpi/ic_menu_disabled_rewind.png b/res/drawable-hdpi/ic_menu_disabled_rewind.png Binary files differnew file mode 100644 index 000000000..1f74fb8ea --- /dev/null +++ b/res/drawable-hdpi/ic_menu_disabled_rewind.png diff --git a/res/drawable-hdpi/ic_menu_disabled_stop.png b/res/drawable-hdpi/ic_menu_disabled_stop.png Binary files differnew file mode 100644 index 000000000..292c49241 --- /dev/null +++ b/res/drawable-hdpi/ic_menu_disabled_stop.png diff --git a/res/drawable-hdpi/ic_menu_display_bookmark.png b/res/drawable-hdpi/ic_menu_display_bookmark.png Binary files differnew file mode 100644 index 000000000..a5118ea85 --- /dev/null +++ b/res/drawable-hdpi/ic_menu_display_bookmark.png diff --git a/res/drawable-hdpi/ic_menu_edit_holo_dark.png b/res/drawable-hdpi/ic_menu_edit_holo_dark.png Binary files differdeleted file mode 100644 index 54952f5d3..000000000 --- a/res/drawable-hdpi/ic_menu_edit_holo_dark.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_forward.png b/res/drawable-hdpi/ic_menu_forward.png Binary files differnew file mode 100644 index 000000000..468008269 --- /dev/null +++ b/res/drawable-hdpi/ic_menu_forward.png diff --git a/res/drawable-hdpi/ic_menu_loop.png b/res/drawable-hdpi/ic_menu_loop.png Binary files differnew file mode 100644 index 000000000..add463382 --- /dev/null +++ b/res/drawable-hdpi/ic_menu_loop.png diff --git a/res/drawable-hdpi/ic_menu_rewind.png b/res/drawable-hdpi/ic_menu_rewind.png Binary files differnew file mode 100644 index 000000000..37c5708fa --- /dev/null +++ b/res/drawable-hdpi/ic_menu_rewind.png diff --git a/res/drawable-hdpi/ic_menu_share_holo_light.png b/res/drawable-hdpi/ic_menu_share_holo_light.png Binary files differdeleted file mode 100644 index 492d6090c..000000000 --- a/res/drawable-hdpi/ic_menu_share_holo_light.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_stop.png b/res/drawable-hdpi/ic_menu_stop.png Binary files differnew file mode 100644 index 000000000..aea1c458a --- /dev/null +++ b/res/drawable-hdpi/ic_menu_stop.png diff --git a/res/drawable-hdpi/ic_menu_trash_holo_light.png b/res/drawable-hdpi/ic_menu_trash_holo_light.png Binary files differdeleted file mode 100644 index 721ee5ca2..000000000 --- a/res/drawable-hdpi/ic_menu_trash_holo_light.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_unloop.png b/res/drawable-hdpi/ic_menu_unloop.png Binary files differnew file mode 100644 index 000000000..3140051d2 --- /dev/null +++ b/res/drawable-hdpi/ic_menu_unloop.png diff --git a/res/drawable-hdpi/ic_photoeditor_makeup.png b/res/drawable-hdpi/ic_photoeditor_makeup.png Binary files differnew file mode 100644 index 000000000..06913d638 --- /dev/null +++ b/res/drawable-hdpi/ic_photoeditor_makeup.png diff --git a/res/drawable-hdpi/ic_separator_line.png b/res/drawable-hdpi/ic_separator_line.png Binary files differnew file mode 100644 index 000000000..2ebff3fe7 --- /dev/null +++ b/res/drawable-hdpi/ic_separator_line.png diff --git a/res/drawable-hdpi/ic_switch_camera.png b/res/drawable-hdpi/ic_switch_camera.png Binary files differindex 11dd39ad7..509657dac 100644 --- a/res/drawable-hdpi/ic_switch_camera.png +++ b/res/drawable-hdpi/ic_switch_camera.png diff --git a/res/drawable-hdpi/ic_ts_makeup_bigeye.png b/res/drawable-hdpi/ic_ts_makeup_bigeye.png Binary files differnew file mode 100644 index 000000000..bf7b6f5ab --- /dev/null +++ b/res/drawable-hdpi/ic_ts_makeup_bigeye.png diff --git a/res/drawable-hdpi/ic_ts_makeup_soften.png b/res/drawable-hdpi/ic_ts_makeup_soften.png Binary files differnew file mode 100644 index 000000000..caa645158 --- /dev/null +++ b/res/drawable-hdpi/ic_ts_makeup_soften.png diff --git a/res/drawable-hdpi/ic_ts_makeup_trimface.png b/res/drawable-hdpi/ic_ts_makeup_trimface.png Binary files differnew file mode 100644 index 000000000..3ac43f793 --- /dev/null +++ b/res/drawable-hdpi/ic_ts_makeup_trimface.png diff --git a/res/drawable-hdpi/ic_ts_makeup_whiten.png b/res/drawable-hdpi/ic_ts_makeup_whiten.png Binary files differnew file mode 100644 index 000000000..a12560f09 --- /dev/null +++ b/res/drawable-hdpi/ic_ts_makeup_whiten.png diff --git a/res/drawable-hdpi/ic_vidcontrol_disable_pause.png b/res/drawable-hdpi/ic_vidcontrol_disable_pause.png Binary files differnew file mode 100644 index 000000000..41b37256b --- /dev/null +++ b/res/drawable-hdpi/ic_vidcontrol_disable_pause.png diff --git a/res/drawable-hdpi/ic_vidcontrol_disable_play.png b/res/drawable-hdpi/ic_vidcontrol_disable_play.png Binary files differnew file mode 100644 index 000000000..fdc5380f6 --- /dev/null +++ b/res/drawable-hdpi/ic_vidcontrol_disable_play.png diff --git a/res/drawable-hdpi/ic_vidcontrol_disable_reload.png b/res/drawable-hdpi/ic_vidcontrol_disable_reload.png Binary files differnew file mode 100644 index 000000000..5611a9202 --- /dev/null +++ b/res/drawable-hdpi/ic_vidcontrol_disable_reload.png diff --git a/res/drawable-hdpi/knob.png b/res/drawable-hdpi/knob.png Binary files differnew file mode 100644 index 000000000..1eba937fe --- /dev/null +++ b/res/drawable-hdpi/knob.png diff --git a/res/drawable-hdpi/knob_toggle_off.png b/res/drawable-hdpi/knob_toggle_off.png Binary files differnew file mode 100644 index 000000000..a89595e2b --- /dev/null +++ b/res/drawable-hdpi/knob_toggle_off.png diff --git a/res/drawable-hdpi/knob_toggle_on.png b/res/drawable-hdpi/knob_toggle_on.png Binary files differnew file mode 100644 index 000000000..ab8d3d7e3 --- /dev/null +++ b/res/drawable-hdpi/knob_toggle_on.png diff --git a/res/drawable-hdpi/media_default_bkg.9.png b/res/drawable-hdpi/media_default_bkg.9.png Binary files differnew file mode 100644 index 000000000..7b9523913 --- /dev/null +++ b/res/drawable-hdpi/media_default_bkg.9.png diff --git a/res/drawable-hdpi/switch_thumb_activated.9.png b/res/drawable-hdpi/switch_thumb_activated.9.png Binary files differnew file mode 100644 index 000000000..072aa649c --- /dev/null +++ b/res/drawable-hdpi/switch_thumb_activated.9.png diff --git a/res/drawable-hdpi/switch_thumb_off.9.png b/res/drawable-hdpi/switch_thumb_off.9.png Binary files differnew file mode 100644 index 000000000..45786a309 --- /dev/null +++ b/res/drawable-hdpi/switch_thumb_off.9.png diff --git a/res/drawable-mdpi/dropdown_ic_arrow_normal_holo_dark.png b/res/drawable-mdpi/dropdown_ic_arrow_normal_holo_dark.png Binary files differdeleted file mode 100644 index 81de1bb46..000000000 --- a/res/drawable-mdpi/dropdown_ic_arrow_normal_holo_dark.png +++ /dev/null diff --git a/res/drawable-mdpi/frame_overlay_gallery_camera.png b/res/drawable-mdpi/frame_overlay_gallery_camera.png Binary files differindex 3736a5c02..994b3f340 100644 --- a/res/drawable-mdpi/frame_overlay_gallery_camera.png +++ b/res/drawable-mdpi/frame_overlay_gallery_camera.png diff --git a/res/drawable-mdpi/ic_cameraalbum_overlay.png b/res/drawable-mdpi/ic_cameraalbum_overlay.png Binary files differindex 5d14c32e9..2cce0d472 100644 --- a/res/drawable-mdpi/ic_cameraalbum_overlay.png +++ b/res/drawable-mdpi/ic_cameraalbum_overlay.png diff --git a/res/drawable-mdpi/ic_media_bigscreen.png b/res/drawable-mdpi/ic_media_bigscreen.png Binary files differnew file mode 100644 index 000000000..f04026ead --- /dev/null +++ b/res/drawable-mdpi/ic_media_bigscreen.png diff --git a/res/drawable-mdpi/ic_media_cropscreen.png b/res/drawable-mdpi/ic_media_cropscreen.png Binary files differnew file mode 100644 index 000000000..a2517bd3d --- /dev/null +++ b/res/drawable-mdpi/ic_media_cropscreen.png diff --git a/res/drawable-mdpi/ic_media_fullscreen.png b/res/drawable-mdpi/ic_media_fullscreen.png Binary files differnew file mode 100644 index 000000000..a53cb3ddd --- /dev/null +++ b/res/drawable-mdpi/ic_media_fullscreen.png diff --git a/res/drawable-mdpi/ic_menu_camera_holo_light.png b/res/drawable-mdpi/ic_menu_camera_holo_light.png Binary files differindex d42508410..aa3a3e571 100644 --- a/res/drawable-mdpi/ic_menu_camera_holo_light.png +++ b/res/drawable-mdpi/ic_menu_camera_holo_light.png diff --git a/res/drawable-mdpi/ic_menu_disabled_forward.png b/res/drawable-mdpi/ic_menu_disabled_forward.png Binary files differnew file mode 100644 index 000000000..bbc8920f0 --- /dev/null +++ b/res/drawable-mdpi/ic_menu_disabled_forward.png diff --git a/res/drawable-mdpi/ic_menu_disabled_rewind.png b/res/drawable-mdpi/ic_menu_disabled_rewind.png Binary files differnew file mode 100644 index 000000000..28acd42d8 --- /dev/null +++ b/res/drawable-mdpi/ic_menu_disabled_rewind.png diff --git a/res/drawable-mdpi/ic_menu_disabled_stop.png b/res/drawable-mdpi/ic_menu_disabled_stop.png Binary files differnew file mode 100644 index 000000000..0532cea84 --- /dev/null +++ b/res/drawable-mdpi/ic_menu_disabled_stop.png diff --git a/res/drawable-mdpi/ic_menu_display_bookmark.png b/res/drawable-mdpi/ic_menu_display_bookmark.png Binary files differnew file mode 100644 index 000000000..a3acdd64b --- /dev/null +++ b/res/drawable-mdpi/ic_menu_display_bookmark.png diff --git a/res/drawable-mdpi/ic_menu_edit_holo_dark.png b/res/drawable-mdpi/ic_menu_edit_holo_dark.png Binary files differdeleted file mode 100644 index ca9188e18..000000000 --- a/res/drawable-mdpi/ic_menu_edit_holo_dark.png +++ /dev/null diff --git a/res/drawable-mdpi/ic_menu_forward.png b/res/drawable-mdpi/ic_menu_forward.png Binary files differnew file mode 100644 index 000000000..85b7057cb --- /dev/null +++ b/res/drawable-mdpi/ic_menu_forward.png diff --git a/res/drawable-mdpi/ic_menu_loop.png b/res/drawable-mdpi/ic_menu_loop.png Binary files differnew file mode 100644 index 000000000..688b2c564 --- /dev/null +++ b/res/drawable-mdpi/ic_menu_loop.png diff --git a/res/drawable-mdpi/ic_menu_rewind.png b/res/drawable-mdpi/ic_menu_rewind.png Binary files differnew file mode 100644 index 000000000..8b46eee7c --- /dev/null +++ b/res/drawable-mdpi/ic_menu_rewind.png diff --git a/res/drawable-mdpi/ic_menu_share_holo_light.png b/res/drawable-mdpi/ic_menu_share_holo_light.png Binary files differdeleted file mode 100644 index 29574f5bd..000000000 --- a/res/drawable-mdpi/ic_menu_share_holo_light.png +++ /dev/null diff --git a/res/drawable-mdpi/ic_menu_stop.png b/res/drawable-mdpi/ic_menu_stop.png Binary files differnew file mode 100644 index 000000000..96cf8f46d --- /dev/null +++ b/res/drawable-mdpi/ic_menu_stop.png diff --git a/res/drawable-mdpi/ic_menu_trash_holo_light.png b/res/drawable-mdpi/ic_menu_trash_holo_light.png Binary files differdeleted file mode 100644 index f45540b21..000000000 --- a/res/drawable-mdpi/ic_menu_trash_holo_light.png +++ /dev/null diff --git a/res/drawable-mdpi/ic_menu_unloop.png b/res/drawable-mdpi/ic_menu_unloop.png Binary files differnew file mode 100644 index 000000000..e47496414 --- /dev/null +++ b/res/drawable-mdpi/ic_menu_unloop.png diff --git a/res/drawable-mdpi/ic_photoeditor_makeup.png b/res/drawable-mdpi/ic_photoeditor_makeup.png Binary files differnew file mode 100644 index 000000000..606f591af --- /dev/null +++ b/res/drawable-mdpi/ic_photoeditor_makeup.png diff --git a/res/drawable-mdpi/ic_switch_camera.png b/res/drawable-mdpi/ic_switch_camera.png Binary files differindex a97811757..90dd073be 100644 --- a/res/drawable-mdpi/ic_switch_camera.png +++ b/res/drawable-mdpi/ic_switch_camera.png diff --git a/res/drawable-mdpi/ic_ts_makeup_bigeye.png b/res/drawable-mdpi/ic_ts_makeup_bigeye.png Binary files differnew file mode 100644 index 000000000..8d8da29c1 --- /dev/null +++ b/res/drawable-mdpi/ic_ts_makeup_bigeye.png diff --git a/res/drawable-mdpi/ic_ts_makeup_soften.png b/res/drawable-mdpi/ic_ts_makeup_soften.png Binary files differnew file mode 100644 index 000000000..a36d189c7 --- /dev/null +++ b/res/drawable-mdpi/ic_ts_makeup_soften.png diff --git a/res/drawable-mdpi/ic_ts_makeup_trimface.png b/res/drawable-mdpi/ic_ts_makeup_trimface.png Binary files differnew file mode 100644 index 000000000..e27370f92 --- /dev/null +++ b/res/drawable-mdpi/ic_ts_makeup_trimface.png diff --git a/res/drawable-mdpi/ic_ts_makeup_whiten.png b/res/drawable-mdpi/ic_ts_makeup_whiten.png Binary files differnew file mode 100644 index 000000000..7ac882312 --- /dev/null +++ b/res/drawable-mdpi/ic_ts_makeup_whiten.png diff --git a/res/drawable-mdpi/ic_vidcontrol_disable_pause.png b/res/drawable-mdpi/ic_vidcontrol_disable_pause.png Binary files differnew file mode 100644 index 000000000..c5c42cb8c --- /dev/null +++ b/res/drawable-mdpi/ic_vidcontrol_disable_pause.png diff --git a/res/drawable-mdpi/ic_vidcontrol_disable_play.png b/res/drawable-mdpi/ic_vidcontrol_disable_play.png Binary files differnew file mode 100644 index 000000000..70374fb09 --- /dev/null +++ b/res/drawable-mdpi/ic_vidcontrol_disable_play.png diff --git a/res/drawable-mdpi/ic_vidcontrol_disable_reload.png b/res/drawable-mdpi/ic_vidcontrol_disable_reload.png Binary files differnew file mode 100644 index 000000000..052df4cfc --- /dev/null +++ b/res/drawable-mdpi/ic_vidcontrol_disable_reload.png diff --git a/res/drawable-mdpi/media_default_bkg.9.png b/res/drawable-mdpi/media_default_bkg.9.png Binary files differnew file mode 100644 index 000000000..20bb10878 --- /dev/null +++ b/res/drawable-mdpi/media_default_bkg.9.png diff --git a/res/drawable-sw600dp/ic_vidcontrol_disable_pause.png b/res/drawable-sw600dp/ic_vidcontrol_disable_pause.png Binary files differnew file mode 100644 index 000000000..41b37256b --- /dev/null +++ b/res/drawable-sw600dp/ic_vidcontrol_disable_pause.png diff --git a/res/drawable-sw600dp/ic_vidcontrol_disable_play.png b/res/drawable-sw600dp/ic_vidcontrol_disable_play.png Binary files differnew file mode 100644 index 000000000..fdc5380f6 --- /dev/null +++ b/res/drawable-sw600dp/ic_vidcontrol_disable_play.png diff --git a/res/drawable-sw600dp/ic_vidcontrol_disable_reload.png b/res/drawable-sw600dp/ic_vidcontrol_disable_reload.png Binary files differnew file mode 100644 index 000000000..5611a9202 --- /dev/null +++ b/res/drawable-sw600dp/ic_vidcontrol_disable_reload.png diff --git a/res/drawable-xhdpi/dropdown_ic_arrow_normal_holo_dark.png b/res/drawable-xhdpi/dropdown_ic_arrow_normal_holo_dark.png Binary files differdeleted file mode 100644 index 36d8cf47e..000000000 --- a/res/drawable-xhdpi/dropdown_ic_arrow_normal_holo_dark.png +++ /dev/null diff --git a/res/drawable-xhdpi/frame_overlay_gallery_camera.png b/res/drawable-xhdpi/frame_overlay_gallery_camera.png Binary files differindex e2109ac4d..aa3a3e571 100644 --- a/res/drawable-xhdpi/frame_overlay_gallery_camera.png +++ b/res/drawable-xhdpi/frame_overlay_gallery_camera.png diff --git a/res/drawable-xhdpi/ic_cameraalbum_overlay.png b/res/drawable-xhdpi/ic_cameraalbum_overlay.png Binary files differindex bf71eaacf..6056fcc88 100644 --- a/res/drawable-xhdpi/ic_cameraalbum_overlay.png +++ b/res/drawable-xhdpi/ic_cameraalbum_overlay.png diff --git a/res/drawable-xhdpi/ic_media_bigscreen.png b/res/drawable-xhdpi/ic_media_bigscreen.png Binary files differnew file mode 100644 index 000000000..ba367097e --- /dev/null +++ b/res/drawable-xhdpi/ic_media_bigscreen.png diff --git a/res/drawable-xhdpi/ic_media_cropscreen.png b/res/drawable-xhdpi/ic_media_cropscreen.png Binary files differnew file mode 100644 index 000000000..e08c1db60 --- /dev/null +++ b/res/drawable-xhdpi/ic_media_cropscreen.png diff --git a/res/drawable-xhdpi/ic_media_fullscreen.png b/res/drawable-xhdpi/ic_media_fullscreen.png Binary files differnew file mode 100644 index 000000000..ffcb4de7c --- /dev/null +++ b/res/drawable-xhdpi/ic_media_fullscreen.png diff --git a/res/drawable-xhdpi/ic_menu_camera_holo_light.png b/res/drawable-xhdpi/ic_menu_camera_holo_light.png Binary files differnew file mode 100644 index 000000000..c1a3549bf --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_camera_holo_light.png diff --git a/res/drawable-xhdpi/ic_menu_disabled_forward.png b/res/drawable-xhdpi/ic_menu_disabled_forward.png Binary files differnew file mode 100644 index 000000000..e73d4d4a5 --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_disabled_forward.png diff --git a/res/drawable-xhdpi/ic_menu_disabled_rewind.png b/res/drawable-xhdpi/ic_menu_disabled_rewind.png Binary files differnew file mode 100644 index 000000000..ad3be649b --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_disabled_rewind.png diff --git a/res/drawable-xhdpi/ic_menu_disabled_stop.png b/res/drawable-xhdpi/ic_menu_disabled_stop.png Binary files differnew file mode 100644 index 000000000..ba0fc5f61 --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_disabled_stop.png diff --git a/res/drawable-xhdpi/ic_menu_display_bookmark.png b/res/drawable-xhdpi/ic_menu_display_bookmark.png Binary files differnew file mode 100644 index 000000000..4ad8414be --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_display_bookmark.png diff --git a/res/drawable-xhdpi/ic_menu_edit_holo_dark.png b/res/drawable-xhdpi/ic_menu_edit_holo_dark.png Binary files differdeleted file mode 100644 index 65e72c1e2..000000000 --- a/res/drawable-xhdpi/ic_menu_edit_holo_dark.png +++ /dev/null diff --git a/res/drawable-xhdpi/ic_menu_forward.png b/res/drawable-xhdpi/ic_menu_forward.png Binary files differnew file mode 100644 index 000000000..f225ffc91 --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_forward.png diff --git a/res/drawable-xhdpi/ic_menu_loop.png b/res/drawable-xhdpi/ic_menu_loop.png Binary files differnew file mode 100644 index 000000000..e664915ce --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_loop.png diff --git a/res/drawable-xhdpi/ic_menu_rewind.png b/res/drawable-xhdpi/ic_menu_rewind.png Binary files differnew file mode 100644 index 000000000..fbfa5cab6 --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_rewind.png diff --git a/res/drawable-xhdpi/ic_menu_stop.png b/res/drawable-xhdpi/ic_menu_stop.png Binary files differnew file mode 100644 index 000000000..43e77bee4 --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_stop.png diff --git a/res/drawable-xhdpi/ic_menu_unloop.png b/res/drawable-xhdpi/ic_menu_unloop.png Binary files differnew file mode 100644 index 000000000..89d1da2bc --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_unloop.png diff --git a/res/drawable-xhdpi/ic_photoeditor_makeup.png b/res/drawable-xhdpi/ic_photoeditor_makeup.png Binary files differnew file mode 100644 index 000000000..834c899b7 --- /dev/null +++ b/res/drawable-xhdpi/ic_photoeditor_makeup.png diff --git a/res/drawable-xhdpi/ic_switch_camera.png b/res/drawable-xhdpi/ic_switch_camera.png Binary files differindex 7d2406290..852225124 100644 --- a/res/drawable-xhdpi/ic_switch_camera.png +++ b/res/drawable-xhdpi/ic_switch_camera.png diff --git a/res/drawable-xhdpi/ic_ts_makeup_bigeye.png b/res/drawable-xhdpi/ic_ts_makeup_bigeye.png Binary files differnew file mode 100644 index 000000000..f4b85005c --- /dev/null +++ b/res/drawable-xhdpi/ic_ts_makeup_bigeye.png diff --git a/res/drawable-xhdpi/ic_ts_makeup_soften.png b/res/drawable-xhdpi/ic_ts_makeup_soften.png Binary files differnew file mode 100644 index 000000000..cdd699569 --- /dev/null +++ b/res/drawable-xhdpi/ic_ts_makeup_soften.png diff --git a/res/drawable-xhdpi/ic_ts_makeup_trimface.png b/res/drawable-xhdpi/ic_ts_makeup_trimface.png Binary files differnew file mode 100644 index 000000000..e419c19a6 --- /dev/null +++ b/res/drawable-xhdpi/ic_ts_makeup_trimface.png diff --git a/res/drawable-xhdpi/ic_ts_makeup_whiten.png b/res/drawable-xhdpi/ic_ts_makeup_whiten.png Binary files differnew file mode 100644 index 000000000..6fc305f36 --- /dev/null +++ b/res/drawable-xhdpi/ic_ts_makeup_whiten.png diff --git a/res/drawable-xhdpi/ic_vidcontrol_disable_pause.png b/res/drawable-xhdpi/ic_vidcontrol_disable_pause.png Binary files differnew file mode 100644 index 000000000..0b1a136c6 --- /dev/null +++ b/res/drawable-xhdpi/ic_vidcontrol_disable_pause.png diff --git a/res/drawable-xhdpi/ic_vidcontrol_disable_play.png b/res/drawable-xhdpi/ic_vidcontrol_disable_play.png Binary files differnew file mode 100644 index 000000000..f2c2f1116 --- /dev/null +++ b/res/drawable-xhdpi/ic_vidcontrol_disable_play.png diff --git a/res/drawable-xhdpi/ic_vidcontrol_disable_reload.png b/res/drawable-xhdpi/ic_vidcontrol_disable_reload.png Binary files differnew file mode 100644 index 000000000..37a394f1e --- /dev/null +++ b/res/drawable-xhdpi/ic_vidcontrol_disable_reload.png diff --git a/res/drawable-xxhdpi/ic_cameraalbum_overlay.png b/res/drawable-xxhdpi/ic_cameraalbum_overlay.png Binary files differnew file mode 100644 index 000000000..abf97ec64 --- /dev/null +++ b/res/drawable-xxhdpi/ic_cameraalbum_overlay.png diff --git a/res/drawable-xxhdpi/ic_photoeditor_makeup_xx.png b/res/drawable-xxhdpi/ic_photoeditor_makeup_xx.png Binary files differnew file mode 100644 index 000000000..3db1df26c --- /dev/null +++ b/res/drawable-xxhdpi/ic_photoeditor_makeup_xx.png diff --git a/res/drawable-xxxhdpi/ic_cameraalbum_overlay.png b/res/drawable-xxxhdpi/ic_cameraalbum_overlay.png Binary files differnew file mode 100644 index 000000000..762a41f18 --- /dev/null +++ b/res/drawable-xxxhdpi/ic_cameraalbum_overlay.png diff --git a/res/drawable/dropdown_ic_arrow.xml b/res/drawable/dropdown_ic_arrow.xml new file mode 100644 index 000000000..f9464faf3 --- /dev/null +++ b/res/drawable/dropdown_ic_arrow.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + <path + android:fillColor="#ffffff" + android:pathData="M7,10l5,5l5-5H7Z" /> +</vector> diff --git a/res/drawable/fab_accent.xml b/res/drawable/fab_accent.xml new file mode 100644 index 000000000..f334676e8 --- /dev/null +++ b/res/drawable/fab_accent.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2014 The CyanogenMod Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> + +<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> + <solid android:color="@color/fab" /> +</shape> diff --git a/res/drawable/filtershow_background.png b/res/drawable/filtershow_background.png Binary files differdeleted file mode 100644 index 22e1641dd..000000000 --- a/res/drawable/filtershow_background.png +++ /dev/null diff --git a/res/drawable/filtershow_background_new.png b/res/drawable/filtershow_background_new.png Binary files differdeleted file mode 100644 index a11538944..000000000 --- a/res/drawable/filtershow_background_new.png +++ /dev/null diff --git a/res/drawable/floating_action_button.xml b/res/drawable/floating_action_button.xml new file mode 100644 index 000000000..57a4c8fa9 --- /dev/null +++ b/res/drawable/floating_action_button.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2014 The CyanogenMod Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> + +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="@color/floating_action_button_touch_tint"> + <item android:id="@android:id/mask"> + <shape android:shape="oval"> + <solid android:color="@color/fab" /> + </shape> + </item> +</ripple> diff --git a/res/drawable/ic_edit.xml b/res/drawable/ic_edit.xml new file mode 100644 index 000000000..1116c1c09 --- /dev/null +++ b/res/drawable/ic_edit.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="30dp" + android:height="30dp" + android:viewportWidth="48" + android:viewportHeight="48"> + + <path + android:fillColor="#ffffff" + android:pathData="M14,28c-3.31,0-6,2.689-6,6c0,2.62-2.31,4-4,4c1.84, + 2.439,4.99,4,8,4c4.42,0,8-3.58,8-8C20,30.689,17.31,28,14,28Z + M41.41,9.26l-2.67-2.67c-0.78-0.78-2.051-0.78-2.83,0L18, + 24.5l5.5,5.5l17.91-17.91C42.2,11.3,42.2,10.04,41.41,9.26z" /> + </vector> diff --git a/res/drawable/ic_menu_share.xml b/res/drawable/ic_menu_share.xml new file mode 100644 index 000000000..4f15606c0 --- /dev/null +++ b/res/drawable/ic_menu_share.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="48" + android:viewportHeight="48"> + + <path + android:fillColor="#ffffff" + android:pathData="M36,32.17c-1.52,0-2.891,0.59-3.93,1.54L17.82, + 25.4C17.93,24.95,18,24.48,18,24s-0.07-0.95-0.18-1.4l14.1-8.23 + c1.07,1,2.5,1.62,4.08,1.62c3.311,0,6-2.69,6-6c0-3.31-2.689-6-6-6s-6, + 2.69-6,6c0,0.48,0.07,0.95,0.18,1.4l-14.1,8.23 + c-1.07-1-2.5-1.62-4.08-1.62c-3.31,0-6,2.69-6,6c0,3.311,2.69,6,6,6c1.58, + 0,3.01-0.62,4.08-1.62l14.25,8.31c-0.1,0.42-0.16,0.86-0.16,1.311c0, + 3.221,2.609,5.83,5.83,5.83s5.83-2.609,5.83-5.83S39.221,32.17,36,32.17Z" + /> +</vector> diff --git a/res/drawable/ic_menu_single_track.xml b/res/drawable/ic_menu_single_track.xml new file mode 100644 index 000000000..9ca139a18 --- /dev/null +++ b/res/drawable/ic_menu_single_track.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="48dp" + android:height="48dp" + android:viewportWidth="48" + android:viewportHeight="48"> + + <path + android:fillColor="#ffffff" + android:pathData="M24,4C12.97,4,4,12.97,4,24c0,11.029,8.97,20,20, + 20c11.029,0,20-8.971,20-20C44,12.97,35.029,4,24,4ZM24,40c-8.82, + 0-16-7.18-16-16c0-8.82,7.18-16,16-16c8.82,0,16,7.18,16,16C40,32.82, + 32.82,40,24,40zM30,24c0,3.311-2.689,6-6,6 + c-3.31,0-6-2.689-6-6c0-3.31,2.69-6,6-6C27.311,18,30,20.69,30,24z" /> +</vector> diff --git a/res/drawable/ic_menu_stereo.xml b/res/drawable/ic_menu_stereo.xml new file mode 100644 index 000000000..1d105878f --- /dev/null +++ b/res/drawable/ic_menu_stereo.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="48dp" + android:height="48dp" + android:viewportWidth="48" + android:viewportHeight="48"> + + <path + android:fillColor="#ffffff" + android:pathData="M34,4H14c-2.21,0-4,1.79-4,4v32c0,2.21,1.79,3.98,4, + 3.98L34,44c2.21,0,4-1.79,4-4V8C38,5.79,36.21,4,34,4Z + M24,8 c2.21,0,4,1.79,4,4s-1.79,4-4,4s-4-1.79-4-4S21.79,8,24,8z + M24,40c-5.52,0-10-4.48-10-10c0-5.52,4.48-10,10-10c5.52,0,10,4.48,10,10 + C34,35.52,29.52,40,24,40zM24,24c-3.31,0-6,2.689-6,6s2.69,6,6,6c3.311, + 0,6-2.689,6-6S27.311,24,24,24z" /> +</vector> diff --git a/res/drawable/ic_menu_trash.xml b/res/drawable/ic_menu_trash.xml new file mode 100644 index 000000000..8c5f85ab2 --- /dev/null +++ b/res/drawable/ic_menu_trash.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="48" + android:viewportHeight="48"> + + <path + android:fillColor="#ffffff" + android:pathData="M12,38c0,2.21,1.79,4,4,4h16c2.21,0,4-1.79, + 4-4V14H12V38ZM38,8h-7l-2-2H19l-2,2h-7v4h28V8z" /> +</vector> diff --git a/res/drawable/icn_media_forward.xml b/res/drawable/icn_media_forward.xml new file mode 100644 index 000000000..374ca5d07 --- /dev/null +++ b/res/drawable/icn_media_forward.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_enabled="true" + android:drawable="@drawable/ic_menu_forward" /> + <item android:state_enabled="false" + android:drawable="@drawable/ic_menu_disabled_forward" /> +</selector> diff --git a/res/drawable/icn_media_rewind.xml b/res/drawable/icn_media_rewind.xml new file mode 100644 index 000000000..b6066373d --- /dev/null +++ b/res/drawable/icn_media_rewind.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_enabled="true" + android:drawable="@drawable/ic_menu_rewind" /> + <item android:state_enabled="false" + android:drawable="@drawable/ic_menu_disabled_rewind" /> +</selector> diff --git a/res/drawable/icn_media_stop.xml b/res/drawable/icn_media_stop.xml new file mode 100644 index 000000000..31d85555b --- /dev/null +++ b/res/drawable/icn_media_stop.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_enabled="true" + android:drawable="@drawable/ic_menu_stop" /> + <item android:state_enabled="false" + android:drawable="@drawable/ic_menu_disabled_stop" /> +</selector> diff --git a/res/drawable/videoplayer_pause.xml b/res/drawable/videoplayer_pause.xml new file mode 100644 index 000000000..39a436156 --- /dev/null +++ b/res/drawable/videoplayer_pause.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_enabled="true" + android:drawable="@drawable/ic_vidcontrol_pause" /> + <item android:state_enabled="false" + android:drawable="@drawable/ic_vidcontrol_disable_pause" /> +</selector> diff --git a/res/drawable/videoplayer_play.xml b/res/drawable/videoplayer_play.xml new file mode 100644 index 000000000..be78a7be1 --- /dev/null +++ b/res/drawable/videoplayer_play.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_enabled="true" + android:drawable="@drawable/ic_vidcontrol_play" /> + <item android:state_enabled="false" + android:drawable="@drawable/ic_vidcontrol_disable_play" /> +</selector> diff --git a/res/drawable/videoplayer_reload.xml b/res/drawable/videoplayer_reload.xml new file mode 100644 index 000000000..b5d48bff7 --- /dev/null +++ b/res/drawable/videoplayer_reload.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_enabled="true" + android:drawable="@drawable/ic_vidcontrol_reload" /> + <item android:state_enabled="false" + android:drawable="@drawable/ic_vidcontrol_disable_reload" /> +</selector> diff --git a/res/layout-land/camera_controls.xml b/res/layout-land/camera_controls.xml index d1772401e..4baf23ebf 100644 --- a/res/layout-land/camera_controls.xml +++ b/res/layout-land/camera_controls.xml @@ -24,13 +24,13 @@ android:clickable="true" android:layout_height="match_parent" android:layout_width="@dimen/switcher_size" - android:layout_gravity="right" /> + android:layout_gravity="end" /> <include layout="@layout/menu_indicators" android:layout_width="64dip" android:layout_height="64dip" android:layout_marginTop="-5dip" - android:layout_marginRight="6dip" + android:layout_marginEnd="6dip" android:layout_gravity="top|right"/> <com.android.camera.ui.PieMenuButton @@ -38,13 +38,13 @@ style="@style/SwitcherButton" android:contentDescription="@string/accessibility_menu_button" android:layout_gravity="right|top" - android:layout_marginRight="2dip" /> + android:layout_marginEnd="2dip" /> <com.android.camera.ui.CameraSwitcher android:id="@+id/camera_switcher" style="@style/SwitcherButton" android:layout_gravity="right|bottom" - android:layout_marginRight="2dip" + android:layout_marginEnd="2dip" android:contentDescription="@string/accessibility_mode_picker" /> <com.android.camera.ShutterButton @@ -52,7 +52,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" - android:layout_marginRight="@dimen/shutter_offset" + android:layout_marginEnd="@dimen/shutter_offset" android:clickable="true" android:contentDescription="@string/accessibility_shutter_button" android:focusable="true" diff --git a/res/layout-land/filtershow_activity.xml b/res/layout-land/filtershow_activity.xml index f4380126e..c1c7e0e69 100644 --- a/res/layout-land/filtershow_activity.xml +++ b/res/layout-land/filtershow_activity.xml @@ -19,7 +19,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mainView" - android:background="@drawable/filtershow_tiled_background"> + android:background="@color/filtershow_background"> <LinearLayout android:layout_width="match_parent" @@ -35,7 +35,7 @@ <ProgressBar android:id="@+id/loading" - style="@android:style/Widget.Holo.ProgressBar.Large" + style="@android:style/Widget.Material.ProgressBar.Large" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" diff --git a/res/layout-land/filtershow_color_border_ui.xml b/res/layout-land/filtershow_color_border_ui.xml index 9945d9d63..82fe14a7d 100644 --- a/res/layout-land/filtershow_color_border_ui.xml +++ b/res/layout-land/filtershow_color_border_ui.xml @@ -46,14 +46,14 @@ <TextView android:id="@+id/controlName1" - android:layout_gravity="left" - android:layout_marginLeft="8dip" + android:layout_gravity="start" + android:layout_marginStart="8dip" android:text="@string/color_border_size"/> <TextView android:id="@+id/colorBorderSizeValue" - android:layout_gravity="right" - android:layout_marginRight="8dip" + android:layout_gravity="end" + android:layout_marginEnd="8dip" android:textStyle="bold"/> <SeekBar @@ -74,14 +74,14 @@ <TextView android:id="@+id/controlName2" - android:layout_gravity="left" - android:layout_marginLeft="8dip" + android:layout_gravity="start" + android:layout_marginStart="8dip" android:text="@string/color_border_corner_size"/> <TextView android:id="@+id/colorBorderCornerValue" - android:layout_gravity="right" - android:layout_marginRight="8dip" + android:layout_gravity="end" + android:layout_marginEnd="8dip" android:textStyle="bold"/> <SeekBar @@ -122,7 +122,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/draw_color" - android:layout_marginLeft="8dip" + android:layout_marginStart="8dip" android:id="@+id/textView"/> @@ -130,8 +130,8 @@ android:id="@+id/btnSelect" android:layout_width="match_parent" android:layout_height="32dp" - android:layout_marginLeft="18dp" - android:layout_marginRight="18dp" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" android:layout_marginTop="0dp" android:layout_marginBottom="0dp" /> @@ -142,7 +142,7 @@ android:layout_height="@dimen/draw_ui_width" android:layout_gravity="center" android:layout_marginTop="8dp" - android:layout_marginRight="1dp"/> + android:layout_marginEnd="1dp"/> <com.android.gallery3d.filtershow.colorpicker.ColorHueView android:id="@+id/ColorHueView" @@ -164,8 +164,8 @@ android:orientation="horizontal" android:layout_marginBottom="10dp" android:layout_marginTop="10dp" - android:layout_marginLeft="1dp" - android:layout_marginRight="1dp"> + android:layout_marginStart="1dp" + android:layout_marginEnd="1dp"> <LinearLayout android:layout_width="match_parent" @@ -173,8 +173,8 @@ android:orientation="horizontal" android:layout_marginBottom="10dp" android:layout_marginTop="10dp" - android:layout_marginLeft="1dp" - android:layout_marginRight="1dp"> + android:layout_marginStart="1dp" + android:layout_marginEnd="1dp"> <LinearLayout android:id="@+id/listColors" @@ -189,7 +189,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button02" @@ -197,7 +197,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button03" @@ -205,7 +205,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button04" @@ -213,7 +213,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button05" @@ -221,7 +221,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> </LinearLayout> <FrameLayout diff --git a/res/layout-land/filtershow_draw_ui.xml b/res/layout-land/filtershow_draw_ui.xml index 5e0a32725..642a7bdb6 100644 --- a/res/layout-land/filtershow_draw_ui.xml +++ b/res/layout-land/filtershow_draw_ui.xml @@ -55,14 +55,14 @@ <TextView android:id="@+id/controlName1" - android:layout_gravity="left" - android:layout_marginLeft="8dip" + android:layout_gravity="start" + android:layout_marginStart="8dip" android:text="@string/draw_size"/> <TextView android:id="@+id/drawSizeValue" - android:layout_gravity="right" - android:layout_marginRight="8dip" + android:layout_gravity="end" + android:layout_marginEnd="8dip" android:textStyle="bold"/> <SeekBar @@ -106,7 +106,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/draw_color" - android:layout_marginLeft="8dip" + android:layout_marginStart="8dip" android:id="@+id/textView" android:visibility="gone"/> @@ -114,8 +114,8 @@ android:id="@+id/btnSelect" android:layout_width="match_parent" android:layout_height="32dp" - android:layout_marginLeft="18dp" - android:layout_marginRight="18dp" + android:layout_marginStart="18dp" + android:layout_marginEnd="18dp" android:layout_marginTop="0dp" android:layout_marginBottom="0dp" /> @@ -126,7 +126,7 @@ android:layout_height="@dimen/draw_ui_width" android:layout_gravity="center" android:layout_marginTop="8dp" - android:layout_marginRight="1dp"/> + android:layout_marginEnd="1dp"/> <com.android.gallery3d.filtershow.colorpicker.ColorHueView android:id="@+id/ColorHueView" @@ -149,8 +149,8 @@ android:orientation="horizontal" android:layout_marginBottom="10dp" android:layout_marginTop="10dp" - android:layout_marginLeft="1dp" - android:layout_marginRight="1dp"> + android:layout_marginStart="1dp" + android:layout_marginEnd="1dp"> <LinearLayout @@ -166,7 +166,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button02" @@ -174,7 +174,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button03" @@ -182,7 +182,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button04" @@ -190,7 +190,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button05" @@ -198,7 +198,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> </LinearLayout> diff --git a/res/layout-land/filtershow_grad_ui.xml b/res/layout-land/filtershow_grad_ui.xml index fd09beebb..8f6a8ae09 100644 --- a/res/layout-land/filtershow_grad_ui.xml +++ b/res/layout-land/filtershow_grad_ui.xml @@ -30,14 +30,14 @@ <TextView android:id="@+id/controlName1" - android:layout_gravity="left" - android:layout_marginLeft="8dip" + android:layout_gravity="start" + android:layout_marginStart="8dip" android:text="@string/editor_grad_brightness" /> <TextView android:id="@+id/gradBrightnessValue" - android:layout_gravity="right" - android:layout_marginRight="8dip" + android:layout_gravity="end" + android:layout_marginEnd="8dip" android:textStyle="bold" /> <SeekBar @@ -58,14 +58,14 @@ <TextView android:id="@+id/controlName2" - android:layout_gravity="left" - android:layout_marginLeft="8dip" + android:layout_gravity="start" + android:layout_marginStart="8dip" android:text="@string/editor_grad_saturation"/> <TextView android:id="@+id/gradSaturationValue" - android:layout_gravity="right" - android:layout_marginRight="8dip" + android:layout_gravity="end" + android:layout_marginEnd="8dip" android:textStyle="bold" /> <SeekBar @@ -84,14 +84,14 @@ <TextView android:id="@+id/controlName3" - android:layout_gravity="left" - android:layout_marginLeft="8dip" + android:layout_gravity="start" + android:layout_marginStart="8dip" android:text="@string/editor_grad_contrast"/> <TextView android:id="@+id/gradContrastValue" - android:layout_gravity="right" - android:layout_marginRight="8dip" + android:layout_gravity="end" + android:layout_marginEnd="8dip" android:textStyle="bold" /> <SeekBar @@ -120,7 +120,7 @@ android:background="@drawable/filtershow_button_background" android:src="@drawable/filtershow_addpoint" android:paddingBottom="8dp" - android:layout_marginLeft="48dp" /> + android:layout_marginStart="48dp" /> <View android:layout_width="wrap_content" @@ -136,9 +136,9 @@ android:scaleType="centerInside" android:layout_weight="0" android:background="@drawable/filtershow_button_background" - android:src="@drawable/ic_menu_trash_holo_light" + android:src="@drawable/ic_menu_trash" android:paddingBottom="8dp" - android:layout_marginRight="48dp" /> + android:layout_marginEnd="48dp" /> </LinearLayout> diff --git a/res/layout-land/filtershow_main_panel.xml b/res/layout-land/filtershow_main_panel.xml index 6a36de2d7..e508e767b 100644 --- a/res/layout-land/filtershow_main_panel.xml +++ b/res/layout-land/filtershow_main_panel.xml @@ -83,6 +83,16 @@ android:padding="2dip" android:scaleType="centerInside" android:src="@drawable/ic_photoeditor_color"/> + <ImageButton + android:id="@+id/makeupButton" + android:layout_width="@dimen/thumbnail_size" + android:layout_height="match_parent" + android:layout_weight="1" + android:background="@drawable/filtershow_button_background" + android:padding="2dip" + android:scaleType="centerInside" + android:visibility="gone" + android:src="@drawable/ic_photoeditor_makeup"/> </LinearLayout> diff --git a/res/layout-land/filtershow_saturation_controls.xml b/res/layout-land/filtershow_saturation_controls.xml index f452a6487..6003b7389 100644 --- a/res/layout-land/filtershow_saturation_controls.xml +++ b/res/layout-land/filtershow_saturation_controls.xml @@ -25,11 +25,11 @@ android:text="@string/editor_chan_sat_red" android:textStyle="bold" android:textColor="#ff8080" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/redValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/redSeekBar" android:layout_width="match_parent" @@ -42,11 +42,11 @@ android:text="@string/editor_chan_sat_yellow" android:textStyle="bold" android:textColor="#ffff80" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/yellowValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/yellowSeekBar" android:layout_width="match_parent" @@ -59,11 +59,11 @@ android:text="@string/editor_chan_sat_green" android:textStyle="bold" android:textColor="#80ff80" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/greenValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/greenSeekBar" android:layout_width="match_parent" @@ -76,11 +76,11 @@ android:text="@string/editor_chan_sat_cyan" android:textStyle="bold" android:textColor="#80ffff" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/cyanValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/cyanSeekBar" android:layout_width="match_parent" @@ -93,11 +93,11 @@ android:text="@string/editor_chan_sat_blue" android:textStyle="bold" android:textColor="#8080ff" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/blueValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/blueSeekBar" android:layout_width="match_parent" @@ -110,11 +110,11 @@ android:text="@string/editor_chan_sat_magenta" android:textStyle="bold" android:textColor="#ff80ff" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/magentaValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/magentaSeekBar" android:layout_width="match_parent" @@ -137,11 +137,11 @@ <TextView android:layout_gravity="left|center_vertical" android:text="@string/editor_chan_sat_main" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/mainValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/mainSeekbar" android:layout_width="match_parent" diff --git a/res/layout-land/filtershow_vignette_controls.xml b/res/layout-land/filtershow_vignette_controls.xml index 9bfb29f41..7cb27e9e2 100644 --- a/res/layout-land/filtershow_vignette_controls.xml +++ b/res/layout-land/filtershow_vignette_controls.xml @@ -24,12 +24,12 @@ android:layout_gravity="left|center_vertical" android:text="@string/vignette_exposure" android:textStyle="bold" - android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:visibility="gone"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/exposureValue" - android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" android:visibility="gone"/> <SeekBar android:id="@+id/exposureSeekBar" @@ -43,11 +43,11 @@ android:layout_gravity="left|center_vertical" android:text="@string/vignette_saturation" android:textStyle="bold" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/saturationValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/saturationSeekBar" android:layout_width="match_parent" @@ -59,11 +59,11 @@ android:layout_gravity="left|center_vertical" android:text="@string/vignette_contrast" android:textStyle="bold" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/contrastValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/contrastSeekBar" android:layout_width="match_parent" @@ -75,11 +75,11 @@ android:layout_gravity="left|center_vertical" android:text="@string/vignette_falloff" android:textStyle="bold" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/falloffValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/falloffSeekBar" android:layout_width="match_parent" @@ -103,11 +103,11 @@ <TextView android:layout_gravity="left|center_vertical" android:text="@string/vignette_main" - android:layout_marginLeft="8dp"/> + android:layout_marginStart="8dp"/> <TextView android:layout_gravity="right|center_vertical" android:id="@+id/mainVignetteValue" - android:layout_marginRight="16dp"/> + android:layout_marginEnd="16dp"/> <SeekBar android:id="@+id/mainVignetteSeekbar" android:layout_width="match_parent" diff --git a/res/layout-land/keyguard_widget.xml b/res/layout-land/keyguard_widget.xml index f0f4362aa..68396230c 100644 --- a/res/layout-land/keyguard_widget.xml +++ b/res/layout-land/keyguard_widget.xml @@ -25,8 +25,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:layout_alignParentRight="true" - android:layout_marginRight="@dimen/shutter_offset" + android:layout_alignParentEnd="true" + android:layout_marginEnd="@dimen/shutter_offset" android:contentDescription="@string/accessibility_shutter_button" android:scaleType="center" android:src="@drawable/btn_new_shutter" /> @@ -35,8 +35,8 @@ android:layout_width="64dip" android:layout_height="64dip" android:layout_above="@id/shutter_button" - android:layout_alignParentRight="true" - android:layout_marginRight="6dip" + android:layout_alignParentEnd="true" + android:layout_marginEnd="6dip" android:layout_marginTop="-5dip" layout="@layout/menu_indicators_keyguard" /> @@ -44,8 +44,8 @@ android:id="@+id/camera_switcher" style="@style/SwitcherButton" android:layout_below="@id/shutter_button" - android:layout_alignParentRight="true" - android:layout_marginRight="2dip" + android:layout_alignParentEnd="true" + android:layout_marginEnd="2dip" android:contentDescription="@string/accessibility_mode_picker" android:scaleType="center" android:src="@drawable/ic_switch_camera" /> @@ -54,8 +54,8 @@ android:id="@+id/camera_switcher_ind" style="@style/SwitcherButton" android:layout_below="@id/shutter_button" - android:layout_alignParentRight="true" - android:layout_marginRight="2dip" + android:layout_alignParentEnd="true" + android:layout_marginEnd="2dip" android:contentDescription="@string/accessibility_mode_picker" android:scaleType="center" android:src="@drawable/ic_switcher_menu_indicator" /> diff --git a/res/layout-land/review_module_control.xml b/res/layout-land/review_module_control.xml index 9f8b0cd46..6e0ee4a48 100644 --- a/res/layout-land/review_module_control.xml +++ b/res/layout-land/review_module_control.xml @@ -16,21 +16,21 @@ <com.android.camera.ui.RotatableLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/CameraControls" - android:layout_gravity="right|center_vertical" - android:layout_marginRight="2dip"> + android:layout_gravity="end|center_vertical" + android:layout_marginEnd="2dip"> <ImageView android:id="@+id/btn_done" style="@style/ReviewControlIcon" android:contentDescription="@string/accessibility_review_ok" android:visibility="gone" android:scaleType="center" - android:layout_gravity="top|right" + android:layout_gravity="top|end" android:background="@drawable/bg_pressed" android:src="@drawable/ic_menu_done_holo_light" /> <ImageView android:id="@+id/btn_retake" style="@style/ReviewControlIcon" android:contentDescription="@string/accessibility_review_retake" - android:layout_gravity="right|center_vertical" + android:layout_gravity="end|center_vertical" android:scaleType="center" android:focusable="true" android:visibility="gone" @@ -42,7 +42,7 @@ android:contentDescription="@string/accessibility_review_cancel" android:visibility="gone" android:scaleType="center" - android:layout_gravity="bottom|right" + android:layout_gravity="bottom|end" android:background="@drawable/bg_pressed" android:src="@drawable/ic_menu_cancel_holo_light" /> </com.android.camera.ui.RotatableLayout> diff --git a/res/layout-land/switcher_popup.xml b/res/layout-land/switcher_popup.xml index fc2d7bc77..ebb4243f6 100644 --- a/res/layout-land/switcher_popup.xml +++ b/res/layout-land/switcher_popup.xml @@ -19,10 +19,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" - android:layout_marginRight="8dip" + android:layout_marginEnd="8dip" android:layout_marginBottom="8dip" - android:paddingLeft="8dip" - android:paddingRight="8dip" + android:paddingStart="8dip" + android:paddingEnd="8dip" android:paddingTop="16dip" android:paddingBottom="16dip" android:background="#80000000" /> diff --git a/res/layout-port/camera_controls.xml b/res/layout-port/camera_controls.xml index 5f89830c5..e3ad8c152 100644 --- a/res/layout-port/camera_controls.xml +++ b/res/layout-port/camera_controls.xml @@ -31,7 +31,7 @@ android:layout_height="64dip" android:layout_gravity="bottom|right" android:layout_marginBottom="6dip" - android:layout_marginRight="-5dip" /> + android:layout_marginEnd="-5dip" /> <com.android.camera.ui.PieMenuButton android:id="@+id/menu" diff --git a/res/layout-port/keyguard_widget.xml b/res/layout-port/keyguard_widget.xml index 28b59c44d..40a601f57 100644 --- a/res/layout-port/keyguard_widget.xml +++ b/res/layout-port/keyguard_widget.xml @@ -32,15 +32,15 @@ <include layout="@layout/menu_indicators_keyguard" android:layout_width="64dip" android:layout_height="64dip" - android:layout_toRightOf="@id/shutter" + android:layout_toEndOf="@id/shutter" android:layout_alignParentBottom="true" android:layout_marginBottom="6dip" - android:layout_marginRight="-5dip" /> + android:layout_marginEnd="-5dip" /> <ImageView android:id="@+id/camera_switcher" style="@style/SwitcherButton" - android:layout_toLeftOf="@id/shutter" + android:layout_toStartOf="@id/shutter" android:layout_alignParentBottom="true" android:layout_marginBottom="2dip" android:scaleType="center" @@ -50,7 +50,7 @@ <ImageView android:id="@+id/camera_switcher_ind" style="@style/SwitcherButton" - android:layout_toLeftOf="@id/shutter" + android:layout_toStartOf="@id/shutter" android:layout_alignParentBottom="true" android:layout_marginBottom="2dip" android:scaleType="center" diff --git a/res/layout-port/review_module_control.xml b/res/layout-port/review_module_control.xml index 3c4280ed2..c7b04f79a 100644 --- a/res/layout-port/review_module_control.xml +++ b/res/layout-port/review_module_control.xml @@ -23,7 +23,7 @@ android:contentDescription="@string/accessibility_review_ok" android:visibility="gone" android:scaleType="center" - android:layout_gravity="right|bottom" + android:layout_gravity="end|bottom" android:background="@drawable/bg_pressed" android:src="@drawable/ic_menu_done_holo_light" /> @@ -42,7 +42,7 @@ android:contentDescription="@string/accessibility_review_cancel" android:visibility="gone" android:scaleType="center" - android:layout_gravity="left|bottom" + android:layout_gravity="start|bottom" android:background="@drawable/bg_pressed" android:src="@drawable/ic_menu_cancel_holo_light" /> </com.android.camera.ui.RotatableLayout> diff --git a/res/layout-port/switcher_popup.xml b/res/layout-port/switcher_popup.xml index 8fe09a361..609f869db 100644 --- a/res/layout-port/switcher_popup.xml +++ b/res/layout-port/switcher_popup.xml @@ -19,10 +19,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|left" - android:layout_marginLeft="8dip" + android:layout_marginStart="8dip" android:layout_marginBottom="8dip" - android:paddingLeft="16dip" - android:paddingRight="16dip" + android:paddingStart="16dip" + android:paddingEnd="16dip" android:paddingTop="8dip" android:paddingBottom="8dip" android:background="#80000000" /> diff --git a/res/layout/action_bar_text.xml b/res/layout/action_bar_text.xml index a33264702..10839eaa0 100644 --- a/res/layout/action_bar_text.xml +++ b/res/layout/action_bar_text.xml @@ -21,8 +21,8 @@ android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:gravity="center_vertical" - android:paddingLeft="18dp" - android:paddingRight="18dp" + android:paddingStart="18dp" + android:paddingEnd="18dp" android:singleLine="true" android:minHeight="?attr/listPreferredItemHeightSmall" /> diff --git a/res/layout/action_bar_two_line_text.xml b/res/layout/action_bar_two_line_text.xml index 92a4af926..6233d8eb0 100644 --- a/res/layout/action_bar_two_line_text.xml +++ b/res/layout/action_bar_two_line_text.xml @@ -19,7 +19,7 @@ android:orientation="vertical" android:gravity="center_vertical" android:duplicateParentState="false" - android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_width="wrap_content" > <TextView android:id="@android:id/text1" @@ -35,7 +35,7 @@ android:singleLine="true" android:ellipsize="end" android:includeFontPadding="false" - android:layout_marginRight="4dp" + android:layout_marginEnd="4dp" android:layout_below="@android:id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> diff --git a/res/layout/action_mode.xml b/res/layout/action_mode.xml index 6c516e618..096187b95 100644 --- a/res/layout/action_mode.xml +++ b/res/layout/action_mode.xml @@ -14,35 +14,22 @@ limitations under the License. --> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/navigation_bar" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="horizontal"> - - <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" android:layout_height="match_parent"> - <ImageView android:layout_gravity="right" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:src="@drawable/dropdown_ic_arrow_normal_holo_dark" /> - <Button android:id="@+id/selection_menu" - style="?android:attr/actionButtonStyle" - android:divider="?android:attr/listDividerAlertDialog" - android:textAppearance="?android:attr/textAppearanceLargePopupMenu" - android:textColor="?android:attr/actionMenuTextColor" - android:singleLine="true" - android:gravity="left|center_vertical" - android:paddingRight="25dip" - android:layout_width="wrap_content" - android:layout_height="match_parent" /> - </FrameLayout> - <ImageView android:layout_marginLeft="16dip" - android:layout_marginRight="8dip" + <Button android:id="@+id/selection_menu" + style="?android:attr/actionButtonStyle" + android:divider="?android:attr/listDividerAlertDialog" + android:textAppearance="?android:attr/textAppearanceLargePopupMenu" + android:textColor="?android:attr/actionMenuTextColor" + android:singleLine="true" + android:gravity="left|center_vertical" + android:paddingRight="25dip" android:layout_width="wrap_content" - android:layout_height="match_parent" - android:gravity="bottom" - android:src="@drawable/cab_divider_vertical_dark" /> -</LinearLayout> + android:layout_height="match_parent" /> + <ImageView android:layout_width="wrap_content" + android:layout_height="match_parent" + android:src="@drawable/dropdown_ic_arrow" + android:layout_toRightOf="@id/selection_menu"/> + +</RelativeLayout> diff --git a/res/layout/album_header.xml b/res/layout/album_header.xml index 76c9a457f..caae962b3 100644 --- a/res/layout/album_header.xml +++ b/res/layout/album_header.xml @@ -27,8 +27,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:layout_alignParentLeft="true" - android:paddingLeft="15dip" + android:layout_alignParentStart="true" + android:paddingStart="15dip" android:paddingBottom="10dip" android:paddingTop="20dip" android:background="@drawable/white_text_bg_gradient" diff --git a/res/layout/appwidget_main.xml b/res/layout/appwidget_main.xml index 0accabb50..368d90bc5 100644 --- a/res/layout/appwidget_main.xml +++ b/res/layout/appwidget_main.xml @@ -31,6 +31,7 @@ android:layout_width="@dimen/stack_photo_width" android:layout_height="@dimen/stack_photo_height" android:gravity="center" + android:textColor="@android:color/black" android:text="@string/appwidget_empty_text"/> </FrameLayout> </RelativeLayout> diff --git a/res/layout/audio_effects_dialog.xml b/res/layout/audio_effects_dialog.xml new file mode 100644 index 000000000..49dcafb56 --- /dev/null +++ b/res/layout/audio_effects_dialog.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:custom="http://schemas.android.com/apk/res/com.android.gallery3d" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center"> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center_horizontal" + android:paddingBottom="10dp"> + + <LinearLayout + android:id="@+id/aEffectsPanel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginTop="12dp" + android:layout_marginBottom="10dp" + android:gravity="center_vertical"> + + <com.android.gallery3d.ui.Knob + android:id="@+id/bBStrengthKnob" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + custom:label="@string/bass_boost_strength" + custom:foreground="@drawable/knob" /> + + <com.android.gallery3d.ui.Knob + android:id="@+id/vIStrengthKnob" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + custom:label="@string/virtualizer_strength" + custom:foreground="@drawable/knob" /> + + </LinearLayout> + </LinearLayout> +</LinearLayout> diff --git a/res/layout/audio_effects_title.xml b/res/layout/audio_effects_title.xml new file mode 100644 index 000000000..fcfb11d1e --- /dev/null +++ b/res/layout/audio_effects_title.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright (c) 2014, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:custom="http://schemas.android.com/apk/res/com.android.gallery3d" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="left|center_vertical"> + + <TextView + android:text="@string/audio_effects_dialog_title" + android:gravity="left|center_vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="10dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + android:textSize="20dp" /> + + <View + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" /> + + <ToggleButton + android:id="@+id/audio_effects_switch" + android:textOn="" + android:textOff="" + android:layout_width="72dp" + android:layout_height="34dp" + android:layout_marginEnd="4dp"/> +</LinearLayout> diff --git a/res/layout/bookmark.xml b/res/layout/bookmark.xml new file mode 100644 index 000000000..ac4ac34a4 --- /dev/null +++ b/res/layout/bookmark.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" > + + <ListView + android:id="@android:id/list" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + + <TextView + android:id="@android:id/empty" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_centerInParent="true" + android:gravity="center" + android:paddingBottom="30dip" + android:text="@string/bookmark_empty" + android:textAppearance="?android:attr/textAppearanceLarge" + android:visibility="gone" /> +</FrameLayout> diff --git a/res/layout/bookmark_edit_dialog.xml b/res/layout/bookmark_edit_dialog.xml new file mode 100644 index 000000000..8282d39af --- /dev/null +++ b/res/layout/bookmark_edit_dialog.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content" > + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="8dip" > + + <TextView + style="?android:attr/textAppearanceSmallInverse" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/bookmark_title" /> + + <EditText + android:id="@+id/title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="2dip" + android:inputType="text" + android:scrollHorizontally="true" + android:singleLine="true" /> + + <TextView + style="?android:attr/textAppearanceSmallInverse" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/bookmark_location" /> + + <EditText + android:id="@+id/data" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="2dip" + android:inputType="textUri" + android:scrollHorizontally="true" + android:singleLine="true" /> + </LinearLayout> + +</ScrollView> diff --git a/res/layout/bookmark_item.xml b/res/layout/bookmark_item.xml new file mode 100644 index 000000000..3fb2fab89 --- /dev/null +++ b/res/layout/bookmark_item.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/panel" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="6dip" > + + <TextView + android:id="@+id/title" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:singleLine="true" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + <TextView + android:id="@+id/data" + android:layout_width="wrap_content" + android:layout_height="match_parent" /> + +</LinearLayout> diff --git a/res/layout/camera_filmstrip.xml b/res/layout/camera_filmstrip.xml index d94a9d2a8..6fbc62114 100644 --- a/res/layout/camera_filmstrip.xml +++ b/res/layout/camera_filmstrip.xml @@ -32,8 +32,8 @@ android:background="@drawable/transparent_button_background" android:clickable="true" android:paddingBottom="5dp" - android:paddingLeft="5dp" - android:paddingRight="5dp" + android:paddingStart="5dp" + android:paddingEnd="5dp" android:paddingTop="5dp" android:visibility="gone" android:src="@drawable/ic_view_photosphere" /> @@ -44,8 +44,8 @@ android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal" android:paddingBottom="52dp" - android:paddingLeft="5dp" - android:paddingRight="5dp" + android:paddingStart="5dp" + android:paddingEnd="5dp" android:paddingTop="5dp" android:visibility="gone" android:orientation="vertical"> @@ -61,10 +61,10 @@ android:shadowRadius="2" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:paddingBottom="8dp" android:visibility="visible" - android:layout_gravity="right"/> + android:layout_gravity="end"/> <ProgressBar android:id="@+id/pano_stitching_progress_bar" diff --git a/res/layout/choose_widget_type.xml b/res/layout/choose_widget_type.xml index 5f1739ad3..d8af048b9 100644 --- a/res/layout/choose_widget_type.xml +++ b/res/layout/choose_widget_type.xml @@ -16,8 +16,8 @@ <RadioGroup xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/widget_type" - android:paddingLeft="32dp" - android:paddingRight="32dp" + android:paddingStart="32dp" + android:paddingEnd="32dp" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> @@ -42,8 +42,8 @@ <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_weight="0" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" android:background="?android:attr/dividerHorizontal" /> <Button style="?android:attr/buttonBarButtonStyle" android:id="@+id/cancel" diff --git a/res/layout/count_down_to_capture.xml b/res/layout/count_down_to_capture.xml index 68276ad40..5cf1e3f94 100644 --- a/res/layout/count_down_to_capture.xml +++ b/res/layout/count_down_to_capture.xml @@ -27,7 +27,7 @@ <TextView android:id="@+id/count_down_title" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingLeft="10dp" + android:paddingStart="10dp" android:paddingTop="20dp" android:textSize="20sp" android:textColor="@android:color/white" diff --git a/res/layout/countdown_setting_popup.xml b/res/layout/countdown_setting_popup.xml index 22acd9251..1a314ad56 100644 --- a/res/layout/countdown_setting_popup.xml +++ b/res/layout/countdown_setting_popup.xml @@ -55,8 +55,8 @@ android:layout_width="160dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:layout_marginLeft="16dip" - android:layout_marginRight="16dip" + android:layout_marginStart="16dip" + android:layout_marginEnd="16dip" android:focusable="false" /> </LinearLayout> diff --git a/res/layout/dialog_picker.xml b/res/layout/dialog_picker.xml index ccc512154..fc5f2877a 100644 --- a/res/layout/dialog_picker.xml +++ b/res/layout/dialog_picker.xml @@ -26,8 +26,8 @@ </FrameLayout> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" android:background="@drawable/list_divider_holo_dark" /> <Button style="?android:attr/buttonBarButtonStyle" android:id="@+id/cancel" diff --git a/res/layout/editor_grad_button.xml b/res/layout/editor_grad_button.xml index 4d1b10b6b..032eb686a 100644 --- a/res/layout/editor_grad_button.xml +++ b/res/layout/editor_grad_button.xml @@ -20,7 +20,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:layout_alignParentTop="true" - android:layout_marginLeft="26dp" + android:layout_marginStart="26dp" android:layout_marginTop="21dp" android:orientation="horizontal" > diff --git a/res/layout/filtershow_actionbar.xml b/res/layout/filtershow_actionbar.xml index 5f0aa3ff6..924d7178d 100644 --- a/res/layout/filtershow_actionbar.xml +++ b/res/layout/filtershow_actionbar.xml @@ -17,11 +17,10 @@ <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" - android:background="@drawable/filtershow_button_background" android:id="@+id/filtershow_done" android:textAllCaps="true" android:text="@string/save" android:gravity="center_vertical" android:textSize="14sp" - android:drawableLeft="@drawable/menu_save_photo" + android:drawableStart="@drawable/menu_save_photo" android:drawablePadding="8dip" />
\ No newline at end of file diff --git a/res/layout/filtershow_activity.xml b/res/layout/filtershow_activity.xml index 79c315b7b..e3f4a0eeb 100644 --- a/res/layout/filtershow_activity.xml +++ b/res/layout/filtershow_activity.xml @@ -19,7 +19,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mainView" - android:background="@drawable/filtershow_tiled_background"> + android:background="@color/filtershow_background"> <LinearLayout android:layout_width="match_parent" @@ -33,7 +33,7 @@ <ProgressBar android:id="@+id/loading" - style="@android:style/Widget.Holo.ProgressBar.Large" + style="@android:style/Widget.Material.ProgressBar.Large" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" diff --git a/res/layout/filtershow_color_picker.xml b/res/layout/filtershow_color_picker.xml index e56bc0d49..7b05765fc 100644 --- a/res/layout/filtershow_color_picker.xml +++ b/res/layout/filtershow_color_picker.xml @@ -30,8 +30,8 @@ android:id="@+id/btnSelect" android:layout_width="match_parent" android:layout_height="32dp" - android:layout_marginLeft="20dp" - android:layout_marginRight="20dp" + android:layout_marginStart="20dp" + android:layout_marginEnd="20dp" android:layout_marginTop="20dp" android:layout_marginBottom="0dp" /> @@ -40,7 +40,7 @@ android:layout_width="match_parent" android:layout_height="256dp" android:layout_marginTop="0dp" - android:layout_marginRight="1dp"/> + android:layout_marginEnd="1dp"/> <com.android.gallery3d.filtershow.colorpicker.ColorHueView android:id="@+id/ColorHueView" diff --git a/res/layout/filtershow_control_action_slider.xml b/res/layout/filtershow_control_action_slider.xml index 34eac1e69..ebaf7be18 100644 --- a/res/layout/filtershow_control_action_slider.xml +++ b/res/layout/filtershow_control_action_slider.xml @@ -48,7 +48,7 @@ android:scaleType="centerInside" android:layout_weight="0" android:background="@drawable/filtershow_button_background" - android:src="@drawable/ic_menu_trash_holo_light" + android:src="@drawable/ic_menu_trash" android:paddingBottom="8dp" /> </LinearLayout> diff --git a/res/layout/filtershow_control_color_chooser.xml b/res/layout/filtershow_control_color_chooser.xml index 5bfe46031..145041cf0 100644 --- a/res/layout/filtershow_control_color_chooser.xml +++ b/res/layout/filtershow_control_color_chooser.xml @@ -33,7 +33,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button02" @@ -41,7 +41,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button03" @@ -49,7 +49,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button04" @@ -57,7 +57,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> <Button android:id="@+id/draw_color_button05" @@ -65,7 +65,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:background="@drawable/filtershow_color_picker_circle" - android:layout_marginRight="4dp"/> + android:layout_marginEnd="4dp"/> </LinearLayout> diff --git a/res/layout/filtershow_control_style_chooser.xml b/res/layout/filtershow_control_style_chooser.xml index 9588ea208..d0004ffe2 100644 --- a/res/layout/filtershow_control_style_chooser.xml +++ b/res/layout/filtershow_control_style_chooser.xml @@ -18,7 +18,7 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/com.example.imagefilterharness" android:layout_width="match_parent" - android:layout_height="32dp" + android:layout_height="wrap_content" android:orientation="horizontal" > <HorizontalScrollView android:id="@+id/scrollList" diff --git a/res/layout/filtershow_control_title_slider.xml b/res/layout/filtershow_control_title_slider.xml index 584e015fa..23a59785c 100644 --- a/res/layout/filtershow_control_title_slider.xml +++ b/res/layout/filtershow_control_title_slider.xml @@ -23,13 +23,13 @@ <TextView android:id="@+id/controlName" - android:layout_gravity="left" - android:layout_marginLeft="8dip" /> + android:layout_gravity="start" + android:layout_marginStart="8dip" /> <TextView android:id="@+id/controlValue" - android:layout_gravity="right" - android:layout_marginRight="8dip" + android:layout_gravity="end" + android:layout_marginEnd="8dip" android:textStyle="bold" /> <SeekBar diff --git a/res/layout/filtershow_cp_custom_title.xml b/res/layout/filtershow_cp_custom_title.xml index cef8b6c05..5d7ed924b 100644 --- a/res/layout/filtershow_cp_custom_title.xml +++ b/res/layout/filtershow_cp_custom_title.xml @@ -21,6 +21,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" - android:layout_marginLeft="20dp" - android:layout_marginRight="20dp" > + android:layout_marginStart="20dp" + android:layout_marginEnd="20dp" > </TextView>
\ No newline at end of file diff --git a/res/layout/filtershow_export_dialog.xml b/res/layout/filtershow_export_dialog.xml index 4e13f39da..8dc5fc386 100644 --- a/res/layout/filtershow_export_dialog.xml +++ b/res/layout/filtershow_export_dialog.xml @@ -40,7 +40,7 @@ <TextView android:text="@string/size" - android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:layout_gravity="start|center_vertical"/> <EditText @@ -61,7 +61,7 @@ <TextView android:id="@+id/estimadedSize" - android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" android:layout_gravity="end|center_vertical"/> <LinearLayout diff --git a/res/layout/filtershow_info_panel.xml b/res/layout/filtershow_info_panel.xml index 43878b6ac..1ca64bd6d 100644 --- a/res/layout/filtershow_info_panel.xml +++ b/res/layout/filtershow_info_panel.xml @@ -74,7 +74,7 @@ android:layout_width="0dp" android:layout_height="196dp" android:scaleType="centerCrop" - android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" android:background="@null" /> diff --git a/res/layout/filtershow_main_panel.xml b/res/layout/filtershow_main_panel.xml index d3400fae5..f8b26b088 100644 --- a/res/layout/filtershow_main_panel.xml +++ b/res/layout/filtershow_main_panel.xml @@ -95,8 +95,19 @@ android:scaleType="centerInside" android:src="@drawable/ic_photoeditor_color"/> + <ImageButton + android:id="@+id/makeupButton" + android:layout_width="@dimen/thumbnail_size" + android:layout_height="match_parent" + android:layout_weight="1" + android:padding="2dip" + android:background="@drawable/filtershow_button_background" + android:scaleType="centerInside" + android:visibility="gone" + android:src="@drawable/ic_photoeditor_makeup"/> + </LinearLayout> </com.android.gallery3d.filtershow.CenteredLinearLayout> -</LinearLayout>
\ No newline at end of file +</LinearLayout> diff --git a/res/layout/filtershow_presets_management_row.xml b/res/layout/filtershow_presets_management_row.xml index bd3e47928..d4e05bafe 100644 --- a/res/layout/filtershow_presets_management_row.xml +++ b/res/layout/filtershow_presets_management_row.xml @@ -47,6 +47,6 @@ android:background="@android:color/transparent" android:layout_weight=".1" android:gravity="center" - android:src="@drawable/ic_menu_trash_holo_light" + android:src="@drawable/ic_menu_trash" android:visibility="gone"/> </LinearLayout>
\ No newline at end of file diff --git a/res/layout/filtershow_splashscreen.xml b/res/layout/filtershow_splashscreen.xml index 06958cab2..8d7fe3eb3 100644 --- a/res/layout/filtershow_splashscreen.xml +++ b/res/layout/filtershow_splashscreen.xml @@ -23,7 +23,7 @@ android:padding="10dip"> <ProgressBar android:id="@+id/progress_bar" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" diff --git a/res/layout/ingest_date_tile.xml b/res/layout/ingest_date_tile.xml index 8cd63e9a0..b04221361 100644 --- a/res/layout/ingest_date_tile.xml +++ b/res/layout/ingest_date_tile.xml @@ -61,4 +61,4 @@ android:fontFamily="sans-serif" android:textColor="@color/ingest_date_tile_text" /> </GridLayout> -</com.android.gallery3d.ingest.ui.DateTileView>
\ No newline at end of file +</com.android.gallery3d.ingest.ui.DateTileView> diff --git a/res/layout/ingest_fullsize.xml b/res/layout/ingest_fullsize.xml index d57c4ae50..91a3fcf20 100644 --- a/res/layout/ingest_fullsize.xml +++ b/res/layout/ingest_fullsize.xml @@ -41,4 +41,4 @@ android:layout_alignParentRight="true" android:text="@string/ingest_import" /> -</com.android.gallery3d.ingest.ui.MtpFullscreenView>
\ No newline at end of file +</com.android.gallery3d.ingest.ui.MtpFullscreenView> diff --git a/res/layout/knob.xml b/res/layout/knob.xml new file mode 100644 index 000000000..d504774e7 --- /dev/null +++ b/res/layout/knob.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> + +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/knob_foreground" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + <ImageView + android:id="@+id/knob_toggle_on" + android:layout_gravity="center_horizontal|center_vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/knob_toggle_on" + android:visibility="gone" /> + <ImageView + android:id="@+id/knob_toggle_off" + android:layout_gravity="center_horizontal|center_vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/knob_toggle_off" + android:visibility="gone" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center_horizontal" + android:orientation="vertical" + android:gravity="center_horizontal"> + + <TextView + android:id="@+id/knob_value" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="gone" /> + <TextView + android:id="@+id/knob_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center" + android:ellipsize="marquee" + android:visibility="gone" /> + </LinearLayout> + +</FrameLayout> diff --git a/res/layout/main.xml b/res/layout/main.xml index 08e595959..e26e0fc6b 100644 --- a/res/layout/main.xml +++ b/res/layout/main.xml @@ -13,8 +13,8 @@ <FrameLayout android:id="@+id/footer" android:visibility="gone" android:layout_alignParentBottom="true" - android:layout_alignParentLeft="true" - android:layout_alignParentRight="true" + android:layout_alignParentStart="true" + android:layout_alignParentEnd="true" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout> diff --git a/res/layout/manage_offline_bar.xml b/res/layout/manage_offline_bar.xml index 5c716133d..6996180f0 100644 --- a/res/layout/manage_offline_bar.xml +++ b/res/layout/manage_offline_bar.xml @@ -39,23 +39,23 @@ </RelativeLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="@dimen/manage_cache_bottom_height" - android:paddingLeft="16dp" - android:paddingRight="16dp" + android:paddingStart="16dp" + android:paddingEnd="16dp" android:background="#1f1f1f"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/make_available_offline" android:textSize="14sp" - android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_centerVertical="true" android:gravity="center_vertical" - android:drawableLeft="@drawable/ic_menu_make_offline" + android:drawableStart="@drawable/ic_menu_make_offline" android:drawablePadding="3dp"/> <Button android:id="@+id/done" android:layout_width="74dp" android:layout_height="match_parent" android:text="@string/done" android:textSize="14sp" - android:layout_alignParentRight="true"/> + android:layout_alignParentEnd="true"/> </RelativeLayout> </LinearLayout> diff --git a/res/layout/menu_indicators_keyguard.xml b/res/layout/menu_indicators_keyguard.xml index 7a8795d23..b8f36cf78 100644 --- a/res/layout/menu_indicators_keyguard.xml +++ b/res/layout/menu_indicators_keyguard.xml @@ -21,7 +21,7 @@ <ImageView android:id="@+id/menu_scenemode_indicator" style="@style/MenuIndicator" - android:layout_gravity="left|top" + android:layout_gravity="start|top" android:src="@drawable/ic_indicator_sce_off" /> <ImageView @@ -33,13 +33,13 @@ <ImageView android:id="@+id/menu_flash_indicator" style="@style/MenuIndicator" - android:layout_gravity="right|top" + android:layout_gravity="end|top" android:src="@drawable/ic_indicator_flash_auto" /> <ImageView android:id="@+id/menu_exposure_indicator" style="@style/MenuIndicator" - android:layout_gravity="left|bottom" + android:layout_gravity="start|bottom" android:src="@drawable/ic_indicator_ev_0" /> <ImageView @@ -51,7 +51,7 @@ <ImageView android:id="@+id/menu_wb_indicator" style="@style/MenuIndicator" - android:layout_gravity="right|bottom" + android:layout_gravity="end|bottom" android:src="@drawable/ic_indicator_wb_off" /> </FrameLayout>
\ No newline at end of file diff --git a/res/layout/movie_view.xml b/res/layout/movie_view.xml index 75b8dfd4f..a08679280 100644 --- a/res/layout/movie_view.xml +++ b/res/layout/movie_view.xml @@ -19,7 +19,7 @@ android:background="@android:color/black" android:layout_width="match_parent" android:layout_height="match_parent"> - <VideoView android:id="@+id/surface_view" + <org.codeaurora.gallery3d.video.CodeauroraVideoView android:id="@+id/surface_view" android:visibility="invisible" android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/res/layout/multigrid_content.xml b/res/layout/multigrid_content.xml index b1cb145a2..618af4898 100644 --- a/res/layout/multigrid_content.xml +++ b/res/layout/multigrid_content.xml @@ -36,7 +36,7 @@ </LinearLayout> - <FrameLayout android:id="@+id/gridContainer" + <HorizontalScrollView android:id="@+id/gridContainer" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -52,6 +52,6 @@ android:layout_height="match_parent" android:gravity="center" android:textAppearance="?android:attr/textAppearanceMedium" /> - </FrameLayout> + </HorizontalScrollView> -</FrameLayout>
\ No newline at end of file +</FrameLayout> diff --git a/res/layout/photo_frame.xml b/res/layout/photo_frame.xml index deadaebc1..63faf539d 100755 --- a/res/layout/photo_frame.xml +++ b/res/layout/photo_frame.xml @@ -19,8 +19,8 @@ android:layout_height="match_parent" android:paddingTop="4dp" android:paddingBottom="23dp" - android:paddingLeft="12dp" - android:paddingRight="12dp"> + android:paddingStart="12dp" + android:paddingEnd="12dp"> <ImageView android:id="@+id/photo" android:layout_gravity="center" android:layout_width="wrap_content" diff --git a/res/layout/photopage_bottom_controls.xml b/res/layout/photopage_bottom_controls.xml index f3226e68c..51f714ede 100644 --- a/res/layout/photopage_bottom_controls.xml +++ b/res/layout/photopage_bottom_controls.xml @@ -1,50 +1,80 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/photopage_bottom_controls" - android:padding="10dp" - android:layout_width="match_parent" + android:id="@+id/photopage_bottom_controls" + android:padding="10dp" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_alignParentRight="true" + android:orientation="horizontal" + android:visibility="gone"> + + <FrameLayout + android:id="@+id/photopage_bottom_control_tiny_planet" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/floating_action_button_margin_left" + android:layout_marginBottom="@dimen/floating_action_button_margin_bottom" + android:layout_alignParentLeft="true" + android:layout_alignParentBottom="true" + android:background="@drawable/floating_action_button" + android:elevation="@dimen/floating_action_button_translation_z" + android:clickable="true" + android:visibility="gone"> + <ImageButton + android:layout_width="@dimen/floating_action_button_width" + android:layout_height="@dimen/floating_action_button_height" + android:id="@+id/floating_action_button_tiny_planet" + android:background="@drawable/floating_action_button" + android:tint="@color/floating_action_button_icon_color" + android:src="@drawable/ic_menu_tiny_planet" + android:clickable="false" + android:duplicateParentState="true"/> + </FrameLayout> + + <FrameLayout + android:id="@+id/photopage_bottom_control_panorama" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/floating_action_button_margin_left" + android:layout_marginBottom="@dimen/floating_action_button_margin_bottom" + android:layout_centerHorizontal="true" + android:layout_alignParentBottom="true" + android:background="@drawable/floating_action_button" + android:elevation="@dimen/floating_action_button_translation_z" + android:clickable="true" + android:visibility="gone"> + <ImageButton + android:layout_width="70dp" + android:layout_height="70dp" + android:id="@+id/floating_action_button_panorama" + android:background="@drawable/floating_action_button" + android:tint="@color/floating_action_button_icon_color" + android:src="@drawable/ic_view_photosphere" + android:clickable="false" + android:duplicateParentState="true"/> + </FrameLayout> + + <FrameLayout + android:id="@+id/photopage_bottom_control_edit" + android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/floating_action_button_margin_right" + android:layout_marginBottom="@dimen/floating_action_button_margin_bottom" + android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" - android:layout_alignParentLeft="true" - android:orientation="horizontal" + android:background="@drawable/fab_accent" + android:elevation="@dimen/floating_action_button_translation_z" + android:clickable="true" android:visibility="gone"> <ImageButton - android:id="@+id/photopage_bottom_control_edit" - android:src="@drawable/ic_menu_edit_holo_dark" - android:background="@drawable/photopage_bottom_button_background" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_alignParentBottom="true" - android:paddingTop="5dp" - android:paddingBottom="5dp" - android:paddingLeft="15dp" - android:paddingRight="15dp" - android:visibility="gone"/> - <ImageButton - android:id="@+id/photopage_bottom_control_panorama" - android:src="@drawable/ic_view_photosphere" - android:background="@drawable/transparent_button_background" - android:layout_width="70dp" - android:layout_height="70dp" - android:layout_centerHorizontal="true" - android:layout_alignParentBottom="true" - android:paddingTop="5dp" - android:paddingBottom="5dp" - android:paddingLeft="5dp" - android:paddingRight="5dp" - android:visibility="gone"/> - <ImageButton - android:id="@+id/photopage_bottom_control_tiny_planet" - android:src="@drawable/ic_menu_tiny_planet" - android:background="@drawable/photopage_bottom_button_background" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentRight="true" - android:layout_alignParentBottom="true" - android:paddingTop="5dp" - android:paddingBottom="5dp" - android:paddingLeft="15dp" - android:paddingRight="15dp" - android:visibility="gone"/> -</RelativeLayout> + android:layout_width="@dimen/floating_action_button_width" + android:layout_height="@dimen/floating_action_button_height" + android:id="@+id/floating_action_button_edit" + android:background="@drawable/floating_action_button" + android:tint="@color/floating_action_button_icon_color" + android:src="@drawable/ic_edit" + android:clickable="false" + android:duplicateParentState="true"/> + </FrameLayout> + </RelativeLayout> diff --git a/res/layout/photopage_progress_bar.xml b/res/layout/photopage_progress_bar.xml index 778feb365..57b78320b 100644 --- a/res/layout/photopage_progress_bar.xml +++ b/res/layout/photopage_progress_bar.xml @@ -4,7 +4,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:padding="25dp" android:visibility="invisible"> <View @@ -19,7 +19,7 @@ android:background="#ff33b5e5" android:layout_width="10dp" android:layout_height="8dp" - android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" android:layout_alignParentBottom="true" android:visibility="visible"/> <TextView @@ -33,7 +33,7 @@ android:shadowRadius="2" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_above="@id/photopage_progress_background" android:paddingBottom="8dp" android:visibility="visible"/> diff --git a/res/layout/popup_list_item.xml b/res/layout/popup_list_item.xml index 5a87af7cc..837da0a5d 100644 --- a/res/layout/popup_list_item.xml +++ b/res/layout/popup_list_item.xml @@ -21,8 +21,8 @@ android:textAppearance="?android:attr/textAppearanceLargePopupMenu" android:singleLine="true" android:gravity="center_vertical" - android:paddingLeft="16dp" - android:paddingRight="16dp" + android:paddingStart="16dp" + android:paddingEnd="16dp" android:minHeight="?android:attr/listPreferredItemHeight" android:minWidth="196dp" /> diff --git a/res/layout/rotate_dialog.xml b/res/layout/rotate_dialog.xml index c62ce915b..c1cf866b7 100644 --- a/res/layout/rotate_dialog.xml +++ b/res/layout/rotate_dialog.xml @@ -44,8 +44,8 @@ <TextView android:id="@+id/rotate_dialog_title" style="@style/TextAppearance.DialogWindowTitle" android:gravity="center_vertical" - android:layout_marginLeft="16dip" - android:layout_marginRight="16dip" + android:layout_marginStart="16dip" + android:layout_marginEnd="16dip" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="64dp"/> diff --git a/res/layout/setting_list.xml b/res/layout/setting_list.xml new file mode 100644 index 000000000..51ad7538e --- /dev/null +++ b/res/layout/setting_list.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> + <!-- + /* * Copyright (C) 2008 Esmertec AG. * Copyright (C) 2008 The Android + Open Source Project * * Licensed under the Apache License, Version 2.0 + (the "License"); * you may not use this file except in compliance with + the License. * You may obtain a copy of the License at * * + http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by + applicable law or agreed to in writing, software * distributed under the + License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. * See the License for + the specific language governing permissions and * limitations under the + License. */ + --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" android:layout_width="match_parent" + android:layout_height="match_parent"> + <ListView android:id="@android:id/list" android:layout_width="match_parent" + android:layout_height="0px" android:layout_weight="1" + android:paddingStart="16dip" android:paddingEnd="16dip" + android:paddingTop="0dp" android:paddingBottom="0dp" + android:clipToPadding="false" android:scrollbarStyle="outsideOverlay" + android:drawSelectorOnTop="false" android:cacheColorHint="@android:color/transparent" + android:listPreferredItemHeight="48dp" + android:scrollbarAlwaysDrawVerticalTrack="true" /> +</LinearLayout> + diff --git a/res/layout/time_interval_picker.xml b/res/layout/time_interval_picker.xml index d2a946273..daab1c8b8 100644 --- a/res/layout/time_interval_picker.xml +++ b/res/layout/time_interval_picker.xml @@ -40,8 +40,8 @@ android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingLeft="16dip" - android:paddingRight="16dip" > + android:paddingStart="16dip" + android:paddingEnd="16dip" > <!-- time interval duration --> <NumberPicker @@ -57,7 +57,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="2" - android:layout_marginLeft="20dip" + android:layout_marginStart="20dip" android:focusable="false" /> </LinearLayout> diff --git a/res/layout/time_interval_popup.xml b/res/layout/time_interval_popup.xml index 9cf224a7a..2eadf9005 100644 --- a/res/layout/time_interval_popup.xml +++ b/res/layout/time_interval_popup.xml @@ -38,8 +38,8 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0" - android:layout_marginRight="8dp" - android:layout_gravity="right|center_vertical" /> + android:layout_marginEnd="8dp" + android:layout_gravity="end|center_vertical" /> </LinearLayout> <View style="@style/PopupTitleSeparator" /> @@ -54,8 +54,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="16dip" - android:paddingLeft="16dip" - android:paddingRight="16dip" + android:paddingStart="16dip" + android:paddingEnd="16dip" android:paddingBottom="16dip" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/set_time_interval_help"/> diff --git a/res/layout/trim_menu.xml b/res/layout/trim_menu.xml index e2333921a..c46be4c4b 100644 --- a/res/layout/trim_menu.xml +++ b/res/layout/trim_menu.xml @@ -20,13 +20,13 @@ android:layout_centerVertical="true"> <TextView android:id="@+id/start_trim" - android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="@string/save" android:textAllCaps="true" android:textSize="14sp" android:gravity="left|center_vertical" - android:drawableLeft="@drawable/menu_save_photo" + android:drawableStart="@drawable/menu_save_photo" android:drawablePadding="8dp" /> </FrameLayout> diff --git a/res/layout/undo_bar.xml b/res/layout/undo_bar.xml index 33ec91d85..bd4274d16 100644 --- a/res/layout/undo_bar.xml +++ b/res/layout/undo_bar.xml @@ -27,5 +27,5 @@ <TextView android:id="@+id/undo_button" style="@style/UndoButton" android:text="@string/undo" - android:drawableLeft="@drawable/ic_menu_revert_holo_dark"/> + android:drawableStart="@drawable/ic_menu_revert_holo_dark"/> </LinearLayout> diff --git a/res/layout/view_gif_image.xml b/res/layout/view_gif_image.xml new file mode 100644 index 000000000..976549a6b --- /dev/null +++ b/res/layout/view_gif_image.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout + android:id="@+id/image_absoluteLayout" + android:layout_height="match_parent" + android:layout_width="match_parent"> + <ImageView android:id="@+id/image_display_area" + android:layout_height="wrap_content" + android:layout_width="wrap_content" + android:clickable="true"> + </ImageView> + </LinearLayout> + +</RelativeLayout> diff --git a/res/layout/viewfinder_labels_video.xml b/res/layout/viewfinder_labels_video.xml index cfe3b0211..1ed7f3947 100644 --- a/res/layout/viewfinder_labels_video.xml +++ b/res/layout/viewfinder_labels_video.xml @@ -21,7 +21,7 @@ <TextView android:id="@+id/recording_time" style="@style/OnViewfinderLabel" android:gravity="center" - android:drawableLeft="@drawable/ic_recording_indicator" + android:drawableStart="@drawable/ic_recording_indicator" android:drawablePadding="5dp" android:visibility="gone" /> <TextView android:id="@+id/time_lapse_label" diff --git a/res/menu/albumset.xml b/res/menu/albumset.xml index 8ac8cbbd2..1a33ba25a 100644 --- a/res/menu/albumset.xml +++ b/res/menu/albumset.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 Google Inc. +<!-- Copyright (c) 2014, The Linux Foundation. All rights reserved. + Not a Contribution. + + Copyright (C) 2010 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -21,17 +24,30 @@ <item android:id="@+id/action_select" android:title="@string/select_album" android:showAsAction="never" /> + +<!-- These items do not serve a purpose due to the lack of built in + picasa support. --> <item android:id="@+id/action_manage_offline" android:title="@string/make_available_offline" + android:visible="false" android:showAsAction="never" /> <item android:id="@+id/action_sync_picasa_albums" android:title="@string/sync_picasa_albums" + android:visible="false" android:showAsAction="never" /> + +<!-- Settings visibility in menu set to false because they are empty. + This should be set to true when GallerySettings.java has content. --> <item android:id="@+id/action_settings" android:title="@string/settings" + android:visible="false" android:showAsAction="never" /> + <item android:id="@+id/action_general_help" android:title="@string/help" android:visible="false" android:showAsAction="never" /> + <item android:id="@+id/action_more_image" + android:title="@string/more_image" + android:showAsAction="never" /> </menu> diff --git a/res/menu/movie.xml b/res/menu/movie.xml index fde235cba..0676efb73 100644 --- a/res/menu/movie.xml +++ b/res/menu/movie.xml @@ -15,7 +15,7 @@ --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_share" - android:icon="@drawable/ic_menu_share_holo_light" + android:icon="@drawable/ic_menu_share" android:title="@string/share" android:enabled="true" android:actionProviderClass="android.widget.ShareActionProvider" diff --git a/res/menu/operation.xml b/res/menu/operation.xml index d1791e22f..b915f39c5 100644 --- a/res/menu/operation.xml +++ b/res/menu/operation.xml @@ -23,21 +23,21 @@ But, if share_panorama is set to never, it doesn't seem to get promoted to the action bar and stays on the overflow menu. --> <item android:id="@+id/action_share_panorama" - android:icon="@drawable/ic_menu_share_holo_light" + android:icon="@drawable/ic_menu_share" android:title="@string/share_panorama" android:visible="false" android:actionProviderClass="android.widget.ShareActionProvider" android:showAsAction="ifRoom"> </item> <item android:id="@+id/action_share" - android:icon="@drawable/ic_menu_share_holo_light" + android:icon="@drawable/ic_menu_share" android:title="@string/share" android:visible="false" android:actionProviderClass="android.widget.ShareActionProvider" android:showAsAction="never"> </item> <item android:id="@+id/action_delete" - android:icon="@drawable/ic_menu_trash_holo_light" + android:icon="@drawable/ic_menu_trash" android:title="@string/delete" android:visible="false" android:showAsAction="ifRoom" /> diff --git a/res/menu/photo.xml b/res/menu/photo.xml index bcd452e28..91bf0441f 100644 --- a/res/menu/photo.xml +++ b/res/menu/photo.xml @@ -23,19 +23,19 @@ But, if share_panorama is set to never, it doesn't seem to get promoted to the action bar and stays on the overflow menu. --> <item android:id="@+id/action_share_panorama" - android:icon="@drawable/ic_menu_share_holo_light" + android:icon="@drawable/ic_menu_share" android:title="@string/share_panorama" android:visible="false" android:actionProviderClass="android.widget.ShareActionProvider" android:showAsAction="ifRoom" /> <item android:id="@+id/action_share" - android:icon="@drawable/ic_menu_share_holo_light" + android:icon="@drawable/ic_menu_share" android:title="@string/share" android:visible="false" android:actionProviderClass="android.widget.ShareActionProvider" android:showAsAction="never" /> <item android:id="@+id/action_delete" - android:icon="@drawable/ic_menu_trash_holo_light" + android:icon="@drawable/ic_menu_trash" android:title="@string/delete" android:visible="false" android:showAsAction="never" /> diff --git a/res/mipmap-hdpi/ic_launcher_gallery.png b/res/mipmap-hdpi/ic_launcher_gallery.png Binary files differindex 23ea99890..65d9f3c7f 100644 --- a/res/mipmap-hdpi/ic_launcher_gallery.png +++ b/res/mipmap-hdpi/ic_launcher_gallery.png diff --git a/res/mipmap-mdpi/ic_launcher_gallery.png b/res/mipmap-mdpi/ic_launcher_gallery.png Binary files differindex e1a99498d..5eb1f6235 100644 --- a/res/mipmap-mdpi/ic_launcher_gallery.png +++ b/res/mipmap-mdpi/ic_launcher_gallery.png diff --git a/res/mipmap-xhdpi/ic_launcher_gallery.png b/res/mipmap-xhdpi/ic_launcher_gallery.png Binary files differindex 79544a2b6..aacb61b5f 100644 --- a/res/mipmap-xhdpi/ic_launcher_gallery.png +++ b/res/mipmap-xhdpi/ic_launcher_gallery.png diff --git a/res/mipmap-xxhdpi/ic_launcher_gallery.png b/res/mipmap-xxhdpi/ic_launcher_gallery.png Binary files differnew file mode 100644 index 000000000..19b1750c1 --- /dev/null +++ b/res/mipmap-xxhdpi/ic_launcher_gallery.png diff --git a/res/mipmap-xxxhdpi/ic_launcher_gallery.png b/res/mipmap-xxxhdpi/ic_launcher_gallery.png Binary files differnew file mode 100644 index 000000000..f13b7349c --- /dev/null +++ b/res/mipmap-xxxhdpi/ic_launcher_gallery.png diff --git a/res/values-af/cm_strings.xml b/res/values-af/cm_strings.xml new file mode 100644 index 000000000..0801e5c96 --- /dev/null +++ b/res/values-af/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Tyd van opname</string> +</resources> diff --git a/res/values-af/codeaurora_strings.xml b/res/values-af/codeaurora_strings.xml new file mode 100644 index 000000000..16720fcf3 --- /dev/null +++ b/res/values-af/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Stap</string> + <string name="step_option_desc">Verpersoonlik vinnige vorentoe/terugspeel stap</string> + <string name="setp_option_three_second">3 sekondes</string> + <string name="setp_option_six_second">6 sekondes</string> + <string name="loop">"Omkring"</string> + <string name="single">"Enkel"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Luidspreker AAN</string> + <string name="speaker_off">Luidspreker AF</string> + <string name="speaker_need_headset">Prop in oorfone om hierdie funksie te gebruik.</string> + <string name="single_track">"Enkele snit"</string> + <string name="input_url">"Sleutel URL in"</string> + <string name="streaming_settings">"Stroom instellings"</string> + <string name="next">"Volgende"</string> + <string name="previous">"Vorige"</string> + <string name="buffer_size">Buffer grootte</string> + <string name="apn">Voorkeur TPN</string> + <string name="rtp_min_port">Min poort</string> + <string name="rtp_max_port">Maks poort</string> + <string name="set_rtp_min_port">Stel min poort</string> + <string name="set_rtp_max_port">Stel maks poort</string> + <string name="set_buffer_size">Stel buffer grootte</string> + <string name="set_apn">Kies gewenste TPN</string> + <string name="setting">Instellings</string> + <string name="server_timeout_title">"Bediener tydverstreke"</string> + <string name="server_timeout_message">"Herkonnekteer met die bediener om die video te speel?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Verbinding het misluk, probeer weer om aan te sluit na %1$d\u2026"</string> + <string name="media_controller_live">Regstreeks</string> + <string name="media_controller_playing">Speel</string> + <string name="media_controller_connecting">Koppel\u2026</string> + <string name="bookmark_add">"Voeg boekmerk by"</string> + <string name="bookmark_display">"Wys boekmerk"</string> + <string name="bookmark_empty">"Geen boekmerk"</string> + <string name="bookmark_exist">"Boekmerk bestaan alreeds"</string> + <string name="bookmark_add_success">"Boekmerk bygevoeg"</string> + <string name="bookmark_list">"Boekmerke"</string> + <string name="bookmark_title">"Titel"</string> + <string name="bookmark_location">"Ligging"</string> + <string name="delete_all">"Verwyder alles"</string> + <string name="default_title">"Standaard titel"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Nog prente</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Kan nie klank afskakel: video nie ondersteun</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Daar is geen kaart program geïnstalleer om die plek te wys nie.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Versterk bas</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D Effek</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Klank effekte</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Prop in oorfone vir hierdie effekte.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Oudio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Jammer, hierdie video lêer kan nie afgewerk word nie</string> + <string name="no_permission_for_drm">Jammer, maar DRM beskermde leërs kan nie gedeel word nie</string> + <string name="drm_license_info">DRM lisensie inligting</string> +</resources> diff --git a/res/drawable/filtershow_tiled_background.xml b/res/values-am/cm_strings.xml index dfc7592d0..6b111e056 100644 --- a/res/drawable/filtershow_tiled_background.xml +++ b/res/values-am/cm_strings.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> <!-- - Copyright (C) 2013 The Android Open Source Project + Copyright (C) 2012-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. @@ -14,8 +15,6 @@ See the License for the specific language governing permissions and limitations under the License. --> -<bitmap - xmlns:android="http://schemas.android.com/apk/res/android" - android:src="@drawable/filtershow_background_new" - android:tileMode="repeat" - android:dither="false" />
\ No newline at end of file +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-am/codeaurora_strings.xml b/res/values-am/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-am/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-ar/cm_strings.xml b/res/values-ar/cm_strings.xml new file mode 100644 index 000000000..c9a2139fd --- /dev/null +++ b/res/values-ar/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">مدة التسجيل</string> +</resources> diff --git a/res/values-ar/codeaurora_strings.xml b/res/values-ar/codeaurora_strings.xml new file mode 100644 index 000000000..2a36c5d5b --- /dev/null +++ b/res/values-ar/codeaurora_strings.xml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">خطوة</string> + <string name="step_option_desc">تخصيص خطوة التقديم/الترجيع السريع</string> + <string name="setp_option_three_second">3 ثوان +</string> + <string name="setp_option_six_second">6 ثوانٍ</string> + <string name="loop">"تكرار"</string> + <string name="single">"واحد"</string> + <string name="stereo">"استيريو"</string> + <string name="speaker_on">تشغيل مكبّر الصوت</string> + <string name="speaker_off">إيقاف مكبّر الصوت</string> + <string name="speaker_need_headset">قم بتوصيل سماعات الرأس لاستخدام هذه الميزة.</string> + <string name="single_track">"أغنية واحدة"</string> + <string name="input_url">"أدخل عنوان URL"</string> + <string name="streaming_settings">"إعدادات التدفق"</string> + <string name="next">"التالي"</string> + <string name="previous">"السابق"</string> + <string name="buffer_size">حجم المخزن المؤقت</string> + <string name="apn">APN المفضل</string> + <string name="rtp_min_port">منفذ الحد الأدنى </string> + <string name="rtp_max_port">منفذ الحد الأقصى</string> + <string name="set_rtp_min_port">تعيين الحد الأدنى للمنفذ</string> + <string name="set_rtp_max_port">تعيين الحد الأقصى للمنفذ</string> + <string name="set_buffer_size">تعيين حجم المخزن المؤقت</string> + <string name="set_apn">حدد APN المفضل</string> + <string name="setting">إعدادات</string> + <string name="server_timeout_title">"مهلة الخادم"</string> + <string name="server_timeout_message">"هل تود إعادة الاتصال بالخادم لتشغيل الفيديو؟"</string> + <string name="videoview_error_text_cannot_connect_retry">"فشل الاتصال، جاري محاولة إعادة الاتصال ب%1$d\u2026"</string> + <string name="media_controller_live">مباشر</string> + <string name="media_controller_playing">قيد التشغيل</string> + <string name="media_controller_connecting">جاري الاتصال\u2026</string> + <string name="bookmark_add">"إضافة إشارة مرجعية"</string> + <string name="bookmark_display">"عرض الإشارات المرجعية"</string> + <string name="bookmark_empty">"لا توجد إشارات مرجعية"</string> + <string name="bookmark_exist">"هذه الإشارة المرجعية موجودة بالفعل"</string> + <string name="bookmark_add_success">"تمت إضافة الإشارة المرجعية"</string> + <string name="bookmark_list">"الإشارات المرجعيّة"</string> + <string name="bookmark_title">"العنوان"</string> + <string name="bookmark_location">"الموقع"</string> + <string name="delete_all">"حذف الكل"</string> + <string name="default_title">"العنوان الافتراضي"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">مزيد من الصور</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">لا يمكن كتم الصوت : الفيديو غير مدعوم</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">لا يوجد تطبيق خرائط مثبت لإظهار الموقع.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">التقوية</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">تأثير ثلاثي الأبعاد</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">التأثيرات الصوتية</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">قم بتوصيل سماعات الرأس لاستخدام هذه الآثار.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">صوت سناب دراغون+ </string> + <!-- The tips of trimming video --> + <string name="fail_trim">عذراً، لا يمكن الاقتطاع من ملف الفيديو هذا</string> + <string name="no_permission_for_drm">معذرة، يتعذر مشاركة الملفات المحمية لإدارة الحقوق الرقمية</string> + <string name="drm_license_info">معلومات ترخيص إدارة الحقوق الرقمية</string> +</resources> diff --git a/res/values-as-rIN/cm_strings.xml b/res/values-as-rIN/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-as-rIN/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-as-rIN/codeaurora_strings.xml b/res/values-as-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-as-rIN/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</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..9996c8a7a --- /dev/null +++ b/res/values-ast-rES/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Hora de grabación</string> +</resources> diff --git a/res/values-ast-rES/codeaurora_strings.xml b/res/values-ast-rES/codeaurora_strings.xml new file mode 100644 index 000000000..93dc0be18 --- /dev/null +++ b/res/values-ast-rES/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">saltu</string> + <string name="step_option_desc">Personalizar el saltu rápidu hacia alantre o hacia atrás</string> + <string name="setp_option_three_second">3 segundos</string> + <string name="setp_option_six_second">6 segundos</string> + <string name="loop">"Bucle"</string> + <string name="single">"Simple"</string> + <string name="stereo">"Estereu"</string> + <string name="speaker_on">Altavoz encesu</string> + <string name="speaker_off">Altavoz apagáu</string> + <string name="speaker_need_headset">Coneuta unos auriculares pa usar esta carauterística.</string> + <string name="single_track">"Una pista"</string> + <string name="input_url">"Introducir URL"</string> + <string name="streaming_settings">"Axustes de fluxu de datos"</string> + <string name="next">"Siguiente"</string> + <string name="previous">"Anterior"</string> + <string name="buffer_size">Tamañu del buffer</string> + <string name="apn">APN preferíu</string> + <string name="rtp_min_port">Puertu min.</string> + <string name="rtp_max_port">Puertu máx.</string> + <string name="set_rtp_min_port">Afitar el puertu min.</string> + <string name="set_rtp_max_port">Afitar el puertu máx.</string> + <string name="set_buffer_size">Afitar el tamañu del buffer</string> + <string name="set_apn">Seleicionar APN preferíu</string> + <string name="setting">Axustes</string> + <string name="server_timeout_title">"Tiempu d'espera del sirvidor"</string> + <string name="server_timeout_message">"¿Volver a coneutar al sirvidor pa reproducir el videu?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Falló la conexón. Intentando volver a coneutar con %1$d\u2026"</string> + <string name="media_controller_live">En direutu</string> + <string name="media_controller_playing">Reproduciendo</string> + <string name="media_controller_connecting">Coneutando\u2026</string> + <string name="bookmark_add">"Amestar marcador"</string> + <string name="bookmark_display">"Amosar marcadores"</string> + <string name="bookmark_empty">"Ensin marcadores"</string> + <string name="bookmark_exist">"Esti marcador yá esiste"</string> + <string name="bookmark_add_success">"Marcador amestáu"</string> + <string name="bookmark_list">"Marcadores"</string> + <string name="bookmark_title">"Títulu"</string> + <string name="bookmark_location">"Llocalización"</string> + <string name="delete_all">"Desanicialo too"</string> + <string name="default_title">"Títulu por defeutu"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Más imáxenes</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Nun pue silenciase: videu non sofitáu</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Nun hai nenguna aplicación de mapes instalada p\'amosar la llocalización.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Amplificación de graves</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Efeutu 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Efeutos d\'audiu</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Coneuta los auriculares pa estos efectos.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">El videu nun pue retayase</string> + <string name="no_permission_for_drm">Perdón, los ficheros protexíos con DRM nun puen compartise</string> + <string name="drm_license_info">Información de llicencia de DRM</string> +</resources> diff --git a/res/values-ast-rES/filtershow_strings.xml b/res/values-ast-rES/filtershow_strings.xml new file mode 100644 index 000000000..5efde3207 --- /dev/null +++ b/res/values-ast-rES/filtershow_strings.xml @@ -0,0 +1,294 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <string name="title_activity_filter_show">Editor de semeyes</string> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <string name="cannot_load_image">Fallu al cargar la imaxe!</string> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <string name="cannot_edit_original">Nun pue editase l\'orixinal</string> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <string name="setting_wallpaper">Afitando fondu de pantalla...</string> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <string name="download_failure">Nun pudo descargase la semeya porque la rede nun ta disponible.</string> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <string name="original">Orixinal</string> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <string name="borders" msgid="4461692156695893616">Marcu</string> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <string name="custom_border">Personalizáu</string> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <string name="filtershow_undo">Desfacer</string> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <string name="filtershow_redo">Refacer</string> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <string name="show_imagestate_panel">Amosar efeutos aplicaos</string> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <string name="hide_imagestate_panel">Anubrir efeutos aplicaos</string> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <string name="export_image">Esportar</string> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <string name="print_image">Imprentar</string> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <string name="export_flattened">Esportar imaxe aplastada</string> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <string name="select_output_settings">La imaxe esportada va ser una copia y nun va incluyir l\'historial.</string> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <string name="quality">Calidá</string> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <string name="size">Tamañu</string> + <!-- Text for size x [CHAR LIMIT=1] --> + <string name="x">x</string> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <string name="menu_settings">Axustes</string> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <string name="unsaved">Hai cambeos ensin guardar nesta imaxe.</string> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <string name="save_before_exit">¿Quies guardar enantes de salir?</string> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <string name="save_and_exit">Guardar y salir</string> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <string name="save_and_processing">Procesando imaxe con resolución completa...</string> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <string name="exit">Salir</string> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <string name="history">Historial</string> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <string name="reset">Restablecer</string> + <!-- Text for the original image[CHAR LIMIT=20]--> + <string name="history_original">@string/original</string> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <string name="imageState">Efeutos aplicaos</string> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <string name="compare_original">Comparar</string> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <string name="apply_effect">Aplicar</string> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <string name="reset_effect">Restablecer</string> + <!-- Label for aspect [CHAR LIMIT=15] --> + <string name="aspect">Aspeutu</string> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <string name="aspect1to1_effect">1:1</string> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <string name="aspect4to3_effect">4:3</string> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <string name="aspect3to4_effect">3:4</string> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <string name="aspect4to6_effect">4:6</string> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <string name="aspect5to7_effect">5:7</string> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <string name="aspect7to5_effect">7:5</string> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <string name="aspect9to16_effect">16:9</string> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <string name="aspectNone_effect">Nengún</string> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <string name="Fixed">Fixu</string> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <string name="tinyplanet">Pequeñu planeta</string> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <string name="exposure" msgid="1229093066434614811">Esposición</string> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <string name="sharpness">Nitidez</string> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <string name="contrast">Contraste</string> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <string name="vibrance">Intensidá</string> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <string name="saturation">Saturación</string> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <string name="bwfilter">Filtru b/n</string> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <string name="wbalance">Color automáticu</string> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <string name="hue">Tonalidá</string> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <string name="shadow_recovery">Solombres</string> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <string name="highlight_recovery">Destacáu</string> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <string name="curvesRGB">Curvar</string> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <string name="vignette">Viñeta</string> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <string name="vignette_main">Viñeta</string> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <string name="vignette_exposure">Esposición</string> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <string name="vignette_saturation">Saturación</string> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <string name="vignette_contrast">Contraste</string> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <string name="vignette_falloff">Atenuación</string> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <string name="redeye">Güeyos bermeyos</string> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <string name="imageDraw">Dibuxu</string> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <string name="straighten" msgid="5217801513491493491">Enderezar</string> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <string name="crop" msgid="5584000454518174632">Recortar</string> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <string name="rotate" msgid="460017689320955494">Xirar</string> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <string name="mirror">Espeyu</string> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <string name="negative">Negativu</string> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <string name="none" msgid="3601545724573307541">Nengún</string> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <string name="edge">Bordes</string> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <string name="kmeans">Posterizar</string> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <string name="downsample">Amenorgar calidá</string> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <string name="grad">Graduada</string> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <string name="editor_grad_brightness">Brillu</string> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <string name="editor_grad_contrast">Contraste</string> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <string name="editor_grad_saturation">Saturación</string> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_main">Principal</string> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_red">Bermeyu</string> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_yellow">Mariellu</string> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_green">Verde</string> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_cyan">Cianu</string> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_blue">Azul</string> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_magenta">Maxenta</string> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <string name="editor_grad_style">Estilu</string> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <string name="editor_grad_new">Nueva</string> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <string name="curves_channel_rgb">RGB</string> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <string name="curves_channel_red">Bermeyu</string> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <string name="curves_channel_green">Verde</string> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <string name="curves_channel_blue">Azul</string> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <string name="draw_style">Estilu</string> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <string name="draw_size">Tamañu</string> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <string name="draw_hue">Matiz</string> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <string name="draw_saturation">Saturación</string> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <string name="draw_value">Brillu</string> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <string name="draw_color">Color</string> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_line">Llinies</string> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_brush_spatter">Rotulador</string> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_brush_marker">Manches</string> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <string name="draw_clear">Llimpiar</string> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <string name="color_border_size">Grosor</string> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <string name="color_border_corner_size">Tamañu esquina</string> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <string name="color_border_color">Color</string> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <string name="color_border_clear">Llimpiar</string> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <string name="color_pick_select">Escoyer un color personalizáu</string> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <string name="color_pick_title">Seleicionar color</string> + <!-- The title for draw size [CHAR LIMIT=50] --> + <string name="draw_size_title">Seleicionar tamañu</string> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <string name="draw_size_accept">Aceutar</string> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <string name="state_panel_original">Orixinal</string> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <string name="state_panel_result">Resultáu</string> + <!-- Label for the notification [CHAR LIMIT=50] --> + <string name="filtershow_notification_label">Guardando imaxe</string> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <string name="filtershow_notification_message">Procesando...</string> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <string name="filtershow_save_preset">Guardar valor predetermináu</string> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <string name="filtershow_manage_preset">Alministrar predeterminaos</string> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <string name="filtershow_new_preset">Valor predetermináu nuevu</string> + <!-- Label for preset name [CHAR LIMIT=30] --> + <string name="filtershow_preset_name">Nome predetermináu</string> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <string name="filtershow_show_info_panel">Información</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_name">Nome de la imaxe</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_size">Tamañu de la imaxe</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_histogram">Histograma</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_exif">Datos de EXIF</string> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <string name="filtershow_add_button_looks">Predetermináu</string> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_add_button_versions">Versión</string> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_version_original">Orixinal</string> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_version_current">Actual</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_model">Modelu</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_aperture">Apertura</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_focal_length">Llonxitú focal</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_iso">ISO</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_subject_distance">Distancia del suxetu</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_date">Data de creación</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_f_stop">Númberu f</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_exposure_time">Tiempu d\'esposición</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_copyright">Copyright</string> +</resources> diff --git a/res/values-ast-rES/strings.xml b/res/values-ast-rES/strings.xml new file mode 100644 index 000000000..40ba7d342 --- /dev/null +++ b/res/values-ast-rES/strings.xml @@ -0,0 +1,850 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_name">Galería</string> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <string name="gadget_title">Marcu de semeya</string> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <string name="details_ms">%1$02d:%2$02d</string> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <string name="details_hms">%1$d:%2$02d:%3$02d</string> + <!-- Activity label. This might show up in the activity-picker --> + <string name="movie_view_label">Reproductor de videu</string> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <string name="loading_video">Cargando videu…</string> + <string name="loading_image">Cargando imaxe…</string> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <string name="loading_account">Cargando cuenta...</string> + <!-- Movie View Resume Playing dialog title --> + <string name="resume_playing_title">Reanudar videu</string> + <!-- Movie View Start Playing dialog title --> + <string name="resume_playing_message">Reanudar reproducción a partir de %s ?</string> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <string name="resume_playing_resume">Reanudar reproducción</string> + <!-- Displayed in the title of those albums that are being loaded --> + <string name="loading">Cargando...</string> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <string name="fail_to_load">Fallu al cargar</string> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <string name="fail_to_load_image">Nun pue cargase la imaxe.</string> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <string name="no_thumbnail">Nun hai miniatures.</string> + <!-- Movie View Start Playing button "Beginning" --> + <string name="resume_playing_restart">Volver a reproducir</string> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <string name="crop_save_text">Aceutar</string> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <string name="ok">Aceutar</string> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <string name="multiface_crop_help">Toca una cara pa entamar.</string> + <!-- Toast/alert that the image is being saved to the SD card --> + <string name="saving_image">Guardando imaxe...</string> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <string name="filtershow_saving_image">Guardando imaxe en <xliff:g id="ALBUM_NAME">%1$s</xliff:g> …</string> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <string name="save_error">Fallu al guardar la imaxe recortada</string> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <string name="crop_label">Recortar</string> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <string name="trim_label">Recortar videu</string> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <string name="select_image">Esbillar semeya</string> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <string name="select_video">Esbillar videu</string> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <string name="select_item">Esbillar elementu</string> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <string name="select_album">Esbillar álbum</string> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <string name="select_group">Esbillar grupu</string> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <string name="set_image">Afitar como...</string> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <string name="set_wallpaper">Afitar fondu de pantalla</string> + <!-- Toast/alert after saving wallpaper --> + <string name="wallpaper">Afitando fondu de pantalla...</string> + <string name="camera_setas_wallpaper">Fondu de pantalla</string> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <string name="delete">Desaniciar</string> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <string name="confirm">Confirmar</string> + <string name="cancel">Encaboxar</string> + <string name="share">Compartir</string> + <string name="share_panorama">Compartir panorámica</string> + <string name="share_as_photo">Compartir como semeya</string> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <string name="deleted">Desaniciada</string> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <string name="undo">DESFACER</string> + <!-- String indicating more actions are available --> + <string name="select_all">Marcalo too</string> + <string name="deselect_all">Desmarcalo too</string> + <string name="slideshow">Presentación</string> + <string name="details">Detalles</string> + <string name="details_title">Elementu: %1$d de %2$d</string> + <string name="close">Zarrar</string> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <string name="switch_to_camera">Cambiar a la cámara</string> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <string name="show_on_map">Amosar nel mapa</string> + <string name="rotate_left">Xirar a la esquierda</string> + <string name="rotate_right">Xirar a la derecha</string> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <string name="no_such_item">Nun pudo alcontrase l\'elementu.</string> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <string name="edit">Editar</string> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <string name="simple_edit">Edición simple</string> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <string name="process_caching_requests">Procesando solicitúes d\'almacenamientu en caché</string> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <string name="caching_label">Almacenando en caché...</string> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <string name="crop_action">Recortar</string> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <string name="trim_action">Recortar</string> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <string name="mute_action">Silenciar</string> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <string name="set_as">Afitar como</string> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <string name="video_mute_err">Nun pue silenciase\'l videu.</string> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <string name="video_err">Nun pue reproducise\'l videu.</string> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <string name="group_by_location">Per llocalización</string> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <string name="group_by_time">Per data</string> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <string name="group_by_tags">Por etiquetes</string> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <string name="group_by_faces">Por persones</string> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <string name="group_by_album">Por álbum</string> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <string name="group_by_size">Por tamañu</string> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <string name="untagged">Ensin etiquetes</string> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <string name="no_location">Ensin llocalización</string> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <string name="no_connectivity">Nun pudieron identificase dalgunes llocalizaciones por fallos na rede.</string> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <string name="sync_album_error">Nun pudieron descargase les semeyes del álbum. Inténtalo de nueves más tarde.</string> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <string name="show_images_only">Namái imáxenes</string> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <string name="show_videos_only">Namái vídeos</string> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <string name="show_all">Imáxenes y vídeos</string> + <!-- Title of the StackView AppWidget --> + <string name="appwidget_title">Galería de semeyes</string> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <string name="appwidget_empty_text">Nun hai semeyes.</string> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <string name="crop_saved">La imaxe recortada guardóse en <xliff:g id="FOLDER_NAME">%s</xliff:g>.</string> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <string name="no_albums_alert">Nun hai álbumes disponibles.</string> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <string name="empty_album">Nun hai imáxenes nin vídeos disponibles.</string> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <string name="picasa_posts">Publicaciones</string> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <string name="make_available_offline">Disponible ensin conexón</string> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <string name="sync_picasa_albums">Anovar</string> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <string name="done">Fecho</string> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <string name="sequence_in_set">Elementu: %1$d de %2$d</string> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <string name="title">Títulu</string> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <string name="description">Descripción</string> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <string name="time">Hora</string> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <string name="location">Llocalización</string> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <string name="path">Camín</string> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <string name="width">Anchor</string> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <string name="height">Altor</string> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <string name="orientation">Orientación</string> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <string name="duration">Duración</string> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <string name="mimetype">Tipu de MIME</string> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <string name="file_size">Tamañu del ficheru</string> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <string name="maker">Creador</string> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <string name="model">Modelu</string> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <string name="flash">Flash</string> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <string name="aperture">Apertura</string> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <string name="focal_length">Llonxitú focal</string> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <string name="white_balance">Balance de blancos</string> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <string name="exposure_time">Tiempu esposición</string> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <string name="iso">ISO</string> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <string name="unit_mm">mm</string> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <string name="manual">Manual</string> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <string name="auto">Automáticu</string> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <string name="flash_on">Flash activáu</string> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <string name="flash_off">Ensin flash</string> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <string name="unknown">Desconocíu</string> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <string name="ffx_original">Orixinal</string> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <string name="ffx_vintage">Vintage</string> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <string name="ffx_instant">Instantánea</string> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <string name="ffx_bleach">Decolorar</string> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <string name="ffx_blue_crush">Azul</string> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <string name="ffx_bw_contrast">Blancu y prietu</string> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <string name="ffx_punch">Punch</string> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <string name="ffx_x_process">Procesamientu X</string> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <string name="ffx_washout">Latte</string> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <string name="ffx_washout_color">Litho</string> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <string name="try_to_set_local_album_available_offline">L\'elementu almacenóse de forma llocal y ta disponible ensin conexón.</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <string name="set_label_all_albums">Tolos álbumes</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <string name="set_label_local_albums">Álbumes llocales</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <string name="set_label_mtp_devices">Preseos MTP</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <string name="set_label_picasa_albums">Álbumes de Picasa</string> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <string name="free_space_format"><xliff:g id="BYTES">%s</xliff:g> llibres</string> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <string name="size_below"><xliff:g id="SIZE">%1$s</xliff:g> o inferior</string> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <string name="size_above"><xliff:g id="SIZE">%1$s</xliff:g> o superior</string> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <string name="size_between">De <xliff:g id="MIN_SIZE">%1$s</xliff:g> a <xliff:g id="MAX_SIZE">%2$s</xliff:g></string> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <string name="Import">Importar</string> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <string name="import_complete">Importación completada</string> + <string name="import_fail">Fallu al importar</string> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <string name="camera_connected">Cámara coneutada</string> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <string name="camera_disconnected">Cámara desconeutada</string> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <string name="click_import">Toca equí pa facer la importación.</string> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <string name="widget_type_album">Esbillar un álbum</string> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <string name="widget_type_shuffle">Amosar imáxenes al debalu</string> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <string name="widget_type_photo">Esbillar una imaxe</string> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <string name="widget_type">Esbillar imáxenes</string> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <string name="slideshow_dream_name">Presentación</string> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <string name="albums">Álbumes</string> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <string name="times">Data</string> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <string name="locations">Llocalizaciones</string> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <string name="people">Persones</string> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <string name="tags">Etiquetes</string> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <string name="group_by">Agrupar por</string> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <string name="settings">Axustes</string> + <!-- The title of menu item where user can add a new account --> + <string name="add_account">Amestar cuenta</string> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <string name="folder_camera">Cámara</string> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <string name="folder_download">Descargaes</string> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <string name="folder_edited_online_photos">Semeyes online editaes</string> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <string name="folder_imported">Importaes</string> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <string name="folder_screenshot">Captures de pantalla</string> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <string name="help">Ayuda</string> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <string name="no_external_storage_title">Ensin almacenamientu</string> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <string name="no_external_storage">Nun hai almacenamientu esternu disponible.</string> + <!-- Label for album filmstrip button --> + <string name="switch_photo_filmstrip">Vista de tira de película</string> + <!-- Label for album grid button --> + <string name="switch_photo_grid">Vista de cuadrícula</string> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <string name="switch_photo_fullscreen">Pantalla completa</string> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <string name="trimming">Recortando...</string> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <string name="muting">Silenciando...</string> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <string name="please_wait">Espera...</string> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <string name="save_into">Guardando videu en <xliff:g id="ALBUM_NAME">%1$s</xliff:g>…</string> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <string name="trim_too_short">Nun se pue recortar: el videu de destín ye enforma curtiu.</string> + <!-- Text to show with progress bar while stitching in Gallery --> + <string name="pano_progress_text">Creando panorámica...</string> + <!-- The label on the button that will save an edited image --> + <string name="save" msgid="8140440041190264400">Guardar</string> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <string name="ingest_scanning" msgid="2048262851775139720">Analizando conteníu...</string> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <string name="ingest_sorting" msgid="624687230903648118">Ordenando...</string> + <!-- Status message shown when scanning the content from the camera has completed --> + <string name="ingest_scanning_done">Análisis completu</string> + <!-- Status message shown when content from an external camera is being imported --> + <string name="ingest_importing">Importando...</string> + <!-- Status message shown when there is no content available to be imported --> + <string name="ingest_empty_device">Nun hai conteníu disponible pa importar nesti preséu.</string> + <!-- Status message shown when there is no MTP device connected --> + <string name="ingest_no_device">Nun hai preseos MTP coneutaos</string> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <string name="camera_error_title">Fallu de cámara</string> + <!-- message for the dialog showing the error of camera hardware --> + <string name="cannot_connect_camera">Nun pue accedese a la cámara.</string> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <string name="camera_disabled">Inhabilitóse la cámara por polítiques de seguridá.</string> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <string name="camera_label">Cámara</string> + <!-- alert to the user to wait for some operation to complete --> + <string name="wait">Por favor, espera...</string> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <string name="no_storage" product="nosdcard">Pa poder usar la cámara, activa l\'almacenamientu USB.</string> + <!-- alert to the user that an SD card must be installed before using the camera --> + <string name="no_storage" product="default">Pa poder usar la cámara, inxerta una tarxeta SD.</string> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <string name="preparing_sd" product="nosdcard">Tresnando almacenamientu USB…</string> + <!-- alert to the user that the SD card is being disk-checked --> + <string name="preparing_sd" product="default">Tresnando tarxeta SD…</string> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <string name="access_sd_fail" product="nosdcard">Nun pudo accedese al almacenamientu USB.</string> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <string name="access_sd_fail" product="default">Nun pudo accedese a la tarxeta SD.</string> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <string name="review_cancel">ENCABOXAR</string> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <string name="review_ok">FECHO</string> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <string name="time_lapse_title">Grabación a intervalos de tiempu</string> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <string name="pref_camera_id_title">Seleicionar cámara</string> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <string name="pref_camera_id_entry_back">Trasera</string> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <string name="pref_camera_id_entry_front">Delantera</string> + <!-- Settings screen, setting title text --> + <string name="pref_camera_recordlocation_title">Amestar llocalización</string> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <string name="pref_camera_location_label">LLOCALIZACIÓN</string> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <string name="pref_camera_timer_title">Temporizador de cuenta atrás</string> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <string name="pref_camera_timer_sound_default">@string/setting_on_value</string> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <string name="pref_camera_timer_sound_title">Usar pitíu</string> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <string name="setting_off">Desactiváu</string> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <string name="setting_on">Activáu</string> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <string name="pref_video_quality_title">Calidá de videu</string> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <string name="pref_video_quality_entry_high">Alta</string> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <string name="pref_video_quality_entry_low">Baxa</string> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <string name="pref_video_time_lapse_frame_interval_title">Intervalu de tiempu</string> + <!-- Settings screen, Camera setting category title --> + <string name="pref_camera_settings_category">Axustes de la cámara</string> + <!-- Settings screen, Camcorder setting category title --> + <string name="pref_camcorder_settings_category">Configuración de videocámara</string> + <!-- Settings screen, Picture size title --> + <string name="pref_camera_picturesize_title">Tamañu imaxe</string> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_13mp">13 MP</string> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_8mp">8 MP</string> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_5mp">5 MP</string> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_4mp">4 MP</string> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_3mp">3 MP</string> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_2mp">2 MP</string> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_2mp_wide">2 MP (16:9)</string> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_1_3mp">1,3 MP</string> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_1mp">1 MP</string> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_vga">VGA</string> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_qvga">QVGA</string> + <!-- Settings screen, Focus mode title --> + <string name="pref_camera_focusmode_title">Mou d\'enfoque</string> + <!-- Settings screen, Focus mode dialog radio button choices --> + <string name="pref_camera_focusmode_entry_auto">Auto</string> + <string name="pref_camera_focusmode_entry_infinity">Infinitu</string> + <string name="pref_camera_focusmode_entry_macro">Macro</string> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_focusmode_label_auto">AUTOMÁTICU</string> + <string name="pref_camera_focusmode_label_infinity">INFINITU</string> + <string name="pref_camera_focusmode_label_macro">MACRO</string> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <string name="pref_camera_flashmode_title">Flash</string> + <!-- flash label [CHAR LIMIT=50] --> + <string name="pref_camera_flashmode_label">MOU FLASH</string> + <!-- Settings screen, Flash mode dialog radio button choices --> + <string name="pref_camera_flashmode_entry_auto">Automáticu</string> + <string name="pref_camera_flashmode_entry_on">Activáu</string> + <string name="pref_camera_flashmode_entry_off">Desactiváu</string> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_flashmode_label_auto">FLASH AUTOMÁTICU</string> + <string name="pref_camera_flashmode_label_on">FLASH ACTIVÁU</string> + <string name="pref_camera_flashmode_label_off">FLASH DESACTIVÁU</string> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <string name="pref_camera_whitebalance_title">Balance de blancos</string> + <!-- Menu, white balance label --> + <string name="pref_camera_whitebalance_label">BALANCE DE BLANCOS</string> + <!-- Settings screen, White balance dialog radio button choices --> + <string name="pref_camera_whitebalance_entry_auto">Automáticu</string> + <string name="pref_camera_whitebalance_entry_incandescent">Incandescente</string> + <string name="pref_camera_whitebalance_entry_daylight">Lluz natural</string> + <string name="pref_camera_whitebalance_entry_fluorescent">Fluorescente</string> + <string name="pref_camera_whitebalance_entry_cloudy">Ñuble</string> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <string name="pref_camera_whitebalance_label_auto">AUTOMÁTICU</string> + <string name="pref_camera_whitebalance_label_incandescent">INCANDESCENTE</string> + <string name="pref_camera_whitebalance_label_daylight">LLUZ NATURAL</string> + <string name="pref_camera_whitebalance_label_fluorescent">FLUORESCENTE</string> + <string name="pref_camera_whitebalance_label_cloudy">ÑUBLE</string> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <string name="pref_camera_scenemode_title">Mou d\'escena</string> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_auto">Automáticu</string> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_hdr">HDR</string> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_action">Aición</string> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_night">Nocherniegu</string> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_sunset">Atapecer</string> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_party">Folixa</string> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_auto">NENGÚN</string> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_action">AICIÓN</string> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_night">NUECHE</string> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_sunset">ATAPECER</string> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_party">FOLIXA</string> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label">TEMPORIZADOR DE CUENTA ATRÁS</string> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_off">TEMPORIZADOR DESACTIVÁU</string> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_one">1 SEGUNDU</string> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_three">3 SEGUNDOS</string> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_ten">10 SEGUNDOS</string> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_fifteen">15 SEGUNDOS</string> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <string name="not_selectable_in_scene_mode">Nun pue seleicionase nel mou d\'escena.</string> + <!-- Exposure settings in preference --> + <string name="pref_exposure_title">Esposición</string> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <string name="pref_exposure_label">ESPOSICIÓN</string> + <!-- Default HDR entry value --> + <string name="pref_camera_hdr_default">@string/setting_off_value</string> + <!-- HDR label ON [CHAR LIMIT=60] --> + <string name="pref_camera_hdr_label">HDR</string> + <!-- switch camera label back [CHAR LIMIT=60] --> + <string name="pref_camera_id_label_back">CÁMARA FRONTAL</string> + <!-- switch camera label front [CHAR LIMIT=60] --> + <string name="pref_camera_id_label_front">CÁMARA TRASERA</string> + <!-- Dialog "OK" button. Dismisses dialog. --> + <string name="dialog_ok">Aceutar</string> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <string name="spaceIsLow_content" product="nosdcard">Nun hai espaciu nel almacenamientu USB. Cambia la configuración de calidá o desanicia dalgunes imáxenes o otros ficheros.</string> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <string name="spaceIsLow_content" product="default">Nun hai espaciu na tarxeta SD. Cambia la configuración de calidá o desanicia dalgunes imáxenes o otros ficheros.</string> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <string name="video_reach_size_limit">Algamóse la llende de tamañu.</string> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <string name="pano_too_fast_prompt">Mui rápidu</string> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <string name="pano_dialog_prepare_preview">Preparando mou panorámicu</string> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <string name="pano_dialog_panorama_failed">Fallu al guardar imaxe panorámica</string> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <string name="pano_dialog_title">Panorámicu</string> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <string name="pano_capture_indication">Capturando panorámica</string> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <string name="pano_dialog_waiting_previous">Esperando semeya panorámica anterior...</string> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <string name="pano_review_saving_indication_str">Guardando...</string> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <string name="pano_review_rendering">Creando panorámica...</string> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <string name="tap_to_focus">Toca pa enfocar</string> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <string name="pref_video_effect_title">Efeutos</string> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <string name="effect_none">Nengún</string> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_squeeze">Comprimir</string> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_eyes">Güeyos grandes</string> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_mouth">Boca grande</string> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_small_mouth">Boca pequeña</string> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_nose">Nariz grande</string> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_small_eyes">Güeyos pequeños</string> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <string name="effect_backdropper_space">Nel espaciu</string> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <string name="effect_backdropper_sunset">Atapecer</string> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <string name="effect_backdropper_gallery">El to videu</string> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <string name="bg_replacement_message">Desactiva\'l preséu.\nDexa d\'usalu unos minutos.</string> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <string name="video_snapshot_hint">Toca pa facer una semeya mientres grabes un videu.</string> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <string name="video_recording_started">Anicióse la grabación de videu.</string> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <string name="video_recording_stopped">La grabación de videu detúvose.</string> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <string name="disable_video_snapshot_hint">La instantánea de videu inhabilítase al activar efeutos especiales.</string> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <string name="clear_effects">Quitar efeutos</string> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <string name="effect_silly_faces">CARES GRACIOSES</string> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <string name="effect_background">FONDU</string> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <string name="accessibility_shutter_button">Botón del obturador</string> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <string name="accessibility_menu_button">Botón de menú</string> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <string name="accessibility_review_thumbnail">Semeya más recién</string> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <string name="accessibility_camera_picker">Opción de cámara trasera y delantera</string> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <string name="accessibility_mode_picker">Cámara, videu o mou panorámicu</string> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <string name="accessibility_second_level_indicators">Más controles de configuración</string> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <string name="accessibility_back_to_first_level">Zarrar controles de configuración</string> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <string name="accessibility_zoom_control">Control de zoom</string> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <string name="accessibility_decrement">Amenorgar %1$s</string> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <string name="accessibility_increment">Aumentar %1$s</string> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <string name="accessibility_check_box">Caxellu de verificación %1$s</string> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_camera">Cambiar a la cámara</string> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_video">Cambiar a videu</string> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_panorama">Cambiar a mou panorámicu</string> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_new_panorama">Cambiar a nueva panorámica</string> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_refocus">Cambiar a reenfoque</string> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <string name="accessibility_review_cancel">Encaboxar</string> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <string name="accessibility_review_ok">Fecho</string> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <string name="accessibility_review_retake">Revisar repetición</string> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_play_video">Ver un videu</string> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_pause_video">Posar videu</string> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_reload_video">Volver a cargar videu</string> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <string name="accessibility_time_bar">Barra de tiempu del reproductor de videu</string> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <string name="capital_on">SÍ</string> + <!-- Default text for a button that can be toggled on and off. --> + <string name="capital_off">NON</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_off">Desactiváu</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_500">0,5 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1000">1 segundu</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1500">1,5 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_2000">2 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_2500">2,5 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_3000">3 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_4000">4 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_5000">5 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_6000">6 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_10000">10 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_12000">12 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_15000">15 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_24000">24 segundos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_30000">0,5 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_60000">1 minutu</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_90000">1,5 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_120000">2 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_150000">2,5 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_180000">3 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_240000">4 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_300000">5 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_360000">6 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_600000">10 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_720000">12 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_900000">15 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1440000">24 minutos</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1800000">0,5 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_3600000">1 hora</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_5400000">1,5 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_7200000">2 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_9000000">2,5 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_10800000">3 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_14400000">4 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_18000000">5 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_21600000">6 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_36000000">10 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_43200000">12 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_54000000">15 hores</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_86400000">24 hores</string> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_seconds">segundos</string> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_minutes">minutos</string> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_hours">hores</string> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <string name="time_lapse_interval_set">Fecho</string> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <string name="set_time_interval">Afita intervalu de tiempu</string> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <string name="set_time_interval_help">L\'intervalu de tiempu ta desactiváu. Activa esta función p\'afitar un intervalu.</string> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <string name="set_timer_help">El temporizador de cuenta atrás ta desactiváu. Activa esta opción pa ver la cuenta atrás enantes de facer una semeya.</string> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <string name="set_duration">Definir duración en segundos</string> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <string name="count_down_title_text">Cuenta atrás pa facer una semeya</string> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <string name="remember_location_title">¿Recordar llocalizaciones de les semeyes?</string> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <string name="remember_location_prompt">Etiqueta les tos semeyes y vídeos coles llocalizaciones au se fexeron.\n\nOtres aplicaciones puen acceder a esta información, asina como a les imáxenes guardaes.</string> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <string name="remember_location_no">Non, gracies</string> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <string name="remember_location_yes">Sí</string> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <string name="menu_camera">Cámara</string> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <string name="menu_search">Guetar</string> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <string name="tab_photos">Semeyes</string> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <string name="tab_albums">Álbumes</string> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <string name="camera_menu_more_label">MÁS OPCIONES</string> + <!-- settings label [CHAR LIMIT=50] --> + <string name="camera_menu_settings_label">AXUSTES</string> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</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..4cd31b1e2 --- /dev/null +++ b/res/values-az-rAZ/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Səsyazma vaxtı</string> +</resources> diff --git a/res/values-az-rAZ/codeaurora_strings.xml b/res/values-az-rAZ/codeaurora_strings.xml new file mode 100644 index 000000000..32ec922ac --- /dev/null +++ b/res/values-az-rAZ/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Addım</string> + <string name="step_option_desc">Sürətli irəli/geri çəkmə aralıqlarını özəlləşdir</string> + <string name="setp_option_three_second">3 saniyə</string> + <string name="setp_option_six_second">6 saniyə</string> + <string name="loop">"Dövr"</string> + <string name="single">"Tək"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Səsucaldan AÇIQ</string> + <string name="speaker_off">Səsucaldan QAPALI</string> + <string name="speaker_need_headset">Bu özəllikdən istifadə etmək üçün qulaqlıq taxın.</string> + <string name="single_track">"Tək parça"</string> + <string name="input_url">"URL daxil edin"</string> + <string name="streaming_settings">"Axın tənzimləmələri"</string> + <string name="next">"Sonrakı"</string> + <string name="previous">"Əvvəlki"</string> + <string name="buffer_size">Bufer ölçüsü</string> + <string name="apn">Üstünlük verilən APN</string> + <string name="rtp_min_port">Min. bağlantı nöqtəsi</string> + <string name="rtp_max_port">Maks. bağlantı nöqtəsi</string> + <string name="set_rtp_min_port">Min bağlantı nöqtəsini tənzimlə</string> + <string name="set_rtp_max_port">Max bağlantı nöqtəsini tənzimlə</string> + <string name="set_buffer_size">Bufer ölçüsünü tənzimlə</string> + <string name="set_apn">Üstünlük verilən APN\'i seçin</string> + <string name="setting">Tənzimləmələr</string> + <string name="server_timeout_title">"Serverə qoyulan vaxt"</string> + <string name="server_timeout_message">"Videonu oynatmaq üçün serverə yenidən bağlansın?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Bağlanma xətası, %1$d üçün yenidən bağlantı yaradılır\u2026"</string> + <string name="media_controller_live">Canlı</string> + <string name="media_controller_playing">Oynadılır</string> + <string name="media_controller_connecting">Bağlanır\u2026</string> + <string name="bookmark_add">"Əlfəcin əlavə et"</string> + <string name="bookmark_display">"Əlfəcinləri göstər"</string> + <string name="bookmark_empty">"Əlfəcin yoxdur"</string> + <string name="bookmark_exist">"Əlfəcin artıq mövcuddur"</string> + <string name="bookmark_add_success">"Əlfəcin əlavə edildi"</string> + <string name="bookmark_list">"Əlfəcinlər"</string> + <string name="bookmark_title">"Başlıq"</string> + <string name="bookmark_location">"Yer"</string> + <string name="delete_all">"Hamısını sil"</string> + <string name="default_title">"Standart başlıq"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Daha çox təsvir</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Səsi kəsilə bilmir : video dəstəklənmir</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Yeri göstərmək üçün quraşdırılmış xəritə tətbiqetməsi yoxdur.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bas yüksəldici</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D effekti</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Səs effekti</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Bu effektlər üçün qulaqcıq taxın.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Bağışlayın, bu video fayl kəsilə bilməz</string> + <string name="no_permission_for_drm">Bağışlayın, DRM qorumalı fayllar paylaşıla bilməz</string> + <string name="drm_license_info">DRM lisenziya məlumatı</string> +</resources> diff --git a/res/values-be/cm_strings.xml b/res/values-be/cm_strings.xml new file mode 100644 index 000000000..21cc7435c --- /dev/null +++ b/res/values-be/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Час запісу</string> +</resources> diff --git a/res/values-be/codeaurora_strings.xml b/res/values-be/codeaurora_strings.xml new file mode 100644 index 000000000..8d6497a0a --- /dev/null +++ b/res/values-be/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Крок перамоткі</string> + <string name="step_option_desc">Налада інтэрвалу для хуткага прагляду наперад ці назад</string> + <string name="setp_option_three_second">3 секунды</string> + <string name="setp_option_six_second">6 секундаў</string> + <string name="loop">"Паўтор"</string> + <string name="single">"Аднаразова"</string> + <string name="stereo">"Стэрэа"</string> + <string name="speaker_on">УКЛ. дынамік</string> + <string name="speaker_off">ВЫКЛ. дынамік</string> + <string name="speaker_need_headset">Далучыце вушоўкі для выкарыстання гэтай функцыі.</string> + <string name="single_track">"Адна дарожка"</string> + <string name="input_url">"Увядзіце URL"</string> + <string name="streaming_settings">"\"Струменевая перадача"</string> + <string name="next">"Наступны трэк"</string> + <string name="previous">"Папярэдні трэк"</string> + <string name="buffer_size">Памер буфера</string> + <string name="apn">Кропка доступу па змаўчанні</string> + <string name="rtp_min_port">Мінімальны порт</string> + <string name="rtp_max_port">Максімальны порт</string> + <string name="set_rtp_min_port">Усталёўка мінімальнага нумара порта</string> + <string name="set_rtp_max_port">Усталёўка максімальнага нумара порта</string> + <string name="set_buffer_size">Усталёўка памеру буфера перадачы</string> + <string name="set_apn">Пераважная кропка доступу</string> + <string name="setting">Налады</string> + <string name="server_timeout_title">"Тайм-аўт сервера"</string> + <string name="server_timeout_message">"Перападключыцца да сервера для прайгравання відэафайла?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Збой сувязі. Паўторнае падлучэнне да %1$d\u2026"</string> + <string name="media_controller_live">Просты эфір</string> + <string name="media_controller_playing">Прайграванне</string> + <string name="media_controller_connecting">Падлучэнне\u2026</string> + <string name="bookmark_add">"Дадаць закладку"</string> + <string name="bookmark_display">"Паказаць закладкі"</string> + <string name="bookmark_empty">"Няма закладак"</string> + <string name="bookmark_exist">"Закладка ўжо існуе"</string> + <string name="bookmark_add_success">"Закладка дададзена"</string> + <string name="bookmark_list">"Закладкі"</string> + <string name="bookmark_title">"Назва"</string> + <string name="bookmark_location">"Месцазнаходжанне"</string> + <string name="delete_all">"Выдаліць усё"</string> + <string name="default_title">"Загаловак па змаўчанні"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Іншыя выявы</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Немагчыма адключыць гук: відэафайл не падтрымваецца</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Дадатак для працы з картамі не ўсталяваны. Паказ месцазнаходжання немагчымы.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Узмацненне басоў</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D-эфект</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Аўдыя эфекты</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Падлучыце навушнікі для гэтых эфектаў.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Дадзены відэафайл не можа быць абрэзаны</string> + <string name="no_permission_for_drm">Адпраўка абароненых DRM файлаў немагчымая</string> + <string name="drm_license_info">Звесткі пра ліцэнзію DRM</string> +</resources> diff --git a/res/values-be/filtershow_strings.xml b/res/values-be/filtershow_strings.xml new file mode 100644 index 000000000..ddd9262fb --- /dev/null +++ b/res/values-be/filtershow_strings.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <!-- Text for size x [CHAR LIMIT=1] --> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <!-- Label for aspect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <!-- The title for draw size [CHAR LIMIT=50] --> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <!-- Label for the notification [CHAR LIMIT=50] --> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <!-- Label for preset name [CHAR LIMIT=30] --> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> +</resources> diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml new file mode 100644 index 000000000..80a686614 --- /dev/null +++ b/res/values-be/strings.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <!-- Movie View Resume Playing dialog title --> + <!-- Movie View Start Playing dialog title --> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <!-- Displayed in the title of those albums that are being loaded --> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <!-- Movie View Start Playing button "Beginning" --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <!-- Toast/alert that the image is being saved to the SD card --> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <!-- Toast/alert after saving wallpaper --> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <!-- String indicating more actions are available --> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <!-- Title of the StackView AppWidget --> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <!-- The title of menu item where user can add a new account --> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <!-- Label for album filmstrip button --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <!-- Text to show with progress bar while stitching in Gallery --> + <!-- The label on the button that will save an edited image --> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <!-- Status message shown when scanning the content from the camera has completed --> + <!-- Status message shown when content from an external camera is being imported --> + <!-- Status message shown when there is no content available to be imported --> + <!-- Status message shown when there is no MTP device connected --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <!-- alert to the user to wait for some operation to complete --> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <!-- alert to the user that an SD card must be installed before using the camera --> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <!-- alert to the user that the SD card is being disk-checked --> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <!-- Settings screen, setting title text --> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <!-- Settings screen, Camera setting category title --> + <!-- Settings screen, Camcorder setting category title --> + <!-- Settings screen, Picture size title --> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <!-- Settings screen, Focus mode dialog radio button choices --> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <!-- flash label [CHAR LIMIT=50] --> + <!-- Settings screen, Flash mode dialog radio button choices --> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <!-- Menu, white balance label --> + <!-- Settings screen, White balance dialog radio button choices --> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <!-- Exposure settings in preference --> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <!-- switch camera label front [CHAR LIMIT=60] --> + <!-- Dialog "OK" button. Dismisses dialog. --> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <!-- settings label [CHAR LIMIT=50] --> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-bg/cm_strings.xml b/res/values-bg/cm_strings.xml new file mode 100644 index 000000000..f80d59223 --- /dev/null +++ b/res/values-bg/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Време на запис</string> +</resources> diff --git a/res/values-bg/codeaurora_strings.xml b/res/values-bg/codeaurora_strings.xml new file mode 100644 index 000000000..6193d036f --- /dev/null +++ b/res/values-bg/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Стъпка</string> + <string name="step_option_desc">Бърза настройка стъпка напред или назад</string> + <string name="setp_option_three_second">3 секунди</string> + <string name="setp_option_six_second">6 секунди</string> + <string name="loop">"Контур"</string> + <string name="single">"Единично"</string> + <string name="stereo">"Стерео"</string> + <string name="speaker_on">Високоговорител включен</string> + <string name="speaker_off">Високоговорител изключен</string> + <string name="speaker_need_headset">Включете слушалките, за да използвате тази функция.</string> + <string name="single_track">"Една песен"</string> + <string name="input_url">"Въведете URL адрес"</string> + <string name="streaming_settings">"Поточни настройки"</string> + <string name="next">"Следваща"</string> + <string name="previous">"Предишна"</string> + <string name="buffer_size">Размер на буфера</string> + <string name="apn">Предпочитан APN</string> + <string name="rtp_min_port">Минимален порт</string> + <string name="rtp_max_port">Максимален порт</string> + <string name="set_rtp_min_port">Задаване минимален порт</string> + <string name="set_rtp_max_port">Задаване максимален порт</string> + <string name="set_buffer_size">Задаване размер на буфера</string> + <string name="set_apn">Изберете предпочитана точка за достъп</string> + <string name="setting">Настройки</string> + <string name="server_timeout_title">"Време за изчакване на сървъра"</string> + <string name="server_timeout_message">"Да се свържа ли повторно със сървъра, за да изпълни видеото?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Неуспешна връзка, опитайте да се свържете с %1$d\u2026"</string> + <string name="media_controller_live">На живо</string> + <string name="media_controller_playing">Възпроизвеждане на</string> + <string name="media_controller_connecting">Свързване\u2026</string> + <string name="bookmark_add">"Добавяне на показалец"</string> + <string name="bookmark_display">"Показване на показалци"</string> + <string name="bookmark_empty">"Няма показалци"</string> + <string name="bookmark_exist">"Вече съществува показалец"</string> + <string name="bookmark_add_success">"Показалеца е добавен"</string> + <string name="bookmark_list">"Показалец"</string> + <string name="bookmark_title">"Заглавие"</string> + <string name="bookmark_location">"Местоположение"</string> + <string name="delete_all">"Изтрий всички"</string> + <string name="default_title">"Заглавие по подразбиране"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Още снимки</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Не може да изключите звука: видеото не се поддържа</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Няма инсталирано приложение което да покаже местоположението.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Усилване на баса</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D ефект</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Аудио ефекти</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Включете слушалки за тези ефекти.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Аудио +</string> + <!-- The tips of trimming video --> + <string name="fail_trim">За съжаление, този видео файл не може да бъде орязан</string> + <string name="no_permission_for_drm">За съжаление DRM защитените файлове не могат да бъдат споделени</string> + <string name="drm_license_info">DRM лицензна информация</string> +</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..df86aa1d7 --- /dev/null +++ b/res/values-bn-rBD/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">রেকর্ডের সময়</string> +</resources> diff --git a/res/values-bn-rBD/codeaurora_strings.xml b/res/values-bn-rBD/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-bn-rBD/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-br-rFR/cm_strings.xml b/res/values-br-rFR/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-br-rFR/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-br-rFR/codeaurora_strings.xml b/res/values-br-rFR/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-br-rFR/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-br-rFR/filtershow_strings.xml b/res/values-br-rFR/filtershow_strings.xml new file mode 100644 index 000000000..ddd9262fb --- /dev/null +++ b/res/values-br-rFR/filtershow_strings.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <!-- Text for size x [CHAR LIMIT=1] --> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <!-- Label for aspect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <!-- The title for draw size [CHAR LIMIT=50] --> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <!-- Label for the notification [CHAR LIMIT=50] --> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <!-- Label for preset name [CHAR LIMIT=30] --> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> +</resources> diff --git a/res/values-br-rFR/strings.xml b/res/values-br-rFR/strings.xml new file mode 100644 index 000000000..80a686614 --- /dev/null +++ b/res/values-br-rFR/strings.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <!-- Movie View Resume Playing dialog title --> + <!-- Movie View Start Playing dialog title --> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <!-- Displayed in the title of those albums that are being loaded --> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <!-- Movie View Start Playing button "Beginning" --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <!-- Toast/alert that the image is being saved to the SD card --> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <!-- Toast/alert after saving wallpaper --> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <!-- String indicating more actions are available --> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <!-- Title of the StackView AppWidget --> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <!-- The title of menu item where user can add a new account --> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <!-- Label for album filmstrip button --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <!-- Text to show with progress bar while stitching in Gallery --> + <!-- The label on the button that will save an edited image --> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <!-- Status message shown when scanning the content from the camera has completed --> + <!-- Status message shown when content from an external camera is being imported --> + <!-- Status message shown when there is no content available to be imported --> + <!-- Status message shown when there is no MTP device connected --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <!-- alert to the user to wait for some operation to complete --> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <!-- alert to the user that an SD card must be installed before using the camera --> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <!-- alert to the user that the SD card is being disk-checked --> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <!-- Settings screen, setting title text --> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <!-- Settings screen, Camera setting category title --> + <!-- Settings screen, Camcorder setting category title --> + <!-- Settings screen, Picture size title --> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <!-- Settings screen, Focus mode dialog radio button choices --> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <!-- flash label [CHAR LIMIT=50] --> + <!-- Settings screen, Flash mode dialog radio button choices --> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <!-- Menu, white balance label --> + <!-- Settings screen, White balance dialog radio button choices --> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <!-- Exposure settings in preference --> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <!-- switch camera label front [CHAR LIMIT=60] --> + <!-- Dialog "OK" button. Dismisses dialog. --> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <!-- settings label [CHAR LIMIT=50] --> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-ca/cm_strings.xml b/res/values-ca/cm_strings.xml new file mode 100644 index 000000000..2971b7c75 --- /dev/null +++ b/res/values-ca/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Temps de gravació</string> +</resources> diff --git a/res/values-ca/codeaurora_strings.xml b/res/values-ca/codeaurora_strings.xml new file mode 100644 index 000000000..0372113be --- /dev/null +++ b/res/values-ca/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Pas</string> + <string name="step_option_desc">Personalitza el salt ràpid endavant/rebobina ràpid</string> + <string name="setp_option_three_second">3 segons</string> + <string name="setp_option_six_second">6 segons</string> + <string name="loop">"Bucle"</string> + <string name="single">"Individual"</string> + <string name="stereo">"Estèreo"</string> + <string name="speaker_on">Altaveu Activat</string> + <string name="speaker_off">Altaveu Desactivat</string> + <string name="speaker_need_headset">Endolla els auriculars per utilitzar aquesta característica.</string> + <string name="single_track">"Una pista"</string> + <string name="input_url">"Introdueix URL"</string> + <string name="streaming_settings">"Ajustaments del flux de dades"</string> + <string name="next">"Següent"</string> + <string name="previous">"Anterior"</string> + <string name="buffer_size">Mida del buffer</string> + <string name="apn">APN preferida</string> + <string name="rtp_min_port">Port min</string> + <string name="rtp_max_port">Port max</string> + <string name="set_rtp_min_port">Estableix el port min</string> + <string name="set_rtp_max_port">Estableix el port max</string> + <string name="set_buffer_size">Estableix la mida del buffer</string> + <string name="set_apn">Selecciona l\'APN preferida</string> + <string name="setting">Ajustaments</string> + <string name="server_timeout_title">"Temps d'espera del servidor"</string> + <string name="server_timeout_message">"vols tornar a connectar amb el servidor per reproduir el vídeo?"</string> + <string name="videoview_error_text_cannot_connect_retry">"La connexió ha fallat, intentant tornar a connectar a %1$d\u2026"</string> + <string name="media_controller_live">En directe</string> + <string name="media_controller_playing">S\'està reproduïnt</string> + <string name="media_controller_connecting">S\'està connectant\u2026</string> + <string name="bookmark_add">"Afegeix un marcador"</string> + <string name="bookmark_display">"Mostra els marcadors"</string> + <string name="bookmark_empty">"Sense marcadors"</string> + <string name="bookmark_exist">"El marcador ja existeix"</string> + <string name="bookmark_add_success">"S'ha afegit un marcador"</string> + <string name="bookmark_list">"Marcadors"</string> + <string name="bookmark_title">"Títol"</string> + <string name="bookmark_location">"Ubicació"</string> + <string name="delete_all">"Esborrar-ho tot"</string> + <string name="default_title">"Títol predefinit"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Més imatges</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">No s\'ha pogut silenciar: vídeo no suportat</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">No hi ha cap aplicació de mapes instal·lada per mostrar la ubicació.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Amplificació de greus</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Efecte 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Efectes de so</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Endolla els auriculars per aquests efectes.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">So Snapdragon+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Ho sento, aquest fitxer de vídeo no es pot retallar</string> + <string name="no_permission_for_drm">Ho sento, no es poden compartir arxius DRM protegits</string> + <string name="drm_license_info">Informació de llicència DRM</string> +</resources> diff --git a/res/values-cs/cm_strings.xml b/res/values-cs/cm_strings.xml new file mode 100644 index 000000000..f7742e36a --- /dev/null +++ b/res/values-cs/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Čas nahrávky</string> +</resources> diff --git a/res/values-cs/codeaurora_strings.xml b/res/values-cs/codeaurora_strings.xml new file mode 100644 index 000000000..6582553db --- /dev/null +++ b/res/values-cs/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Krok</string> + <string name="step_option_desc">Přizpůsobit krok vpřed/vzad</string> + <string name="setp_option_three_second">3 sekundy</string> + <string name="setp_option_six_second">6 sekund</string> + <string name="loop">"Opakování"</string> + <string name="single">"Jednou"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Reproduktor zapnut</string> + <string name="speaker_off">Reproduktor vypnut</string> + <string name="speaker_need_headset">Pro využití této funkce připojte sluchátka.</string> + <string name="single_track">"Jedna stopa"</string> + <string name="input_url">"Zadejte URL"</string> + <string name="streaming_settings">"Nastavení pro datové toky"</string> + <string name="next">"Další"</string> + <string name="previous">"Předchozí"</string> + <string name="buffer_size">Velikost vyrovnávací paměti</string> + <string name="apn">Upřednostňované APN</string> + <string name="rtp_min_port">Min. č. portu</string> + <string name="rtp_max_port">Max. č. portu</string> + <string name="set_rtp_min_port">Nastavit min. č. portu</string> + <string name="set_rtp_max_port">Nastavit max. č. portu</string> + <string name="set_buffer_size">Nastavit velikost vyrovnávací paměťi</string> + <string name="set_apn">Vyberte upřednostňovaný APN</string> + <string name="setting">Nastavení</string> + <string name="server_timeout_title">"Časový limit serveru"</string> + <string name="server_timeout_message">"Znovu připojit k serveru a spustit video?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Připojení se nezdařilo, pokus o obnovení spojení k „%1$d“\u2026"</string> + <string name="media_controller_live">Živě</string> + <string name="media_controller_playing">Přehrávání</string> + <string name="media_controller_connecting">Připojování\u2026</string> + <string name="bookmark_add">"Přidat záložku"</string> + <string name="bookmark_display">"Zobrazit záložky"</string> + <string name="bookmark_empty">"Žádné záložky"</string> + <string name="bookmark_exist">"Záložka již existuje"</string> + <string name="bookmark_add_success">"Založka přidána"</string> + <string name="bookmark_list">"Záložky"</string> + <string name="bookmark_title">"Název"</string> + <string name="bookmark_location">"Poloha"</string> + <string name="delete_all">"Odstranit vše"</string> + <string name="default_title">"Výchozí název"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Další obrázky</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Nelze ztlumit: video není podporované</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Není nainstalována žádná mapová aplikace pro zobrazení polohy.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Zvýraznění basů</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D efekt</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Zvukové efekty</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Při připojení sluchátek použít tyto efekty.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Toto video nelze oříznout</string> + <string name="no_permission_for_drm">Omlouváme se, soubory chráněné DRM nelze sdílet</string> + <string name="drm_license_info">Informace o licenci DRM</string> +</resources> diff --git a/res/values-cy/cm_strings.xml b/res/values-cy/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-cy/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-cy/codeaurora_strings.xml b/res/values-cy/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-cy/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-cy/filtershow_strings.xml b/res/values-cy/filtershow_strings.xml new file mode 100644 index 000000000..ddd9262fb --- /dev/null +++ b/res/values-cy/filtershow_strings.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <!-- Text for size x [CHAR LIMIT=1] --> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <!-- Label for aspect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <!-- The title for draw size [CHAR LIMIT=50] --> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <!-- Label for the notification [CHAR LIMIT=50] --> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <!-- Label for preset name [CHAR LIMIT=30] --> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> +</resources> diff --git a/res/values-cy/strings.xml b/res/values-cy/strings.xml new file mode 100644 index 000000000..80a686614 --- /dev/null +++ b/res/values-cy/strings.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <!-- Movie View Resume Playing dialog title --> + <!-- Movie View Start Playing dialog title --> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <!-- Displayed in the title of those albums that are being loaded --> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <!-- Movie View Start Playing button "Beginning" --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <!-- Toast/alert that the image is being saved to the SD card --> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <!-- Toast/alert after saving wallpaper --> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <!-- String indicating more actions are available --> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <!-- Title of the StackView AppWidget --> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <!-- The title of menu item where user can add a new account --> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <!-- Label for album filmstrip button --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <!-- Text to show with progress bar while stitching in Gallery --> + <!-- The label on the button that will save an edited image --> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <!-- Status message shown when scanning the content from the camera has completed --> + <!-- Status message shown when content from an external camera is being imported --> + <!-- Status message shown when there is no content available to be imported --> + <!-- Status message shown when there is no MTP device connected --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <!-- alert to the user to wait for some operation to complete --> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <!-- alert to the user that an SD card must be installed before using the camera --> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <!-- alert to the user that the SD card is being disk-checked --> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <!-- Settings screen, setting title text --> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <!-- Settings screen, Camera setting category title --> + <!-- Settings screen, Camcorder setting category title --> + <!-- Settings screen, Picture size title --> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <!-- Settings screen, Focus mode dialog radio button choices --> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <!-- flash label [CHAR LIMIT=50] --> + <!-- Settings screen, Flash mode dialog radio button choices --> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <!-- Menu, white balance label --> + <!-- Settings screen, White balance dialog radio button choices --> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <!-- Exposure settings in preference --> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <!-- switch camera label front [CHAR LIMIT=60] --> + <!-- Dialog "OK" button. Dismisses dialog. --> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <!-- settings label [CHAR LIMIT=50] --> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-da/cm_strings.xml b/res/values-da/cm_strings.xml new file mode 100644 index 000000000..df00327d7 --- /dev/null +++ b/res/values-da/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Optagelsestidspunkt</string> +</resources> diff --git a/res/values-da/codeaurora_strings.xml b/res/values-da/codeaurora_strings.xml new file mode 100644 index 000000000..b54b51693 --- /dev/null +++ b/res/values-da/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Trin</string> + <string name="step_option_desc">Tilpas trin for hurtig frem- og tilbagespoling</string> + <string name="setp_option_three_second">3 sekunder</string> + <string name="setp_option_six_second">6 sekunder</string> + <string name="loop">"Gentagelse"</string> + <string name="single">"Enkel"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Højttaler TIL</string> + <string name="speaker_off">Højttaler FRA</string> + <string name="speaker_need_headset">Tilslut hovedtelefonerne for at bruge denne funktion.</string> + <string name="single_track">"Enkelt spor"</string> + <string name="input_url">"Angiv URL"</string> + <string name="streaming_settings">"Streaming-indstillinger"</string> + <string name="next">"Næste"</string> + <string name="previous">"Forrige"</string> + <string name="buffer_size">Bufferstørrelse</string> + <string name="apn">Foretrukne APN</string> + <string name="rtp_min_port">Min. port</string> + <string name="rtp_max_port">Maks. port</string> + <string name="set_rtp_min_port">Angiv min. port</string> + <string name="set_rtp_max_port">Angiv maks. port</string> + <string name="set_buffer_size">Angiv Bufferstørrelse</string> + <string name="set_apn">Vælg foretrukne APN</string> + <string name="setting">Indstillinger</string> + <string name="server_timeout_title">"Servertimeout"</string> + <string name="server_timeout_message">"Genopret forbindelsen til serveren for at afspille videoen?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Tilslutning mislykkedes, forsøger at genoprette forbindelsen til %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Afspiller</string> + <string name="media_controller_connecting">Forbinder\u2026</string> + <string name="bookmark_add">"Tilføj bogmærke"</string> + <string name="bookmark_display">"Vis bogmærker"</string> + <string name="bookmark_empty">"Ingen bogmærker"</string> + <string name="bookmark_exist">"Bogmærket findes allerede"</string> + <string name="bookmark_add_success">"Bogmærke tilføjet"</string> + <string name="bookmark_list">"Bogmærker"</string> + <string name="bookmark_title">"Titel"</string> + <string name="bookmark_location">"Lokation"</string> + <string name="delete_all">"Slet alt"</string> + <string name="default_title">"Standardtitel"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Flere billeder</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Kan ikke slå lyden fra : video understøttes ikke</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Der er ikke installeret en kort-app til at vise placeringen.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Basforstærkning</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D-effekt</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Lydeffekter</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Tilslut hovedtelefoner for disse effekter.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Desværre, denne videofil kan ikke trimmes</string> + <string name="no_permission_for_drm">Beklager, DRM-beskyttede filer ikke kan deles</string> + <string name="drm_license_info">DRM licens info</string> +</resources> diff --git a/res/values-de/cm_strings.xml b/res/values-de/cm_strings.xml new file mode 100644 index 000000000..bb4a6877d --- /dev/null +++ b/res/values-de/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Aufzeichnungszeit</string> +</resources> diff --git a/res/values-de/codeaurora_strings.xml b/res/values-de/codeaurora_strings.xml new file mode 100644 index 000000000..3f6b32ce3 --- /dev/null +++ b/res/values-de/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Schritt</string> + <string name="step_option_desc">Vor- und Zurückspul-Schritt anpassen</string> + <string name="setp_option_three_second">3 Sekunden</string> + <string name="setp_option_six_second">6 Sekunden</string> + <string name="loop">"Endlosschleife"</string> + <string name="single">"Einzeln"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Lautsprecher AN</string> + <string name="speaker_off">Lautsprecher AUS</string> + <string name="speaker_need_headset">Für diese Funktionen müssen Sie Kopfhörer verwenden.</string> + <string name="single_track">"Einzelner Titel"</string> + <string name="input_url">"Geben Sie eine URL ein."</string> + <string name="streaming_settings">"Streaming-Einstellungen"</string> + <string name="next">"Weiter"</string> + <string name="previous">"Zurück"</string> + <string name="buffer_size">Puffergröße</string> + <string name="apn">Bevorzugter APN</string> + <string name="rtp_min_port">Min. Wert für Port</string> + <string name="rtp_max_port">Max. Wert für Port</string> + <string name="set_rtp_min_port">Min. Wert für Port festlegen</string> + <string name="set_rtp_max_port">Max. Wert für Port festlegen</string> + <string name="set_buffer_size">Puffergröße einstellen</string> + <string name="set_apn">Bevorzugten APN auswählen</string> + <string name="setting">Einstellungen</string> + <string name="server_timeout_title">"Zeitüberschreitung beim Server"</string> + <string name="server_timeout_message">"Erneut zum Server verbinden, um das Video abzuspielen?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Verbindung fehlgeschlagen, neuer Verbindungsversuch zu %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Derzeit läuft</string> + <string name="media_controller_connecting">Verbindung wird hergestellt\u2026</string> + <string name="bookmark_add">"Lesezeichen hinzufügen"</string> + <string name="bookmark_display">"Lesezeichen anzeigen"</string> + <string name="bookmark_empty">"Keine Lesezeichen"</string> + <string name="bookmark_exist">"Lesezeichen ist bereits vorhanden"</string> + <string name="bookmark_add_success">"Lesezeichen hinzugefügt"</string> + <string name="bookmark_list">"Lesezeichen"</string> + <string name="bookmark_title">"Titel"</string> + <string name="bookmark_location">"Ort"</string> + <string name="delete_all">"Alle löschen"</string> + <string name="default_title">"Standardtitel"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Weitere Bilder</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Stummschalten nicht möglich – das Video wird nicht unterstützt.</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Es ist keine Karten-App zum Anzeigen des Standorts installiert.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bassverstärkung</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D-Effekt</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Audioeffekte</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Schließen Sie Kopfhörer für diese Effekte an.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon-Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Diese Videodatei kann nicht gekürzt werden.</string> + <string name="no_permission_for_drm">Durch DRM geschützte Dateien können leider nicht geteilt werden.</string> + <string name="drm_license_info">DRM-Lizenzinformationen</string> +</resources> diff --git a/res/values-el/cm_strings.xml b/res/values-el/cm_strings.xml new file mode 100644 index 000000000..87732e692 --- /dev/null +++ b/res/values-el/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Ημερομηνία καταγραφής</string> +</resources> diff --git a/res/values-el/codeaurora_strings.xml b/res/values-el/codeaurora_strings.xml new file mode 100644 index 000000000..09eb2bf3e --- /dev/null +++ b/res/values-el/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Βήμα</string> + <string name="step_option_desc">Προσαρμόστε το βήμα fast forward/rewind</string> + <string name="setp_option_three_second">3 δευτερόλεπτα</string> + <string name="setp_option_six_second">6 δευτερόλεπτα</string> + <string name="loop">"Επανάληψη"</string> + <string name="single">"Μονό"</string> + <string name="stereo">"Στερεοφωνικό"</string> + <string name="speaker_on">Ηχείο ενεργό</string> + <string name="speaker_off">Ηχείο ανενεργό</string> + <string name="speaker_need_headset">Συνδέστε ακουστικά για να χρησιμοποιήσετε αυτή τη δυνατότητα.</string> + <string name="single_track">"Μονό κομμάτι"</string> + <string name="input_url">"Εισάγετε URL"</string> + <string name="streaming_settings">"Ρυθµίσεις ροής"</string> + <string name="next">"Επόμενο"</string> + <string name="previous">"Προηγούμενο"</string> + <string name="buffer_size">Μέγεθος buffer</string> + <string name="apn">Προτιμώμενο APN</string> + <string name="rtp_min_port">Ελάχιστη θύρα</string> + <string name="rtp_max_port">Μέγιστη θύρα</string> + <string name="set_rtp_min_port">Ορισμός ελάχιστης θύρας</string> + <string name="set_rtp_max_port">Ορισμός μέγιστης θύρας</string> + <string name="set_buffer_size">Ορισμός μεγέθους buffer</string> + <string name="set_apn">Επιλογή προτιμώμενου APN</string> + <string name="setting">Ρυθμίσεις</string> + <string name="server_timeout_title">"Χρονικό όριο διακομιστή"</string> + <string name="server_timeout_message">"Επανασύνδεση με το διακομιστή για αναπαραγωγή του βίντεο;"</string> + <string name="videoview_error_text_cannot_connect_retry">"Η σύνδεση απέτυχε, προσπάθεια επανασύνδεσης με το %1$d\u2026"</string> + <string name="media_controller_live">Ζωντανά</string> + <string name="media_controller_playing">Γίνεται αναπαραγωγή</string> + <string name="media_controller_connecting">Σύνδεση\u2026</string> + <string name="bookmark_add">"Προσθήκη σελιδοδείκτη"</string> + <string name="bookmark_display">"Εμφάνιση σελιδοδεικτών"</string> + <string name="bookmark_empty">"Δεν υπάρχουν σελιδοδείκτες"</string> + <string name="bookmark_exist">"Ο σελιδοδείκτης υπάρχει ήδη"</string> + <string name="bookmark_add_success">"Ο σελιδοδείκτης προστέθηκε"</string> + <string name="bookmark_list">"Σελιδοδείκτες"</string> + <string name="bookmark_title">"Τίτλος"</string> + <string name="bookmark_location">"Τοποθεσία"</string> + <string name="delete_all">"Διαγραφή όλων"</string> + <string name="default_title">"Προεπιλεγμένος τίτλος"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Περισσότερες εικόνες</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Δεν είναι δυνατή η σίγαση: το βίντεο δεν υποστηρίζεται</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Δεν υπάρχει εγκατεστημένη καμία εφαρμογή χαρτών ώστε να δείτε την τοποθεσία.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Ενίσχυση μπάσου</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Εφέ 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Ηχητικά εφέ</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Συνδέστε ακουστικά για αυτά τα εφέ.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Δυστυχώς δεν είναι δυνατή η περικοπή αυτού του αρχείου βίντεο</string> + <string name="no_permission_for_drm">Συγγνώμη, δεν είναι δυνατή η κοινή χρήση αρχείων με προστασία DRM</string> + <string name="drm_license_info">Πληροφορίες άδειας DRM</string> +</resources> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 507b21064..0a1be1421 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -70,17 +70,17 @@ <string name="switch_to_camera" msgid="7280111806675169992">"Φωτογραφική μηχανή"</string> <plurals name="number_of_items_selected"> <item quantity="zero" msgid="2142579311530586258">"Επιλέχθηκαν %1$d"</item> - <item quantity="one" msgid="2478365152745637768">"Επιλέχθηκαν %1$d"</item> + <item quantity="one" msgid="2478365152745637768">"Επιλέχθηκε %1$d"</item> <item quantity="other" msgid="754722656147810487">"Επιλέχθηκαν %1$d"</item> </plurals> <plurals name="number_of_albums_selected"> <item quantity="zero" msgid="749292746814788132">"Επιλέχθηκαν %1$d"</item> - <item quantity="one" msgid="6184377003099987825">"Επιλέχθηκαν %1$d"</item> + <item quantity="one" msgid="6184377003099987825">"Επιλέχθηκε %1$d"</item> <item quantity="other" msgid="53105607141906130">"Επιλέχθηκαν %1$d"</item> </plurals> <plurals name="number_of_groups_selected"> <item quantity="zero" msgid="3466388370310869238">"Επιλέχθηκαν %1$d"</item> - <item quantity="one" msgid="5030162638216034260">"Επιλέχθηκαν %1$d"</item> + <item quantity="one" msgid="5030162638216034260">"Επιλέχθηκε %1$d"</item> <item quantity="other" msgid="3512041363942842738">"Επιλέχθηκαν %1$d"</item> </plurals> <string name="show_on_map" msgid="6157544221201750980">"Εμφάνιση στον χάρτη"</string> diff --git a/res/values-en-rAU/cm_strings.xml b/res/values-en-rAU/cm_strings.xml new file mode 100644 index 000000000..3a6e3a879 --- /dev/null +++ b/res/values-en-rAU/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Record time</string> +</resources> diff --git a/res/values-en-rAU/codeaurora_strings.xml b/res/values-en-rAU/codeaurora_strings.xml new file mode 100644 index 000000000..04949abc2 --- /dev/null +++ b/res/values-en-rAU/codeaurora_strings.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Step</string> + <string name="step_option_desc">Customise fast forward/rewind step</string> + <string name="setp_option_three_second">3 seconds</string> + <string name="setp_option_six_second">6 seconds</string> + <string name="loop">"Loop"</string> + <string name="single">"Single"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Speaker ON</string> + <string name="speaker_off">Speaker OFF</string> + <string name="speaker_need_headset">Plug in headphones to use this feature.</string> + <string name="single_track">"Single track"</string> + <string name="input_url">"Enter URL"</string> + <string name="streaming_settings">"Streaming settings"</string> + <string name="next">"Next"</string> + <string name="previous">"Previous"</string> + <string name="buffer_size">Buffer size</string> + <string name="apn">Preferred APN</string> + <string name="rtp_min_port">Min port</string> + <string name="rtp_max_port">Max port</string> + <string name="set_rtp_min_port">Set min port</string> + <string name="set_rtp_max_port">Set max port</string> + <string name="set_buffer_size">Set buffer size</string> + <string name="set_apn">Select preferred APN</string> + <string name="setting">Settings</string> + <string name="server_timeout_title">"Server timeout"</string> + <string name="server_timeout_message">"Reconnect to the server to play the video?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Connection failed, trying to reconnect to %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Playing</string> + <string name="media_controller_connecting">Connecting\u2026</string> + <string name="bookmark_add">"Add bookmark"</string> + <string name="bookmark_display">"Show bookmarks"</string> + <string name="bookmark_empty">"No bookmarks"</string> + <string name="bookmark_exist">"Bookmark already exists"</string> + <string name="bookmark_add_success">"Bookmark added"</string> + <string name="bookmark_list">"Bookmarks"</string> + <string name="bookmark_title">"Title"</string> + <string name="bookmark_location">"Location"</string> + <string name="delete_all">"Delete all"</string> + <string name="default_title">"Default title"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">More images</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Can not mute : video not supported</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">There is no maps app installed to show the location.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bass boost</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D effect</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Audio effects</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Plug in headphones for these effects.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Sorry, this video file can not be trimmed</string> +</resources> diff --git a/res/values-en-rGB/cm_strings.xml b/res/values-en-rGB/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-en-rGB/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-en-rGB/codeaurora_strings.xml b/res/values-en-rGB/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-en-rGB/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-en-rIN/cm_strings.xml b/res/values-en-rIN/cm_strings.xml new file mode 100644 index 000000000..3a6e3a879 --- /dev/null +++ b/res/values-en-rIN/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Record time</string> +</resources> diff --git a/res/values-en-rIN/codeaurora_strings.xml b/res/values-en-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..c6b42c68f --- /dev/null +++ b/res/values-en-rIN/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Step</string> + <string name="step_option_desc">Customize fast forward/rewind step</string> + <string name="setp_option_three_second">3 seconds</string> + <string name="setp_option_six_second">6 seconds</string> + <string name="loop">"Loop"</string> + <string name="single">"Single"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Speaker ON</string> + <string name="speaker_off">Speaker OFF</string> + <string name="speaker_need_headset">Plug in headphones to use this feature.</string> + <string name="single_track">"Single track"</string> + <string name="input_url">"Enter URL"</string> + <string name="streaming_settings">"Streaming settings"</string> + <string name="next">"Next"</string> + <string name="previous">"Previous"</string> + <string name="buffer_size">Buffer size</string> + <string name="apn">Preferred APN</string> + <string name="rtp_min_port">Min port</string> + <string name="rtp_max_port">Max port</string> + <string name="set_rtp_min_port">Set min port</string> + <string name="set_rtp_max_port">Set max port</string> + <string name="set_buffer_size">Set buffer size</string> + <string name="set_apn">Select preferred APN</string> + <string name="setting">Settings</string> + <string name="server_timeout_title">"Server timeout"</string> + <string name="server_timeout_message">"Reconnect to the server to play the video?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Connection failed, trying to reconnect to %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Playing</string> + <string name="media_controller_connecting">Connecting\u2026</string> + <string name="bookmark_add">"Add bookmark"</string> + <string name="bookmark_display">"Show bookmarks"</string> + <string name="bookmark_empty">"No bookmarks"</string> + <string name="bookmark_exist">"Bookmark already exists"</string> + <string name="bookmark_add_success">"Bookmark added"</string> + <string name="bookmark_list">"Bookmarks"</string> + <string name="bookmark_title">"Title"</string> + <string name="bookmark_location">"Location"</string> + <string name="delete_all">"Delete all"</string> + <string name="default_title">"Default title"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">More images</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Can not mute : video not supported</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">There is no maps app installed to show the location.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bass boost</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D effect</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Audio effects</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Plug in headphones for these effects.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Sorry, this video file can not be trimmed</string> + <string name="no_permission_for_drm">Sorry, DRM protected files cannot be shared</string> + <string name="drm_license_info">DRM license info</string> +</resources> diff --git a/res/values-en-rPT/cm_strings.xml b/res/values-en-rPT/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-en-rPT/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-en-rPT/codeaurora_strings.xml b/res/values-en-rPT/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-en-rPT/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-en-rPT/filtershow_strings.xml b/res/values-en-rPT/filtershow_strings.xml new file mode 100644 index 000000000..ddd9262fb --- /dev/null +++ b/res/values-en-rPT/filtershow_strings.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <!-- Text for size x [CHAR LIMIT=1] --> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <!-- Label for aspect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <!-- The title for draw size [CHAR LIMIT=50] --> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <!-- Label for the notification [CHAR LIMIT=50] --> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <!-- Label for preset name [CHAR LIMIT=30] --> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> +</resources> diff --git a/res/values-en-rPT/strings.xml b/res/values-en-rPT/strings.xml new file mode 100644 index 000000000..80a686614 --- /dev/null +++ b/res/values-en-rPT/strings.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <!-- Movie View Resume Playing dialog title --> + <!-- Movie View Start Playing dialog title --> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <!-- Displayed in the title of those albums that are being loaded --> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <!-- Movie View Start Playing button "Beginning" --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <!-- Toast/alert that the image is being saved to the SD card --> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <!-- Toast/alert after saving wallpaper --> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <!-- String indicating more actions are available --> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <!-- Title of the StackView AppWidget --> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <!-- The title of menu item where user can add a new account --> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <!-- Label for album filmstrip button --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <!-- Text to show with progress bar while stitching in Gallery --> + <!-- The label on the button that will save an edited image --> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <!-- Status message shown when scanning the content from the camera has completed --> + <!-- Status message shown when content from an external camera is being imported --> + <!-- Status message shown when there is no content available to be imported --> + <!-- Status message shown when there is no MTP device connected --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <!-- alert to the user to wait for some operation to complete --> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <!-- alert to the user that an SD card must be installed before using the camera --> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <!-- alert to the user that the SD card is being disk-checked --> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <!-- Settings screen, setting title text --> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <!-- Settings screen, Camera setting category title --> + <!-- Settings screen, Camcorder setting category title --> + <!-- Settings screen, Picture size title --> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <!-- Settings screen, Focus mode dialog radio button choices --> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <!-- flash label [CHAR LIMIT=50] --> + <!-- Settings screen, Flash mode dialog radio button choices --> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <!-- Menu, white balance label --> + <!-- Settings screen, White balance dialog radio button choices --> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <!-- Exposure settings in preference --> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <!-- switch camera label front [CHAR LIMIT=60] --> + <!-- Dialog "OK" button. Dismisses dialog. --> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <!-- settings label [CHAR LIMIT=50] --> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-eo/cm_strings.xml b/res/values-eo/cm_strings.xml new file mode 100644 index 000000000..edf6ba295 --- /dev/null +++ b/res/values-eo/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Rikordotempo</string> +</resources> diff --git a/res/values-eo/codeaurora_strings.xml b/res/values-eo/codeaurora_strings.xml new file mode 100644 index 000000000..d93bd6077 --- /dev/null +++ b/res/values-eo/codeaurora_strings.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Paŝo</string> + <string name="step_option_desc">Agordi rapidan aantaŭ-/re-iron</string> + <string name="setp_option_three_second">3 sekundoj</string> + <string name="setp_option_six_second">6 sekundoj</string> + <string name="loop">"Buklo"</string> + <string name="single">"Unuopaĵo"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Laŭtilo ŝaltita</string> + <string name="speaker_off">Laŭtilo malŝaltita</string> + <string name="speaker_need_headset">Konektu kapaŭskultilojn por uzi tiun eblecon.</string> + <string name="single_track">"Unuopaĵa muziko"</string> + <string name="input_url">"Tajpu URL"</string> + <string name="streaming_settings">"Elsendflua agordo"</string> + <string name="next">"Sekvonta"</string> + <string name="previous">"Antaŭa"</string> + <string name="buffer_size">Bufra grandeco</string> + <string name="apn">Plej ŝatata APN</string> + <string name="rtp_min_port">Minimuma konektejo</string> + <string name="rtp_max_port">Maksimuma konektejo</string> + <string name="set_rtp_min_port">Agordi minimuman konektejon</string> + <string name="set_rtp_max_port">Agordi maksimuman konektejon</string> + <string name="set_buffer_size">Agordi bufran grandecon</string> + <string name="set_apn">Elekti plej ŝatatan APN</string> + <string name="setting">Agordoj</string> + <string name="server_timeout_title">"Servila tempolimo"</string> + <string name="server_timeout_message">"Ĉu rekonekti al la servilo por ludi filmon?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Konektado fiaskis, provante denove konekti al %1$d\u2026"</string> + <string name="media_controller_live">Rekta</string> + <string name="media_controller_playing">Ludado</string> + <string name="media_controller_connecting">Konektiĝas\u2026</string> + <string name="bookmark_add">"Aldoni legosignon"</string> + <string name="bookmark_display">"Montri legosignojn"</string> + <string name="bookmark_empty">"Neniu legosigno"</string> + <string name="bookmark_exist">"Legosigno jam ekzistas"</string> + <string name="bookmark_add_success">"Legosigno aldonita"</string> + <string name="bookmark_list">"Legosignoj"</string> + <string name="bookmark_title">"Titolo"</string> + <string name="bookmark_location">"Loko"</string> + <string name="delete_all">"Forigi ĉion"</string> + <string name="default_title">"Defaŭlta titolo"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Pli da bildoj</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Ne eblas silentigi : filmo ne subtenata</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Neniu mapa aplikaĵo por montri lokon.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Basa amplifikilo</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D efekto</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Aŭdaj efektoj</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Konektu kapaŭskultilojn por tiuj efektoj.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Bedaŭrinde, tiu filmo ne tondeteblas</string> +</resources> diff --git a/res/values-eo/filtershow_strings.xml b/res/values-eo/filtershow_strings.xml new file mode 100644 index 000000000..ddd9262fb --- /dev/null +++ b/res/values-eo/filtershow_strings.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <!-- Text for size x [CHAR LIMIT=1] --> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <!-- Label for aspect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <!-- The title for draw size [CHAR LIMIT=50] --> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <!-- Label for the notification [CHAR LIMIT=50] --> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <!-- Label for preset name [CHAR LIMIT=30] --> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> +</resources> diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml new file mode 100644 index 000000000..80a686614 --- /dev/null +++ b/res/values-eo/strings.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <!-- Movie View Resume Playing dialog title --> + <!-- Movie View Start Playing dialog title --> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <!-- Displayed in the title of those albums that are being loaded --> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <!-- Movie View Start Playing button "Beginning" --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <!-- Toast/alert that the image is being saved to the SD card --> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <!-- Toast/alert after saving wallpaper --> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <!-- String indicating more actions are available --> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <!-- Title of the StackView AppWidget --> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <!-- The title of menu item where user can add a new account --> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <!-- Label for album filmstrip button --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <!-- Text to show with progress bar while stitching in Gallery --> + <!-- The label on the button that will save an edited image --> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <!-- Status message shown when scanning the content from the camera has completed --> + <!-- Status message shown when content from an external camera is being imported --> + <!-- Status message shown when there is no content available to be imported --> + <!-- Status message shown when there is no MTP device connected --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <!-- alert to the user to wait for some operation to complete --> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <!-- alert to the user that an SD card must be installed before using the camera --> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <!-- alert to the user that the SD card is being disk-checked --> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <!-- Settings screen, setting title text --> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <!-- Settings screen, Camera setting category title --> + <!-- Settings screen, Camcorder setting category title --> + <!-- Settings screen, Picture size title --> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <!-- Settings screen, Focus mode dialog radio button choices --> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <!-- flash label [CHAR LIMIT=50] --> + <!-- Settings screen, Flash mode dialog radio button choices --> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <!-- Menu, white balance label --> + <!-- Settings screen, White balance dialog radio button choices --> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <!-- Exposure settings in preference --> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <!-- switch camera label front [CHAR LIMIT=60] --> + <!-- Dialog "OK" button. Dismisses dialog. --> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <!-- settings label [CHAR LIMIT=50] --> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-es-rMX/cm_strings.xml b/res/values-es-rMX/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-es-rMX/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-es-rMX/codeaurora_strings.xml b/res/values-es-rMX/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-es-rMX/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-es-rMX/filtershow_strings.xml b/res/values-es-rMX/filtershow_strings.xml new file mode 100644 index 000000000..ddd9262fb --- /dev/null +++ b/res/values-es-rMX/filtershow_strings.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <!-- Text for size x [CHAR LIMIT=1] --> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <!-- Label for aspect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <!-- The title for draw size [CHAR LIMIT=50] --> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <!-- Label for the notification [CHAR LIMIT=50] --> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <!-- Label for preset name [CHAR LIMIT=30] --> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> +</resources> diff --git a/res/values-es-rMX/strings.xml b/res/values-es-rMX/strings.xml new file mode 100644 index 000000000..80a686614 --- /dev/null +++ b/res/values-es-rMX/strings.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <!-- Movie View Resume Playing dialog title --> + <!-- Movie View Start Playing dialog title --> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <!-- Displayed in the title of those albums that are being loaded --> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <!-- Movie View Start Playing button "Beginning" --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <!-- Toast/alert that the image is being saved to the SD card --> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <!-- Toast/alert after saving wallpaper --> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <!-- String indicating more actions are available --> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <!-- Title of the StackView AppWidget --> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <!-- The title of menu item where user can add a new account --> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <!-- Label for album filmstrip button --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <!-- Text to show with progress bar while stitching in Gallery --> + <!-- The label on the button that will save an edited image --> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <!-- Status message shown when scanning the content from the camera has completed --> + <!-- Status message shown when content from an external camera is being imported --> + <!-- Status message shown when there is no content available to be imported --> + <!-- Status message shown when there is no MTP device connected --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <!-- alert to the user to wait for some operation to complete --> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <!-- alert to the user that an SD card must be installed before using the camera --> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <!-- alert to the user that the SD card is being disk-checked --> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <!-- Settings screen, setting title text --> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <!-- Settings screen, Camera setting category title --> + <!-- Settings screen, Camcorder setting category title --> + <!-- Settings screen, Picture size title --> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <!-- Settings screen, Focus mode dialog radio button choices --> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <!-- flash label [CHAR LIMIT=50] --> + <!-- Settings screen, Flash mode dialog radio button choices --> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <!-- Menu, white balance label --> + <!-- Settings screen, White balance dialog radio button choices --> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <!-- Exposure settings in preference --> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <!-- switch camera label front [CHAR LIMIT=60] --> + <!-- Dialog "OK" button. Dismisses dialog. --> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <!-- settings label [CHAR LIMIT=50] --> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-es-rUS/cm_strings.xml b/res/values-es-rUS/cm_strings.xml new file mode 100644 index 000000000..c9e7cdc10 --- /dev/null +++ b/res/values-es-rUS/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Fecha de grabación</string> +</resources> diff --git a/res/values-es-rUS/codeaurora_strings.xml b/res/values-es-rUS/codeaurora_strings.xml new file mode 100644 index 000000000..bce14b9a3 --- /dev/null +++ b/res/values-es-rUS/codeaurora_strings.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="speaker_need_headset">Conecta los auriculares para usar esta función.</string> + <string name="input_url">"Ingresar URL"</string> + <string name="next">"Siguiente"</string> + <string name="videoview_error_text_cannot_connect_retry">"Error de conexión, intentando volver a conectar con %1$d\u2026"</string> + <string name="bookmark_add_success">"Marcador añadido"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">No se puede silenciar: video no compatible</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Conectar los auriculares para estos efectos.</string> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-es/cm_strings.xml b/res/values-es/cm_strings.xml new file mode 100644 index 000000000..9996c8a7a --- /dev/null +++ b/res/values-es/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Hora de grabación</string> +</resources> diff --git a/res/values-es/codeaurora_strings.xml b/res/values-es/codeaurora_strings.xml new file mode 100644 index 000000000..071420243 --- /dev/null +++ b/res/values-es/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Paso</string> + <string name="step_option_desc">Personalizar el salto rápido hacia adelante o hacia atrás</string> + <string name="setp_option_three_second">3 segundos</string> + <string name="setp_option_six_second">6 segundos</string> + <string name="loop">"Bucle"</string> + <string name="single">"Simple"</string> + <string name="stereo">"Estéreo"</string> + <string name="speaker_on">Altavoz encendido</string> + <string name="speaker_off">Altavoz apagado</string> + <string name="speaker_need_headset">Conecta unos auriculares para usar esta característica.</string> + <string name="single_track">"Pista sencilla"</string> + <string name="input_url">"Introducir URL"</string> + <string name="streaming_settings">"Ajustes de transmisión"</string> + <string name="next">"Siguiente"</string> + <string name="previous">"Anterior"</string> + <string name="buffer_size">Tamaño de memoria intermedia</string> + <string name="apn">APN preferido</string> + <string name="rtp_min_port">Puerto mínimo</string> + <string name="rtp_max_port">Puerto máximo</string> + <string name="set_rtp_min_port">Establecer puerto inferior</string> + <string name="set_rtp_max_port">Establecer puerto superior</string> + <string name="set_buffer_size">Establecer tamaño de memoria intermedia</string> + <string name="set_apn">Seleccionar APN preferido</string> + <string name="setting">Ajustes</string> + <string name="server_timeout_title">"Tiempo de espera del servidor"</string> + <string name="server_timeout_message">"¿Volver a conectar al servidor para reproducir el vídeo?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Falló la conexión. Intentando volver a conectar con %1$d\u2026"</string> + <string name="media_controller_live">En directo</string> + <string name="media_controller_playing">Reproduciendo</string> + <string name="media_controller_connecting">Conectando\u2026</string> + <string name="bookmark_add">"Añadir marcador"</string> + <string name="bookmark_display">"Mostrar marcadores"</string> + <string name="bookmark_empty">"No hay marcadores"</string> + <string name="bookmark_exist">"Este marcador ya existe"</string> + <string name="bookmark_add_success">"Marcador añadido"</string> + <string name="bookmark_list">"Marcadores"</string> + <string name="bookmark_title">"Título"</string> + <string name="bookmark_location">"Ubicación"</string> + <string name="delete_all">"Eliminar todo"</string> + <string name="default_title">"Título por defecto"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Más imágenes</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">No se puede silenciar: vídeo no soportado</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">No hay ninguna aplicación de mapas instalada para mostrar la ubicación.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Refuerzo de graves</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Efecto 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Efectos de sonido</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Conecta unos auriculares para estos efectos.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Este vídeo no puede ser recortado</string> + <string name="no_permission_for_drm">Lo sentimos, pero no se pueden compartir los archivos protegidos por DRM</string> + <string name="drm_license_info">Información de la licencia DRM</string> +</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..3506b4d57 --- /dev/null +++ b/res/values-et-rEE/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Salvestusaeg</string> +</resources> diff --git a/res/values-et-rEE/codeaurora_strings.xml b/res/values-et-rEE/codeaurora_strings.xml new file mode 100644 index 000000000..9c909e37f --- /dev/null +++ b/res/values-et-rEE/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Samm</string> + <string name="step_option_desc">Kohanda kiirkerimise edasi/tagasi sammu</string> + <string name="setp_option_three_second">3 sekundit</string> + <string name="setp_option_six_second">6 sekundit</string> + <string name="loop">"Kordamine"</string> + <string name="single">"Üksik"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Kõlar sees</string> + <string name="speaker_off">Kõlar väljas</string> + <string name="speaker_need_headset">Ühendage kõrvaklapid et seda funktsiooni kasutada.</string> + <string name="single_track">"Üksik lugu"</string> + <string name="input_url">"Sisesta URL"</string> + <string name="streaming_settings">"Voogesituse seaded"</string> + <string name="next">"Järgmine"</string> + <string name="previous">"Eelmine"</string> + <string name="buffer_size">Puhvri suurus</string> + <string name="apn">Eelistatud APN</string> + <string name="rtp_min_port">Min. port</string> + <string name="rtp_max_port">Maks. port</string> + <string name="set_rtp_min_port">Sea min. port</string> + <string name="set_rtp_max_port">Sea maks. port</string> + <string name="set_buffer_size">Määra puhvri suurus</string> + <string name="set_apn">Vali eelistatud APN</string> + <string name="setting">Seaded</string> + <string name="server_timeout_title">"Serveri päring hangus"</string> + <string name="server_timeout_message">"Taasühenda serveriga video mängimiseks?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Ühendus ebaõnnestus, taasühendan %1$d\u2026"</string> + <string name="media_controller_live">Otse</string> + <string name="media_controller_playing">Mängin</string> + <string name="media_controller_connecting">Ühendun\u2026</string> + <string name="bookmark_add">"Lisa järjehoidja"</string> + <string name="bookmark_display">"Kuva järjehoidjad"</string> + <string name="bookmark_empty">"Järjehoidjad puuduvad"</string> + <string name="bookmark_exist">"Järjehoidja juba eksisteerib"</string> + <string name="bookmark_add_success">"Järjehoidja lisatud"</string> + <string name="bookmark_list">"Järjehoidjad"</string> + <string name="bookmark_title">"Pealkiri"</string> + <string name="bookmark_location">"Asukoht"</string> + <string name="delete_all">"Kustuta kõik"</string> + <string name="default_title">"Vaikimisi pealkiri"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Rohkem pilte</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Ei saa vaigistada : video pole toetatud</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Kaardirakendust pole installeeritud asukoha näitamiseks.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bassivõimendi</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D efekt</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Heliefektid</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Ühenda kõrvaklapid nende efektide jaoks.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Vabandust, seda videofaili ei saa kärpida</string> + <string name="no_permission_for_drm">Vabandust, DRM kaitstud faile ei saa jagada</string> + <string name="drm_license_info">DRM litsensi info</string> +</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..605dac95a --- /dev/null +++ b/res/values-eu-rES/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Grabaketaren ordua</string> +</resources> diff --git a/res/values-eu-rES/codeaurora_strings.xml b/res/values-eu-rES/codeaurora_strings.xml new file mode 100644 index 000000000..68f0055a7 --- /dev/null +++ b/res/values-eu-rES/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Urratsa</string> + <string name="step_option_desc">Pertsonalizatu aurrera/atzerako jauziak</string> + <string name="setp_option_three_second">3 segundo</string> + <string name="setp_option_six_second">6 segundo</string> + <string name="loop">"Bigiztatu"</string> + <string name="single">"Bakarra"</string> + <string name="stereo">"Estereoa"</string> + <string name="speaker_on">Bozgorailua piztuta</string> + <string name="speaker_off">Bozgorailua itzalita</string> + <string name="speaker_need_headset">Konektatu aurikularrak ezaugarri hau erabiltzeko.</string> + <string name="single_track">"Pista bakarra"</string> + <string name="input_url">"Sartu URLa"</string> + <string name="streaming_settings">"Transmisio jarraituaren ezarpenak"</string> + <string name="next">"Hurrengoa"</string> + <string name="previous">"Aurrekoa"</string> + <string name="buffer_size">Buffer neurria</string> + <string name="apn">APN hobetsia</string> + <string name="rtp_min_port">Gutxieneko ataka</string> + <string name="rtp_max_port">Gehieneko ataka</string> + <string name="set_rtp_min_port">Ezarri gutxieneko ataka</string> + <string name="set_rtp_max_port">Ezarri gehieneko ataka</string> + <string name="set_buffer_size">Ezarri buffer neurria</string> + <string name="set_apn">Ezarri APN hobetsia</string> + <string name="setting">Ezarpenak</string> + <string name="server_timeout_title">"Zerbitzariaren denbora-muga"</string> + <string name="server_timeout_message">"Zerbitzarira birkonektatu bideoa erreproduzitzeko?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Konexioak huts egin du, %1$d birkonektatzen\u2026"</string> + <string name="media_controller_live">Zuzenean</string> + <string name="media_controller_playing">Erreproduzitzen</string> + <string name="media_controller_connecting">Konektatzen\u2026</string> + <string name="bookmark_add">"Gehitu laster-marka"</string> + <string name="bookmark_display">"Erakutsi Laster-markak"</string> + <string name="bookmark_empty">"Ez dago laster-markarik"</string> + <string name="bookmark_exist">"Laster-marka badago aurretik"</string> + <string name="bookmark_add_success">"Laster-marka gehitu da"</string> + <string name="bookmark_list">"Laster-markak"</string> + <string name="bookmark_title">"Izenburua"</string> + <string name="bookmark_location">"Kokalekua"</string> + <string name="delete_all">"Ezabatu guztiak"</string> + <string name="default_title">"Izenburu lehenetsia"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Irudi gehiago</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Ezin da mututu: bideoa ez da onartzen</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Ez dago kokalekua bistaratu dezakeen mapa aplikaziorik instalatuta.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Baxuen indartzea</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D efektua</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Audio efektuak</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Konektatu aurikularrak efektu hauentzako .</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Barkatu, bideo hau ezin da ebaki</string> + <string name="no_permission_for_drm">Barkatu, DRM bidez babestutako fitxategiak ezin dira partekatu</string> + <string name="drm_license_info">DRM lizentziaren informazioa</string> +</resources> diff --git a/res/values-fa/cm_strings.xml b/res/values-fa/cm_strings.xml new file mode 100644 index 000000000..4407e66d4 --- /dev/null +++ b/res/values-fa/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">زمان ضبط</string> +</resources> diff --git a/res/values-fa/codeaurora_strings.xml b/res/values-fa/codeaurora_strings.xml new file mode 100644 index 000000000..8f3666f56 --- /dev/null +++ b/res/values-fa/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">گام</string> + <string name="step_option_desc">سفارشی کردن گام رو به جلو/عقب سریع</string> + <string name="setp_option_three_second">۳ ثانیه</string> + <string name="setp_option_six_second">۶ ثانیه</string> + <string name="loop">"تکرار"</string> + <string name="single">"تکی"</string> + <string name="stereo">"استریو"</string> + <string name="speaker_on">بلندگو روشن</string> + <string name="speaker_off">بلندگو خاموش</string> + <string name="speaker_need_headset">برای استفاده از این قابلیت هدفون را وصل کنید.</string> + <string name="single_track">"تکآهنگ"</string> + <string name="input_url">"آدرس را وارد کنید"</string> + <string name="streaming_settings">"تنظیمات پخش"</string> + <string name="next">"بعدی"</string> + <string name="previous">"قبلی"</string> + <string name="buffer_size">اندازه بافر</string> + <string name="apn">APN ترجیحی</string> + <string name="rtp_min_port">پورت min</string> + <string name="rtp_max_port">پورت max</string> + <string name="set_rtp_min_port">تنظیم پورت min</string> + <string name="set_rtp_max_port">تنظیم پورت max</string> + <string name="set_buffer_size">تنظیم اندازه بافر</string> + <string name="set_apn">انتخاب APN ترجیحی</string> + <string name="setting">تنظیمات</string> + <string name="server_timeout_title">"پایان زمان سرور"</string> + <string name="server_timeout_message">"برای پخش مجدد ویدیو دوباره به سرور متصل میشوید؟"</string> + <string name="videoview_error_text_cannot_connect_retry">"اتصال ناموفق بود، تلاش مجدد برای اتصال به %1$d\u2026"</string> + <string name="media_controller_live">زنده</string> + <string name="media_controller_playing">در حال پخش</string> + <string name="media_controller_connecting">اتصال\u2026</string> + <string name="bookmark_add">"افزودن نشانک"</string> + <string name="bookmark_display">"نمایش نشانکها"</string> + <string name="bookmark_empty">"بدون نشانک"</string> + <string name="bookmark_exist">"نشانک از قبل وجود دارد"</string> + <string name="bookmark_add_success">"نشانک اضافه شد"</string> + <string name="bookmark_list">"نشانکها"</string> + <string name="bookmark_title">"عنوان"</string> + <string name="bookmark_location">"مکان"</string> + <string name="delete_all">"حذف همه"</string> + <string name="default_title">"عنوان پیشفرض"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">تصاویر بیشتر</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">نمیتوان قطع کرد: ویدیو پشتیبانی نمیشود</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">برنامهی نقشهای برای نمایش مکان نصب نشده است.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">تقویت صدای بم</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">جلوه سهبعدی</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">جلوههای صوتی</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">برای استفاده از این جلوهها هدفون را وصل کنید.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">صدای اسنپدراگون+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">متأسفانه این ویدیو بریده نمیشود</string> + <string name="no_permission_for_drm">با عرض پوزش فایل محافظت شده DRM را نمیتوان به اشتراک گذاشت</string> + <string name="drm_license_info">اطلاعات مجوز DRM</string> +</resources> diff --git a/res/values-fi/cm_strings.xml b/res/values-fi/cm_strings.xml new file mode 100644 index 000000000..ac8daa684 --- /dev/null +++ b/res/values-fi/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Tallennusaika</string> +</resources> diff --git a/res/values-fi/codeaurora_strings.xml b/res/values-fi/codeaurora_strings.xml new file mode 100644 index 000000000..4438b470c --- /dev/null +++ b/res/values-fi/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Kelaus</string> + <string name="step_option_desc">Mukauta kelauksen nopeutta</string> + <string name="setp_option_three_second">3 sekuntia</string> + <string name="setp_option_six_second">6 sekuntia</string> + <string name="loop">"Jatkuva"</string> + <string name="single">"Yksittäinen"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Kaiutin KÄYTÖSSÄ</string> + <string name="speaker_off">Kaiutin POIS KÄYTÖSTÄ</string> + <string name="speaker_need_headset">Kytke kuulokkeet käyttääksesi tätä toimintoa.</string> + <string name="single_track">"Yksi kappale"</string> + <string name="input_url">"Syötä linkki"</string> + <string name="streaming_settings">"Suoratoistoasetukset"</string> + <string name="next">"Seuraava"</string> + <string name="previous">"Edellinen"</string> + <string name="buffer_size">Puskurin koko</string> + <string name="apn">Ensisijainen APN</string> + <string name="rtp_min_port">Min port</string> + <string name="rtp_max_port">Max port</string> + <string name="set_rtp_min_port">Aseta min port</string> + <string name="set_rtp_max_port">Aseta max port</string> + <string name="set_buffer_size">Aseta puskurin koko</string> + <string name="set_apn">Valitse ensisijainen APN</string> + <string name="setting">Asetukset</string> + <string name="server_timeout_title">"Palvelimen aikakatkaisu"</string> + <string name="server_timeout_message">"Yhdistä uudelleen palvelimeen toistaaksesi videon?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Yhteys epäonnistui, uudelleenyhdistetään %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Toistetaan</string> + <string name="media_controller_connecting">Yhdistetään\u2026</string> + <string name="bookmark_add">"Lisää kirjanmerkki"</string> + <string name="bookmark_display">"Näytä kirjanmerkit"</string> + <string name="bookmark_empty">"Ei kirjanmerkkejä"</string> + <string name="bookmark_exist">"Kirjanmerkki on jo olemassa"</string> + <string name="bookmark_add_success">"Kirjanmerkki lisätty"</string> + <string name="bookmark_list">"Kirjanmerkit"</string> + <string name="bookmark_title">"Nimi"</string> + <string name="bookmark_location">"Sijainti"</string> + <string name="delete_all">"Poista kaikki"</string> + <string name="default_title">"Oletusnimi"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Lisää kuvia</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Ei voi mykistää: video ei tuettu</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Karttasovellusta ei asennettu näyttämään sijaintia.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Basson korostus</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D-efekti</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Äänitehosteet</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Kytke kuulokkeet käyttääksesi näitä tehosteita.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Videotiedostoa ei voi leikata</string> + <string name="no_permission_for_drm">Valitettavasti DRM-suojattuja tiedostoja ei voi jakaa</string> + <string name="drm_license_info">DRM-lisenssin tiedot</string> +</resources> diff --git a/res/values-fil-rPH/cm_strings.xml b/res/values-fil-rPH/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-fil-rPH/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-fil-rPH/codeaurora_strings.xml b/res/values-fil-rPH/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-fil-rPH/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-fr-rCA/cm_strings.xml b/res/values-fr-rCA/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-fr-rCA/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-fr-rCA/codeaurora_strings.xml b/res/values-fr-rCA/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-fr-rCA/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-fr/cm_strings.xml b/res/values-fr/cm_strings.xml new file mode 100644 index 000000000..62700eb0b --- /dev/null +++ b/res/values-fr/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Date et heure d\'enregistrement</string> +</resources> diff --git a/res/values-fr/codeaurora_strings.xml b/res/values-fr/codeaurora_strings.xml new file mode 100644 index 000000000..51a46a9b5 --- /dev/null +++ b/res/values-fr/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Étape</string> + <string name="step_option_desc">Personnaliser le saut de l\'avance/retour rapide</string> + <string name="setp_option_three_second">3 secondes</string> + <string name="setp_option_six_second">6 secondes</string> + <string name="loop">"Boucle"</string> + <string name="single">"Simple"</string> + <string name="stereo">"Stéréo"</string> + <string name="speaker_on">Haut-parleur activé</string> + <string name="speaker_off">Haut-parleur désactivé</string> + <string name="speaker_need_headset">Brancher un casque pour utiliser cette fonctionnalité.</string> + <string name="single_track">"Piste simple"</string> + <string name="input_url">"Entrer l'URL"</string> + <string name="streaming_settings">"Paramètres de transmission"</string> + <string name="next">"Suivant"</string> + <string name="previous">"Précédent"</string> + <string name="buffer_size">Taille du tampon</string> + <string name="apn">APN préféré</string> + <string name="rtp_min_port">Port minimum</string> + <string name="rtp_max_port">Port maximum</string> + <string name="set_rtp_min_port">Configurer le port minimal</string> + <string name="set_rtp_max_port">Configurer le port maximal</string> + <string name="set_buffer_size">Paramétrer la taille du tampon</string> + <string name="set_apn">Sélectionner l\'APN préféré</string> + <string name="setting">Paramètres</string> + <string name="server_timeout_title">"Délai de réponse du serveur dépassé"</string> + <string name="server_timeout_message">"Se reconnecter au serveur pour lire la vidéo ?"</string> + <string name="videoview_error_text_cannot_connect_retry">"La connexion a échoué, tentative de reconnexion à %1$d\u2026"</string> + <string name="media_controller_live">En direct</string> + <string name="media_controller_playing">Lecture</string> + <string name="media_controller_connecting">Connexion\u2026</string> + <string name="bookmark_add">"Ajouter un favori"</string> + <string name="bookmark_display">"Afficher les favoris"</string> + <string name="bookmark_empty">"Aucun favori"</string> + <string name="bookmark_exist">"Le favori existe déjà"</string> + <string name="bookmark_add_success">"Favori ajouté"</string> + <string name="bookmark_list">"Favoris"</string> + <string name="bookmark_title">"Titre"</string> + <string name="bookmark_location">"Position"</string> + <string name="delete_all">"Tout supprimer"</string> + <string name="default_title">"Titre par défaut"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Plus d\'images</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Coupure du son impossible : vidéo non prise en charge</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Il n\'y a aucune application de cartographie installée pour afficher la position.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Amplification des basses</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Effet 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Effets audio</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Brancher un casque pour ces effets.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Désolé, cette vidéo ne peut pas être coupée</string> + <string name="no_permission_for_drm">Désolé, les fichiers protégés par DRM ne peuvent pas être partagés</string> + <string name="drm_license_info">Infos sur la licence DRM</string> +</resources> diff --git a/res/values-fy-rNL/cm_strings.xml b/res/values-fy-rNL/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-fy-rNL/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-fy-rNL/codeaurora_strings.xml b/res/values-fy-rNL/codeaurora_strings.xml new file mode 100644 index 000000000..5f4b7014d --- /dev/null +++ b/res/values-fy-rNL/codeaurora_strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setting">Ynstellingen</string> + <string name="bookmark_location">"Lokaasje"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-fy-rNL/filtershow_strings.xml b/res/values-fy-rNL/filtershow_strings.xml new file mode 100644 index 000000000..ddd9262fb --- /dev/null +++ b/res/values-fy-rNL/filtershow_strings.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <!-- Text for size x [CHAR LIMIT=1] --> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <!-- Label for aspect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <!-- The title for draw size [CHAR LIMIT=50] --> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <!-- Label for the notification [CHAR LIMIT=50] --> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <!-- Label for preset name [CHAR LIMIT=30] --> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> +</resources> diff --git a/res/values-fy-rNL/strings.xml b/res/values-fy-rNL/strings.xml new file mode 100644 index 000000000..80a686614 --- /dev/null +++ b/res/values-fy-rNL/strings.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <!-- Movie View Resume Playing dialog title --> + <!-- Movie View Start Playing dialog title --> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <!-- Displayed in the title of those albums that are being loaded --> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <!-- Movie View Start Playing button "Beginning" --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <!-- Toast/alert that the image is being saved to the SD card --> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <!-- Toast/alert after saving wallpaper --> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <!-- String indicating more actions are available --> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <!-- Title of the StackView AppWidget --> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <!-- The title of menu item where user can add a new account --> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <!-- Label for album filmstrip button --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <!-- Text to show with progress bar while stitching in Gallery --> + <!-- The label on the button that will save an edited image --> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <!-- Status message shown when scanning the content from the camera has completed --> + <!-- Status message shown when content from an external camera is being imported --> + <!-- Status message shown when there is no content available to be imported --> + <!-- Status message shown when there is no MTP device connected --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <!-- alert to the user to wait for some operation to complete --> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <!-- alert to the user that an SD card must be installed before using the camera --> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <!-- alert to the user that the SD card is being disk-checked --> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <!-- Settings screen, setting title text --> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <!-- Settings screen, Camera setting category title --> + <!-- Settings screen, Camcorder setting category title --> + <!-- Settings screen, Picture size title --> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <!-- Settings screen, Focus mode dialog radio button choices --> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <!-- flash label [CHAR LIMIT=50] --> + <!-- Settings screen, Flash mode dialog radio button choices --> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <!-- Menu, white balance label --> + <!-- Settings screen, White balance dialog radio button choices --> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <!-- Exposure settings in preference --> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <!-- switch camera label front [CHAR LIMIT=60] --> + <!-- Dialog "OK" button. Dismisses dialog. --> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <!-- settings label [CHAR LIMIT=50] --> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-gd-rGB/cm_strings.xml b/res/values-gd-rGB/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-gd-rGB/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-gd-rGB/codeaurora_strings.xml b/res/values-gd-rGB/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-gd-rGB/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-gd-rGB/filtershow_strings.xml b/res/values-gd-rGB/filtershow_strings.xml new file mode 100644 index 000000000..ddd9262fb --- /dev/null +++ b/res/values-gd-rGB/filtershow_strings.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <!-- Text for size x [CHAR LIMIT=1] --> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <!-- Label for aspect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <!-- The title for draw size [CHAR LIMIT=50] --> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <!-- Label for the notification [CHAR LIMIT=50] --> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <!-- Label for preset name [CHAR LIMIT=30] --> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> +</resources> diff --git a/res/values-gd-rGB/strings.xml b/res/values-gd-rGB/strings.xml new file mode 100644 index 000000000..80a686614 --- /dev/null +++ b/res/values-gd-rGB/strings.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <!-- Movie View Resume Playing dialog title --> + <!-- Movie View Start Playing dialog title --> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <!-- Displayed in the title of those albums that are being loaded --> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <!-- Movie View Start Playing button "Beginning" --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <!-- Toast/alert that the image is being saved to the SD card --> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <!-- Toast/alert after saving wallpaper --> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <!-- String indicating more actions are available --> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <!-- Title of the StackView AppWidget --> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <!-- The title of menu item where user can add a new account --> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <!-- Label for album filmstrip button --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <!-- Text to show with progress bar while stitching in Gallery --> + <!-- The label on the button that will save an edited image --> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <!-- Status message shown when scanning the content from the camera has completed --> + <!-- Status message shown when content from an external camera is being imported --> + <!-- Status message shown when there is no content available to be imported --> + <!-- Status message shown when there is no MTP device connected --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <!-- alert to the user to wait for some operation to complete --> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <!-- alert to the user that an SD card must be installed before using the camera --> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <!-- alert to the user that the SD card is being disk-checked --> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <!-- Settings screen, setting title text --> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <!-- Settings screen, Camera setting category title --> + <!-- Settings screen, Camcorder setting category title --> + <!-- Settings screen, Picture size title --> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <!-- Settings screen, Focus mode dialog radio button choices --> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <!-- flash label [CHAR LIMIT=50] --> + <!-- Settings screen, Flash mode dialog radio button choices --> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <!-- Menu, white balance label --> + <!-- Settings screen, White balance dialog radio button choices --> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <!-- Exposure settings in preference --> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <!-- switch camera label front [CHAR LIMIT=60] --> + <!-- Dialog "OK" button. Dismisses dialog. --> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <!-- settings label [CHAR LIMIT=50] --> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-gl-rES/cm_strings.xml b/res/values-gl-rES/cm_strings.xml new file mode 100644 index 000000000..dbf3bbb01 --- /dev/null +++ b/res/values-gl-rES/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Data da gravación</string> +</resources> diff --git a/res/values-gl-rES/codeaurora_strings.xml b/res/values-gl-rES/codeaurora_strings.xml new file mode 100644 index 000000000..a7f7f6a6d --- /dev/null +++ b/res/values-gl-rES/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Etapa</string> + <string name="step_option_desc">Personalizar a velocidade de avance/retroceso</string> + <string name="setp_option_three_second">3 segundos</string> + <string name="setp_option_six_second">6 segundos</string> + <string name="loop">"Bucle"</string> + <string name="single">"Único"</string> + <string name="stereo">"Estéreo"</string> + <string name="speaker_on">Altofalante aceso</string> + <string name="speaker_off">Altofalante apagado</string> + <string name="speaker_need_headset">Enchufar os auriculares para empregar esta funcionalidade.</string> + <string name="single_track">"Pista única"</string> + <string name="input_url">"Escribir o URL"</string> + <string name="streaming_settings">"Configuración de fluxo"</string> + <string name="next">"Seguinte"</string> + <string name="previous">"Anterior"</string> + <string name="buffer_size">Tamaño do búfer</string> + <string name="apn">APN favorito</string> + <string name="rtp_min_port">Porto mín.</string> + <string name="rtp_max_port">Porto máx.</string> + <string name="set_rtp_min_port">Estabelecer porto mín.</string> + <string name="set_rtp_max_port">Estabelecer porto máx.</string> + <string name="set_buffer_size">Estabelecer tamaño do búfer</string> + <string name="set_apn">Seleccionar o APN favorito</string> + <string name="setting">Configuración</string> + <string name="server_timeout_title">"Tempo de espera do servidor"</string> + <string name="server_timeout_message">"Reconectar co servidor para reproducir o vídeo?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Fallou a conexión, tentarase reconectar con %1$d\u2026"</string> + <string name="media_controller_live">Ao vivo</string> + <string name="media_controller_playing">Reproducindo</string> + <string name="media_controller_connecting">Conectando\u2026</string> + <string name="bookmark_add">"Engadir marcador"</string> + <string name="bookmark_display">"Amosar os marcadores"</string> + <string name="bookmark_empty">"Sen marcadores"</string> + <string name="bookmark_exist">"O marcador xa existe"</string> + <string name="bookmark_add_success">"Marcador engadido"</string> + <string name="bookmark_list">"Marcadores"</string> + <string name="bookmark_title">"Título"</string> + <string name="bookmark_location">"Localización"</string> + <string name="delete_all">"Eliminar todo"</string> + <string name="default_title">"Título predeterminado"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Máis imaxes</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Non se pode silenciar: vídeo non compatíbel</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Non hai unha aplicación de mapas para amosar a localización.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Amplificación de graves</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Efecto 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Efectos de son</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Enchufar os auriculares para estes efectos.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Vaia, o vídeo non se pode recortar</string> + <string name="no_permission_for_drm">Desculpe, os ficheiros protexidos por DRM non poden ser compartidos</string> + <string name="drm_license_info">Información da licenza DRM</string> +</resources> diff --git a/res/values-gu-rIN/cm_strings.xml b/res/values-gu-rIN/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-gu-rIN/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-gu-rIN/codeaurora_strings.xml b/res/values-gu-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-gu-rIN/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-hi/cm_strings.xml b/res/values-hi/cm_strings.xml new file mode 100644 index 000000000..b055257dc --- /dev/null +++ b/res/values-hi/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">रिकॉर्ड करने का समय</string> +</resources> diff --git a/res/values-hi/codeaurora_strings.xml b/res/values-hi/codeaurora_strings.xml new file mode 100644 index 000000000..8d47303a3 --- /dev/null +++ b/res/values-hi/codeaurora_strings.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">चरण</string> + <string name="step_option_desc">फ़ास्ट फॉरवर्ड/रीवाइंड चरण को मनपसंद बनाएँ</string> + <string name="setp_option_three_second">3 सेकंड</string> + <string name="setp_option_six_second">6 सेकंड</string> + <string name="loop">"लूप"</string> + <string name="single">"एकल"</string> + <string name="stereo">"स्टीरियो"</string> + <string name="speaker_on">स्पीकर चालू</string> + <string name="speaker_off">स्पीकर बंद</string> + <string name="speaker_need_headset">इस सुविधा का उपयोग करने के लिए हेडफ़ोन लगाएँ।</string> + <string name="single_track">"एकल ट्रैक"</string> + <string name="input_url">"यूआरएल दर्ज करें"</string> + <string name="streaming_settings">"स्ट्रीमिंग सेटिंग"</string> + <string name="next">"अगला"</string> + <string name="previous">"पिछला"</string> + <string name="buffer_size">बफ़र आमाप</string> + <string name="apn">पसंदीदा एपीएन</string> + <string name="rtp_min_port">न्यूनतम पोर्ट</string> + <string name="rtp_max_port">अधिकतम पोर्ट</string> + <string name="set_rtp_min_port">न्यूनतम पोर्ट सेट करें</string> + <string name="set_rtp_max_port">अधिकतम पोर्ट सेट करें</string> + <string name="set_buffer_size">बफ़र आमाप सेट करें</string> + <string name="set_apn">पसंदीदा एपीएन चुनें</string> + <string name="setting">सेटिंग</string> + <string name="server_timeout_title">"सर्वर समय समाप्त"</string> + <string name="server_timeout_message">"वीडियो बजाने के लिए सर्वर के साथ फिर से जुड़ जाएँ?"</string> + <string name="videoview_error_text_cannot_connect_retry">"कनेक्शन विफल हुआ। %1$d के साथ फिर से कनेक्ट करने की कोशिश कर रहे हैं\u2026"</string> + <string name="media_controller_live">सजीव</string> + <string name="media_controller_playing">बजा रहे हैं</string> + <string name="media_controller_connecting">कनेक्ट कर रहे हैं\u2026</string> + <string name="bookmark_add">"बुकमार्क जोड़ें"</string> + <string name="bookmark_display">"बुकमार्क दिखाएँ"</string> + <string name="bookmark_empty">"कोई बुकमार्क नहीं"</string> + <string name="bookmark_exist">"बुकमार्क पहले से ही मौजूद है"</string> + <string name="bookmark_add_success">"बुकमार्क जोड़ा गया"</string> + <string name="bookmark_list">"बुकमार्क"</string> + <string name="bookmark_title">"शीर्षक"</string> + <string name="bookmark_location">"स्थान"</string> + <string name="delete_all">"सब हटाएँ"</string> + <string name="default_title">"डिफ़ॉल्ट शीर्षक"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">और छवियाँ</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">मूक नहीं कर सके : वीडियो समर्थित नहीं है</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">स्थान दर्शाने के लिए कोई नक्शा ऐप स्थापित नहीं है।</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">मंद्र वर्धन</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3डी प्रभाव</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">ऑडियो प्रभाव</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">इन प्रभावों के लिए हेडफ़ोन डालें।</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">स्नैपड्रैगन ऑडियो+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">क्षमा करें, इस वीडियो फ़ाइल को ट्रिम नहीं कर सकते</string> +</resources> diff --git a/res/values-hr/cm_strings.xml b/res/values-hr/cm_strings.xml new file mode 100644 index 000000000..f8cad8f39 --- /dev/null +++ b/res/values-hr/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Trajanje snimke</string> +</resources> diff --git a/res/values-hr/codeaurora_strings.xml b/res/values-hr/codeaurora_strings.xml new file mode 100644 index 000000000..5e109c8ca --- /dev/null +++ b/res/values-hr/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Korak</string> + <string name="step_option_desc">Prilagodite korak ubrzanja/premotavanja</string> + <string name="setp_option_three_second">3 sekunde</string> + <string name="setp_option_six_second">6 sekundi</string> + <string name="loop">"Ponavljanje"</string> + <string name="single">"Pojedinačna"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Zvučnik UKLJUČEN</string> + <string name="speaker_off">Zvučnik ISKLJUČEN</string> + <string name="speaker_need_headset">Priključite slušalice za korištenje ove mogućnosti.</string> + <string name="single_track">"Jedna pjesma"</string> + <string name="input_url">"Unesite URL"</string> + <string name="streaming_settings">"Postavke strujanja"</string> + <string name="next">"Sljedeći"</string> + <string name="previous">"Prethodni"</string> + <string name="buffer_size">Veličina međuspremnika</string> + <string name="apn">Preferirani APN</string> + <string name="rtp_min_port">Min port</string> + <string name="rtp_max_port">Max port</string> + <string name="set_rtp_min_port">Postavi min port</string> + <string name="set_rtp_max_port">Postaviti max port</string> + <string name="set_buffer_size">Postavi veličinu međuspremnika</string> + <string name="set_apn">Odaberite željeni APN</string> + <string name="setting">Postavke</string> + <string name="server_timeout_title">"Isteklo vremensko ograničenje poslužitelja"</string> + <string name="server_timeout_message">"Ponovno se povezati sa poslužiteljem za pokretanje videozapisa?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Povezivanje nije uspjelo, ponovno povezivanje sa %1$d\u2026"</string> + <string name="media_controller_live">Uživo</string> + <string name="media_controller_playing">Reproduciranje</string> + <string name="media_controller_connecting">Spajanje\u2026</string> + <string name="bookmark_add">"Dodaj oznaku"</string> + <string name="bookmark_display">"Pokaži oznake"</string> + <string name="bookmark_empty">"Nema oznake"</string> + <string name="bookmark_exist">"Oznaka već postoji"</string> + <string name="bookmark_add_success">"Oznaka dodana"</string> + <string name="bookmark_list">"Oznake"</string> + <string name="bookmark_title">"Naslov"</string> + <string name="bookmark_location">"Lokacija"</string> + <string name="delete_all">"Izbriši sve"</string> + <string name="default_title">"Zadani naslov"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Više slika</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Nije moguće isključiti zvuk: videozapis nije podržan</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Nema instaliranih aplikacija karata za prikaz lokacije.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bass ubrzanje</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D efekt</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Zvučni efekti</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Priključite slušalice za ove efekte.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Oprostite, ovaj video ne može biti izrezan</string> + <string name="no_permission_for_drm">Žao nam je, datoteke zaštićene DRM-om se nemogu dijeliti</string> + <string name="drm_license_info">Informacije DRM licence</string> +</resources> diff --git a/res/values-hu/cm_strings.xml b/res/values-hu/cm_strings.xml new file mode 100644 index 000000000..111aa4d58 --- /dev/null +++ b/res/values-hu/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Felvétel ideje</string> +</resources> diff --git a/res/values-hu/codeaurora_strings.xml b/res/values-hu/codeaurora_strings.xml new file mode 100644 index 000000000..11b865ffa --- /dev/null +++ b/res/values-hu/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Lépés</string> + <string name="step_option_desc">Gyors előre-/hátralépés testreszabása</string> + <string name="setp_option_three_second">3 másodperc</string> + <string name="setp_option_six_second">6 másodperc</string> + <string name="loop">"Ismétlés"</string> + <string name="single">"Egyszerű"</string> + <string name="stereo">"Sztereó"</string> + <string name="speaker_on">Hangszóró BE</string> + <string name="speaker_off">Hangszóró KI</string> + <string name="speaker_need_headset">Ezen funkció használatához csatlakoztasson fejhallgatót.</string> + <string name="single_track">"Egyetlen szám"</string> + <string name="input_url">"URL megadása"</string> + <string name="streaming_settings">"Műsorszórás beállításai"</string> + <string name="next">"Következő"</string> + <string name="previous">"Előző"</string> + <string name="buffer_size">Bufferméret</string> + <string name="apn">Előnyben részesített APN</string> + <string name="rtp_min_port">Min port</string> + <string name="rtp_max_port">Max port</string> + <string name="set_rtp_min_port">Min port beállítása</string> + <string name="set_rtp_max_port">Max port beállítása</string> + <string name="set_buffer_size">Pufferméret beállítása</string> + <string name="set_apn">Válassza ki a kívánt APN-t</string> + <string name="setting">Beállítások</string> + <string name="server_timeout_title">"Kiszolgálói időtúllépés"</string> + <string name="server_timeout_message">"Újracsatlakozzon a szerverhez a videó lejátszásához?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Sikertelen csatlakozás, újracsatlakozási kísérlet a következőhöz: %1$d\u2026"</string> + <string name="media_controller_live">Élő</string> + <string name="media_controller_playing">Lejátszás</string> + <string name="media_controller_connecting">Csatlakozás\u2026</string> + <string name="bookmark_add">"Könyvjelző hozzáadása"</string> + <string name="bookmark_display">"Könyvjelzők megjelenítése"</string> + <string name="bookmark_empty">"Nincs könyvjelző"</string> + <string name="bookmark_exist">"Könyvjelző már létezik"</string> + <string name="bookmark_add_success">"Könyvjelző hozzáadva"</string> + <string name="bookmark_list">"Könyvjelzők"</string> + <string name="bookmark_title">"Név"</string> + <string name="bookmark_location">"Hely"</string> + <string name="delete_all">"Összes törlése"</string> + <string name="default_title">"Alapértelmezett név"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">További képek</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Nem némítható: videó nem támogatott</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Nincs telepítve térkép alkalmazás a hely megjelenítéséhez.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Mélyhang kiemelése</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D hatás</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Hangeffektek</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Csatlakoztassa a fejhallgatót az effektek használatához.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Sajnáljuk, de ez a videófájl nem vágható</string> + <string name="no_permission_for_drm">Sajnáljuk, DRM védett fájlok nem oszthatók meg</string> + <string name="drm_license_info">DRM liszensz információ</string> +</resources> diff --git a/res/values-hy-rAM/cm_strings.xml b/res/values-hy-rAM/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-hy-rAM/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-hy-rAM/codeaurora_strings.xml b/res/values-hy-rAM/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-hy-rAM/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-in/cm_strings.xml b/res/values-in/cm_strings.xml new file mode 100644 index 000000000..5888fef47 --- /dev/null +++ b/res/values-in/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Catatan waktu</string> +</resources> diff --git a/res/values-in/codeaurora_strings.xml b/res/values-in/codeaurora_strings.xml new file mode 100644 index 000000000..d8068f20b --- /dev/null +++ b/res/values-in/codeaurora_strings.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Langkah</string> + <string name="step_option_desc">Sesuaikan tahap maju cepat/mundur</string> + <string name="setp_option_three_second">3 detik</string> + <string name="setp_option_six_second">6 detik</string> + <string name="loop">"Ulang"</string> + <string name="single">"Tunggal"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Speaker ON</string> + <string name="speaker_off">Speaker OFF</string> + <string name="speaker_need_headset">Pasang headphone untuk menggunakan fitur ini.</string> + <string name="single_track">"Trek tunggal"</string> + <string name="input_url">"Masukkan URL"</string> + <string name="streaming_settings">"Pengaturan streaming"</string> + <string name="next">"Berikutnya"</string> + <string name="previous">"Sebelumnya"</string> + <string name="buffer_size">Ukuran buffer</string> + <string name="apn">Pilihan APN</string> + <string name="rtp_min_port">Port min</string> + <string name="rtp_max_port">Port maks</string> + <string name="set_rtp_min_port">Atur port min</string> + <string name="set_rtp_max_port">Atur port maks</string> + <string name="set_buffer_size">Atur ukuran buffer</string> + <string name="set_apn">Pilih pilihan APN</string> + <string name="setting">Pengaturan</string> + <string name="server_timeout_title">"Batas waktu server"</string> + <string name="server_timeout_message">"Menyambung ulang ke server untuk memutar video?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Koneksi gagal, mencoba untuk menyambung ulang ke %1$d\u2026"</string> + <string name="media_controller_live">Langsung</string> + <string name="media_controller_playing">Memutar</string> + <string name="media_controller_connecting">Menyambungkan\u2026</string> + <string name="bookmark_add">"Tambah ke bookmark"</string> + <string name="bookmark_display">"Tampilkan bookmark"</string> + <string name="bookmark_empty">"Tidak ada bookmark"</string> + <string name="bookmark_exist">"Bookmark sudah ada"</string> + <string name="bookmark_add_success">"Bookmark ditambahkan"</string> + <string name="bookmark_list">"Bookmark"</string> + <string name="bookmark_title">"Judul"</string> + <string name="bookmark_location">"Lokasi"</string> + <string name="delete_all">"Hapus semua"</string> + <string name="default_title">"Judul standar"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Lebih banyak gambar</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Tidak bisa mendiamkan : video tidak didukung</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Tidak ada aplikasi peta yang dipasang untuk menunjukkan lokasi.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Peningkatan bass</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Efek 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Efek audio</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Pasang headphone untuk efek ini.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Maaf, berkas video ini tidak dapat dipotong</string> +</resources> diff --git a/res/values-is-rIS/cm_strings.xml b/res/values-is-rIS/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-is-rIS/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-is-rIS/codeaurora_strings.xml b/res/values-is-rIS/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-is-rIS/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-it/cm_strings.xml b/res/values-it/cm_strings.xml new file mode 100644 index 000000000..6b0c1af60 --- /dev/null +++ b/res/values-it/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Tempo di ripresa</string> +</resources> diff --git a/res/values-it/codeaurora_strings.xml b/res/values-it/codeaurora_strings.xml new file mode 100644 index 000000000..0e3ad65e3 --- /dev/null +++ b/res/values-it/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Passo</string> + <string name="step_option_desc">Personalizza l\'avanzamento/riavvolgimento rapido</string> + <string name="setp_option_three_second">3 secondi</string> + <string name="setp_option_six_second">6 secondi</string> + <string name="loop">"Ripeti"</string> + <string name="single">"Singolo"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Altoparlante ON</string> + <string name="speaker_off">Altoparlante OFF</string> + <string name="speaker_need_headset">Inserisci gli auricolari per utilizzare questa funzionalità.</string> + <string name="single_track">"Traccia singola"</string> + <string name="input_url">"Inserisci URL"</string> + <string name="streaming_settings">"Impostazioni streaming"</string> + <string name="next">"Successivo"</string> + <string name="previous">"Precedente"</string> + <string name="buffer_size">Dimensione buffer</string> + <string name="apn">APN preferito</string> + <string name="rtp_min_port">Porta min</string> + <string name="rtp_max_port">Porta max</string> + <string name="set_rtp_min_port">Imposta porta min</string> + <string name="set_rtp_max_port">Imposta porta max</string> + <string name="set_buffer_size">Imposta dimensione del buffer</string> + <string name="set_apn">Imposta APN preferito</string> + <string name="setting">Impostazioni</string> + <string name="server_timeout_title">"Timeout del server"</string> + <string name="server_timeout_message">"Riconnettersi al server per riprodurre il video?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Connessione fallita, provando a riconnettersi a %1$d\u2026"</string> + <string name="media_controller_live">Dal vivo</string> + <string name="media_controller_playing">In riproduzione</string> + <string name="media_controller_connecting">Connessione\u2026</string> + <string name="bookmark_add">"Aggiungi segnalibro"</string> + <string name="bookmark_display">"Visualizza segnalibri"</string> + <string name="bookmark_empty">"Nessun segnalibro"</string> + <string name="bookmark_exist">"Il segnalibro esiste già"</string> + <string name="bookmark_add_success">"Segnalibro aggiunto"</string> + <string name="bookmark_list">"Segnalibri"</string> + <string name="bookmark_title">"Titolo"</string> + <string name="bookmark_location">"Posizione"</string> + <string name="delete_all">"Elimina tutto"</string> + <string name="default_title">"Titolo predefinito"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Altre immagini</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Impossibile disattivare l\'audio: video non supportato</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Non non c\'è nessuna app mappe installata per mostrare la posizione.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Amplificazione bassi</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Effetto 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Effetti audio</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Collega le cuffie per questi effetti.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Questo file video non può essere tagliato</string> + <string name="no_permission_for_drm">Spiacente, i file protetti da DRM non possono essere condivisi</string> + <string name="drm_license_info">Info licenza DRM</string> +</resources> diff --git a/res/values-iw/cm_strings.xml b/res/values-iw/cm_strings.xml new file mode 100644 index 000000000..43eb07d04 --- /dev/null +++ b/res/values-iw/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">זמן הקלטה</string> +</resources> diff --git a/res/values-iw/codeaurora_strings.xml b/res/values-iw/codeaurora_strings.xml new file mode 100644 index 000000000..822fac8ce --- /dev/null +++ b/res/values-iw/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">דילוג</string> + <string name="step_option_desc">התאם אישית דילוג מהיר קדימה/אחורה</string> + <string name="setp_option_three_second">3 שניות</string> + <string name="setp_option_six_second">6 שניות</string> + <string name="loop">"לולאה"</string> + <string name="single">"יחיד"</string> + <string name="stereo">"סטריאו"</string> + <string name="speaker_on">רמקול פעיל</string> + <string name="speaker_off">רמקול כבוי</string> + <string name="speaker_need_headset">חבר אוזניות כדי להשתמש בתכונה זו.</string> + <string name="single_track">"מסלול יחיד"</string> + <string name="input_url">"הזן כתובת URL"</string> + <string name="streaming_settings">"הגדרות שידור"</string> + <string name="next">"הבא"</string> + <string name="previous">"הקודם"</string> + <string name="buffer_size">גודל המאגר</string> + <string name="apn">APN מועדף</string> + <string name="rtp_min_port">פורט מינימאלי</string> + <string name="rtp_max_port">פורט מקסימלי</string> + <string name="set_rtp_min_port">הגדר פורט מינימלי</string> + <string name="set_rtp_max_port">נגדר פורט מקסימלי</string> + <string name="set_buffer_size">הגדר גודל המאגר</string> + <string name="set_apn">בחר APN מועדף</string> + <string name="setting">הגדרות</string> + <string name="server_timeout_title">"זמן חכייה לשרת"</string> + <string name="server_timeout_message">"להתחבר מחדש לשרת כדי להפעיל את הווידאו?"</string> + <string name="videoview_error_text_cannot_connect_retry">"החיבור נכשל, מנסה להתחבר מחדש ל- %1$d\u2026"</string> + <string name="media_controller_live">חי</string> + <string name="media_controller_playing">מנגן</string> + <string name="media_controller_connecting">מתחבר\u2026</string> + <string name="bookmark_add">"הוסף סימניה"</string> + <string name="bookmark_display">"הצג סימניות"</string> + <string name="bookmark_empty">"אין סימניות"</string> + <string name="bookmark_exist">"סימניה כבר קיימת"</string> + <string name="bookmark_add_success">"סימניה נוספה"</string> + <string name="bookmark_list">"סימניות"</string> + <string name="bookmark_title">"כותרת"</string> + <string name="bookmark_location">"מיקום"</string> + <string name="delete_all">"מחק הכל"</string> + <string name="default_title">"כותרת ברירת המחדל"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">תמונות נוספות</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">לא ניתן להשתיק: וידאו לא נתמך</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">אין אף יישום \"מפות\" כדי להראות את המיקום בעזרתו.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">הגברת בס</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">אפקט 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">אפקטי שמע</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">חבר אוזניות לאפקטים אלה.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">סליחה, קובץ וידאו זה לא יכול להיגזר</string> + <string name="no_permission_for_drm">סליחה, לא ניתן לשתף קבצי DRM מוגנים</string> + <string name="drm_license_info">פרטי רישיון DRM</string> +</resources> diff --git a/res/values-ja/cm_strings.xml b/res/values-ja/cm_strings.xml new file mode 100644 index 000000000..6c011c400 --- /dev/null +++ b/res/values-ja/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">録画時間</string> +</resources> diff --git a/res/values-ja/codeaurora_strings.xml b/res/values-ja/codeaurora_strings.xml new file mode 100644 index 000000000..840d5b0af --- /dev/null +++ b/res/values-ja/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">間隔</string> + <string name="step_option_desc">早送り/巻き戻しのステップをカスタマイズする</string> + <string name="setp_option_three_second">3秒</string> + <string name="setp_option_six_second">6秒</string> + <string name="loop">"ループ"</string> + <string name="single">"シングル"</string> + <string name="stereo">"ステレオ"</string> + <string name="speaker_on">スピーカーON</string> + <string name="speaker_off">スピーカーOFF</string> + <string name="speaker_need_headset">この機能を使用するにはヘッドホンを接続してください。</string> + <string name="single_track">"シングルトラック"</string> + <string name="input_url">"URLを入力"</string> + <string name="streaming_settings">"ストリーミングの設定"</string> + <string name="next">"次へ"</string> + <string name="previous">"前へ"</string> + <string name="buffer_size">バッファサイズ</string> + <string name="apn">優先APN</string> + <string name="rtp_min_port">最小ポート</string> + <string name="rtp_max_port">最大ポート</string> + <string name="set_rtp_min_port">最小ポートを設定</string> + <string name="set_rtp_max_port">最大ポートを設定</string> + <string name="set_buffer_size">バッファサイズを設定</string> + <string name="set_apn">優先APNを選択</string> + <string name="setting">設定</string> + <string name="server_timeout_title">"サーバーのタイムアウト"</string> + <string name="server_timeout_message">"動画を再生するためにサーバーに再接続しますか?"</string> + <string name="videoview_error_text_cannot_connect_retry">"接続できませんでした。%1$dに再接続を試みています\u2026"</string> + <string name="media_controller_live">ライブ</string> + <string name="media_controller_playing">再生中</string> + <string name="media_controller_connecting">接続中\u2026</string> + <string name="bookmark_add">"ブックマークを追加"</string> + <string name="bookmark_display">"ブックマークを表示"</string> + <string name="bookmark_empty">"ブックマークがありません"</string> + <string name="bookmark_exist">"ブックマークが既に存在しています"</string> + <string name="bookmark_add_success">"ブックマークを追加しました"</string> + <string name="bookmark_list">"ブックマーク"</string> + <string name="bookmark_title">"タイトル"</string> + <string name="bookmark_location">"場所"</string> + <string name="delete_all">"すべて削除"</string> + <string name="default_title">"デフォルトのタイトル"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">他の画像</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">ミュートにできません: 動画がサポートされていません</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">位置情報を表示するマップアプリがインストールされていません。</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">バス\nブースト</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D効果</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">オーディオ効果</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">これらの効果を使用するにはヘッドホンを接続してください。</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">申し訳ありませんが、このビデオファイルはトリミングできません</string> + <string name="no_permission_for_drm">申し訳ありませんが、DRMで保護されたファイルは共有できません</string> + <string name="drm_license_info">DRMライセンス情報</string> +</resources> diff --git a/res/values-ka-rGE/cm_strings.xml b/res/values-ka-rGE/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-ka-rGE/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-ka-rGE/codeaurora_strings.xml b/res/values-ka-rGE/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-ka-rGE/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-kk-rKZ/cm_strings.xml b/res/values-kk-rKZ/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-kk-rKZ/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-kk-rKZ/codeaurora_strings.xml b/res/values-kk-rKZ/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-kk-rKZ/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-km-rKH/cm_strings.xml b/res/values-km-rKH/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-km-rKH/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-km-rKH/codeaurora_strings.xml b/res/values-km-rKH/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-km-rKH/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-kn-rIN/cm_strings.xml b/res/values-kn-rIN/cm_strings.xml new file mode 100644 index 000000000..10e289778 --- /dev/null +++ b/res/values-kn-rIN/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">ರಿಕಾರ್ಡ್ ಸಮಯ</string> +</resources> diff --git a/res/values-kn-rIN/codeaurora_strings.xml b/res/values-kn-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..9f71db3e5 --- /dev/null +++ b/res/values-kn-rIN/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">ಹಂತ</string> + <string name="step_option_desc">ಫಾಸ್ಟ್ ಫಾರ್ವರ್ಡ್/ರಿವೈಂಡ್ ಹಂತವನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ</string> + <string name="setp_option_three_second">3 ಸೆಕೆಂಡ್ಗಳು</string> + <string name="setp_option_six_second">6 ಸೆಕೆಂಡ್ಗಳು</string> + <string name="loop">"ಸುತ್ತುಹಾಕು"</string> + <string name="single">"ಏಕ"</string> + <string name="stereo">"ಸ್ಟೀರಿಯೋ"</string> + <string name="speaker_on">ಧ್ವನಿವರ್ಧಕ ಆನ್</string> + <string name="speaker_off">ಧ್ವನಿವರ್ಧಕ ಆಫ್</string> + <string name="speaker_need_headset">ಈ ವೈಷಿಷ್ಟ್ಯವನ್ನು ಉಪಯೋಗಿಸಲು ಹೇಡ್ಫೋನ್ಸ್ ಪ್ಲಗ್ ಇನ್ ಮಾಡಿ.</string> + <string name="single_track">"ಏಕೈಕ ಟ್ರಾಕ್"</string> + <string name="input_url">"URL ಬರೆಯಿರಿ"</string> + <string name="streaming_settings">"ಸ್ಟ್ರೀಮಿಂಗ್ ಸೆಟ್ಟಿಂಗ್ಸ್"</string> + <string name="next">"ಮುಂದಿನ"</string> + <string name="previous">"ಹಿಂದಿನ"</string> + <string name="buffer_size">ಬಫ್ಫರ್ ಗಾತ್ರ</string> + <string name="apn">ಆದ್ಯತೆಯ ಎಪಿಎನ್</string> + <string name="rtp_min_port">ಕನಿಷ್ಟ ಪೋರ್ಟ್</string> + <string name="rtp_max_port">ಗರಿಷ್ಠ ಪೋರ್ಟ್</string> + <string name="set_rtp_min_port">ಕನಿಷ್ಠ ಪೋರ್ಟ್ ಹೊಂದಿಸಿ</string> + <string name="set_rtp_max_port">ಗರಿಷ್ಠ ಪೋರ್ಟ್ ಹೊಂದಿಸಿ</string> + <string name="set_buffer_size">ಬಫ್ಫರ್ ಗಾತ್ರ ಹೊಂದಿಸಿ</string> + <string name="set_apn">ಆದ್ಯತೆಯ ಎಪಿಎನ್ ಆಯ್ಕೆಮಾಡಿ</string> + <string name="setting">ಸೆಟ್ಟಿಂಗ್ಸ್</string> + <string name="server_timeout_title">"ಸರ್ವರ್ ಅವಧಿಮುಗಿದಿದೆ"</string> + <string name="server_timeout_message">"ವೀಡಿಯೋ ಪ್ಲೇಮಾಡಲು ಸರ್ವರ್ಗೆ ಮರುಸಂಪರ್ಕಿಸುವುದೇ?"</string> + <string name="videoview_error_text_cannot_connect_retry">"ಸಂಪರ್ಕ ವಿಫಲವಾಗಿದೆ. %1$d\u2026 ಗೆ ಮರುಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ"</string> + <string name="media_controller_live">ಲೈವ್</string> + <string name="media_controller_playing">ಪ್ಲೇ ಆಗುತ್ತಿದೆ</string> + <string name="media_controller_connecting">ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ\u2026</string> + <string name="bookmark_add">"ಬುಕ್ಮಾರ್ಕ್ ಸೇರಿಸು"</string> + <string name="bookmark_display">"ಬುಕ್ಮಾರ್ಕ್ ತೋರಿಸು"</string> + <string name="bookmark_empty">"ಯಾವುದೇ ಬುಕ್ಮಾರ್ಕ್ಗಳಿಲ್ಲ"</string> + <string name="bookmark_exist">"ಬುಕ್ಮಾರ್ಕ್ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ"</string> + <string name="bookmark_add_success">"ಬುಕ್ಮಾರ್ಕ್ ಸೇರಿಸಲಾಗಿದೆ"</string> + <string name="bookmark_list">"ಬುಕ್ಮಾರ್ಕ್ಗಳು"</string> + <string name="bookmark_title">"ಶೀರ್ಷಿಕೆ"</string> + <string name="bookmark_location">"ಸ್ಥಳ"</string> + <string name="delete_all">"ಎಲ್ಲವನ್ನೂ ಅಳಿಸು"</string> + <string name="default_title">"ಡೀಫಾಲ್ಟ್ ಶೀರ್ಷಿಕೆ"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">ಮತ್ತಷ್ಟು ಚಿತ್ರಗಳು</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">ಮೌನಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ : ವೀಡಿಯೋ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">ಸ್ಥಳವನ್ನು ಪ್ರದರ್ಶಿಸಲು ಯಾವುದೇ ನಕ್ಷೆ ಆಪ್ ಸ್ಥಾಪಿತವಾಗಿಲ್ಲ.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">ಬಾಸ್ ವರ್ಧನೆ</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D ಪ್ರಭಾವ</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">ಆಡಿಯೋ ಪ್ರಭಾವ</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">ಈ ಪ್ರಭಾವಗಳಿಗಾಗಿ ಹೆಡ್ಫೋನ್ಸನ್ನು ಪ್ಲಗ್ ಇನ್ ಮಾಡಿ.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon ಆಡಿಯೋ+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">ಕ್ಷಮಿಸಿ, ಈ ವೀಡಿಯೋ ಕಡತವನ್ನು ಕತ್ತರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</string> + <string name="no_permission_for_drm">ಕ್ಷಮಿಸಿ. DRM ಸಂರಕ್ಷಿತ ಕಡತಗಳನ್ನು ಹಂಚಲು ಸಾಧ್ಯವಿಲ್ಲ</string> + <string name="drm_license_info">DRM ಪರವಾನಗಿ ಮಾಹಿತಿ</string> +</resources> diff --git a/res/values-ko/cm_strings.xml b/res/values-ko/cm_strings.xml new file mode 100644 index 000000000..657c35993 --- /dev/null +++ b/res/values-ko/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">녹화 시간</string> +</resources> diff --git a/res/values-ko/codeaurora_strings.xml b/res/values-ko/codeaurora_strings.xml new file mode 100644 index 000000000..fdad872d9 --- /dev/null +++ b/res/values-ko/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">간격</string> + <string name="step_option_desc">빨리 감기/되감기 간격 사용자 지정</string> + <string name="setp_option_three_second">3초</string> + <string name="setp_option_six_second">6초</string> + <string name="loop">"반복"</string> + <string name="single">"단일"</string> + <string name="stereo">"스테레오"</string> + <string name="speaker_on">스피커 켬</string> + <string name="speaker_off">스피커 끔</string> + <string name="speaker_need_headset">이 기능을 사용하려면 헤드폰을 연결하세요.</string> + <string name="single_track">"단일 트랙"</string> + <string name="input_url">"URL 입력"</string> + <string name="streaming_settings">"스트리밍 설정"</string> + <string name="next">"다음"</string> + <string name="previous">"이전"</string> + <string name="buffer_size">버퍼 크기</string> + <string name="apn">선호 APN</string> + <string name="rtp_min_port">최저 포트</string> + <string name="rtp_max_port">최고 포트</string> + <string name="set_rtp_min_port">최저 포트 설정</string> + <string name="set_rtp_max_port">최고 포트 설정</string> + <string name="set_buffer_size">버퍼 크기 설정</string> + <string name="set_apn">선호 APN 설정</string> + <string name="setting">설정</string> + <string name="server_timeout_title">"서버 시간 초과"</string> + <string name="server_timeout_message">"서버에 다시 접속하여 동영상을 재생할까요?"</string> + <string name="videoview_error_text_cannot_connect_retry">"연결 실패, %1$d(으)로 다시 연결 중\u2026"</string> + <string name="media_controller_live">라이브</string> + <string name="media_controller_playing">재생 중</string> + <string name="media_controller_connecting">연결 중\u2026</string> + <string name="bookmark_add">"즐겨찾기에 추가"</string> + <string name="bookmark_display">"즐겨찾기 보기"</string> + <string name="bookmark_empty">"즐겨찾기 없음"</string> + <string name="bookmark_exist">"즐겨찾기에 이미 존재합니다"</string> + <string name="bookmark_add_success">"즐겨찾기에 추가되었습니다"</string> + <string name="bookmark_list">"즐겨찾기"</string> + <string name="bookmark_title">"제목"</string> + <string name="bookmark_location">"위치"</string> + <string name="delete_all">"모두 삭제"</string> + <string name="default_title">"기본 제목"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">더 많은 이미지</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">음소거할 수 없음: 지원되지 않는 동영상</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">위치를 표시할 지도 앱이 설치되어 있지 않습니다.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">베이스 부스트</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D 효과</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">음향 효과</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">음향 효과를 사용하려면 헤드폰을 연결하세요.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">죄송합니다. 이 동영상은 잘라낼 수 없습니다.</string> + <string name="no_permission_for_drm">죄송합니다. DRM으로 보호된 파일은 공유할 수 없습니다.</string> + <string name="drm_license_info">DRM 라이선스 정보</string> +</resources> diff --git a/res/values-ku/cm_strings.xml b/res/values-ku/cm_strings.xml new file mode 100644 index 000000000..1cac2553d --- /dev/null +++ b/res/values-ku/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">تۆمارکردنی کات</string> +</resources> diff --git a/res/values-ku/codeaurora_strings.xml b/res/values-ku/codeaurora_strings.xml new file mode 100644 index 000000000..dacd21971 --- /dev/null +++ b/res/values-ku/codeaurora_strings.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">هەنگاو</string> + <string name="step_option_desc">بەکەسیکردنی پلەی خێراییی پێشخستن/دواخستن</string> + <string name="setp_option_three_second">3 چرکە</string> + <string name="setp_option_six_second">6 چرکە</string> + <string name="loop">"كلو"</string> + <string name="single">"تاک"</string> + <string name="stereo">"stereo"</string> + <string name="speaker_on">چالاکردنی بڵندگۆ</string> + <string name="speaker_off">لەکارخستنی بڵندگۆ</string> + <string name="speaker_need_headset">بیستۆکەکان پێوە بکە بۆ بەکارهێنانی ئەم توانستە.</string> + <string name="single_track">"تاکە تراک"</string> + <string name="input_url">"ناونیشانی ئینتەرنێتی بنووسە"</string> + <string name="streaming_settings">"ڕێکخستنەکانی لێشاو (Stream)"</string> + <string name="next">"دواتر"</string> + <string name="previous">"پێشتر"</string> + <string name="buffer_size">قەبارەی نێوانگر</string> + <string name="apn">APNی بەباشزانراو</string> + <string name="rtp_min_port">کەمترین دەرگا</string> + <string name="rtp_max_port">زۆرترین دەرگا</string> + <string name="set_rtp_min_port">کەمترین دەرگا دابنێ</string> + <string name="set_rtp_max_port">زۆرترین دەرگا دابنێ</string> + <string name="set_buffer_size">قەبارەی نێوانگر دابنێ</string> + <string name="set_apn">APNی بەباشزانراو دیاری بکە</string> + <string name="setting">ڕێکخستنهکان</string> + <string name="server_timeout_title">"وچانی ڕاژەکار"</string> + <string name="server_timeout_message">"ببەستێتەوە بە ڕاژەکارەوە بۆ لێدانی ڤیدیۆکە؟"</string> + <string name="videoview_error_text_cannot_connect_retry">"بەستنەوە سەرکەوتوو نەبوو، هەوڵدان بۆ بەستنەوە بە %1$d\u2026"</string> + <string name="media_controller_live">ڕاستەوخۆ</string> + <string name="media_controller_playing">لێدان</string> + <string name="media_controller_connecting">بەستنەوە\u2026</string> + <string name="bookmark_add">"نیشانەکردنی وێبگە"</string> + <string name="bookmark_display">"پیشاندانی وێبگە نیشانەکراوەکان"</string> + <string name="bookmark_empty">"وێبگەی نیشانەکراو نییە"</string> + <string name="bookmark_exist">"وێبگەی نیشانەکراو پێشتر هەیە"</string> + <string name="bookmark_add_success">"وێبگەکە نیشانە کرا"</string> + <string name="bookmark_list">"وێبگە نیشانەکراوەکان"</string> + <string name="bookmark_title">"سەردێڕ"</string> + <string name="bookmark_location">"شوێن"</string> + <string name="delete_all">"سڕینەوەی هەموو"</string> + <string name="default_title">"سەردێڕی بنەڕەت"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">وێنەی زیاتر</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">ناتوانێت کپ بکرێت : ڤیدیۆ پشتگیری ناکرێت</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">هیچ بەرنامەیەکی نەخشە نیە بۆ پیشاندانی ناوچە.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">بەهێزکردنی بنچینەی دەنگ</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">کاریگەریی 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">کاریگهرییەکانی دهنگ</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">بیستۆکەکانت پێوە بکە بۆ ئەم کاریگەرییانە.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">بەداخەوە، ئەم پەڕگە ڤیدیۆیییە ناتوانرێت ببڕدرێت</string> +</resources> diff --git a/res/values-ku/filtershow_strings.xml b/res/values-ku/filtershow_strings.xml new file mode 100644 index 000000000..4861d0ec1 --- /dev/null +++ b/res/values-ku/filtershow_strings.xml @@ -0,0 +1,292 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <string name="title_activity_filter_show">دهستکاری کردنی وێنه</string> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <string name="cannot_load_image">ناتوانێت وێنەکە بار بکات!</string> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <string name="cannot_edit_original">نهتوانرا وێنهی بنێڕهت دهستکاریبکرێت</string> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <string name="setting_wallpaper">دانانی وێنەی سەر ڕوونما</string> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <string name="download_failure">نهتوانرا وێنه دابگیرێت.هێڵ ئامادهنییه.</string> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <string name="original">ڕەسەن</string> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <string name="custom_border">تایبەت بە خۆ</string> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <string name="filtershow_undo">پاشگەزبوون</string> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <string name="filtershow_redo">گهڕانهوه بۆ ههنگاوی داهاتوو</string> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <string name="show_imagestate_panel">نیشاندانی کاریگهرییه جێبهجێکراوهکان</string> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <string name="hide_imagestate_panel">شاردنهوهی کاریگهرییه جێبهجێکراوهکان</string> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <string name="export_image">ناردن</string> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <string name="print_image">چاپکردن</string> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <string name="export_flattened">ناردنی وێنهی تهخت</string> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <string name="select_output_settings">وێنهی نێردراو لهبهردهگیرێتهوه بهبێ تۆمار.</string> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <string name="quality">کوالێتی</string> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <string name="size">قهباره</string> + <!-- Text for size x [CHAR LIMIT=1] --> + <string name="x">x</string> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <string name="menu_settings">ڕێکخستنهکان</string> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <string name="unsaved">چهند گۆڕانێکی پاشهکهوت نهکراو ههیه بۆ ئهم وێنهیه.</string> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <string name="save_before_exit">ئهتهوێ پاشهکهوتی بکهیت پێش چوونهدهرهوه؟</string> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <string name="save_and_exit">پاشهکهوتکردن و چوونه دهرهوه</string> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <string name="save_and_processing">پرۆسهی پڕ کوالێتی وێنه...</string> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <string name="exit">دهرچوون</string> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <string name="history">ڕێکخستنەوە</string> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <string name="reset">ڕێکخستنەوە</string> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <string name="imageState">کاریگهری جێبهجێکراو</string> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <string name="compare_original">بەراوردکردن</string> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <string name="apply_effect">جێبهجێکردن</string> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <string name="reset_effect">ڕێکخستنەوە</string> + <!-- Label for aspect [CHAR LIMIT=15] --> + <string name="aspect">لا</string> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <string name="aspect1to1_effect">1:1</string> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <string name="aspect4to3_effect">4:3</string> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <string name="aspect3to4_effect">3:4</string> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <string name="aspect4to6_effect">4:6</string> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <string name="aspect5to7_effect">5:7</string> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <string name="aspect7to5_effect">7:5</string> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <string name="aspect9to16_effect">16:9</string> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <string name="aspectNone_effect">هیچیان</string> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <string name="Fixed">چارهسهرکراو</string> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <string name="tinyplanet">ورده ههساره</string> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <string name="exposure" msgid="1229093066434614811">ڕووناکیپێدان</string> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <string name="sharpness">زبری</string> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <string name="contrast">کۆنتراست</string> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <string name="vibrance">وزه ڕهنگ</string> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <string name="saturation">تێرایی</string> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <string name="bwfilter">کاریگهری BW</string> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <string name="wbalance">خۆکارانه ڕهنگ</string> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <string name="hue">ڕهنگ</string> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <string name="shadow_recovery">سێبهرهکان</string> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <string name="highlight_recovery">بهرچاوهکان</string> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <string name="curvesRGB">لاری</string> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <string name="vignette">تۆخی</string> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <string name="vignette_main">شێوە</string> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <string name="vignette_exposure">ڕووناکیپێدان</string> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <string name="vignette_saturation">تێریی ڕەنگ</string> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <string name="vignette_contrast">کۆنتراست</string> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <string name="vignette_falloff">کهوتهڕهنگ</string> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <string name="redeye">چاوی سوور</string> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <string name="imageDraw">کێشان</string> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <string name="straighten" msgid="5217801513491493491">هێزی</string> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <string name="crop" msgid="5584000454518174632">قرتاندن</string> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <string name="rotate" msgid="460017689320955494">سووڕاندنەوە</string> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <string name="mirror">ئاوێنه</string> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <string name="negative">پێچهوانه</string> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <string name="none" msgid="3601545724573307541">هیچیان</string> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <string name="edge">کهناری</string> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <string name="kmeans">پاشکهوتوو</string> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <string name="downsample">خوارهنمونه</string> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <string name="grad">وهرگیراو</string> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <string name="editor_grad_brightness">ڕۆشنایی</string> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <string name="editor_grad_contrast">کۆنتراست</string> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <string name="editor_grad_saturation">تێریی ڕەنگ</string> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_main">سەرەکی</string> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_red">سوور</string> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_yellow">زەرد</string> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_green">سەوز</string> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_cyan">شینی ئاسمانی</string> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_blue">شین</string> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_magenta">سووری ئەرخەوانی</string> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <string name="editor_grad_style">شێواز</string> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <string name="editor_grad_new">نوێ</string> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <string name="curves_channel_rgb">RGB</string> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <string name="curves_channel_red">سوور</string> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <string name="curves_channel_green">سهوز</string> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <string name="curves_channel_blue">شین</string> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <string name="draw_style">شێواز</string> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <string name="draw_size">قهباره</string> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <string name="draw_hue">ڕهنگ</string> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <string name="draw_saturation">تێریی ڕەنگ</string> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <string name="draw_value">ڕۆشنایی</string> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <string name="draw_color">ڕەنگ</string> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_line">هێلهکان</string> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_brush_spatter">دیاریکهرهکان</string> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_brush_marker">لیکاوی</string> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <string name="draw_clear">پاککردنهوه</string> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <string name="color_border_size">ئهستووری</string> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <string name="color_border_corner_size">قهبارهی سوچهکان</string> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <string name="color_border_color">ڕەنگ</string> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <string name="color_border_clear">پاککردنهوه</string> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <string name="color_pick_select">دیاریکردنی ڕهنگی دڵخواز</string> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <string name="color_pick_title">دیاریکردنی ڕهنگ</string> + <!-- The title for draw size [CHAR LIMIT=50] --> + <string name="draw_size_title">دیاریکردنی قهباره</string> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <string name="draw_size_accept">باشه</string> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <string name="state_panel_original">ڕەسەن</string> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <string name="state_panel_result">ئهنجام</string> + <!-- Label for the notification [CHAR LIMIT=50] --> + <string name="filtershow_notification_label">پاشهکهوتکردنی وێنه</string> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <string name="filtershow_notification_message">پرۆسە...</string> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <string name="filtershow_save_preset">پاشهکهوتکردنی ئامادهکراوی ئێستا</string> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <string name="filtershow_manage_preset">بهڕێوهبردنی ئامادهکراوی بهکارهێنهر</string> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <string name="filtershow_new_preset">ئامادهکراوێکی نوێ</string> + <!-- Label for preset name [CHAR LIMIT=30] --> + <string name="filtershow_preset_name">ناوی ئامادهکراو</string> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <string name="filtershow_show_info_panel">زانیاری</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_name">ناوی وێنه</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_size">قهبارهی وێنه</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_histogram">مێژوویی</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_exif">داتای EXIF </string> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <string name="filtershow_add_button_looks">ئامادهکراو</string> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_add_button_versions">وهشان</string> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_version_original">ڕەسەن</string> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_version_current">ئێستا</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_model">مۆدێل</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_aperture">دیافراگم</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_focal_length">درێژیی تیشکۆیی</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_iso">ISO</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_subject_distance">ماوهی دێڕ</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_date">ڕۆژی گرتنی وێنهکه</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_f_stop">F وهستان</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_exposure_time">كاتى كەوتنەبەر</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_copyright">مافی لهبهرگرتنهوه</string> +</resources> diff --git a/res/values-ku/strings.xml b/res/values-ku/strings.xml new file mode 100644 index 000000000..91a12b04d --- /dev/null +++ b/res/values-ku/strings.xml @@ -0,0 +1,852 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_name">پێشەنگا</string> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <string name="gadget_title">چوارچێوهی وێنه</string> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <string name="details_ms">%1$02d:%2$02d</string> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <string name="details_hms">%1$d:%2$02d:%3$02d</string> + <!-- Activity label. This might show up in the activity-picker --> + <string name="movie_view_label">لێدهری ڤیدیۆ</string> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <string name="loading_video">بارکردنی ڤیدیۆ\u2026</string> + <string name="loading_image">کردنهوهی وێنه\u2026</string> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <string name="loading_account">کردنهوهی ههژمار\u2026</string> + <!-- Movie View Resume Playing dialog title --> + <string name="resume_playing_title">ڤيديۆكه دەست پێ بكەوە</string> + <!-- Movie View Start Playing dialog title --> + <string name="resume_playing_message">ڤیدیۆ دهستپێبکاتهوه له %s ؟ ?</string> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <string name="resume_playing_resume">دهستپێکردنهوه</string> + <!-- Displayed in the title of those albums that are being loaded --> + <string name="loading">ئامادەکردن\u2026</string> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <string name="fail_to_load">نەتوانى بار بكهیت</string> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <string name="fail_to_load_image">ناتوانی وێنهكه باربكهیت</string> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <string name="no_thumbnail">هیچ کورته وێنهیهک نییه</string> + <!-- Movie View Start Playing button "Beginning" --> + <string name="resume_playing_restart">دەست پێ بكەوە</string> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <string name="crop_save_text">باشه</string> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <string name="ok">باشه</string> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <string name="multiface_crop_help">پهنجه بنێ به ڕوودا بۆ دهستپێکردن.</string> + <!-- Toast/alert that the image is being saved to the SD card --> + <string name="saving_image">پاشهکهوتکردنی وێنه\u2026</string> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <string name="filtershow_saving_image">پاشهکهوتکردنی وێنه بۆ <xliff:g id="album_name">%1$s</xliff:g>\u2026</string> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <string name="save_error">نهتوانرا وێنهی بڕدراو پاشهکهوت بکرێت.</string> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <string name="crop_label">بڕینی وێنه</string> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <string name="trim_label">بڕینی ڤیدیۆ</string> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <string name="select_image">دیاریکردنی وێنه</string> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <string name="select_video">دیاریکردنی ڤیدیۆ</string> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <string name="select_item">دیاریکردنی دانهیهک</string> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <string name="select_album">دیاریکردنی ئهلبوم</string> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <string name="select_group">دیاریکردنی گروپ</string> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <string name="set_image">دانانی وێنە وەکوو</string> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <string name="set_wallpaper">دانانی وێنەی پشتەوە</string> + <!-- Toast/alert after saving wallpaper --> + <string name="wallpaper">دانانی دیوارپۆش\u2026</string> + <string name="camera_setas_wallpaper">دیوارپۆش</string> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <string name="delete">سڕینهوه</string> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <string name="confirm">دووپاتکردنەوە</string> + <string name="cancel">لابردن</string> + <string name="share">بهشداری پێکردن</string> + <string name="share_panorama">هاوبەشیکردنی پانۆراما</string> + <string name="share_as_photo">هاوبەشیکردن وەکوو وێنە</string> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <string name="deleted">سڕایەوە</string> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <string name="undo">پاشگەزبوونەوە</string> + <!-- String indicating more actions are available --> + <string name="select_all">دیاریکردنی هەموو</string> + <string name="deselect_all">دیاری نەکردنی هەموو</string> + <string name="slideshow">نیشاندانی سلاید</string> + <string name="details">زانیاری زیاتر</string> + <string name="details_title">%1$d له %2$d دانه:</string> + <string name="close">داخستن</string> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <string name="switch_to_camera">گۆڕین بۆ كامێرا</string> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <string name="show_on_map">پیشاندانی لەسەر نەخشە</string> + <string name="rotate_left">سووڕاندنەوە بۆ چەپ</string> + <string name="rotate_right">سووڕاندنەوە بۆ ڕاست</string> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <string name="no_such_item">نهتوانرا دانه بدۆزرێتهوه.</string> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <string name="edit">دەستکاری</string> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <string name="simple_edit">دهستكاری كرنی سادە</string> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <string name="process_caching_requests">دەستكاريكردنی داواكارى هەڵگرتن</string> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <string name="caching_label">هەڵگرتن\u2026</string> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <string name="crop_action">قرتاندن</string> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <string name="trim_action">بڕین</string> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <string name="mute_action">کپکردن</string> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <string name="set_as">دانان وەکوو</string> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <string name="video_mute_err">ناتوانیت ڤیدیۆكه بێدهنگ بكهیت</string> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <string name="video_err">ناتوانرێت ڤیدۆکە لێبدرێت.</string> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <string name="group_by_location">لهلایهن شوێنهوه</string> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <string name="group_by_time">لهلایهن كاتهوه</string> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <string name="group_by_tags">لهلایهن تاگهكانهوه</string> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <string name="group_by_faces">لهلایهن خهڵكهوه</string> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <string name="group_by_album">لهلایهن ئهلبومهوه</string> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <string name="group_by_size">بهپێی قهباره</string> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <string name="untagged">ئاراستهبۆنهکراو</string> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <string name="no_location">شوێن نییه</string> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <string name="no_connectivity">ههندێ شوێن نهتوانرا بناسرێتهوه له کاتی کێشهکانی هێڵ.</string> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <string name="sync_album_error">نهتوانرا وێنه دابگیرێت بۆ ئهلبوومهکه. دواتر ههوڵبدهرهوه.</string> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <string name="show_images_only">تهنها وێنه</string> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <string name="show_videos_only">تهنها ڤیدیۆ</string> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <string name="show_all">وێنه وamp; ڤیدیۆ</string> + <!-- Title of the StackView AppWidget --> + <string name="appwidget_title">پێشەنگای وێنە</string> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <string name="appwidget_empty_text">وێنه نییه.</string> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <string name="crop_saved"> + وێنەی قرتێنراو پاشەکەوت کرا بۆ <xliff:g id="folder_name">%s</xliff:g>.</string> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <string name="no_albums_alert">هیچ ئهلبومێک ئاماده نییه.</string> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <string name="empty_album">0 وێنه/ڤیدیۆ ئامادهیه.</string> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <string name="picasa_posts">پهیامهکان</string> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <string name="make_available_offline">کردن بە دەرهێڵ</string> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <string name="sync_picasa_albums">تازەکردنەوە</string> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <string name="done">ئهنجام درا</string> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <string name="sequence_in_set">%1$d of %2$d items:</string> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <string name="title">سەردێڕ</string> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <string name="description">پێناسه</string> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <string name="time">کات</string> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <string name="location">شوێن</string> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <string name="path">ڕێچکە</string> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <string name="width">پانی</string> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <string name="height">بەرزی</string> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <string name="orientation">ڕووتێکەری</string> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <string name="duration">ماوه</string> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <string name="mimetype">جۆری MIME</string> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <string name="file_size">ئەندازە پەڕگە</string> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <string name="maker">دروستکەر</string> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <string name="model">مۆدێل</string> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <string name="flash">فلاش</string> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <string name="aperture">دیافراگم</string> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <string name="focal_length">درێژیی تیشکۆیی</string> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <string name="white_balance">هاوسەنگیی سپی</string> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <string name="exposure_time">کاتی ڕووناککردنەوە</string> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <string name="iso">ISO</string> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <string name="unit_mm">مم</string> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <string name="manual">دەستکارانە</string> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <string name="auto">خۆکارانه</string> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <string name="flash_on">فلاش لێدرا</string> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <string name="flash_off">بێ فلاش</string> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <string name="unknown">نەزانراو</string> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <string name="ffx_original">ڕەسەن</string> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <string name="ffx_vintage">بەپەرۆش</string> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <string name="ffx_instant">دەستبەجێ</string> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <string name="ffx_bleach">سپی دەکاتەوە</string> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <string name="ffx_blue_crush">شین</string> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <string name="ffx_bw_contrast">B/W</string> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <string name="ffx_punch">كۆن كردنی كاغهز</string> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <string name="ffx_x_process">كرداری X</string> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <string name="ffx_washout">ژاوەژاو</string> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <string name="ffx_washout_color">Litho</string> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <string name="try_to_set_local_album_available_offline"> + ئەم بڕگەیە له ناوخۆدا پاشەکەوتکراوە و بهبێ هێڵیش بهردهسته.</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <string name="set_label_all_albums">ههموو ئهلبومهكانم</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <string name="set_label_local_albums">شوێنی ئهلبومهكان</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <string name="set_label_mtp_devices">ئامێری MTP</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <string name="set_label_picasa_albums">Picasa albums</string> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <string name="free_space_format"><xliff:g id="bytes">%s</xliff:g> free</string> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <string name="size_below"><xliff:g id="size">%1$s</xliff:g> or below</string> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <string name="size_above"><xliff:g id="size">%1$s</xliff:g> or above</string> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <string name="size_between"><xliff:g id="min_size">%1$s</xliff:g> to <xliff:g id="max_size">%2$s</xliff:g></string> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <string name="Import">هێنان</string> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <string name="import_complete">بهسهركهوتوی هێندرا</string> + <string name="import_fail">هێنان سهركهوتوو نهبوو</string> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <string name="camera_connected">كامێرای پەیوەندیدار</string> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <string name="camera_disconnected">كامێرای پهیوهندیدار.</string> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <string name="click_import">دەست لێدان لێرە بۆ هێنان</string> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <string name="widget_type_album">ئهلبومێك ههڵبژێره</string> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <string name="widget_type_shuffle">تێکەڵکردنی ههموو وێنهكان</string> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <string name="widget_type_photo">وێنهیهك ههڵبژێره</string> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <string name="widget_type">هەڵبژاردنی وێنه</string> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <string name="slideshow_dream_name">نیشاندهری</string> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <string name="albums">ئەلبوم</string> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <string name="times">کەڕەت</string> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <string name="locations">شوێن</string> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <string name="people">خەڵک</string> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <string name="tags">تاگەکان</string> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <string name="group_by">لهلایهن گروپهوه</string> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <string name="settings">ڕێکخستنهکان</string> + <!-- The title of menu item where user can add a new account --> + <string name="add_account">دانانی هەژمار</string> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <string name="folder_camera">کامێرا</string> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <string name="folder_download">داگرتن</string> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <string name="folder_edited_online_photos">وێنهی سهرهێڵ دەستکاری کراوە</string> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <string name="folder_imported">دانان</string> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <string name="folder_screenshot">وێنەی شاشە</string> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <string name="help">یارمەتی</string> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <string name="no_external_storage_title">هیچ ههڵنهگیراوه</string> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <string name="no_external_storage">هیچ ههڵگیراوێكی دهرهكی نییه</string> + <!-- Label for album filmstrip button --> + <string name="switch_photo_filmstrip">پیشاندانی بە شێوەی ئەڵقەی فیلم</string> + <!-- Label for album grid button --> + <string name="switch_photo_grid">پیشاندانی خانهیی</string> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <string name="switch_photo_fullscreen">بینینی پڕ شاشە</string> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <string name="trimming">زیانبەخش</string> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <string name="muting">بێ دەنگ</string> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <string name="please_wait">تکایه چاوهڕێ بکە</string> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <string name="save_into">Saving video to <xliff:g id="album_name">%1$s</xliff:g> \u2026</string> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <string name="trim_too_short">ناتوانیت ههڵی بگریت:ڤیدیۆی دیاری كراو زۆر كورته</string> + <!-- Text to show with progress bar while stitching in Gallery --> + <string name="pano_progress_text">نواندنی پانۆرامایی</string> + <!-- The label on the button that will save an edited image --> + <string name="save" msgid="8140440041190264400">پاشەکەوتکردن</string> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <string name="ingest_scanning" msgid="2048262851775139720">پشكنینی ناوهڕۆك...</string> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <string name="ingest_sorting" msgid="624687230903648118">جیاكردنهوه...</string> + <!-- Status message shown when scanning the content from the camera has completed --> + <string name="ingest_scanning_done">پشكنین تهواو بوو</string> + <!-- Status message shown when content from an external camera is being imported --> + <string name="ingest_importing">دانان...</string> + <!-- Status message shown when there is no content available to be imported --> + <string name="ingest_empty_device">هيچ ناوەرۆكى بەردەست بۆ دانان لەسەر ئەمە ئامراز نيە.</string> + <!-- Status message shown when there is no MTP device connected --> + <string name="ingest_no_device">هیچ ئامێرێكی MTP پهیوهست نییه</string> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <string name="camera_error_title">هەڵەی کامێرا</string> + <!-- message for the dialog showing the error of camera hardware --> + <string name="cannot_connect_camera">ناتوانێت ببەسترێتەوە بە کامێراوە.</string> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <string name="camera_disabled">کامێرا بە هۆکاری پلانی پاراستنەوە نەتوانا کراوە.</string> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <string name="camera_label">کامێرا</string> + <!-- alert to the user to wait for some operation to complete --> + <string name="wait">تکایە چاوەڕێ بکە\u2026</string> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <string name="no_storage" product="nosdcard">دهرکردنی بیرگهی USB پێش بهکارهێنانی کامێرا.</string> + <!-- alert to the user that an SD card must be installed before using the camera --> + <string name="no_storage" product="default">پێش بەکارهێنانی کامێرا بیرگەی دەرەکی تێبخە.</string> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <string name="preparing_sd" product="nosdcard">ئامادهکردنی بیرگهی USB\u2026</string> + <!-- alert to the user that the SD card is being disk-checked --> + <string name="preparing_sd" product="default">ئامادەکردنی بیرگەی دەرەکی\u2026</string> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <string name="access_sd_fail" product="nosdcard">دهستهڵات نهشكێنرایهوه بهسهر بیرگهی USB.</string> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <string name="access_sd_fail" product="default">نەتوانرا دەست بگەیەنێتە بیرگەی دەرەکی.</string> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <string name="review_cancel">لابردن</string> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <string name="review_ok">تهواوبوو</string> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <string name="time_lapse_title">تۆمارکردنی تێپەڕبوونی کات</string> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <string name="pref_camera_id_title">کامێرا هەڵبژێرە</string> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <string name="pref_camera_id_entry_back">دواوە</string> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <string name="pref_camera_id_entry_front">پێشەوە</string> + <!-- Settings screen, setting title text --> + <string name="pref_camera_recordlocation_title">کۆگاکردنی شوێن</string> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <string name="pref_camera_location_label">شوێن</string> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <string name="pref_camera_timer_title">کاتژمێری بەرەوژێرژمار</string> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <string name="pref_camera_timer_sound_default">@string/setting_on_value</string> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <string name="pref_camera_timer_sound_title">توتە لە ماوەی ژماردنی بەرەوژێر</string> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <string name="setting_off">کوژاندن</string> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <string name="setting_on">هەڵکردن</string> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <string name="pref_video_quality_title">جۆرایهتیی کامێرا</string> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <string name="pref_video_quality_entry_high">بهرز</string> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <string name="pref_video_quality_entry_low">نزم</string> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <string name="pref_video_time_lapse_frame_interval_title">کات تێپەڕبوون</string> + <!-- Settings screen, Camera setting category title --> + <string name="pref_camera_settings_category">ڕێکخستنەکانی کامێرا</string> + <!-- Settings screen, Camcorder setting category title --> + <string name="pref_camcorder_settings_category">ڕێکخستنەکانی کامێرای هەڵگرتەنی</string> + <!-- Settings screen, Picture size title --> + <string name="pref_camera_picturesize_title">قەبارەی وێنە</string> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_13mp">١٣ مێگاپێکسڵ</string> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_8mp">٨ مێگاپێکسڵ</string> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_5mp">٥ مێگاپێکسڵ</string> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_4mp">4 مێگاپێکسڵ</string> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_3mp">٣ مێگاپێکسڵ</string> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_2mp">٢ مێگاپێکسڵ</string> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_2mp_wide">٢ مێگاپێکسڵ (١٦ لەسەر ٩)</string> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_1_3mp">١.٣ مێگاپێکسڵ</string> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_1mp">١ مێگاپێکسڵ</string> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_vga">VGA</string> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_qvga">QVGA</string> + <!-- Settings screen, Focus mode title --> + <string name="pref_camera_focusmode_title">شێوازی سەرنجدان</string> + <!-- Settings screen, Focus mode dialog radio button choices --> + <string name="pref_camera_focusmode_entry_auto">خۆکار</string> + <string name="pref_camera_focusmode_entry_infinity">Infinity</string> + <string name="pref_camera_focusmode_entry_macro">Macro</string> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_focusmode_label_auto">خۆکارانە</string> + <string name="pref_camera_focusmode_label_infinity">INFINITY</string> + <string name="pref_camera_focusmode_label_macro">MACRO</string> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <string name="pref_camera_flashmode_title">شێوازی فلاش</string> + <!-- flash label [CHAR LIMIT=50] --> + <string name="pref_camera_flashmode_label">شێوازی فلاش</string> + <!-- Settings screen, Flash mode dialog radio button choices --> + <string name="pref_camera_flashmode_entry_auto">خۆکارانه</string> + <string name="pref_camera_flashmode_entry_on">هەڵکردن</string> + <string name="pref_camera_flashmode_entry_off">کوژاندنهوه</string> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_flashmode_label_auto">فلاشی خۆکار</string> + <string name="pref_camera_flashmode_label_on">فلاش هەڵە</string> + <string name="pref_camera_flashmode_label_off">فلاش کوژاوەیە</string> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <string name="pref_camera_whitebalance_title">هاوسەنگیی سپی</string> + <!-- Menu, white balance label --> + <string name="pref_camera_whitebalance_label">هاوسهنگیی سپێتی</string> + <!-- Settings screen, White balance dialog radio button choices --> + <string name="pref_camera_whitebalance_entry_auto">خۆکار</string> + <string name="pref_camera_whitebalance_entry_incandescent">درەوشاوە</string> + <string name="pref_camera_whitebalance_entry_daylight">ڕۆژی ڕووناک</string> + <string name="pref_camera_whitebalance_entry_fluorescent">تيشكاوى</string> + <string name="pref_camera_whitebalance_entry_cloudy">هەوری</string> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <string name="pref_camera_whitebalance_label_auto">خۆکار</string> + <string name="pref_camera_whitebalance_label_incandescent">درەوشاوە</string> + <string name="pref_camera_whitebalance_label_daylight">ڕۆژی ڕووناک</string> + <string name="pref_camera_whitebalance_label_fluorescent">تيشكاوى</string> + <string name="pref_camera_whitebalance_label_cloudy">هەوری</string> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <string name="pref_camera_scenemode_title">شێوازی دیمەن</string> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_auto">خۆکار</string> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_hdr">HDR</string> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_action">چالاکی</string> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_night">شەو</string> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_sunset">خۆراوابوون</string> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_party">میوانی</string> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_auto">هیچیان</string> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_action">چالاکی</string> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_night">شەو</string> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_sunset">خۆراوابوون</string> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_party">میوانی</string> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label">ژمێرهری کات</string> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_off">کوژاندنەوەی کاتڕاگر</string> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_one">١ چرکە</string> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_three">٣ چرکە</string> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_ten">١٠ چرکە</string> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_fifteen">١٥ چرکە</string> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <string name="not_selectable_in_scene_mode">لە شیوازی دیمەندا دیارینەکراوەیە.</string> + <!-- Exposure settings in preference --> + <string name="pref_exposure_title">ڕووناکیپێدان</string> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <string name="pref_exposure_label">ڕۆشنایی پێدان</string> + <!-- Default HDR entry value --> + <string name="pref_camera_hdr_default">@string/setting_off_value</string> + <!-- HDR label ON [CHAR LIMIT=60] --> + <string name="pref_camera_hdr_label">HDR</string> + <!-- switch camera label back [CHAR LIMIT=60] --> + <string name="pref_camera_id_label_back">کامێرای پێشەوە</string> + <!-- switch camera label front [CHAR LIMIT=60] --> + <string name="pref_camera_id_label_front">کامێرای دواوە</string> + <!-- Dialog "OK" button. Dismisses dialog. --> + <string name="dialog_ok">باشه</string> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <string name="spaceIsLow_content" product="nosdcard">بیرگەکەت پڕ بوە تکایە لەپێشدا کەمێك زانیاری بسڕەوە و پاشان هەوڵ بدەرەوە.</string> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <string name="spaceIsLow_content" product="default">بۆشاییی بیرگەی دەرەکیت بەرەو تەواوبوون دەڕوات. ڕێکخستنەکانی جۆرێتی بگۆڕە یان هەندێک وێنە یان دیکەی پەڕگەکان بسڕەوە.</string> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <string name="video_reach_size_limit">قەبارە گەیشتۆتە سنوور.</string> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <string name="pano_too_fast_prompt">زۆر خێرا</string> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <string name="pano_dialog_prepare_preview">ئامادەکردنی پانۆراما</string> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <string name="pano_dialog_panorama_failed">نەیتوانی پانۆراما پاشەکەوت بکات.</string> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <string name="pano_dialog_title">پانۆراما</string> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <string name="pano_capture_indication">گرتنی پانۆراما</string> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <string name="pano_dialog_waiting_previous">چاوەڕێکردن بۆ پانۆرامای پێشوو</string> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <string name="pano_review_saving_indication_str">پاشەکەوتکردن\u2026</string> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <string name="pano_review_rendering">نواندنی پانۆرامایی</string> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <string name="tap_to_focus">بیسوو بۆ سەرنجدان.</string> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <string name="pref_video_effect_title">کاریگهرییهکان</string> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <string name="effect_none">هیچیان</string> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_squeeze">گوشین</string> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_eyes">چاوی گەورە</string> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_mouth">دەمی گەورە</string> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_small_mouth">دەمی بچوک</string> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_nose">لوتی گەورە</string> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_small_eyes">چاوی بچوک</string> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <string name="effect_backdropper_space">لە بۆشایی</string> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <string name="effect_backdropper_sunset">خۆراوابوون</string> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <string name="effect_backdropper_gallery">ڤیدیۆکهت</string> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <string name="bg_replacement_message">دانانی ئامێر بۆ وهستان.\nههنگاوێک له بینینی کات.</string> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <string name="video_snapshot_hint">له کاتی تۆمارکردندا بیسوو بۆ وێنهگرتن.</string> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <string name="video_recording_started">تۆمارکردنی ڤیدیۆ دەستی پێکردووه.</string> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <string name="video_recording_stopped">تۆمارکردنی ڤیدیۆ وەستاوه.</string> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <string name="disable_video_snapshot_hint">گرتنی ڤیدیۆ ئامادهنییه کاتێک کاریگهری تایبهتی کاردهکات.</string> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <string name="clear_effects">پاککردنەوەی کاریگەرییەکان</string> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <string name="effect_silly_faces">ڕووخساری گەمژانه</string> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <string name="effect_background">پاشبنەما</string> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <string name="accessibility_shutter_button">دوگمهی خێرایی لێنس</string> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <string name="accessibility_menu_button">دوگمەی پێڕست</string> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <string name="accessibility_review_thumbnail">تازهترین وێنه</string> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <string name="accessibility_camera_picker">گۆڕینی پێش و دواوهی کامێرا</string> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <string name="accessibility_mode_picker">کامێرا، ڤیدیۆ یان هەڵبژێرەری پانۆراما</string> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <string name="accessibility_second_level_indicators">ڕێکخستنی زیاتری سهرپهرشتی</string> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <string name="accessibility_back_to_first_level">داخستنی ڕێکخستنی سهرپهرشتی</string> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <string name="accessibility_zoom_control">سهرپهرشتی هێنانه پێشهوه</string> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <string name="accessibility_decrement">کهمکردن%1$s</string> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <string name="accessibility_increment">زیادکردن%1$s</string> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <string name="accessibility_check_box">%1$s خانهی پیاچوونهوه</string> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_camera">گۆڕان بۆ وێنە</string> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_video">گۆڕان بۆ ڤیدیۆ</string> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_panorama">گۆڕان بۆ پانۆراما</string> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_new_panorama">گۆڕین بوێ پانۆرامای نوێ</string> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_refocus">گۆڕین بۆ دووباره فۆکس</string> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <string name="accessibility_review_cancel">چاوپێداگێڕانەوەی هەڵوەشاندنەوە</string> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <string name="accessibility_review_ok">چاوپێداگێڕانەوە کرا</string> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <string name="accessibility_review_retake">چاوپێداگێڕانەوەی وێنەگرتنەوە</string> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_play_video">لێدانی ڤیدیۆ</string> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_pause_video">ڕاگرتنی ڤیدیۆ</string> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_reload_video">دووبارهکردنهوهی ڤیدیۆ</string> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <string name="accessibility_time_bar">شریتی کاتی لێدهری ڤیدیۆ</string> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <string name="capital_on">هەڵکردن</string> + <!-- Default text for a button that can be toggled on and off. --> + <string name="capital_off">کوژاندن</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_off">کوژاندن</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_500">٠.٥ چرکه</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1000">١ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1500">١.٥ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_2000">٢ چرکه</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_2500">٢.٥ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_3000">٣ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_4000">٤ چرکه</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_5000">٥ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_6000">٦ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_10000">١٠ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_12000">١٢ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_15000">١٥ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_24000">٢٤ چرکە</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_30000">٠.٥ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_60000">١ خولهک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_90000">١.٥ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_120000">٢ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_150000">٢.٥ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_180000">٣ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_240000">٤ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_300000">٥ خولهک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_360000">٦ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_600000">١٠ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_720000">١٢ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_900000">١٥ خولهک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1440000">٢٤ خولەک</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1800000">٠.٥ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_3600000">١ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_5400000">١.٥ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_7200000">٢ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_9000000">٢.٥ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_10800000">٣ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_14400000">٤ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_18000000">٥ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_21600000">٦ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_36000000">١٠ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_43200000">١٢ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_54000000">١٥ کاژێر</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_86400000">٢٤ کاژێر</string> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_seconds">چرکە</string> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_minutes">خولەک</string> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_hours">کاژێر</string> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <string name="time_lapse_interval_set">کرا</string> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <string name="set_time_interval">دانانی مەودای کات</string> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <string name="set_time_interval_help">تایبەتمەندیی تێپەڕینی کات کوژاوەیە. هەڵی بکە بۆ دانانی مەودای کات.</string> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <string name="set_timer_help">کات پێوهر کوژاوهتهوه.دایبگیرسێنه ئهگهر بۆ ژماردنته پێش گرتنی وێنه.</string> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <string name="set_duration">دانانی ماوە لە چەند چرکەدا</string> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <string name="count_down_title_text">ژماردنی بەرەوژێر تاوەکوو گرتنی وێنە</string> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <string name="remember_location_title">شوێنی وێنهکانت له یاده؟</string> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <string name="remember_location_prompt">وێنە و ڤيديۆکانت به شوێنی گرتنهکانیانهوه پینە بکە. \n\nبەرنامەکانی تر دەتوانن دەست پێ راگەیەنن بهم زانیارییهوه کە لهگهڵ وێنه پاشهکهوتکراوهکانتدایە.</string> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <string name="remember_location_no">نا سپاس</string> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <string name="remember_location_yes">بەڵێ</string> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <string name="menu_camera">کامێرا</string> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <string name="menu_search">گهڕان</string> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <string name="tab_photos">وێنهکان</string> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <string name="tab_albums">ئەلبوم</string> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <string name="camera_menu_more_label">بەربژاردەی زیاتر</string> + <!-- settings label [CHAR LIMIT=50] --> + <string name="camera_menu_settings_label">ڕێکخستنەکان</string> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-ky-rKG/cm_strings.xml b/res/values-ky-rKG/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-ky-rKG/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-ky-rKG/codeaurora_strings.xml b/res/values-ky-rKG/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-ky-rKG/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-land/styles.xml b/res/values-land/styles.xml index 6ca7e9175..dac58a24a 100644 --- a/res/values-land/styles.xml +++ b/res/values-land/styles.xml @@ -35,7 +35,7 @@ <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_centerVertical">true</item> - <item name="android:layout_marginRight">@dimen/setting_popup_right_margin</item> + <item name="android:layout_marginEnd">@dimen/setting_popup_right_margin</item> <item name="android:visibility">gone</item> </style> <style name="PopupTitleText"> @@ -45,14 +45,14 @@ <item name="android:layout_height">wrap_content</item> <item name="android:singleLine">true</item> <item name="android:textColor">@color/popup_title_color</item> - <item name="android:layout_marginLeft">10dp</item> - <item name="android:paddingLeft">16dp</item> + <item name="android:layout_marginStart">10dp</item> + <item name="android:paddingStart">16dp</item> </style> <style name="ViewfinderLabelLayout"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">match_parent</item> - <item name="android:layout_marginLeft">13dp</item> - <item name="android:layout_marginRight">@dimen/indicator_bar_width</item> + <item name="android:layout_marginStart">13dp</item> + <item name="android:layout_marginEnd">@dimen/indicator_bar_width</item> <item name="android:layout_marginBottom">13dp</item> <item name="android:layout_marginTop">13dp</item> </style> @@ -67,8 +67,8 @@ <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_centerVertical">true</item> - <item name="android:layout_alignParentRight">true</item> - <item name="android:layout_marginRight">@dimen/setting_popup_right_margin</item> + <item name="android:layout_alignParentEnd">true</item> + <item name="android:layout_marginEnd">@dimen/setting_popup_right_margin</item> <item name="android:visibility">gone</item> </style> diff --git a/res/values-lb/cm_strings.xml b/res/values-lb/cm_strings.xml new file mode 100644 index 000000000..0bdaab5cc --- /dev/null +++ b/res/values-lb/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Opnamezäit</string> +</resources> diff --git a/res/values-lb/codeaurora_strings.xml b/res/values-lb/codeaurora_strings.xml new file mode 100644 index 000000000..9afd93777 --- /dev/null +++ b/res/values-lb/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Schrëtt</string> + <string name="step_option_desc">Vir- an Zréckspull-Schrëtter upassen</string> + <string name="setp_option_three_second">3 Sekonnen</string> + <string name="setp_option_six_second">6 Sekonnen</string> + <string name="loop">"Widderhuelen"</string> + <string name="single">"Eenzel"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Lautsprecher UN</string> + <string name="speaker_off">Lautsprecher AUS</string> + <string name="speaker_need_headset">Schléis Kopfhörer u fir dës Funktioun ze benotzen.</string> + <string name="single_track">"Eenzel Spur"</string> + <string name="input_url">"URL aginn"</string> + <string name="streaming_settings">"Streamingastellungen"</string> + <string name="next">"Weider"</string> + <string name="previous">"Zréck"</string> + <string name="buffer_size">Tëschespäicher-Gréisst</string> + <string name="apn">Preferéierten APN</string> + <string name="rtp_min_port">Min. Port</string> + <string name="rtp_max_port">Max. Port</string> + <string name="set_rtp_min_port">Min. Port festleeën</string> + <string name="set_rtp_max_port">Max. Port festleeën</string> + <string name="set_buffer_size">Tëschespäichergréisst definéieren</string> + <string name="set_apn">Preferéierten APN auswielen</string> + <string name="setting">Astellungen</string> + <string name="server_timeout_title">"Zäitiwwerschreidung beim Server"</string> + <string name="server_timeout_message">"Nees mam Server verbanne fir de Video ofzespillen?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Connectioun feelgeschloen, probéieren nees mat %1$d ze verbannen\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Gëtt ofgespillt</string> + <string name="media_controller_connecting">Connectéieren\u2026</string> + <string name="bookmark_add">"Lieszeechen dobäisetzen"</string> + <string name="bookmark_display">"Lieszeechen uweisen"</string> + <string name="bookmark_empty">"Keng Lieszeechen"</string> + <string name="bookmark_exist">"Lieszeechen existéiert schonn"</string> + <string name="bookmark_add_success">"Lieszeechen dobäigesat"</string> + <string name="bookmark_list">"Lieszeechen"</string> + <string name="bookmark_title">"Titel"</string> + <string name="bookmark_location">"Standuert"</string> + <string name="delete_all">"All läschen"</string> + <string name="default_title">"Standardtitel"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Méi Biller</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Kann net roueg schalten: Video net ënnerstëtzt</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Et ass keng Kaarten-App installéiert fir d\'Positioun unzeweisen.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bassunhiewung</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D-Effekt</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Toun-Effekter</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Schléiss Kopfhörer u fir dës Effekter.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon-Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Dëse Video ka leider net geschnidde ginn</string> + <string name="no_permission_for_drm">Pardon, DRM-geschützt Fichiere kënnen net gedeelt ginn</string> + <string name="drm_license_info">DRM-Lizenzinformatiounen</string> +</resources> diff --git a/res/values-lb/filtershow_strings.xml b/res/values-lb/filtershow_strings.xml new file mode 100644 index 000000000..c09322d1b --- /dev/null +++ b/res/values-lb/filtershow_strings.xml @@ -0,0 +1,294 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <string name="title_activity_filter_show">Fotoediteur</string> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <string name="cannot_load_image">D\'Bild kann net geluede ginn!</string> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <string name="cannot_edit_original">Original kann net geännert ginn</string> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <string name="setting_wallpaper">Als Hannergrondbild setzen</string> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <string name="download_failure">Konnt d\'Foto net eroflueden. D\'Netzwierk ass net disponibel.</string> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <string name="original">Original</string> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <string name="borders" msgid="4461692156695893616">Rumm</string> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <string name="custom_border">Personaliséiert</string> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <string name="filtershow_undo">Réckgängeg maachen</string> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <string name="filtershow_redo">Widderhuelen</string> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <string name="show_imagestate_panel">Applizéiert Effekter uweisen</string> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <string name="hide_imagestate_panel">Applizéiert Effekter verstoppen</string> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <string name="export_image">Exportéieren</string> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <string name="print_image">Drécken</string> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <string name="export_flattened">Plattgemaacht Bild exportéieren</string> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <string name="select_output_settings">Das exportéiert Bild gëtt als Kopie gespäichert, ouni Historique.</string> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <string name="quality">Qualitéit</string> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <string name="size">Gréisst</string> + <!-- Text for size x [CHAR LIMIT=1] --> + <string name="x">x</string> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <string name="menu_settings">Astellungen</string> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <string name="unsaved">Et ginn ongespäichert Ännerungen un dësem Bild.</string> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <string name="save_before_exit">Wëlls du d\'Bild virum Zoumaache späicheren?</string> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <string name="save_and_exit">Späicheren an zoumaachen</string> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <string name="save_and_processing">Bild mat voller Opléisung gëtt beaarbecht...</string> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <string name="exit">Verloossen</string> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <string name="history">Historique</string> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <string name="reset">Zrécksetzen</string> + <!-- Text for the original image[CHAR LIMIT=20]--> + <string name="history_original">@string/original</string> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <string name="imageState">Applizéiert Effekter</string> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <string name="compare_original">Vergläichen</string> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <string name="apply_effect">Applizéieren</string> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <string name="reset_effect">Zrécksetzen</string> + <!-- Label for aspect [CHAR LIMIT=15] --> + <string name="aspect">Aspekt</string> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <string name="aspect1to1_effect">1:1</string> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <string name="aspect4to3_effect">4:3</string> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <string name="aspect3to4_effect">3:4</string> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <string name="aspect4to6_effect">4:6</string> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <string name="aspect5to7_effect">5:7</string> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <string name="aspect7to5_effect">7:5</string> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <string name="aspect9to16_effect">16:9</string> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <string name="aspectNone_effect">Keen</string> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <string name="Fixed">Fixéiert</string> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <string name="tinyplanet">Klenge Planéit</string> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <string name="exposure" msgid="1229093066434614811">Beliichtung</string> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <string name="sharpness">Schäerft</string> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <string name="contrast">Kontrast</string> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <string name="vibrance">Intensitéit</string> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <string name="saturation">Sättegung</string> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <string name="bwfilter">SW-Filter</string> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <string name="wbalance">Automatesch Faarwen</string> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <string name="hue">Faarftoun</string> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <string name="shadow_recovery">Déiften</string> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <string name="highlight_recovery">Héichten</string> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <string name="curvesRGB">Kurven</string> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <string name="vignette">Vignettéierung</string> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <string name="vignette_main">Vignettéierung</string> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <string name="vignette_exposure">Beliichtung</string> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <string name="vignette_saturation">Sättegung</string> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <string name="vignette_contrast">Kontrast</string> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <string name="vignette_falloff">Luuchtoffall</string> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <string name="redeye">Rout Aen</string> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <string name="imageDraw">Zeechnen</string> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <string name="straighten" msgid="5217801513491493491">Ausriichten</string> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <string name="crop" msgid="5584000454518174632">Schneiden</string> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <string name="rotate" msgid="460017689320955494">Rotéieren</string> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <string name="mirror">Spiggelen</string> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <string name="negative">Negativ</string> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <string name="none" msgid="3601545724573307541">Keen</string> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <string name="edge">Kanten</string> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <string name="kmeans">Posteriséiert</string> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <string name="downsample">Verklengeren</string> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <string name="grad">Ofgestuft</string> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <string name="editor_grad_brightness">Hellegkeet</string> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <string name="editor_grad_contrast">Kontrast</string> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <string name="editor_grad_saturation">Sättegung</string> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_main">Haapt</string> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_red">Rout</string> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_yellow">Giel</string> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_green">Gréng</string> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_cyan">Cyan</string> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_blue">Blo</string> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_magenta">Magenta</string> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <string name="editor_grad_style">Stil</string> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <string name="editor_grad_new">nei</string> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <string name="curves_channel_rgb">RGB</string> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <string name="curves_channel_red">Rout</string> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <string name="curves_channel_green">Gréng</string> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <string name="curves_channel_blue">Blo</string> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <string name="draw_style">Stil</string> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <string name="draw_size">Gréisst</string> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <string name="draw_hue">Faarftoun</string> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <string name="draw_saturation">Sättegung</string> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <string name="draw_value">Hellegkeet</string> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <string name="draw_color">Faarf</string> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_line">Linnen</string> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_brush_spatter">Filzstëft</string> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_brush_marker">Sprëtzer</string> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <string name="draw_clear">Eidel maachen</string> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <string name="color_border_size">Randstäerkt</string> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <string name="color_border_corner_size">Eckegréisst</string> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <string name="color_border_color">Faarf</string> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <string name="color_border_clear">Eidel maachen</string> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <string name="color_pick_select">Eege Faarf auswielen</string> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <string name="color_pick_title">Faarf auswielen</string> + <!-- The title for draw size [CHAR LIMIT=50] --> + <string name="draw_size_title">Gréisst auswielen</string> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <string name="draw_size_accept">OK</string> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <string name="state_panel_original">Original</string> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <string name="state_panel_result">Resultat</string> + <!-- Label for the notification [CHAR LIMIT=50] --> + <string name="filtershow_notification_label">Bild gëtt gespäichert</string> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <string name="filtershow_notification_message">Gëtt beaarbecht...</string> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <string name="filtershow_save_preset">Aktuell Virastellung späicheren</string> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <string name="filtershow_manage_preset">Benotzervirastellungen</string> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <string name="filtershow_new_preset">Nei Virastellung</string> + <!-- Label for preset name [CHAR LIMIT=30] --> + <string name="filtershow_preset_name">Virastellungsnumm</string> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <string name="filtershow_show_info_panel">Informatioun</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_name">Bildnumm</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_size">Bildgréisst</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_histogram">Histogramm</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_exif">EXIF-Daten</string> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <string name="filtershow_add_button_looks">Virastellung</string> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_add_button_versions">Versioun</string> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_version_original">Original</string> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_version_current">Aktuell</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_model">Modell</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_aperture">Blend</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_focal_length">Brennwäit</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_iso">ISO</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_subject_distance">Distanz zum Sujet</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_date">Ophueldatum</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_f_stop">Blendenzuel</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_exposure_time">Beliichtungszäit</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_copyright">Auteursrecht</string> +</resources> diff --git a/res/values-lb/strings.xml b/res/values-lb/strings.xml new file mode 100644 index 000000000..158eaf9c5 --- /dev/null +++ b/res/values-lb/strings.xml @@ -0,0 +1,856 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_name">Galerie</string> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <string name="gadget_title">Billerrumm</string> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <string name="details_ms">%1$02d:%2$02d</string> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <string name="details_hms">%1$d:%2$02d:%3$02d</string> + <!-- Activity label. This might show up in the activity-picker --> + <string name="movie_view_label">Videoofspiller</string> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <string name="loading_video">Video gëtt gelueden\u2026</string> + <string name="loading_image">Bild gëtt gelueden\u2026</string> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <string name="loading_account">Kont gëtt gelueden\u2026</string> + <!-- Movie View Resume Playing dialog title --> + <string name="resume_playing_title">Video weiderspillen</string> + <!-- Movie View Start Playing dialog title --> + <string name="resume_playing_message">Bei %s weider ofspillen?</string> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <string name="resume_playing_resume">Weider ofspillen</string> + <!-- Displayed in the title of those albums that are being loaded --> + <string name="loading">Gëtt gelueden\u2026</string> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <string name="fail_to_load">Konnt net lueden</string> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <string name="fail_to_load_image">D\'Bild konnt net geluede ginn</string> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <string name="no_thumbnail">Kee Virschaubild</string> + <!-- Movie View Start Playing button "Beginning" --> + <string name="resume_playing_restart">Vu vir ufänken</string> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <string name="crop_save_text">OK</string> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <string name="ok">OK</string> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <string name="multiface_crop_help">E Gesiicht drécke fir unzefänken.</string> + <!-- Toast/alert that the image is being saved to the SD card --> + <string name="saving_image">Bild gëtt gespäichert\u2026</string> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <string name="filtershow_saving_image">D\'Bild gëtt an den Album <xliff:g id="album_name">%1$s</xliff:g> gespäichert\u2026</string> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <string name="save_error">Konnt dat geschniddent Bild net späicheren.</string> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <string name="crop_label">Bild schneiden</string> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <string name="trim_label">Video kierzen</string> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <string name="select_image">Foto auswielen</string> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <string name="select_video">Video auswielen</string> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <string name="select_item">Element auswielen</string> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <string name="select_album">Album auswielen</string> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <string name="select_group">Grupp auswielen</string> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <string name="set_image">Bild setzen als</string> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <string name="set_wallpaper">Hannergrondbild setzen</string> + <!-- Toast/alert after saving wallpaper --> + <string name="wallpaper">Hannergrondbild gëtt gesat\u2026</string> + <string name="camera_setas_wallpaper">Hannergrondbild</string> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <string name="delete">Läschen</string> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <string name="confirm">Bestätegen</string> + <string name="cancel">Ofbriechen</string> + <string name="share">Deelen</string> + <string name="share_panorama">Panorama deelen</string> + <string name="share_as_photo">Als Foto deelen</string> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <string name="deleted">Geläscht</string> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <string name="undo">RÉCKGÄNGEG</string> + <!-- String indicating more actions are available --> + <string name="select_all">All auswielen</string> + <string name="deselect_all">Auswiel ophiewen</string> + <string name="slideshow">Diashow</string> + <string name="details">Detailer</string> + <string name="details_title">%1$d / %2$d Elementer:</string> + <string name="close">Zoumaachen</string> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <string name="switch_to_camera">Op d\'Kamera wiesselen</string> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <string name="show_on_map">Op der Kaart uweisen</string> + <string name="rotate_left">Lénks rotéieren</string> + <string name="rotate_right">Riets rotéieren</string> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <string name="no_such_item">Konnt d\'Element net fannen.</string> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <string name="edit">Beaarbechten</string> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <string name="simple_edit">Einfach Beaarbechtung</string> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <string name="process_caching_requests">Tëschespäicherungsufroe gi veraarbecht</string> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <string name="caching_label">Tëschespäicherung leeft\u2026</string> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <string name="crop_action">Schneiden</string> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <string name="trim_action">Trimmen</string> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <string name="mute_action">Roueg</string> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <string name="set_as">Setzen als</string> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <string name="video_mute_err">Kann de Video net roueg schalten.</string> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <string name="video_err">Video kann net ofgespillt ginn.</string> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <string name="group_by_location">No Plaz</string> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <string name="group_by_time">No Zäit</string> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <string name="group_by_tags">No Etiketten</string> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <string name="group_by_faces">No Leit</string> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <string name="group_by_album">No Album</string> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <string name="group_by_size">No Gréisst</string> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <string name="untagged">Ouni Etikett</string> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <string name="no_location">Keng Plaz</string> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <string name="no_faces">Keng Gesiichter</string> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <string name="no_connectivity">E puer Plaze konnte wéinst Netzwierkproblemer net identifizéiert ginn.</string> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <string name="sync_album_error">Konnt d\'Fotoen aus dësem Album net eroflueden. Probéier méi spéit nees.</string> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <string name="show_images_only">Just Biller</string> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <string name="show_videos_only">Just Videoen</string> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <string name="show_all">Biller a Videoen</string> + <!-- Title of the StackView AppWidget --> + <string name="appwidget_title">Fotogalerie</string> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <string name="appwidget_empty_text">Keng Fotoen.</string> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <string name="crop_saved">Geschniddent Bild gespäichert ënner <xliff:g id="folder_name">%s</xliff:g>.</string> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <string name="no_albums_alert">Keng Alben disponibel.</string> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <string name="empty_album">O Biller/Videoen disponibel.</string> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <string name="picasa_posts">Posts</string> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <string name="make_available_offline">Offline disponibel maachen</string> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <string name="sync_picasa_albums">Opfrëschen</string> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <string name="done">Fäerdeg</string> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <string name="sequence_in_set">%1$d / %2$d Elementer:</string> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <string name="title">Titel</string> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <string name="description">Beschreiwung</string> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <string name="time">Zäit</string> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <string name="location">Standuert</string> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <string name="path">Pad</string> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <string name="width">Breet</string> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <string name="height">Héicht</string> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <string name="orientation">Orientéierung</string> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <string name="duration">Dauer</string> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <string name="mimetype">MIME-Typ</string> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <string name="file_size">Fichiersgréisst</string> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <string name="maker">Hiersteller</string> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <string name="model">Modell</string> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <string name="flash">Blëtz</string> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <string name="aperture">Blend</string> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <string name="focal_length">Brennwäit</string> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <string name="white_balance">Wäissofgläich</string> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <string name="exposure_time">Beliichtungszäit</string> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <string name="iso">ISO</string> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <string name="unit_mm">mm</string> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <string name="manual">Manuell</string> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <string name="auto">Automatesch</string> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <string name="flash_on">Blëtz ausgeléist</string> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <string name="flash_off">Kee Blëtz</string> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <string name="unknown">Onbekannt</string> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <string name="ffx_original">Original</string> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <string name="ffx_vintage">Almoudesch</string> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <string name="ffx_instant">Direktbild</string> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <string name="ffx_bleach">Verbleecht</string> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <string name="ffx_blue_crush">Blo</string> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <string name="ffx_bw_contrast">S/W</string> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <string name="ffx_punch">Punch</string> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <string name="ffx_x_process">X Process</string> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <string name="ffx_washout">Latte</string> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <string name="ffx_washout_color">Litho</string> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <string name="try_to_set_local_album_available_offline">Dëst Element ass lokal gespäichert an och offiline disponibel.</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <string name="set_label_all_albums">All d\'Alben</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <string name="set_label_local_albums">Lokal Alben</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <string name="set_label_mtp_devices">MTP-Apparater</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <string name="set_label_picasa_albums">Picasa-Alben</string> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <string name="free_space_format"><xliff:g id="bytes">%s</xliff:g> fräi</string> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <string name="size_below"><xliff:g id="size">%1$s</xliff:g> oder drënner</string> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <string name="size_above"><xliff:g id="size">%1$s</xliff:g> oder driwwer</string> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <string name="size_between"><xliff:g id="min_size">%1$s</xliff:g> bis <xliff:g id="max_size">%2$s</xliff:g></string> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <string name="Import">Importéieren</string> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <string name="import_complete">Import ofgeschloss</string> + <string name="import_fail">Import feelgeschloen</string> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <string name="camera_connected">Kamera connectéiert.</string> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <string name="camera_disconnected">Kamera deconnectéiert.</string> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <string name="click_import">Hei drécke fir z\'importéieren</string> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <string name="widget_type_album">En Album auswielen</string> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <string name="widget_type_shuffle">All d\'Biller mëschen</string> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <string name="widget_type_photo">E Bild auswielen</string> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <string name="widget_type">Biller auswielen</string> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <string name="slideshow_dream_name">Diashow</string> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <string name="albums">Alben</string> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <string name="times">Zäiten</string> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <string name="locations">Plazen</string> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <string name="people">Leit</string> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <string name="tags">Etiketten</string> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <string name="group_by">Gruppéieren no</string> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <string name="settings">Astellungen</string> + <!-- The title of menu item where user can add a new account --> + <string name="add_account">Kont dobäisetzen</string> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <string name="folder_camera">Fotoapparat</string> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <string name="folder_download">Erofgelueden</string> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <string name="folder_edited_online_photos">Beaarbecht Online-Fotoen</string> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <string name="folder_imported">Importéiert</string> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <string name="folder_screenshot">Schiermfoto</string> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <string name="help">Hëllef</string> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <string name="no_external_storage_title">Kee Späicher</string> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <string name="no_external_storage">Keen externe Späicher disponibel</string> + <!-- Label for album filmstrip button --> + <string name="switch_photo_filmstrip">Als Filmsträif uweisen</string> + <!-- Label for album grid button --> + <string name="switch_photo_grid">Gitterusiicht</string> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <string name="switch_photo_fullscreen">Vollschierm-Usiicht</string> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <string name="trimming">Gëtt geschnidden</string> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <string name="muting">Toun gëtt ausgeschalt</string> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <string name="please_wait">W.e.g. waarden</string> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <string name="save_into">De Video gëtt an den Album <xliff:g id="album_name">%1$s</xliff:g> gespäichert\u2026</string> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <string name="trim_too_short">Kann net kierzen: den Zilvideo ass ze kuerz</string> + <!-- Text to show with progress bar while stitching in Gallery --> + <string name="pano_progress_text">Panorama gëtt gerendert</string> + <!-- The label on the button that will save an edited image --> + <string name="save" msgid="8140440041190264400">Späicheren</string> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <string name="ingest_scanning" msgid="2048262851775139720">Inhalt gëtt gescannt...</string> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <string name="ingest_sorting" msgid="624687230903648118">Gëtt zortéiert...</string> + <!-- Status message shown when scanning the content from the camera has completed --> + <string name="ingest_scanning_done">Scannen ofgeschloss</string> + <!-- Status message shown when content from an external camera is being imported --> + <string name="ingest_importing">Gëtt importéiert...</string> + <!-- Status message shown when there is no content available to be imported --> + <string name="ingest_empty_device">Et ass keen Inhalt op dësem Apparat disponibel deen importéiert ka ginn.</string> + <!-- Status message shown when there is no MTP device connected --> + <string name="ingest_no_device">Et si keng MTP-Apparater connectéiert</string> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <string name="camera_error_title">Kamerafeeler</string> + <!-- message for the dialog showing the error of camera hardware --> + <string name="cannot_connect_camera">Keng Connectioun zur Kamera méiglech.</string> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <string name="camera_disabled">D\'Kamera gouf wéinst Sécherheetsriichtlinnen desaktivéiert.</string> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <string name="camera_label">Fotoapparat</string> + <!-- alert to the user to wait for some operation to complete --> + <string name="wait">Waart w.e.g.\u2026</string> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <string name="no_storage" product="nosdcard">Bann den USB-Späicher an ier s de d\'Kamera benotz.</string> + <!-- alert to the user that an SD card must be installed before using the camera --> + <string name="no_storage" product="default">Maach eng SD-Kaart dran ier s du d\'Kamera benotzt.</string> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <string name="preparing_sd" product="nosdcard">USB-Späicher gëtt preparéiert\u2026</string> + <!-- alert to the user that the SD card is being disk-checked --> + <string name="preparing_sd" product="default">SD-Kaart gëtt preparéiert\u2026</string> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <string name="access_sd_fail" product="nosdcard">Keen Zougrëff op den USB-Späicher méiglech.</string> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <string name="access_sd_fail" product="default">Keen Zougrëff op d\'SD-Kaart méiglech.</string> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <string name="review_cancel">OFBRIECHEN</string> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <string name="review_ok">FÄERDEG</string> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <string name="time_lapse_title">Zäitrafferopnam</string> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <string name="pref_camera_id_title">Kamera wielen</string> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <string name="pref_camera_id_entry_back">Hannen</string> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <string name="pref_camera_id_entry_front">Vir</string> + <!-- Settings screen, setting title text --> + <string name="pref_camera_recordlocation_title">Plaz späicheren</string> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <string name="pref_camera_location_label">PLAZ</string> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <string name="pref_camera_timer_title">Countdown-Timer</string> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <string name="pref_camera_timer_sound_default">@string/setting_on_value</string> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <string name="pref_camera_timer_sound_title">Piipse während dem Countdown</string> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <string name="setting_off">Aus</string> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <string name="setting_on">Un</string> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <string name="pref_video_quality_title">Videoqualitéit</string> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <string name="pref_video_quality_entry_high">Héich</string> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <string name="pref_video_quality_entry_low">Niddreg</string> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <string name="pref_video_time_lapse_frame_interval_title">Zäitraffer</string> + <!-- Settings screen, Camera setting category title --> + <string name="pref_camera_settings_category">Kameraastellungen</string> + <!-- Settings screen, Camcorder setting category title --> + <string name="pref_camcorder_settings_category">Kameraastellungen</string> + <!-- Settings screen, Picture size title --> + <string name="pref_camera_picturesize_title">Fotogréisst</string> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_13mp">13M Pixelen</string> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_8mp">8M Pixelen</string> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_5mp">5M Pixelen</string> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_4mp">4M Pixelen</string> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_3mp">3M Pixelen</string> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_2mp">2M Pixelen</string> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_2mp_wide">2M Pixelen (16:9)</string> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_1_3mp">1,3M Pixelen</string> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_1mp">1M Pixelen</string> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_vga">VGA</string> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_qvga">QVGA</string> + <!-- Settings screen, Focus mode title --> + <string name="pref_camera_focusmode_title">Fokusmodus</string> + <!-- Settings screen, Focus mode dialog radio button choices --> + <string name="pref_camera_focusmode_entry_auto">Automatesch</string> + <string name="pref_camera_focusmode_entry_infinity">Onendlech</string> + <string name="pref_camera_focusmode_entry_macro">Makro</string> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_focusmode_label_auto">AUTO</string> + <string name="pref_camera_focusmode_label_infinity">ONENDLECH</string> + <string name="pref_camera_focusmode_label_macro">MAKRO</string> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <string name="pref_camera_flashmode_title">Blëtzmodus</string> + <!-- flash label [CHAR LIMIT=50] --> + <string name="pref_camera_flashmode_label">BLËTZMODUS</string> + <!-- Settings screen, Flash mode dialog radio button choices --> + <string name="pref_camera_flashmode_entry_auto">Automatesch</string> + <string name="pref_camera_flashmode_entry_on">Un</string> + <string name="pref_camera_flashmode_entry_off">Aus</string> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_flashmode_label_auto">BLËTZ AUTO</string> + <string name="pref_camera_flashmode_label_on">BLËTZ UN</string> + <string name="pref_camera_flashmode_label_off">BLËTZ AUS</string> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <string name="pref_camera_whitebalance_title">Wäissofgläich</string> + <!-- Menu, white balance label --> + <string name="pref_camera_whitebalance_label">WÄISSOFGLÄICH</string> + <!-- Settings screen, White balance dialog radio button choices --> + <string name="pref_camera_whitebalance_entry_auto">Automatesch</string> + <string name="pref_camera_whitebalance_entry_incandescent">Glousluucht</string> + <string name="pref_camera_whitebalance_entry_daylight">Dagesliicht</string> + <string name="pref_camera_whitebalance_entry_fluorescent">Fluoreszent</string> + <string name="pref_camera_whitebalance_entry_cloudy">Wollekeg</string> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <string name="pref_camera_whitebalance_label_auto">AUTO</string> + <string name="pref_camera_whitebalance_label_incandescent">GLOUSLUUCHT</string> + <string name="pref_camera_whitebalance_label_daylight">DAGESLIICHT</string> + <string name="pref_camera_whitebalance_label_fluorescent">FLUORESZENT</string> + <string name="pref_camera_whitebalance_label_cloudy">WOLLEKEG</string> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <string name="pref_camera_scenemode_title">Zeenemodus</string> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_auto">Automatesch</string> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_hdr">HDR</string> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_action">Aktioun</string> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_night">Nuecht</string> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_sunset">Sonnenënnergank</string> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_party">Party</string> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_auto">KEEN</string> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_action">AKTIOUN</string> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_night">NUECHT</string> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_sunset">SONNENËNNERGANK</string> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_party">PARTY</string> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label">SANDAUER</string> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_off">TIMER AUS</string> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_one">1 SEKONN</string> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_three">3 SEKONNEN</string> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_ten">10 SEKONNEN</string> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_fifteen">15 SEKONNEN</string> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <string name="not_selectable_in_scene_mode">Dës Astellung kann am Zeenemodus net ausgewielt ginn.</string> + <!-- Exposure settings in preference --> + <string name="pref_exposure_title">Beliichtung</string> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <string name="pref_exposure_label">BELIICHTUNG</string> + <!-- Default HDR entry value --> + <string name="pref_camera_hdr_default">@string/setting_off_value</string> + <!-- HDR label ON [CHAR LIMIT=60] --> + <string name="pref_camera_hdr_label">HDR</string> + <!-- switch camera label back [CHAR LIMIT=60] --> + <string name="pref_camera_id_label_back">VIISCHT KAMERA</string> + <!-- switch camera label front [CHAR LIMIT=60] --> + <string name="pref_camera_id_label_front">HËNNESCHT KAMERA</string> + <!-- Dialog "OK" button. Dismisses dialog. --> + <string name="dialog_ok">OK</string> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <string name="spaceIsLow_content" product="nosdcard">Däin USB-Späicher huet geschwë keng Plaz méi. Änner d\'Qualitéitsastellungen oder läsch e puer Fotoen oder aner Fichieren.</string> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <string name="spaceIsLow_content" product="default">Deng SD-Kaart huet geschwë keng Plaz méi. Änner d\'Qualitéitsastellungen oder läsch e puer Fotoen oder Fichieren.</string> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <string name="video_reach_size_limit">Gréisstelimitt ass erreecht.</string> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <string name="pano_too_fast_prompt">Ze séier</string> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <string name="pano_dialog_prepare_preview">Panorama gëtt preparéiert</string> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <string name="pano_dialog_panorama_failed">De Panorama konnt net gespäichert ginn.</string> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <string name="pano_dialog_title">Panorama</string> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <string name="pano_capture_indication">Panorama gëtt opgeholl</string> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <string name="pano_dialog_waiting_previous">Waarden op dee Panorama virdrun</string> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <string name="pano_review_saving_indication_str">Gëtt gespäichert\u2026</string> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <string name="pano_review_rendering">Panorama gëtt gerendert</string> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <string name="tap_to_focus">Drécke fir schaarf ze stellen.</string> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <string name="pref_video_effect_title">Effekter</string> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <string name="effect_none">Keen</string> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_squeeze">Quëtschen</string> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_eyes">Grouss Aen</string> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_mouth">Grousse Mond</string> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_small_mouth">Klenge Mond</string> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_nose">Grouss Nues</string> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_small_eyes">Kleng Aen</string> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <string name="effect_backdropper_space">Am Weltraum</string> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <string name="effect_backdropper_sunset">Sonnenënnergank</string> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <string name="effect_backdropper_gallery">Däi Video</string> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <string name="bg_replacement_message">Lee däin Apparat of.\nTriet e Moment aus dem Siichtberäich.</string> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <string name="video_snapshot_hint">Drécke fir Fotoen ze maache während s du films.</string> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <string name="video_recording_started">Videoopnam gouf gestart.</string> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <string name="video_recording_stopped">Videoopnam gouf opgehalen.</string> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <string name="disable_video_snapshot_hint">Video-Schnappschoss ass bei Spezialeffekter desaktivéiert.</string> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <string name="clear_effects">Effekter ewechhuelen</string> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <string name="effect_silly_faces">LËSCHTEG GESIICHTER</string> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <string name="effect_background">HANNERGROND</string> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <string name="accessibility_shutter_button">Ausléisknäppchen</string> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <string name="accessibility_menu_button">Menü-Knäppchen</string> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <string name="accessibility_review_thumbnail">Rezentst Foto</string> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <string name="accessibility_camera_picker">Tëscht de Kamerae vir an hanne wiesselen</string> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <string name="accessibility_mode_picker">Auswiel fir Fotoapparat, Video oder Panorama</string> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <string name="accessibility_second_level_indicators">Weider Astellungen</string> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <string name="accessibility_back_to_first_level">Astellungen zoumaachen</string> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <string name="accessibility_zoom_control">Zoomsteierung</string> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <string name="accessibility_decrement">%1$s erofsetzen</string> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <string name="accessibility_increment">%1$s eropsetzen</string> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <string name="accessibility_check_box">%1$s Ukräizfeld</string> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_camera">Op de Foto-Modus wiesselen</string> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_video">Op de Video-Modus wiesselen</string> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_panorama">Op de Panorama-Modus wiesselen</string> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_new_panorama">Bei den neie Panorama wiesselen</string> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_refocus">Bei d\'Auswiel vun engem neie Fokus wiesselen</string> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <string name="accessibility_review_cancel">Iwwerpréiwung ofbriechen</string> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <string name="accessibility_review_ok">Iwwerpréiwung ofgeschloss</string> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <string name="accessibility_review_retake">Iwwerpréiwung - Nei Ophuelen</string> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_play_video">Video ofspillen</string> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_pause_video">Video pauséieren</string> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_reload_video">Video nei lueden</string> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <string name="accessibility_time_bar">Zäitlinn vum Videoofspiller</string> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <string name="capital_on">UN</string> + <!-- Default text for a button that can be toggled on and off. --> + <string name="capital_off">AUS</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_off">Aus</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_500">0,5 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1000">1 Sekonn</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1500">1,5 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_2000">2 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_2500">2,5 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_3000">3 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_4000">4 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_5000">5 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_6000">6 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_10000">10 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_12000">12 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_15000">15 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_24000">24 Sekonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_30000">0,5 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_60000">1 Minutt</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_90000">1,5 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_120000">2 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_150000">2,5 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_180000">3 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_240000">4 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_300000">5 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_360000">6 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_600000">10 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_720000">12 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_900000">15 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1440000">24 Minutten</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1800000">0,5 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_3600000">1 Stonn</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_5400000">1,5 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_7200000">2 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_9000000">2,5 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_10800000">3 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_14400000">4 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_18000000">5 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_21600000">6 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_36000000">10 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_43200000">12 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_54000000">15 Stonnen</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_86400000">24 Stonnen</string> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_seconds">Sekonnen</string> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_minutes">Minutten</string> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_hours">Stonnen</string> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <string name="time_lapse_interval_set">Fäerdeg</string> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <string name="set_time_interval">Zäitintervall setzen</string> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <string name="set_time_interval_help">Zäitrafferfunktioun ass aus. Maach s\'u fir den Zäitintervall ze setzen.</string> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <string name="set_timer_help">D\'Sandauer ass aus. Schalt s\'u fir erofzezielen ier eng Foto gemaach gëtt.</string> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <string name="set_duration">Dauer a Sekonne festleeën</string> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <string name="count_down_title_text">Countdown fir eng Foto ze schéissen</string> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <string name="remember_location_title">De Fotostanduert späicheren?</string> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <string name="remember_location_prompt">Fotoen a Videoe mam Standuert späichere wou s\'opgeholl gi sinn.\n\nAner Appe kënnen zesumme mat de gespäicherte Biller op dës Informatioun zougräifen.</string> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <string name="remember_location_no">Nee Merci</string> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <string name="remember_location_yes">Jo</string> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <string name="menu_camera">Fotoapparat</string> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <string name="menu_search">Sichen</string> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <string name="tab_photos">Fotoen</string> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <string name="tab_albums">Alben</string> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <string name="camera_menu_more_label">MÉI OPTIOUNEN</string> + <!-- settings label [CHAR LIMIT=50] --> + <string name="camera_menu_settings_label">ASTELLUNGEN</string> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> + <string name="can_not_trim">Just MP4 an 3GP-Fichiere kënne geschnidde ginn</string> + <string name="text_makeup_whiten">Wäiss maachen</string> + <string name="text_makeup_Soften">Mëll maachen</string> + <string name="text_makeup_trimface">Gesiicht schneiden</string> + <string name="text_makeup_bigeye">Déck Aen</string> +</resources> diff --git a/res/values-lo-rLA/cm_strings.xml b/res/values-lo-rLA/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-lo-rLA/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-lo-rLA/codeaurora_strings.xml b/res/values-lo-rLA/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-lo-rLA/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-lt/cm_strings.xml b/res/values-lt/cm_strings.xml new file mode 100644 index 000000000..1a496108a --- /dev/null +++ b/res/values-lt/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Įrašo laikas</string> +</resources> diff --git a/res/values-lt/codeaurora_strings.xml b/res/values-lt/codeaurora_strings.xml new file mode 100644 index 000000000..f536543f0 --- /dev/null +++ b/res/values-lt/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Žingsnis</string> + <string name="step_option_desc">Tinkinti greito prasukimo / atsukimo žingsnį</string> + <string name="setp_option_three_second">3 sek.</string> + <string name="setp_option_six_second">6 sek.</string> + <string name="loop">"Ciklas"</string> + <string name="single">"Vientisas"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Garsiakalbis ĮJUNGTAS</string> + <string name="speaker_off">Garsiakalbis IŠJUNGTAS</string> + <string name="speaker_need_headset">Prijunkite ausines, kad naudotumėtes šia funkcija.</string> + <string name="single_track">"Vienas takelis"</string> + <string name="input_url">"Įveskite URL"</string> + <string name="streaming_settings">"Srautinių transliacijų nustatymai"</string> + <string name="next">"Kitas"</string> + <string name="previous">"Ankstesnis"</string> + <string name="buffer_size">Buferio dydis</string> + <string name="apn">Pageidaujamas APN</string> + <string name="rtp_min_port">Mažiausias prievadas</string> + <string name="rtp_max_port">Didžiausias prievadas</string> + <string name="set_rtp_min_port">Nustatyti mažiausią prievadą</string> + <string name="set_rtp_max_port">Nustatyti didžiausią prievadą</string> + <string name="set_buffer_size">Nustatyti buferio dydį</string> + <string name="set_apn">Pasirinkti pageidaujamą APN</string> + <string name="setting">Nustatymai</string> + <string name="server_timeout_title">"Serverio skirtasis laikas"</string> + <string name="server_timeout_message">"Prisijungti prie serverio, kad paleisti vaizdo įrašą?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Prisijungimas nepavyko, bandoma prisijungti prie %1$d\u2026"</string> + <string name="media_controller_live">Tiesiogiai</string> + <string name="media_controller_playing">Leidžiama</string> + <string name="media_controller_connecting">Jungiamasi\u2026</string> + <string name="bookmark_add">"Pridėti žymę"</string> + <string name="bookmark_display">"Rodyti žymes"</string> + <string name="bookmark_empty">"Žymių nėra"</string> + <string name="bookmark_exist">"Žymė jau egzistuoja"</string> + <string name="bookmark_add_success">"Žymė pridėta"</string> + <string name="bookmark_list">"Žymės"</string> + <string name="bookmark_title">"Pavadinimas"</string> + <string name="bookmark_location">"Vietovė"</string> + <string name="delete_all">"Ištrinti visas"</string> + <string name="default_title">"Numatytasis pavadinimas"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Daugiau vaizdų</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Negalima nutildyti: vaizdo įrašas nepalaikomas</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Nėra įdiegtos žemėlapių programos tam, kad parodyti vietovę.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Žemų tonų išryškinimas</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D efektas</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Garso efektai</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Prijunkite ausines dėl šių efektų.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Atsiprašome, šis vaizdo įrašas negali būti apkarpytas</string> + <string name="no_permission_for_drm">Atsiprašome, DRM apsaugoti failai negali būti dalijamiesi</string> + <string name="drm_license_info">DRM licencijos informacija</string> +</resources> diff --git a/res/values-lv/cm_strings.xml b/res/values-lv/cm_strings.xml new file mode 100644 index 000000000..77fb9656d --- /dev/null +++ b/res/values-lv/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Ieraksta laiks</string> +</resources> diff --git a/res/values-lv/codeaurora_strings.xml b/res/values-lv/codeaurora_strings.xml new file mode 100644 index 000000000..80fe61b8a --- /dev/null +++ b/res/values-lv/codeaurora_strings.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Solis</string> + <string name="step_option_desc">Pielāgot ātro pārtīšanu turp/atpakaļ</string> + <string name="setp_option_three_second">3 sekundes</string> + <string name="setp_option_six_second">6 sekundes</string> + <string name="loop">"Cilpa"</string> + <string name="single">"Viens"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Skaļrunis ieslēgts</string> + <string name="speaker_off">Skaļrunis izslēgts</string> + <string name="speaker_need_headset">Lai lietotu šo iespēju, pievienojiet austiņas.</string> + <string name="single_track">"Viens kanāls"</string> + <string name="input_url">"Ievadiet URL"</string> + <string name="streaming_settings">"Straumēšanas iestatījumi"</string> + <string name="next">"Nākamais"</string> + <string name="previous">"Iepriekšējais"</string> + <string name="buffer_size">Bufera lielums</string> + <string name="apn">Vēlamais APN</string> + <string name="rtp_min_port">Min. ports</string> + <string name="rtp_max_port">Maks. ports</string> + <string name="set_rtp_min_port">Iestatīt min. portu</string> + <string name="set_rtp_max_port">Iestatīt maks. portu</string> + <string name="set_buffer_size">Iestatīt bufera lielumu</string> + <string name="set_apn">Izvēlieties vēlamo APN</string> + <string name="setting">Iestatījumi</string> + <string name="server_timeout_title">"Servera noildze"</string> + <string name="server_timeout_message">"Pārsavienoties ar serveri, lai atskaņotu video?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Savienojus neizdevās, mēģinot pieslēgties %1$d\u2026"</string> + <string name="media_controller_live">Dzīvajā</string> + <string name="media_controller_playing">Spēlē</string> + <string name="media_controller_connecting">Savienojas\u2026</string> + <string name="bookmark_add">"Pievienot grāmatzīmi"</string> + <string name="bookmark_display">"Rādīt grāmatzīmes"</string> + <string name="bookmark_empty">"Nav grāmatzīmju"</string> + <string name="bookmark_exist">"Grāmatzīme jau pastāv"</string> + <string name="bookmark_add_success">"Grāmatzīme pievienota"</string> + <string name="bookmark_list">"Grāmatzīmes"</string> + <string name="bookmark_title">"Virsraksts"</string> + <string name="bookmark_location">"Atrašanās vieta"</string> + <string name="delete_all">"Dzēst visu"</string> + <string name="default_title">"Noklusētais virsraksts"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Vairāk attēlu</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Nevar atslēgt skaņu: video nav atbalstīts</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Atrašanās vietu nevar parādīt, jo nav uzstādīta kartes lietotne.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Basu pastiprināšana</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D efekts</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Audio efekti</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Šo efekte lietošanai jāpievieno austiņas.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Atvainojiet, šo video failu nevar apgriezt</string> +</resources> diff --git a/res/values-mk-rMK/cm_strings.xml b/res/values-mk-rMK/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-mk-rMK/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-mk-rMK/codeaurora_strings.xml b/res/values-mk-rMK/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-mk-rMK/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-ml-rIN/cm_strings.xml b/res/values-ml-rIN/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-ml-rIN/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-ml-rIN/codeaurora_strings.xml b/res/values-ml-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-ml-rIN/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-mn-rMN/cm_strings.xml b/res/values-mn-rMN/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-mn-rMN/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-mn-rMN/codeaurora_strings.xml b/res/values-mn-rMN/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-mn-rMN/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-mr-rIN/cm_strings.xml b/res/values-mr-rIN/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-mr-rIN/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-mr-rIN/codeaurora_strings.xml b/res/values-mr-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-mr-rIN/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-ms-rMY/cm_strings.xml b/res/values-ms-rMY/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-ms-rMY/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-ms-rMY/codeaurora_strings.xml b/res/values-ms-rMY/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-ms-rMY/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-my-rMM/cm_strings.xml b/res/values-my-rMM/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-my-rMM/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-my-rMM/codeaurora_strings.xml b/res/values-my-rMM/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-my-rMM/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-nb/cm_strings.xml b/res/values-nb/cm_strings.xml new file mode 100644 index 000000000..53c51454a --- /dev/null +++ b/res/values-nb/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Opptakstid</string> +</resources> diff --git a/res/values-nb/codeaurora_strings.xml b/res/values-nb/codeaurora_strings.xml new file mode 100644 index 000000000..eb9d70374 --- /dev/null +++ b/res/values-nb/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Steg</string> + <string name="step_option_desc">TIlpassing av spoling frem/tilbake</string> + <string name="setp_option_three_second">3 sekunder</string> + <string name="setp_option_six_second">6 sekunder</string> + <string name="loop">"Sløyfe"</string> + <string name="single">"Enkel"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Høytaler PÅ</string> + <string name="speaker_off">Høytaler AV</string> + <string name="speaker_need_headset">Plugg i hodetelefoner for å bruke denne funksjonen.</string> + <string name="single_track">"Enkelt spor"</string> + <string name="input_url">"Angi URL-adressen"</string> + <string name="streaming_settings">"Streaming innstillinger"</string> + <string name="next">"Neste"</string> + <string name="previous">"Forrige"</string> + <string name="buffer_size">Buffer Størrelse</string> + <string name="apn">Foretrukket APN</string> + <string name="rtp_min_port">Min port</string> + <string name="rtp_max_port">Max port</string> + <string name="set_rtp_min_port">Angi min port</string> + <string name="set_rtp_max_port">Angi maks port</string> + <string name="set_buffer_size">Angi størrelse på hurtigbuffer</string> + <string name="set_apn">Velg foretrukket APN</string> + <string name="setting">Innstillinger</string> + <string name="server_timeout_title">"Tidsavbrudd for serveren"</string> + <string name="server_timeout_message">"Koble til serveren på nytt for å spille av videoen?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Tilkoblingen mislyktes, prøver å koble til %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Spiller</string> + <string name="media_controller_connecting">Kobler til\u2026</string> + <string name="bookmark_add">"Legg til bokmerke"</string> + <string name="bookmark_display">"Vis bokmerker"</string> + <string name="bookmark_empty">"Ingen bokmerker"</string> + <string name="bookmark_exist">"Bokmerket finnes allerede"</string> + <string name="bookmark_add_success">"Bokmerke lagt til"</string> + <string name="bookmark_list">"Bokmerker"</string> + <string name="bookmark_title">"Tittel"</string> + <string name="bookmark_location">"Posisjon"</string> + <string name="delete_all">"Slett alle"</string> + <string name="default_title">"Standardtittel"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Flere bilder</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Kan ikke slå av lyd: videoen støttes ikke</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Det er ingen kart app installert for å vise plasseringen.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bassforsterkning</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D effekt</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Lydeffekter</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Plugg inn hodetelefoner for effekter.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio +</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Beklager, denne videofilen kan ikke trimmes</string> + <string name="no_permission_for_drm">Beklager, DRM-beskyttede filer ikke kan deles</string> + <string name="drm_license_info">DRM lisensinfo</string> +</resources> diff --git a/res/values-ne-rNP/cm_strings.xml b/res/values-ne-rNP/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-ne-rNP/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-ne-rNP/codeaurora_strings.xml b/res/values-ne-rNP/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-ne-rNP/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-nl/cm_strings.xml b/res/values-nl/cm_strings.xml new file mode 100644 index 000000000..b5ae58c6a --- /dev/null +++ b/res/values-nl/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Tijd van opname</string> +</resources> diff --git a/res/values-nl/codeaurora_strings.xml b/res/values-nl/codeaurora_strings.xml new file mode 100644 index 000000000..b8fb83784 --- /dev/null +++ b/res/values-nl/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Stap</string> + <string name="step_option_desc">Stapgrootte vooruitspoelen/terugspoelen aanpassen</string> + <string name="setp_option_three_second">3 seconden</string> + <string name="setp_option_six_second">6 seconden</string> + <string name="loop">"Herhalen"</string> + <string name="single">"Enkel"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Luidspreker AAN</string> + <string name="speaker_off">Luidspreker UIT</string> + <string name="speaker_need_headset">Sluit een koptelefoon aan om deze functie te gebruiken.</string> + <string name="single_track">"Enkel nummer"</string> + <string name="input_url">"URL invoeren"</string> + <string name="streaming_settings">"Instellingen voor streaming"</string> + <string name="next">"Volgende"</string> + <string name="previous">"Vorige"</string> + <string name="buffer_size">Buffergrootte</string> + <string name="apn">Voorkeurs-APN</string> + <string name="rtp_min_port">Min. poort</string> + <string name="rtp_max_port">Max. poort</string> + <string name="set_rtp_min_port">Minimale poort instellen</string> + <string name="set_rtp_max_port">Maximale poort instellen</string> + <string name="set_buffer_size">Buffergrootte instellen</string> + <string name="set_apn">Voorkeurs-APN selecteren</string> + <string name="setting">Instellingen</string> + <string name="server_timeout_title">"Time-out van de server"</string> + <string name="server_timeout_message">"Opnieuw verbinding maken met de server om de video af te spelen?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Verbinding mislukt, probeert opnieuw verbinding te maken met %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Afspelen</string> + <string name="media_controller_connecting">Verbinding maken\u2026</string> + <string name="bookmark_add">"Favoriet toevoegen"</string> + <string name="bookmark_display">"Favorieten weergeven"</string> + <string name="bookmark_empty">"Geen favorieten"</string> + <string name="bookmark_exist">"Favoriet bestaat al"</string> + <string name="bookmark_add_success">"Favoriet toegevoegd"</string> + <string name="bookmark_list">"Favorieten"</string> + <string name="bookmark_title">"Titel"</string> + <string name="bookmark_location">"Locatie"</string> + <string name="delete_all">"Alles verwijderen"</string> + <string name="default_title">"Standaardtitel"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Meer afbeeldingen</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Kan geluid niet dempen: video niet ondersteund</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Er is geen kaartenapp geïnstalleerd om de locatie weer te geven.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Basversterker</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D-effect</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Geluidseffecten</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Sluit een koptelefoon aan voor deze effecten.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Kan deze video niet bijsnijden</string> + <string name="no_permission_for_drm">Sorry, DRM-beschermde bestanden kunnen niet worden gedeeld</string> + <string name="drm_license_info">DRM licentie-informatie</string> +</resources> diff --git a/res/values-oc-rFR/cm_strings.xml b/res/values-oc-rFR/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-oc-rFR/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-oc-rFR/codeaurora_strings.xml b/res/values-oc-rFR/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-oc-rFR/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-oc-rFR/filtershow_strings.xml b/res/values-oc-rFR/filtershow_strings.xml new file mode 100644 index 000000000..ddd9262fb --- /dev/null +++ b/res/values-oc-rFR/filtershow_strings.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <!-- Text for size x [CHAR LIMIT=1] --> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <!-- Label for aspect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <!-- The title for draw size [CHAR LIMIT=50] --> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <!-- Label for the notification [CHAR LIMIT=50] --> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <!-- Label for preset name [CHAR LIMIT=30] --> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> +</resources> diff --git a/res/values-oc-rFR/strings.xml b/res/values-oc-rFR/strings.xml new file mode 100644 index 000000000..80a686614 --- /dev/null +++ b/res/values-oc-rFR/strings.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <!-- Movie View Resume Playing dialog title --> + <!-- Movie View Start Playing dialog title --> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <!-- Displayed in the title of those albums that are being loaded --> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <!-- Movie View Start Playing button "Beginning" --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <!-- Toast/alert that the image is being saved to the SD card --> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <!-- Toast/alert after saving wallpaper --> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <!-- String indicating more actions are available --> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <!-- Title of the StackView AppWidget --> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <!-- The title of menu item where user can add a new account --> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <!-- Label for album filmstrip button --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <!-- Text to show with progress bar while stitching in Gallery --> + <!-- The label on the button that will save an edited image --> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <!-- Status message shown when scanning the content from the camera has completed --> + <!-- Status message shown when content from an external camera is being imported --> + <!-- Status message shown when there is no content available to be imported --> + <!-- Status message shown when there is no MTP device connected --> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the error of camera hardware --> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <!-- alert to the user to wait for some operation to complete --> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <!-- alert to the user that an SD card must be installed before using the camera --> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <!-- alert to the user that the SD card is being disk-checked --> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <!-- Settings screen, setting title text --> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <!-- Settings screen, Camera setting category title --> + <!-- Settings screen, Camcorder setting category title --> + <!-- Settings screen, Picture size title --> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <!-- Settings screen, Focus mode dialog radio button choices --> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <!-- flash label [CHAR LIMIT=50] --> + <!-- Settings screen, Flash mode dialog radio button choices --> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <!-- Menu, white balance label --> + <!-- Settings screen, White balance dialog radio button choices --> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <!-- Exposure settings in preference --> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <!-- switch camera label front [CHAR LIMIT=60] --> + <!-- Dialog "OK" button. Dismisses dialog. --> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Default text for a button that can be toggled on and off. --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <!-- settings label [CHAR LIMIT=50] --> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-or-rIN/cm_strings.xml b/res/values-or-rIN/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-or-rIN/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-or-rIN/codeaurora_strings.xml b/res/values-or-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-or-rIN/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-pa-rIN/cm_strings.xml b/res/values-pa-rIN/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-pa-rIN/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-pa-rIN/codeaurora_strings.xml b/res/values-pa-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-pa-rIN/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-pl/cm_strings.xml b/res/values-pl/cm_strings.xml new file mode 100644 index 000000000..298f51bb9 --- /dev/null +++ b/res/values-pl/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Czas nagrania</string> +</resources> diff --git a/res/values-pl/codeaurora_strings.xml b/res/values-pl/codeaurora_strings.xml new file mode 100644 index 000000000..13b5b785f --- /dev/null +++ b/res/values-pl/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Krok</string> + <string name="step_option_desc">Dostosuj stopnie przewijania/cofania</string> + <string name="setp_option_three_second">3 sekundy</string> + <string name="setp_option_six_second">6 sekund</string> + <string name="loop">"Pętla"</string> + <string name="single">"Pojedynczy"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Głośnik włączony</string> + <string name="speaker_off">Głośnik wyłączony</string> + <string name="speaker_need_headset">Podłącz słuchawki, aby skorzystać z tej funkcji.</string> + <string name="single_track">"Pojedynczy utwór"</string> + <string name="input_url">"Wprowadź adres URL"</string> + <string name="streaming_settings">"Ustawienia strumieniowania"</string> + <string name="next">"Następny"</string> + <string name="previous">"Poprzedni"</string> + <string name="buffer_size">Rozmiar bufora</string> + <string name="apn">Preferowany APN</string> + <string name="rtp_min_port">Min port</string> + <string name="rtp_max_port">Max port</string> + <string name="set_rtp_min_port">Ustaw min port</string> + <string name="set_rtp_max_port">Ustaw max port</string> + <string name="set_buffer_size">Ustaw rozmiar bufora</string> + <string name="set_apn">Wybierz preferowany APN</string> + <string name="setting">Ustawienia</string> + <string name="server_timeout_title">"Limit czasu serwera"</string> + <string name="server_timeout_message">"Połączyć ponownie się z serwerem, aby odtworzyć wideo?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Połączenie nie powiodło się, próba odnowienia połączenia do %1$d\u2026"</string> + <string name="media_controller_live">Na żywo</string> + <string name="media_controller_playing">Odtwarzanie</string> + <string name="media_controller_connecting">Łączenie\u2026</string> + <string name="bookmark_add">"Dodaj zakładkę"</string> + <string name="bookmark_display">"Pokaż zakładki"</string> + <string name="bookmark_empty">"Brak zakładek"</string> + <string name="bookmark_exist">"Zakładka już istnieje"</string> + <string name="bookmark_add_success">"Dodano zakładkę"</string> + <string name="bookmark_list">"Zakładki"</string> + <string name="bookmark_title">"Tytuł"</string> + <string name="bookmark_location">"Lokalizacja"</string> + <string name="delete_all">"Usuń wszystkie"</string> + <string name="default_title">"Domyślny tytuł"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Więcej zdjęć</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Nie można wyciszyć: film nieobsługiwany</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Nie ma aplikacji mapy zainstalowanej, aby zobaczyć lokalizację.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Podbicie basu</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Efekt 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Efekty dźwiękowe</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Podłącz słuchawki dla tych efektów.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Niestety, ten plik wideo nie może zostać przycięty</string> + <string name="no_permission_for_drm">Wybacz, ale pliki chronione DRM nie mogą być udostępniane</string> + <string name="drm_license_info">Informacje o licencji DRM</string> +</resources> diff --git a/res/values-port/styles.xml b/res/values-port/styles.xml index 46871c626..319b0a663 100644 --- a/res/values-port/styles.xml +++ b/res/values-port/styles.xml @@ -37,15 +37,15 @@ <item name="android:layout_height">wrap_content</item> <item name="android:singleLine">true</item> <item name="android:textColor">@color/popup_title_color</item> - <item name="android:layout_marginLeft">10dp</item> + <item name="android:layout_marginStart">10dp</item> </style> <style name="ViewfinderLabelLayout"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">match_parent</item> <item name="android:layout_marginTop">13dp</item> <item name="android:layout_marginBottom">@dimen/indicator_bar_width</item> - <item name="android:layout_marginLeft">13dp</item> - <item name="android:layout_marginRight">13dp</item> + <item name="android:layout_marginStart">13dp</item> + <item name="android:layout_marginEnd">13dp</item> </style> <style name="PanoViewHorizontalBar"> <item name="android:background">#000000</item> diff --git a/res/values-pt-rBR/cm_strings.xml b/res/values-pt-rBR/cm_strings.xml new file mode 100644 index 000000000..12c2731d7 --- /dev/null +++ b/res/values-pt-rBR/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Tempo de gravação</string> +</resources> diff --git a/res/values-pt-rBR/codeaurora_strings.xml b/res/values-pt-rBR/codeaurora_strings.xml new file mode 100644 index 000000000..fcdad4b13 --- /dev/null +++ b/res/values-pt-rBR/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Passo</string> + <string name="step_option_desc">Personalizar o avanço/retrocesso rápido</string> + <string name="setp_option_three_second">3 segundos</string> + <string name="setp_option_six_second">6 segundos</string> + <string name="loop">"Repetir"</string> + <string name="single">"Único"</string> + <string name="stereo">"Estéreo"</string> + <string name="speaker_on">Alto-falante ligado</string> + <string name="speaker_off">Alto-falante desligado</string> + <string name="speaker_need_headset">Conecte fones de ouvido para usar este recurso.</string> + <string name="single_track">"Única faixa"</string> + <string name="input_url">"Insira a URL"</string> + <string name="streaming_settings">"Configurações de streaming"</string> + <string name="next">"Próximo"</string> + <string name="previous">"Anterior"</string> + <string name="buffer_size">Tamanho do buffer</string> + <string name="apn">APN preferencial</string> + <string name="rtp_min_port">Porta mínima</string> + <string name="rtp_max_port">Porta máxima</string> + <string name="set_rtp_min_port">Definir a porta mínima</string> + <string name="set_rtp_max_port">Definir a porta máxima</string> + <string name="set_buffer_size">Definir o tamanho do buffer</string> + <string name="set_apn">Selecione a APN preferida</string> + <string name="setting">Configurações</string> + <string name="server_timeout_title">"Tempo de espera do servidor"</string> + <string name="server_timeout_message">"Reconectar ao servidor para reproduzir o vídeo?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Falha na conexão, tentando reconectar ao %1$d\u2026"</string> + <string name="media_controller_live">Ao vivo</string> + <string name="media_controller_playing">Reproduzindo</string> + <string name="media_controller_connecting">Conectando\u2026</string> + <string name="bookmark_add">"Adicionar favorito"</string> + <string name="bookmark_display">"Visualizar favoritos"</string> + <string name="bookmark_empty">"Não há favoritos"</string> + <string name="bookmark_exist">"O favorito já existe"</string> + <string name="bookmark_add_success">"Favorito adicionado"</string> + <string name="bookmark_list">"Favoritos"</string> + <string name="bookmark_title">"Título"</string> + <string name="bookmark_location">"Localização"</string> + <string name="delete_all">"Apagar tudo"</string> + <string name="default_title">"Título padrão"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Mais imagens</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Impossivel silenciar: vídeo não suportado</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Não há aplicativo de mapas instalado para mostrar o local.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Ganho de grave</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Efeito 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Efeitos de áudio</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Conecte fones de ouvido para estes efeitos.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Desculpe, o arquivo de vídeo não pode ser cortado</string> + <string name="no_permission_for_drm">Desculpe, arquivos protegidos por DRM não podem ser compartilhados</string> + <string name="drm_license_info">Informação de licença DRM</string> +</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..12c2731d7 --- /dev/null +++ b/res/values-pt-rPT/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Tempo de gravação</string> +</resources> diff --git a/res/values-pt-rPT/codeaurora_strings.xml b/res/values-pt-rPT/codeaurora_strings.xml new file mode 100644 index 000000000..54fee9d26 --- /dev/null +++ b/res/values-pt-rPT/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Intervalo</string> + <string name="step_option_desc">Personalizar o avanço/retrocesso rápido</string> + <string name="setp_option_three_second">3 segundos</string> + <string name="setp_option_six_second">6 segundos</string> + <string name="loop">"Repetir"</string> + <string name="single">"Simples"</string> + <string name="stereo">"Estéreo"</string> + <string name="speaker_on">Altifalante ligado</string> + <string name="speaker_off">Altifalante desligado</string> + <string name="speaker_need_headset">Ligue o auricular para usar este recurso.</string> + <string name="single_track">"Faixa única"</string> + <string name="input_url">"Insira a URL"</string> + <string name="streaming_settings">"Definições de transmissão"</string> + <string name="next">"Próximo"</string> + <string name="previous">"Anterior"</string> + <string name="buffer_size">Tamanho do buffer</string> + <string name="apn">APN preferida</string> + <string name="rtp_min_port">Porta mínima</string> + <string name="rtp_max_port">Porta máxima</string> + <string name="set_rtp_min_port">Definir a porta mínima</string> + <string name="set_rtp_max_port">Definir a porta máxima</string> + <string name="set_buffer_size">Definir o tamanho do buffer</string> + <string name="set_apn">Selecionar a APN preferida</string> + <string name="setting">Definições</string> + <string name="server_timeout_title">"Tempo de espera do servidor"</string> + <string name="server_timeout_message">"Reconectar ao servidor para reproduzir o vídeo?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Falha na ligação. A tentar reconectar-se a %1$d\u2026"</string> + <string name="media_controller_live">Ao vivo</string> + <string name="media_controller_playing">A reproduzir</string> + <string name="media_controller_connecting">A ligar\u2026</string> + <string name="bookmark_add">"Adicionar favorito"</string> + <string name="bookmark_display">"Visualizar favoritos"</string> + <string name="bookmark_empty">"Sem favoritos"</string> + <string name="bookmark_exist">"O favorito já existe"</string> + <string name="bookmark_add_success">"Favorito adicionado"</string> + <string name="bookmark_list">"Favoritos"</string> + <string name="bookmark_title">"Título"</string> + <string name="bookmark_location">"Localização"</string> + <string name="delete_all">"Apagar tudo"</string> + <string name="default_title">"Título padrão"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Mais imagens</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Não pode silenciar: vídeo não suportado</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Não há nenhuma aplicaçação de mapas instalada para mostrar o local.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Aumento dos Baixos</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Efeito 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Efeitos Áudio</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Ligar o auricular para utilizar estes efeitos.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Desculpe, mas este vídeo não pode ser cortado</string> + <string name="no_permission_for_drm">Desculpe, mas ficheiros protegidos por DRM não podem ser partilhados</string> + <string name="drm_license_info">Informação da licença DRM</string> +</resources> diff --git a/res/values-rm/cm_strings.xml b/res/values-rm/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-rm/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-rm/codeaurora_strings.xml b/res/values-rm/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-rm/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-ro/cm_strings.xml b/res/values-ro/cm_strings.xml new file mode 100644 index 000000000..f671ac89f --- /dev/null +++ b/res/values-ro/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Dată înregistrare</string> +</resources> diff --git a/res/values-ro/codeaurora_strings.xml b/res/values-ro/codeaurora_strings.xml new file mode 100644 index 000000000..081e1f2e9 --- /dev/null +++ b/res/values-ro/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Pas</string> + <string name="step_option_desc">Personalizează pasul derulării/înaintării rapide</string> + <string name="setp_option_three_second">3 secunde</string> + <string name="setp_option_six_second">6 secunde</string> + <string name="loop">"Buclă"</string> + <string name="single">"Singur"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Difuzor pornit</string> + <string name="speaker_off">Difuzor oprit</string> + <string name="speaker_need_headset">Conectați căștile pentru a utiliza această caracteristică.</string> + <string name="single_track">"Linie singulară"</string> + <string name="input_url">"Introduceți URL-ul"</string> + <string name="streaming_settings">"Setările de streaming"</string> + <string name="next">"Următoarea"</string> + <string name="previous">"Înapoi"</string> + <string name="buffer_size">Dimensiune tampon</string> + <string name="apn">APN preferat</string> + <string name="rtp_min_port">Port minim</string> + <string name="rtp_max_port">Port maxim</string> + <string name="set_rtp_min_port">Setează portul minim</string> + <string name="set_rtp_max_port">Setează portul maxim</string> + <string name="set_buffer_size">Setează dimensiune tampon</string> + <string name="set_apn">Selectați APN preferat</string> + <string name="setting">Setări</string> + <string name="server_timeout_title">"Expirare server"</string> + <string name="server_timeout_message">"Reconectați la server pentru a reda video?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Conexiunea a eșuat, se încearcă reconectarea la %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Redând</string> + <string name="media_controller_connecting">Se conectează\u2026</string> + <string name="bookmark_add">"Adaugă semn de carte"</string> + <string name="bookmark_display">"Arată semne de carte"</string> + <string name="bookmark_empty">"Fără semne de carte"</string> + <string name="bookmark_exist">"Semnul de carte există deja"</string> + <string name="bookmark_add_success">"Semn de carte adăugat"</string> + <string name="bookmark_list">"Semne de carte"</string> + <string name="bookmark_title">"Titlu"</string> + <string name="bookmark_location">"Locație"</string> + <string name="delete_all">"Șterge toate"</string> + <string name="default_title">"Titlul implicit"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Mai multe imagini</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Nu puteți dezactiva volumul: videoul nu este acceptat</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Nu există nicio aplicație cu hărți instalată care să arate locația.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Amplificare Bas</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Efect 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Efecte audio</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Conectați căști pentru aceste efecte.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Ne pare rău, acest fișier video nu poate fi tăiat</string> + <string name="no_permission_for_drm">Scuze, fișierele protejate DRM nu pot fi partajate</string> + <string name="drm_license_info">Informații licență DRM</string> +</resources> diff --git a/res/values-ru/cm_strings.xml b/res/values-ru/cm_strings.xml new file mode 100644 index 000000000..444a963bc --- /dev/null +++ b/res/values-ru/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Время записи</string> +</resources> diff --git a/res/values-ru/codeaurora_strings.xml b/res/values-ru/codeaurora_strings.xml new file mode 100644 index 000000000..6bd381b98 --- /dev/null +++ b/res/values-ru/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Шаг перемотки</string> + <string name="step_option_desc">Настройка интервала для быстрой перемотки вперёд или назад</string> + <string name="setp_option_three_second">3 секунды</string> + <string name="setp_option_six_second">6 секунд</string> + <string name="loop">"Зациклить"</string> + <string name="single">"Однократно"</string> + <string name="stereo">"Стерео"</string> + <string name="speaker_on">Вкл. динамик</string> + <string name="speaker_off">Выкл. динамик</string> + <string name="speaker_need_headset">Подключите наушники для использования этой функции.</string> + <string name="single_track">"Один трек"</string> + <string name="input_url">"Введите URL"</string> + <string name="streaming_settings">"Потоковая передача"</string> + <string name="next">"След."</string> + <string name="previous">"Пред."</string> + <string name="buffer_size">Размер буфера передачи</string> + <string name="apn">Точка доступа по умолчанию</string> + <string name="rtp_min_port">Минимальный порт</string> + <string name="rtp_max_port">Максимальный порт</string> + <string name="set_rtp_min_port">Установка мин. номера порта</string> + <string name="set_rtp_max_port">Установка макс. номера порта</string> + <string name="set_buffer_size">Установка размера буфера передачи</string> + <string name="set_apn">Предпочтительная точка доступа</string> + <string name="setting">Настройки</string> + <string name="server_timeout_title">"Время ожидания сервера"</string> + <string name="server_timeout_message">"Переподключиться к серверу для воспроизведения видеофайла?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Сбой связи. Повторное подключение к %1$d\u2026"</string> + <string name="media_controller_live">Прямой эфир</string> + <string name="media_controller_playing">Воспроизведение</string> + <string name="media_controller_connecting">Подключение\u2026</string> + <string name="bookmark_add">"Добавить закладку"</string> + <string name="bookmark_display">"Показать закладки"</string> + <string name="bookmark_empty">"Нет закладок"</string> + <string name="bookmark_exist">"Закладка уже создана"</string> + <string name="bookmark_add_success">"Закладка добавлена"</string> + <string name="bookmark_list">"Закладки"</string> + <string name="bookmark_title">"Название"</string> + <string name="bookmark_location">"Местоположение"</string> + <string name="delete_all">"Удалить все"</string> + <string name="default_title">"Заголовок по умолчанию"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Другие изображения</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Невозможно отключить звук: видеофайл не поддерживается</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Приложение для работы с картами не установлено. Показ местоположения невозможен.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Усил. баса</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D-эффект</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Аудиоэффекты</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Подключите наушники для использования эффектов.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Этот видеофайл невозможно обрезать</string> + <string name="no_permission_for_drm">Отправка файлов с защитой DRM невозможна</string> + <string name="drm_license_info">Сведения о лицензии DRM</string> +</resources> diff --git a/res/values-si-rLK/cm_strings.xml b/res/values-si-rLK/cm_strings.xml new file mode 100644 index 000000000..d9298e83f --- /dev/null +++ b/res/values-si-rLK/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">රෙකෝඩිත වේලාව</string> +</resources> diff --git a/res/values-si-rLK/codeaurora_strings.xml b/res/values-si-rLK/codeaurora_strings.xml new file mode 100644 index 000000000..dff4c3ddc --- /dev/null +++ b/res/values-si-rLK/codeaurora_strings.xml @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="step_option_desc">ශීඝ්රව ඉදිරියට/පසුධාවන පියවර රිසිකරණය</string> + <string name="loop">"ලූපය"</string> + <string name="single">"තනිකඩ"</string> + <string name="stereo">"ත්රිමාන"</string> + <string name="speaker_on">ස්පීකරය සක්රීයයි</string> + <string name="speaker_off">ස්පීකරය අක්රීයයි</string> + <string name="speaker_need_headset">මෙම විශේෂාංගය භාවිතයට ඉස් බණුව පේනුගත කරන්න.</string> + <string name="single_track">"තනි ඛණ්ඩය"</string> + <string name="input_url">"URL ඇතුළත් කරන්න"</string> + <string name="streaming_settings">"ප්රවාහන සැකසීම්"</string> + <string name="next">"ඊළඟ"</string> + <string name="previous">"පෙර"</string> + <string name="buffer_size">බෆර ප්රමාණය</string> + <string name="apn">වඩා ලැදි APN ය</string> + <string name="rtp_min_port">අවම තොට</string> + <string name="rtp_max_port">උපරිම තොට</string> + <string name="set_rtp_min_port">අවම තොට සකසන්න</string> + <string name="set_rtp_max_port">උපරිම තොට සකසන්න</string> + <string name="set_buffer_size">බෆර ප්රමාණය සකසන්න</string> + <string name="set_apn">වඩා ලැදි APN ය තෝරන්න</string> + <string name="setting">සැකසීම්</string> + <string name="server_timeout_title">"සේවාදායකය කල්ඉකුත් විය"</string> + <string name="server_timeout_message">"වීඩියෝව ධාවනය සඳහා සේවාදායකයට යලි සම්බන්ධ වන්නද?"</string> + <string name="videoview_error_text_cannot_connect_retry">"සම්බන්ධය අසමත්විය, %1$d වෙත යලි සම්බන්ධවීමට උත්සාහ කරමින්\u2026"</string> + <string name="media_controller_live">සජීවී</string> + <string name="media_controller_playing">ධාවනය කරමින්</string> + <string name="media_controller_connecting">සම්බන්ධ වෙමින්\u2026</string> + <string name="bookmark_add">"පොත් යොමුවක් එක් කරන්න"</string> + <string name="bookmark_display">"පොත් යොමු පෙන්වන්න"</string> + <string name="bookmark_empty">"පොත් යොමු නැත"</string> + <string name="bookmark_exist">"පොත් යොමුව දැනටමත් පවතී"</string> + <string name="bookmark_add_success">"පොත් යොමුව එක් කෙරුණි"</string> + <string name="bookmark_list">"පොත් යොමු"</string> + <string name="bookmark_title">"පටබැඳිනාමය"</string> + <string name="bookmark_location">"ස්ථානය"</string> + <string name="delete_all">"සියල්ල මකන්න"</string> + <string name="default_title">"පෙරනිමි පටබැඳිනාමය"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">නිශ්ශබ්ද කල නොහැක : සහාය නොදක්වන වීඩියෝවකි</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">බේස් වැඩිවීම</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D බලපෑම</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">ශ්රව්ය බලපෑම්</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">මෙම බලපෑම් සඳහා ඉස් බණුව පේනුගත කරන්න.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon ශ්රව්ය+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">කනගාටුයි, මෙම වීඩියෝ ගොනුව කොට කල නොහැක</string> +</resources> diff --git a/res/values-sk/cm_strings.xml b/res/values-sk/cm_strings.xml new file mode 100644 index 000000000..48c928931 --- /dev/null +++ b/res/values-sk/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Čas nahrania</string> +</resources> diff --git a/res/values-sk/codeaurora_strings.xml b/res/values-sk/codeaurora_strings.xml new file mode 100644 index 000000000..1e59a851a --- /dev/null +++ b/res/values-sk/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Krok</string> + <string name="step_option_desc">Prispôsobiť krok rýchleho pretočenia dopredu/dozadu</string> + <string name="setp_option_three_second">3 sekundy</string> + <string name="setp_option_six_second">6 sekúnd</string> + <string name="loop">"Opakovanie"</string> + <string name="single">"Jednoduchý"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Zapnúť reproduktor</string> + <string name="speaker_off">Vypnúť reproduktor</string> + <string name="speaker_need_headset">Pripojte slúchadlá pre použitie tejto funkcie.</string> + <string name="single_track">"Jedna stopa"</string> + <string name="input_url">"Zadať adresu URL"</string> + <string name="streaming_settings">"Nastavenia streamovania"</string> + <string name="next">"Ďalšie"</string> + <string name="previous">"Predchádzajúce"</string> + <string name="buffer_size">Veľkosť vyrovnávacej pamäte</string> + <string name="apn">Uprednostňovaný prístupový bod</string> + <string name="rtp_min_port">Minimálny port</string> + <string name="rtp_max_port">Maximálny port</string> + <string name="set_rtp_min_port">Nastaviť minimálny port</string> + <string name="set_rtp_max_port">Nastaviť maximálny port</string> + <string name="set_buffer_size">Nastaviť veľkosť vyrovnávacej pamäte</string> + <string name="set_apn">Vybrať uprednostňovaný prístupový bod</string> + <string name="setting">Nastavenia</string> + <string name="server_timeout_title">"Časový limit servera"</string> + <string name="server_timeout_message">"Pripojiť sa znova k serveru pre prehrávanie videa?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Pripojenie zlyhalo, pokúšanie sa o opätovné pripojenie k %1$d\u2026"</string> + <string name="media_controller_live">Naživo</string> + <string name="media_controller_playing">Prehrávanie</string> + <string name="media_controller_connecting">Pripájanie\u2026</string> + <string name="bookmark_add">"Pridať záložku"</string> + <string name="bookmark_display">"Zobraziť záložky"</string> + <string name="bookmark_empty">"Žiadne záložky"</string> + <string name="bookmark_exist">"Záložka už existuje"</string> + <string name="bookmark_add_success">"Záložka bola pridaná"</string> + <string name="bookmark_list">"Záložky"</string> + <string name="bookmark_title">"Názov"</string> + <string name="bookmark_location">"Poloha"</string> + <string name="delete_all">"Vymazať všetky"</string> + <string name="default_title">"Predvolený názov"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Viac obrázkov</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Nie je možné stíšiť: video nie je podporované</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Nie je nainštalovaná žiadna mapová aplikácia pre zobrazenie polohy.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Zosilnenie basov</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D efekt</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Zvukové efekty</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Pre tieto efekty pripojte slúchadlá.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Zvuk+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Prepáčte, ale toto video nie je možné orezať</string> + <string name="no_permission_for_drm">Ospravedlňujeme sa, nie je možné zdieľať súbory chránené DRM</string> + <string name="drm_license_info">Informácie o licencii DRM</string> +</resources> diff --git a/res/values-sl/cm_strings.xml b/res/values-sl/cm_strings.xml new file mode 100644 index 000000000..a4acab3d8 --- /dev/null +++ b/res/values-sl/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Čas snemanja</string> +</resources> diff --git a/res/values-sl/codeaurora_strings.xml b/res/values-sl/codeaurora_strings.xml new file mode 100644 index 000000000..5fc9b63eb --- /dev/null +++ b/res/values-sl/codeaurora_strings.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Korak</string> + <string name="step_option_desc">Prilagodi korak za pomik najprej/nazaj</string> + <string name="setp_option_three_second">3 sekunde</string> + <string name="setp_option_six_second">6 sekund</string> + <string name="loop">"Zanka"</string> + <string name="single">"Posamezni"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">VKLOPI zvočnik</string> + <string name="speaker_off">IZKLOPI zvočnik</string> + <string name="speaker_need_headset">Priključite slušalke za uporabo te značilnosti.</string> + <string name="single_track">"Posamezna skladba"</string> + <string name="input_url">"Vnesite URL"</string> + <string name="streaming_settings">"Nastavitve pretakanja"</string> + <string name="next">"Naprej"</string> + <string name="previous">"Prejšnji"</string> + <string name="buffer_size">Velikost medpomnilnika</string> + <string name="apn">Priljubljeni APN</string> + <string name="rtp_min_port">Najmanjše št. vrat</string> + <string name="rtp_max_port">Največje št. vrat</string> + <string name="set_rtp_min_port">Nastavite najmanjše št . vrat</string> + <string name="set_rtp_max_port">Nastavite največje št . vrat</string> + <string name="set_buffer_size">Nastavite velikost medpomnilnika</string> + <string name="set_apn">Izberite priljubljeni APN</string> + <string name="setting">Nastavitve</string> + <string name="server_timeout_title">"Časovna omejitev strežnika"</string> + <string name="server_timeout_message">"Ponovno se poveži na strežnik za predvajanje videoposnetka?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Povezava je spodletela, poskušanje ponovne povezave na %1$d \u2026"</string> + <string name="media_controller_live">V živo</string> + <string name="media_controller_playing">Predvaja se</string> + <string name="media_controller_connecting">Povezovanje \u2026</string> + <string name="bookmark_add">"Dodaj zaznamek"</string> + <string name="bookmark_display">"Prikaži zaznamke"</string> + <string name="bookmark_empty">"Ni zaznamkov"</string> + <string name="bookmark_exist">"Zaznamek že obstaja"</string> + <string name="bookmark_add_success">"Zaznamek dodan"</string> + <string name="bookmark_list">"Zaznamki"</string> + <string name="bookmark_title">"Naslov"</string> + <string name="bookmark_location">"Mesto"</string> + <string name="delete_all">"Izbriši vse"</string> + <string name="default_title">"Privzeti naslov"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Več slik</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Utišanje ni mogoče: videoposnetki niso podprti</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Ojačevalec nizkih tonov</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Učinki 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Zvočni učinki</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Priključite slušalke za te učinke.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Žal te datoteke videoposnetka ni mogoče obrezati</string> + <string name="no_permission_for_drm">Žal datotek zaščitenih z DRM-om ni mogoče deliti</string> + <string name="drm_license_info">Podatki licence DRM</string> +</resources> diff --git a/res/values-sq-rAL/cm_strings.xml b/res/values-sq-rAL/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-sq-rAL/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-sq-rAL/codeaurora_strings.xml b/res/values-sq-rAL/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-sq-rAL/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-sr/cm_strings.xml b/res/values-sr/cm_strings.xml new file mode 100644 index 000000000..36c4cb82e --- /dev/null +++ b/res/values-sr/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Време снимања</string> +</resources> diff --git a/res/values-sr/codeaurora_strings.xml b/res/values-sr/codeaurora_strings.xml new file mode 100644 index 000000000..5dcc88b2a --- /dev/null +++ b/res/values-sr/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Корак</string> + <string name="step_option_desc">Прилагоди брзи корак унапред/уназад</string> + <string name="setp_option_three_second">3 секунде</string> + <string name="setp_option_six_second">6 секунди</string> + <string name="loop">"Понови"</string> + <string name="single">"Појединачно"</string> + <string name="stereo">"Стерео"</string> + <string name="speaker_on">Звучник УКЉУЧЕН</string> + <string name="speaker_off">Звучник ИСКЉУЧЕН</string> + <string name="speaker_need_headset">Прикључи слушалице да користиш ову функцију.</string> + <string name="single_track">"Појединачна нумера"</string> + <string name="input_url">"Унеси URL"</string> + <string name="streaming_settings">"Подешавања streaming-а"</string> + <string name="next">"Следеће"</string> + <string name="previous">"Претходно"</string> + <string name="buffer_size">Величина buffer-а</string> + <string name="apn">Жељени APN</string> + <string name="rtp_min_port">Мин. порт</string> + <string name="rtp_max_port">Макс. порт</string> + <string name="set_rtp_min_port">Постави мин. порт</string> + <string name="set_rtp_max_port">Постави макс порт</string> + <string name="set_buffer_size">Постави величину buffer-а</string> + <string name="set_apn">Изабери жељени APN</string> + <string name="setting">Подешавања</string> + <string name="server_timeout_title">"Време сервера је истекло"</string> + <string name="server_timeout_message">"Поново повежи на сервер да репродукујеш видео?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Повезивање није успело, покушавање поновног повезивања на %1$d\u2026"</string> + <string name="media_controller_live">Уживо</string> + <string name="media_controller_playing">Репродукција</string> + <string name="media_controller_connecting">Повезивање\u2026</string> + <string name="bookmark_add">"Додај обележивач"</string> + <string name="bookmark_display">"Прикажи обележиваче"</string> + <string name="bookmark_empty">"Нема обележивача"</string> + <string name="bookmark_exist">"Обележивач већ постоји"</string> + <string name="bookmark_add_success">"Обележивач додат"</string> + <string name="bookmark_list">"Обележивачи"</string> + <string name="bookmark_title">"Наслов"</string> + <string name="bookmark_location">"Локација"</string> + <string name="delete_all">"Избриши све"</string> + <string name="default_title">"Подразумевани наслов"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Још слика</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Не може се искључити: видео није подржан</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Нема апликације мапа инсталиране да прикаже локацију.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Појачање басова</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D ефекат</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Аудио ефекти</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Прикључи слушалице за ове ефекте.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Жао нам је, овај видео фајл не може бити скраћен</string> + <string name="no_permission_for_drm">Извини, DRM заштићене фајлове није могуће делити</string> + <string name="drm_license_info">Информације о DRM лиценци</string> +</resources> diff --git a/res/values-sv/cm_strings.xml b/res/values-sv/cm_strings.xml new file mode 100644 index 000000000..df74a19d9 --- /dev/null +++ b/res/values-sv/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Inspelningstid</string> +</resources> diff --git a/res/values-sv/codeaurora_strings.xml b/res/values-sv/codeaurora_strings.xml new file mode 100644 index 000000000..fe39cf16d --- /dev/null +++ b/res/values-sv/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Steg</string> + <string name="step_option_desc">Anpassa snabbspolningssteg framåt/bakåt</string> + <string name="setp_option_three_second">3 sekunder</string> + <string name="setp_option_six_second">6 sekunder</string> + <string name="loop">"Repetera"</string> + <string name="single">"Enkel"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Högtalare PÅ</string> + <string name="speaker_off">Högtalare AV</string> + <string name="speaker_need_headset">Anslut hörlurarna för att använda denna funktion.</string> + <string name="single_track">"Enkelt spår"</string> + <string name="input_url">"Ange URL"</string> + <string name="streaming_settings">"Inställningar för direktuppspelning"</string> + <string name="next">"Nästa"</string> + <string name="previous">"Föregående"</string> + <string name="buffer_size">Bufferstorlek</string> + <string name="apn">Förvald APN</string> + <string name="rtp_min_port">Lägsta portnummer</string> + <string name="rtp_max_port">Högsta portnummer</string> + <string name="set_rtp_min_port">Ange lägsta portnummer</string> + <string name="set_rtp_max_port">Ange högsta portnummer</string> + <string name="set_buffer_size">Ange buffertstorlek</string> + <string name="set_apn">Välj önskad APN</string> + <string name="setting">Inställningar</string> + <string name="server_timeout_title">"Server-timeout"</string> + <string name="server_timeout_message">"Återanslut till servern för att spela videon?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Anslutning misslyckades, försöker återansluta till %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Spelar</string> + <string name="media_controller_connecting">Ansluter\u2026</string> + <string name="bookmark_add">"Lägg till bokmärke"</string> + <string name="bookmark_display">"Visa bokmärken"</string> + <string name="bookmark_empty">"Inga bokmärken"</string> + <string name="bookmark_exist">"Bokmärket finns redan"</string> + <string name="bookmark_add_success">"Bokmärke tillagt"</string> + <string name="bookmark_list">"Bokmärken"</string> + <string name="bookmark_title">"Titel"</string> + <string name="bookmark_location">"Plats"</string> + <string name="delete_all">"Ta bort alla"</string> + <string name="default_title">"Förvald titel"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Fler bilder</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Kan inte stänga av ljudet: video stöds inte</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Det finns ingen kartapplikation installerad för att visa platsen.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Basförstärkning</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D-effekt</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Ljudeffekter</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Koppla in hörlurar för dessa effekter.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Tyvärr, denna videofil kan inte klippas</string> + <string name="no_permission_for_drm">Tyvärr, DRM-skyddade filer kan inte delas</string> + <string name="drm_license_info">Information om DRM-licens</string> +</resources> diff --git a/res/values-sw/cm_strings.xml b/res/values-sw/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-sw/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-sw/codeaurora_strings.xml b/res/values-sw/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-sw/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-ta-rIN/cm_strings.xml b/res/values-ta-rIN/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-ta-rIN/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-ta-rIN/codeaurora_strings.xml b/res/values-ta-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-ta-rIN/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-te-rIN/cm_strings.xml b/res/values-te-rIN/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-te-rIN/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-te-rIN/codeaurora_strings.xml b/res/values-te-rIN/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-te-rIN/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-th/cm_strings.xml b/res/values-th/cm_strings.xml new file mode 100644 index 000000000..f07442701 --- /dev/null +++ b/res/values-th/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">เวลาบันทึก</string> +</resources> diff --git a/res/values-th/codeaurora_strings.xml b/res/values-th/codeaurora_strings.xml new file mode 100644 index 000000000..e98cb19df --- /dev/null +++ b/res/values-th/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">ขั้นตอน</string> + <string name="step_option_desc">ปรับแต่งการไปข้างหน้า/การถอยกลับ</string> + <string name="setp_option_three_second">3 วินาที</string> + <string name="setp_option_six_second">6 วินาที</string> + <string name="loop">"วน"</string> + <string name="single">"เดี่ยว"</string> + <string name="stereo">"สเตอริโอ"</string> + <string name="speaker_on">เปิดลำโพง</string> + <string name="speaker_off">ปิดลำโพง</string> + <string name="speaker_need_headset">เสียบหูฟังเพื่อใช้คุณสมบัตินี้</string> + <string name="single_track">"แทรคเดี่ยว"</string> + <string name="input_url">"ป้อน URL"</string> + <string name="streaming_settings">"การตั้งค่าสตรีมมิ่ง"</string> + <string name="next">"ถัดไป"</string> + <string name="previous">"ก่อนหน้า"</string> + <string name="buffer_size">ขนาดของบัฟเฟอร์</string> + <string name="apn">APN ที่ต้องการ</string> + <string name="rtp_min_port">พอร์ตต่ำสุด</string> + <string name="rtp_max_port">พอร์ตสูงสุด</string> + <string name="set_rtp_min_port">ตั้งพอร์ตต่ำสุด</string> + <string name="set_rtp_max_port">ตั้งพอร์ดสูงสุด</string> + <string name="set_buffer_size">ตั้งขนาดบัฟเฟอร์</string> + <string name="set_apn">เลือก APN ที่ต้องการ</string> + <string name="setting">การตั้งค่า</string> + <string name="server_timeout_title">"หมดเวลาเชื่อมต่อเซิฟเวอร์"</string> + <string name="server_timeout_message">"เชื่อมต่อกับเซิร์ฟเวอร์อีกครั้งเพื่อเล่นวิดีโอหรือไม่"</string> + <string name="videoview_error_text_cannot_connect_retry">"เชื่อมต่อล้มเหลว พยายามเชื่อมต่ออีกครั้งไปที่ %1$d\u2026"</string> + <string name="media_controller_live">ถ่ายทอดสด</string> + <string name="media_controller_playing">กำลังเล่น</string> + <string name="media_controller_connecting">กำลังเชื่อมต่อ\u2026</string> + <string name="bookmark_add">"เพิ่มคั่นหน้า"</string> + <string name="bookmark_display">"แสดงบุ๊คมาร์ค"</string> + <string name="bookmark_empty">"ไม่มีบุ๊คมาร์ค"</string> + <string name="bookmark_exist">"มีบุ๊คมาร์คอยู่แล้ว"</string> + <string name="bookmark_add_success">"เพิ่มบุ๊คมาร์คแล้ว"</string> + <string name="bookmark_list">"บุ๊คมาร์ค"</string> + <string name="bookmark_title">"ชื่อเรื่อง"</string> + <string name="bookmark_location">"ตำแหน่งที่ตั้ง"</string> + <string name="delete_all">"ลบทั้งหมด"</string> + <string name="default_title">"ชื่อเริ่มต้น"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">ภาพเพิ่มเติม</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">ไม่สามารถปิดเสียงได้ : วิดีโอไม่รองรับ</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">ไม่มีแอปแผนที่ติดตั้งอยู่เพื่อใช้แสดงตำแหน่งที่ตั้ง</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">เพิ่มเสียงเบส</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">เอฟเฟกต์ 3 มิติ</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">เอฟเฟกต์เสียง</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">เสียบหูฟังสำหรับเอฟเฟกต์เหล่านี้</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">ขออภัย ไม่สามารถตัดแต่งวิดีโอนี้ได้</string> + <string name="no_permission_for_drm">ขออภัย ไฟล์ DRM ที่ได้รับการปกป้อง ไม่สามารถแบ่งปันได้</string> + <string name="drm_license_info">ข้อมูลสิทธิ์การใช้ DRM</string> +</resources> diff --git a/res/values-tr/cm_strings.xml b/res/values-tr/cm_strings.xml new file mode 100644 index 000000000..37b59ecbe --- /dev/null +++ b/res/values-tr/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Kayıt zamanı</string> +</resources> diff --git a/res/values-tr/codeaurora_strings.xml b/res/values-tr/codeaurora_strings.xml new file mode 100644 index 000000000..05f302520 --- /dev/null +++ b/res/values-tr/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Aralık</string> + <string name="step_option_desc">Hızlı ileri/geri sarma aralıklarını özelleştir</string> + <string name="setp_option_three_second">3 saniye</string> + <string name="setp_option_six_second">6 saniye</string> + <string name="loop">"Döngü"</string> + <string name="single">"Tek"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Hoparlör AÇIK</string> + <string name="speaker_off">Hoparlör KAPALI</string> + <string name="speaker_need_headset">Bu özelliği kullanmak için kulaklık takın.</string> + <string name="single_track">"Tek parça"</string> + <string name="input_url">"URL girin"</string> + <string name="streaming_settings">"Akış ayarları"</string> + <string name="next">"Sonraki"</string> + <string name="previous">"Önceki"</string> + <string name="buffer_size">Ara bellek boyutu</string> + <string name="apn">Tercih edilen APN</string> + <string name="rtp_min_port">Min bağlantı noktası</string> + <string name="rtp_max_port">Maks bağlantı noktası</string> + <string name="set_rtp_min_port">Min bağlantı noktasını ayarla</string> + <string name="set_rtp_max_port">Max bağlantı noktasını ayarla</string> + <string name="set_buffer_size">Ara bellek boyutunu ayarla</string> + <string name="set_apn">Tercih edilen APN\'yi seçin</string> + <string name="setting">Ayarlar</string> + <string name="server_timeout_title">"Sunucu zaman aşımı"</string> + <string name="server_timeout_message">"Videoyu oynatmak için sunucuya yeniden bağlanılsın mı?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Bağlantı başarısız, %1$d için yeniden bağlantı kuruluyor\u2026"</string> + <string name="media_controller_live">Canlı</string> + <string name="media_controller_playing">Çalınıyor</string> + <string name="media_controller_connecting">Bağlanıyor\u2026</string> + <string name="bookmark_add">"Yer işareti ekle"</string> + <string name="bookmark_display">"Yer işaretlerini göster"</string> + <string name="bookmark_empty">"Yer işareti yok"</string> + <string name="bookmark_exist">"Yer işareti zaten var"</string> + <string name="bookmark_add_success">"Yer işareti eklendi"</string> + <string name="bookmark_list">"Yer işaretleri"</string> + <string name="bookmark_title">"Başlık"</string> + <string name="bookmark_location">"Konum"</string> + <string name="delete_all">"Tümünü sil"</string> + <string name="default_title">"Varsayılan başlık"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Daha çok resim</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Susturulamıyor : video desteklemiyor</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Konum göstermek için yüklü harita uygulaması yok.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bas yükseltici</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D efekti</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Ses efektleri</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Bu efektler için kulaklık takın.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Üzgünüz, bu video kesilemiyor</string> + <string name="no_permission_for_drm">Üzgünüz, DHY korumalı dosyalar paylaşılamaz</string> + <string name="drm_license_info">DHY lisans bilgisi</string> +</resources> diff --git a/res/values-ug/cm_strings.xml b/res/values-ug/cm_strings.xml new file mode 100644 index 000000000..281acb013 --- /dev/null +++ b/res/values-ug/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">خاتىرىلىگەن ۋاقىت</string> +</resources> diff --git a/res/values-ug/codeaurora_strings.xml b/res/values-ug/codeaurora_strings.xml new file mode 100644 index 000000000..61d042473 --- /dev/null +++ b/res/values-ug/codeaurora_strings.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">ئارىلىق</string> + <string name="step_option_desc">ئىختىيارىي تېز ئالدىغا/كەينىگە ئارىلىقى</string> + <string name="setp_option_three_second">3 سېكۇنت</string> + <string name="setp_option_six_second">6 سېكۇنت</string> + <string name="loop">"دەۋرىي"</string> + <string name="single">"يەككە"</string> + <string name="stereo">"سىتېرېئو"</string> + <string name="speaker_on">ياڭراتقۇ ئوچۇق</string> + <string name="speaker_off">ياڭراتقۇ تاقاق</string> + <string name="speaker_need_headset">بۇ ئىقتىدارنى ئىشلىتىش ئۈچۈن تىڭشىغۇچنى قىستۇرۇڭ.</string> + <string name="single_track">"يەككە ئاۋاز يولى"</string> + <string name="input_url">"URL كىرگۈزۈڭ"</string> + <string name="streaming_settings">"ئېقىم تەڭشەكلەر"</string> + <string name="next">"كېيىنكى"</string> + <string name="previous">"ئالدىنقى"</string> + <string name="buffer_size">غەملەك چوڭلۇقى</string> + <string name="apn">ئالدىن تاللانغان APN</string> + <string name="rtp_min_port">ئەڭ كىچىك ئېغىز</string> + <string name="rtp_max_port">ئەڭ چوڭ ئېغىز</string> + <string name="set_rtp_min_port">ئەڭ كىچىك ئېغىز تەڭشىكى</string> + <string name="set_rtp_max_port">ئەڭ چوڭ ئېغىز تەڭشىكى</string> + <string name="set_buffer_size">غەملەك چوڭلۇق تەڭشىكى</string> + <string name="set_apn">ئالدىن بەلگىلەنگەن APN نى تاللاڭ</string> + <string name="setting">تەڭشەكلەر</string> + <string name="server_timeout_title">"مۇلازىمىتىر ۋاقىت ھالقىدى"</string> + <string name="server_timeout_message">"سىن قويۇشنى داۋاملاشتۇرۇش ئۈچۈن مۇلازىمېتىرغا قايتا باغلىنامدۇ؟"</string> + <string name="videoview_error_text_cannot_connect_retry">"باغلىنالمىدى، %1$d غا قايتا باغلاشنى سىناۋاتىدۇ\u2026"</string> + <string name="media_controller_live">بىۋاستە</string> + <string name="media_controller_playing">چېلىۋاتىدۇ</string> + <string name="media_controller_connecting">باغلىنىۋاتىدۇ\u2026</string> + <string name="bookmark_add">"خەتكۈچ قوش"</string> + <string name="bookmark_display">"خەتكۈچ كۆرسەت"</string> + <string name="bookmark_empty">"خەتكۈچ يوق"</string> + <string name="bookmark_exist">"خەتكۈچ مەۋجۇت"</string> + <string name="bookmark_add_success">"خەتكۈچ قوشۇلدى"</string> + <string name="bookmark_list">"خەتكۈچلەر"</string> + <string name="bookmark_title">"ماۋزۇ"</string> + <string name="bookmark_location">"ئورنى"</string> + <string name="delete_all">"ھەممىنى ئۆچۈر"</string> + <string name="default_title">"كۆڭۈلدىكى ماۋزۇ"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">تېخىمۇ كۆپ سۈرەت</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">ئۈنسىز قىلغىلى بولمايدۇ: سىننى قوللىمايدۇ</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">ئورنىنى كۆرسىتىشكە ئىشلىتىدىغان خەرىتە ئەپنى تاپالمىدى.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">تۆۋەن ئاۋازنى يۇقىرىلىتىش</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D ئۈنۈم</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">ئاۋاز ئۈنۈملىرى</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">بۇ ئۈنۈمدىن ھۇزۇرلىنىش ئۈچۈن تىڭشىغۇچنى قىستۇرۇڭ.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">كەچۈرۈڭ، بۇ سىن ھۆججىتىنى كەسكىلى بولمايدۇ</string> +</resources> diff --git a/res/values-ug/filtershow_strings.xml b/res/values-ug/filtershow_strings.xml new file mode 100644 index 000000000..3ab26f43b --- /dev/null +++ b/res/values-ug/filtershow_strings.xml @@ -0,0 +1,291 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Title for the image editor activity [CHAR LIMIT=NONE]--> + <string name="title_activity_filter_show">سۈرەت تەھرىرلىگۈچ</string> + <!-- String shown when we cannot load the image when starting the activity [CHAR LIMIT=NONE] --> + <string name="cannot_load_image">بۇ سۈرەتنى يۈكلىيەلمەيدۇ!</string> + <!-- String shown when cannot load the original image. We will edit selected image [CHAR LIMIT=NONE] --> + <string name="cannot_edit_original">دەسلەپكى نۇسخىنى تەھرىرلىيەلمەيدۇ</string> + <!-- String displayed when showing the original image [CHAR LIMIT=NONE] --> + <!-- String displayed when setting the homepage wallpaper in the background [CHAR LIMIT=NONE] --> + <string name="setting_wallpaper">تام قەغەزنى تەڭشەۋاتىدۇ</string> + <!-- generic strings --> + <!-- Text for to display on a download failure [CHAR LIMIT=NONE] --> + <string name="download_failure">سۈرەتنى چۈشۈرەلمەيدۇ. تورنى ئىشلەتكىلى بولمايدۇ.</string> + <!-- Text to label an image as "original" [CHAR LIMIT=20] --> + <string name="original">ئەسلى</string> + <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> + <!-- Text for the custom border filter [CHAR LIMIT=20] --> + <string name="custom_border">ئىختىيارىي</string> + <!-- actionbar menu --> + <!-- Text for the undo menu item [CHAR LIMIT=20] --> + <string name="filtershow_undo">يېنىۋال</string> + <!-- Text for redo menu item [CHAR LIMIT=20] --> + <string name="filtershow_redo">قايتىلا</string> + <!-- Text for the image menu item showing the filters that have been applied [CHAR LIMIT=30] --> + <string name="show_imagestate_panel">قوللانغان ئۈنۈملەرنى كۆرسەت</string> + <!-- Text for the image state panel menu item [CHAR LIMIT=30] --> + <string name="hide_imagestate_panel">قوللانغان ئۈنۈملەرنى يوشۇر</string> + <!-- Text for the menu item to export a flattened photo[CHAR LIMIT=30] --> + <string name="export_image">چىقار</string> + <!-- Text for the print menu item [CHAR LIMIT=20] --> + <string name="print_image">باس</string> + <!-- Export Dialog--> + <!-- Text for the dialog title to export a flattened photo[CHAR LIMIT=25] --> + <string name="export_flattened">جىپىسلىغان سۈرەتنى چىقار</string> + <!-- Text for selecting export image quality [CHAR LIMIT=100] --> + <string name="select_output_settings">چىقىرىلغان سۈرەت كۆچۈرۈلمە نۇسخا، ھېچقانداق تەھرىرلەش خاتىرىسىنى ئۆز ئىچىگە ئالمايدۇ.</string> + <!-- Text for quality value tag [CHAR LIMIT=30] --> + <string name="quality">سۈپەت</string> + <!-- Text for size value tag [CHAR LIMIT=30] --> + <string name="size">چوڭلۇقى</string> + <!-- Text for size x [CHAR LIMIT=1] --> + <string name="x">x</string> + <!-- Name for the overflow menu item for settings [CHAR LIMIT=20] --> + <string name="menu_settings">تەڭشەكلەر</string> + <!-- Exit Dialog --> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <string name="unsaved">بۇ سۈرەتنىڭ ساقلانمىغان ئۆزگەرتىشلىرى بار.</string> + <!-- String displayed when exiting with unsaved changes [CHAR LIMIT=NONE] --> + <string name="save_before_exit">چېكىنىش ئاۋۋال ساقلامسىز؟</string> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <string name="save_and_exit">ساقلاپ چېكىن</string> + <!-- String displayed when saving and exiting editor [CHAR LIMIT=NONE] --> + <string name="save_and_processing">ئەسلى ئېنىقلىقتىكى سۈرەتنى بىر تەرەپ قىلىۋاتىدۇ…</string> + <!-- String displayed when exiting editor[CHAR LIMIT=NONE] --> + <string name="exit">چېكىن</string> + <!-- History Panel --> + <!-- Text for the history panel title [CHAR LIMIT=50] --> + <string name="history">تارىخ</string> + <!-- Text for the history panel reset button [CHAR LIMIT=20]--> + <string name="reset">ئەسلىگە قايتۇر</string> + <!-- Text for the original image[CHAR LIMIT=20]--> + <!-- Image state panel --> + <!-- Text for the image state panel title [CHAR LIMIT=50] --> + <string name="imageState">قوللانغان ئۈنۈملەر</string> + <!-- Additional filters buttons --> + <!-- Label for the compare original image filter button [CHAR LIMIT=15] --> + <string name="compare_original">سېلىشتۇر</string> + <!-- Label for the apply effect button [CHAR LIMIT=15] --> + <string name="apply_effect">قوللان</string> + <!-- Label for the reset effect button [CHAR LIMIT=15] --> + <string name="reset_effect">ئەسلىگە قايتۇر</string> + <!-- Label for aspect [CHAR LIMIT=15] --> + <string name="aspect">ئېگىز-كەڭلىك</string> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <string name="aspect1to1_effect">1, 1</string> + <!-- Label for the aspect 4:3 effect [CHAR LIMIT=15] --> + <string name="aspect4to3_effect">4:3</string> + <!-- Label for the aspect 3:4 effect [CHAR LIMIT=15] --> + <string name="aspect3to4_effect">3:4</string> + <!-- Label for the aspect 4:7 effect [CHAR LIMIT=15] --> + <string name="aspect4to6_effect">4:6</string> + <!-- Label for the aspect 5:7 effect [CHAR LIMIT=15] --> + <string name="aspect5to7_effect">5:7</string> + <!-- Label for the aspect 7:5 effect [CHAR LIMIT=15] --> + <string name="aspect7to5_effect">7:5</string> + <!-- Label for the aspect 1:1 effect [CHAR LIMIT=15] --> + <string name="aspect9to16_effect">16:9</string> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <string name="aspectNone_effect">يوق</string> + <!-- Label for the aspect None effect [CHAR LIMIT=15] --> + <!-- Label for when the aspect ratio is fixed to a value [CHAR LIMIT=15] --> + <string name="Fixed">مۇقىم</string> + <!-- Label for the tuny planet effect [CHAR LIMIT=10] --> + <string name="tinyplanet">كىچىك پىلانىت</string> + <!-- Filters buttons --> + <!-- Label for the image exposure (brightness) filter button [CHAR LIMIT=10] --> + <string name="exposure" msgid="1229093066434614811">نۇر ئۆتۈش</string> + <!-- Label for the image sharpness (clarity, distinctness) filter button [CHAR LIMIT=10] --> + <string name="sharpness">ئېنىقلىقى</string> + <!-- Label for the image contrast (color difference) filter button [CHAR LIMIT=10] --> + <string name="contrast">ئاق-قارىلىقى</string> + <!-- Label for the image vibrance (strengthens colors) filter button [CHAR LIMIT=10] --> + <string name="vibrance">تەبىئى تويۇنۇش</string> + <!-- Label for the image saturation (brightens colors) filter button [CHAR LIMIT=10] --> + <string name="saturation">تويۇنۇش</string> + <!-- Label for the image BW filter (makes black & white) button [CHAR LIMIT=10] --> + <string name="bwfilter">BW سۈزگۈچ</string> + <!-- Label for the image Autocolor filter (makes off-white colors whiter) button [CHAR LIMIT=10] --> + <string name="wbalance">ئاپتوماتىك رەڭ</string> + <!-- Label for the image Hue filter (color, shade, tinge, tone) button [CHAR LIMIT=10] --> + <string name="hue">رەڭگى</string> + <!-- Label for the image shadow recovery (lightens/darkens shadows) filter button [CHAR LIMIT=10] --> + <string name="shadow_recovery">سايە</string> + <!-- Label for the image highlights recovery (lightens/darkens bright regions) filter button [CHAR LIMIT=15] --> + <string name="highlight_recovery">يورۇت</string> + <!-- Label for the image curves filter button [CHAR LIMIT=10] --> + <string name="curvesRGB">ئەگرى سىزىقلار</string> + <!-- Label for the image vignette filter (darkens photo around edges) button [CHAR LIMIT=10] --> + <string name="vignette">سايە</string> + <!-- Label for the image vignette main parameter ui [CHAR LIMIT=15] --> + <string name="vignette_main">سايە</string> + <!-- Label for the image vignette exposure parameter ui [CHAR LIMIT=15] --> + <string name="vignette_exposure">نۇر ئۆتۈش</string> + <!-- Label for the image vignette saturation parameter ui [CHAR LIMIT=15] --> + <string name="vignette_saturation">تويۇنۇش</string> + <!-- Label for the image vignette contrast fparameter ui [CHAR LIMIT=15] --> + <string name="vignette_contrast">ئاق-قارىلىقى</string> + <!-- Label for the rate of change in brightness as it goes to the edge [CHAR LIMIT=15] --> + <string name="vignette_falloff">ئاجىزلىشىشى</string> + <!-- Label for the image effect that removes redeye. [CHAR LIMIT=10] --> + <string name="redeye">قىزىل كۆز</string> + <!-- Label for the that allows drawing on Image [CHAR LIMIT=10] --> + <string name="imageDraw">سىز</string> + <!-- Label for the image straighten effect [CHAR LIMIT=15] --> + <string name="straighten" msgid="5217801513491493491">تۈزلە</string> + <!-- Label for the image crop effect [CHAR LIMIT=15] --> + <string name="crop" msgid="5584000454518174632">كەس</string> + <!-- Label for the image rotate effect [CHAR LIMIT=15] --> + <string name="rotate" msgid="460017689320955494">ئايلاندۇر</string> + <!-- Label for the image flip effect [CHAR LIMIT=15] --> + <string name="mirror">ئەينەك</string> + <!-- Name for the photo effect that inverts photo to negative images. [CHAR LIMIT=10] --> + <string name="negative">تەتۈر رەڭ</string> + <!-- Label for having no filters applied to the image [CHAR LIMIT=10] --> + <string name="none" msgid="3601545724573307541">يوق</string> + <!-- Label for the image edges effect (highlights edges in image) [CHAR LIMIT=10] --> + <string name="edge">گىرۋەكلەر</string> + <!-- Label for an image effect that replicates the "pop art" style of segmenting + images into solid colors, as popularized by Andy Warhol [CHAR LIMIT=15] --> + <string name="kmeans">رەڭ تۈسى ئايرىش</string> + <!-- Label for the image downsampling effect (makes image smaller) [CHAR LIMIT=15] --> + <string name="downsample">ئاستى مىسال</string> + <!-- Label for the "neutral density graduated filter" filter effect [CHAR LIMIT=15] --> + <string name="grad">تەدرىجىي ئۆزگىرىش</string> + <!-- Label for the Brightness effect [CHAR LIMIT=20] --> + <string name="editor_grad_brightness">يورۇقلۇق</string> + <!-- Label for the Contrast filter effect [CHAR LIMIT=20] --> + <string name="editor_grad_contrast">ئاق-قارىلىقى</string> + <!-- Label for the saturation effect [CHAR LIMIT=20] --> + <string name="editor_grad_saturation">تويۇنۇش</string> + <!-- Label for the Main or Master control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_main">ئاساسىي تىزىملىك</string> + <!-- Label for the red control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_red">قىزىل</string> + <!-- Label for the yellow control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_yellow">سېرىق</string> + <!-- Label for the green control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_green">يېشىل</string> + <!-- Label for the cyan control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_cyan">توق يېشىل</string> + <!-- Label for the blue control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_blue">كۆك</string> + <!-- Label for the Magenta control for per channel saturation effect [CHAR LIMIT=20] --> + <string name="editor_chan_sat_magenta">ئاچ قىزىل</string> + <!-- Label for the image graduated filter effect [CHAR LIMIT=20] --> + <string name="editor_grad_style">ئۇسلۇب</string> + <!-- new virtual graduated neutral density filter [CHAR LIMIT=20] --> + <string name="editor_grad_new">يېڭى</string> + <!-- Labels for the curves tool --> + <!-- Label for the curves tool, all channels (RGB) [CHAR LIMIT=3] --> + <string name="curves_channel_rgb">RGB</string> + <!-- Label for the curves tool, Red color channel [CHAR LIMIT=14] --> + <string name="curves_channel_red">قىزىل</string> + <!-- Label for the curves tool, Green color channel [CHAR LIMIT=14] --> + <string name="curves_channel_green">يېشىل</string> + <!-- Label for the curves tool, Blue color channel [CHAR LIMIT=14] --> + <string name="curves_channel_blue">كۆك</string> + <!-- Label for the The style to draw in [CHAR LIMIT=14] --> + <string name="draw_style">ئۇسلۇب</string> + <!-- Label for the size to draw in in [CHAR LIMIT=14] --> + <string name="draw_size">چوڭلۇقى</string> + <!-- Label for the Hue to draw in [CHAR LIMIT=14] --> + <string name="draw_hue">رەڭگى</string> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <string name="draw_saturation">تويۇنۇش</string> + <!-- Label for the Brightness to draw in [CHAR LIMIT=14] --> + <string name="draw_value">يورۇقلۇق</string> + <!-- Label for the color to draw in [CHAR LIMIT=14] --> + <string name="draw_color">رەڭ</string> + <!-- Label for the line style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_line">سىزىقلار</string> + <!-- Label for the Marker brush style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_brush_spatter">بەلگە قەلىمى</string> + <!-- Label for the Spatter brush style of drawing in [CHAR LIMIT=14] --> + <string name="draw_style_brush_marker">چاچقۇن</string> + <!-- Label for the removing drawing from screen [CHAR LIMIT=14] --> + <string name="draw_clear">تازىلا</string> + <!-- Label for the with of the border[CHAR LIMIT=14] --> + <string name="color_border_size">قېلىنلىقى</string> + <!-- Label for the border corner size (or rounding) [CHAR LIMIT=14] --> + <string name="color_border_corner_size">بۇلۇڭ چوڭلۇقى</string> + <!-- Label for selecting the border color [CHAR LIMIT=14] --> + <string name="color_border_color">رەڭ</string> + <!-- Label for the removing borders [CHAR LIMIT=14] --> + <string name="color_border_clear">تازىلا</string> + <!-- Label for the select the color [CHAR LIMIT=35] --> + <string name="color_pick_select">ئىختىيارىي رەڭ تاللاڭ</string> + <!-- The title for the color pick dialog [CHAR LIMIT=20] --> + <string name="color_pick_title">رەڭ تاللاڭ</string> + <!-- The title for draw size [CHAR LIMIT=50] --> + <string name="draw_size_title">چوڭلۇقىنى تاللاڭ</string> + <!-- The accept the draw size [CHAR LIMIT=20] --> + <string name="draw_size_accept">جەزملە</string> + <!-- Name used to indicate the original image in the state panel [CHAR LIMIT=20] --> + <string name="state_panel_original">ئەسلى</string> + <!-- Name used to indicate the final image in the state panel [CHAR LIMIT=20] --> + <string name="state_panel_result">نەتىجە</string> + <!-- Label for the notification [CHAR LIMIT=50] --> + <string name="filtershow_notification_label">سۈرەتنى ساقلاۋاتىدۇ</string> + <!-- Label for the notification message [CHAR LIMIT=50] --> + <string name="filtershow_notification_message">بىر تەرەپ قىلىۋاتىدۇ…</string> + <!-- Label for the save preset menu [CHAR LIMIT=30] --> + <string name="filtershow_save_preset">نۆۋەتتى ئالدىن تەڭشەكنى ساقلا</string> + <!-- Label for the manage preset menu [CHAR LIMIT=42] --> + <string name="filtershow_manage_preset">ئىشلەتكۈچى ئالدىن تەڭشەكنى باشقۇر</string> + <!-- Label for newly created user preset [CHAR LIMIT=30] --> + <string name="filtershow_new_preset">يېڭى ئالدىن تەڭشەك</string> + <!-- Label for preset name [CHAR LIMIT=30] --> + <string name="filtershow_preset_name">ئالدىن تەڭشەك ئىسمى</string> + <!-- Label for showing the image information panel [CHAR LIMIT=50] --> + <string name="filtershow_show_info_panel">ئۇچۇر</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_name">سۈرەت ئاتى</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_size">سۈرەت چوڭلۇقى</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_histogram">چاسا دىئاگرامما</string> + <!-- Label for the information panel [CHAR LIMIT=30] --> + <string name="filtershow_show_info_panel_exif">EXIF سانلىق مەلۇمات</string> + <!-- Label for the add button in the category panel [CHAR LIMIT=30] --> + <string name="filtershow_add_button_looks">ئالدىن تەڭشەك</string> + <!-- Label for the add button in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_add_button_versions">نەشرى</string> + <!-- Label for the Original version in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_version_original">ئەسلى</string> + <!-- Label for the Current version in the versions panel [CHAR LIMIT=30] --> + <string name="filtershow_version_current">نۆۋەتتىكى</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_model">ئەندىزە</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_aperture">نۇر گەردىشى</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_focal_length">فوكۇس ئارىلىقى</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_subject_distance">جىسىم ئارىلىقى</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_date">تارتىلغان چېسلا</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_f_stop">يورۇقلۇق چەمبەر قىممىتى</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_exposure_time">نۇرلاندۇرۇش ۋاقتى</string> + <!-- Label for exif tags in the information panel [CHAR LIMIT=50] --> + <string name="filtershow_exif_copyright">نەشر ھوقوقى</string> +</resources> diff --git a/res/values-ug/strings.xml b/res/values-ug/strings.xml new file mode 100644 index 000000000..eb471ff81 --- /dev/null +++ b/res/values-ug/strings.xml @@ -0,0 +1,840 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_name">سۈرەت يىغقۇچ</string> + <!-- Title for picture frame gadget to show in list of all available gadgets --> + <string name="gadget_title">رەسىم كاندۇك</string> + <!-- Used to format short video duration in Details dialog. minutes:seconds e.g. 00:30 --> + <!-- Used to format video duration in Details dialog. hours:minutes:seconds e.g. 0:21:30 --> + <!-- Activity label. This might show up in the activity-picker --> + <string name="movie_view_label">سىن قويغۇچ</string> + <!-- shown in the video player view while the video is being loaded, before it starts playing --> + <string name="loading_video">سىن يۈكلەۋاتىدۇ…</string> + <string name="loading_image">سۈرەت يۈكلەۋاتىدۇ…</string> + <!-- Message shown on the progress dialog to indicate we're loading the + account info [CHAR LIMIT=30] --> + <string name="loading_account">ھېسابات يۈكلەۋاتىدۇ…</string> + <!-- Movie View Resume Playing dialog title --> + <string name="resume_playing_title">سىننى داۋاملاشتۇر</string> + <!-- Movie View Start Playing dialog title --> + <string name="resume_playing_message">%s دىن قويۇشنى داۋاملاشتۇرامدۇ؟</string> + <!-- Movie View Start Playing button "Resume from bookmark" --> + <string name="resume_playing_resume">قويۇشنى داۋاملاشتۇر</string> + <!-- Displayed in the title of those albums that are being loaded --> + <string name="loading">يۈكلەۋاتىدۇ…</string> + <!-- Displayed in the title of those pictures that fails to be loaded + [CHAR LIMIT=50]--> + <string name="fail_to_load">يۈكلىيەلمىدى</string> + <!-- Used in a toast message when an image fails to be loaded + [CHAR LIMIT=50]--> + <string name="fail_to_load_image">بۇ سۈرەتنى يۈكلىيەلمەيدۇ</string> + <!-- Displayed in place of the picture when we fail to get the thumbnail of it. + [CHAR LIMIT=50]--> + <string name="no_thumbnail">كىچىك سۈرەت يوق</string> + <!-- Movie View Start Playing button "Beginning" --> + <string name="resume_playing_restart">قايتا باشلا</string> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <string name="crop_save_text">جەزملە</string> + <!-- Title of a menu item to indicate performing the image crop operation + [CHAR LIMIT=20] --> + <string name="ok">جەزملە</string> + <!-- Button indicating that the cropped image should be reverted back to the original --> + <!-- Hint that appears when cropping an image with more than one face --> + <string name="multiface_crop_help">چىرايدىن بىرسى چېكىلسە باشلايدۇ.</string> + <!-- Toast/alert that the image is being saved to the SD card --> + <string name="saving_image">رەسىم ساقلاۋاتىدۇ…</string> + <!-- Toast/alert that the image is being saved after editing in filtershow [CHAR LIMIT=40]--> + <string name="filtershow_saving_image">رەسىمنى <xliff:g id="ALBUM_NAME">%1$s</xliff:g> غا ساقلاۋاتىدۇ…</string> + <!-- Eorror toast message that the image cannot be saved [CHAR LIMIT=40]--> + <string name="save_error">كېسىلگەن سۈرەتنى ساقلىيالمايدۇ.</string> + <!-- menu pick: crop the currently selected image [CHAR LIMIT=30]--> + <string name="crop_label">رەسىم كەس</string> + <!-- menu pick: trim the currently selected video [CHAR LIMIT=30]--> + <string name="trim_label">سىن كەس</string> + <!-- Toast/alert that the face detection is being run --> + <!-- Title prompted for user to choose a photo item [CHAR LIMIT=20] --> + <string name="select_image">سۈرەت تاللاڭ</string> + <!-- Title prompted for user to choose a video item [CHAR LIMIT=20] --> + <string name="select_video">سىن تاللاش</string> + <!-- Title prompted for user to choose a media object [CHAR LIMIT=20] --> + <string name="select_item">تۈر تاللاڭ</string> + <!-- Title prompted for user to choose an album [CHAR LIMIT=20] --> + <string name="select_album">ئالبۇم تاللاڭ</string> + <!-- Title prompted for user to choose a group [CHAR LIMIT=20] --> + <string name="select_group">گۇرۇپپا تاللاڭ</string> + <!-- Displayed in the title of the dialog for things to do with a picture + that is to be "set as" (e.g. set as contact photo or set as wallpaper) --> + <string name="set_image">رەسىم تەڭشىكى</string> + <!-- Activity title for cropping picture and setting it as wallpaper [CHAR LIMIT=20] --> + <string name="set_wallpaper">تام قەغەز تەڭشىكى</string> + <!-- Toast/alert after saving wallpaper --> + <string name="wallpaper">تام قەغەز تەڭشەۋاتىدۇ\u2026</string> + <string name="camera_setas_wallpaper">تام قەغىزى</string> + <!-- Details dialog "OK" button. Dismisses dialog. --> + <string name="delete">ئۆچۈر</string> + <!-- String Delete the selected media item(s) [CHAR LIMIT=50] --> + <string name="confirm">جەزملە</string> + <string name="cancel">ۋاز كەچ</string> + <string name="share">ھەمبەھىر</string> + <string name="share_panorama">پۈتۈن مەنزىرە ھەمبەھىر</string> + <string name="share_as_photo">سۈرەت سۈپىتىدە ھەمبەھىر</string> + <!-- The label shown after an image is deleted [CHAR LIMIT=16] --> + <string name="deleted">ئۆچۈرۈلدى</string> + <!-- The label on the button which when clicked will undo a deletion of image [CHAR LIMIT=16]--> + <string name="undo">يېنىۋال</string> + <!-- String indicating more actions are available --> + <string name="select_all">ھەممىنى تاللا</string> + <string name="deselect_all">ھەممىنى تاللىما</string> + <string name="slideshow">تام تەسۋىر كۆرسەت</string> + <string name="details">تەپسىلاتى</string> + <string name="details_title">%2$d دىن %1$d تۈر:</string> + <string name="close">ياپ</string> + <!-- Title of a menu item to switch from Gallery to Camera app [CHAR LIMIT=30] --> + <string name="switch_to_camera">كامېراغا ئالماشتۇر</string> + <!-- String indicating how many media item(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media album(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating how many media group(s) is(are) selected + eg. 1 selected [CHAR LIMIT=30] --> + <!-- String indicating timestamp of photo or video --> + <string name="show_on_map">خەرىتىدە كۆرسەت</string> + <string name="rotate_left">سولغا ئايلاندۇر</string> + <string name="rotate_right">ئوڭغا ئايلاندۇر</string> + <!-- Toast message prompted when the specified item is not found [CHAR LIMIT=40]--> + <string name="no_such_item">تۈرنى تاپالمىدى.</string> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <string name="edit">تەھرىر</string> + <!-- String used as a menu label. The user can choose to edit the image + [CHAR_LIMIT=20]--> + <string name="simple_edit">ئاددىي تەھرىر</string> + <!-- String used as a title of a progress dialog. The user can + choose to cache some Picasa picture albums on device, so it can + be viewed offline. This string is shown when the request is being + processed. [CHAR LIMIT=50] --> + <string name="process_caching_requests">غەملەش ئىلتىماسىنى بىر تەرەپ قىلىۋاتىدۇ</string> + <!-- String used as a small notification label above a Picasa album. + It means the pictures of the Picasa album is currently being + transferred to local storage, so the pictures can later be viewed + offline. [CHAR LIMIT=15] --> + <string name="caching_label">غەملەۋاتىدۇ…</string> + <!-- The title of the menu item to let user crop the image. [CHAR LIMIT=15] --> + <string name="crop_action">كەس</string> + <!-- The title of the menu item to let user trim the video. [CHAR LIMIT=15] --> + <string name="trim_action">كەس</string> + <!-- The title of the menu item to let user mute the video. [CHAR LIMIT=15] --> + <string name="mute_action">ئۈنسىز</string> + <!-- The title of the menu item to let user set the image as background etc. [CHAR LIMIT=15] --> + <string name="set_as">تەڭشىكى</string> + <!-- String indicating an error when muting the video. [CHAR LIMIT=30] --> + <string name="video_mute_err">سىننى ئۈنسىز قىلالمايدۇ.</string> + <!-- String indicating an error when playing the video. [CHAR LIMIT=30] --> + <string name="video_err">سىننى قويالمايدۇ</string> + <!-- Strings for grouping operations in the menu. The photos can be grouped + by their location, taken time, or tags. --> + <!-- The title of the menu item to let user choose the grouping rule, when + pressed, a submenu will shown and user can choose one grouping rule + from the submenu. --> + <!-- Title of a menu item to group photo by location [CHAR LIMIT=30] --> + <string name="group_by_location">ئورنى بويىچە</string> + <!-- Title of a menu tiem to group photo by taken date [CHAR LIMIT=30]--> + <string name="group_by_time">ۋاقىت بويىچە</string> + <!-- Title of a menu item to group photo by tags [CHAR LIMIT=30]--> + <string name="group_by_tags">بەلگە بويىچە</string> + <!-- Title of a menu item to group photo by faces [CHAR LIMIT=30]--> + <string name="group_by_faces">كىشى بويىچە</string> + <!-- Title of a menu item to group photo by albums [CHAR LIMIT=30]--> + <string name="group_by_album">ئالبۇم بويىچە</string> + <!-- Title of a menu item to group photo by size [CHAR LIMIT=30]--> + <string name="group_by_size">چوڭلۇقى بويىچە</string> + <!-- When grouping photos by tags, the label used for photos without tags + [CHAR LIMIT=20]--> + <string name="untagged">بەلگە قويۇلمىغان</string> + <!-- When grouping photos by locations, the label used for photos that don't + have location information in them [CHAR LIMIT=20]--> + <string name="no_location">ئورنى يوق</string> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <!-- This toast message is shown when network connection is lost while doing clustering --> + <string name="no_connectivity">بەزى ئورۇنلارنى تور كاشىلىسى سەۋەبىدىن ئېنىقلىيالمىدى.</string> + <!-- This toast message is shown when failed to load the album data. [CHAR LIMIT=NONE] --> + <string name="sync_album_error">بۇ ئالبۇمدىكى سۈرەتلەرنى چۈشۈرەلمىدى. سەل تۇرۇپ قايتا سىناڭ.</string> + <!-- The title of the menu item to let user choose the which portion of + the media items the user wants to see. When pressed, a submenu will + appear and user can choose one of "show images only", + "show videos only", or "show all" from the submenu. --> + <!-- Title of a menu item to show images only [CHAR LIMIT=30]--> + <string name="show_images_only">سۈرەتلەرلا</string> + <!-- Title of a menu item to show videos only [CHAR LIMIT=30]--> + <string name="show_videos_only">سىنلارلا</string> + <!-- Title of a menu item to show all (both images and videos) [CHAR LIMIT=30]--> + <string name="show_all">سۈرەت ۋە سىنلار</string> + <!-- Title of the StackView AppWidget --> + <string name="appwidget_title">سۈرەت يىغقۇچ</string> + <!-- Text for the empty state of the StackView AppWidget [CHAR LIMIT=30] --> + <string name="appwidget_empty_text">سۈرەت يوق.</string> + <!-- Toast message shown when the cropped image has been saved in the + %s folder (string: folder_download) [CHAR LIMIT=50]--> + <string name="crop_saved">كېسىلگەن سۈرەت <xliff:g id="FOLDER_NAME">%s</xliff:g> غا ساقلاندى.</string> + <!-- Toast message shown when there is no albums available [CHAR LIMIT=50]--> + <string name="no_albums_alert">ئىشلەتكىلى بولىدىغان ئالبۇم يوق.</string> + <!-- Toast message shown when we close the AlbumPage because it is empty + [CHAR LIMIT=50] --> + <string name="empty_album">سۈرەت/سىننى ئىشلەتكىلى بولىدۇ.</string> + <!-- Album label used to indicate the collection of PWA Buzz/Post photos --> + <string name="picasa_posts">يازمىلار</string> + <!-- A label describing that the current screen is for the user to pick + some albums to be viewable offline [CHAR LIMIT=30] --> + <string name="make_available_offline">تورسىز ئىشلەتكىلى بولىدۇ</string> + <!-- A label of a menu item for user to sync the content [CHAR LIMIT=30] --> + <string name="sync_picasa_albums">يېڭىلا</string> + <!-- A label on a button. The user clicks this button after he has + finished selection. [CHAR LIMIT=15] --> + <string name="done">تامام</string> + <!-- String indicating the sequence of currently selected item in the + media set eg. 3 of 5 items [CHAR LIMIT=30] --> + <string name="sequence_in_set">%2$d دىن %1$d تۈر:</string> + <!-- Text indicating the title of a media item in details window [CHAR LIMIT=14] --> + <string name="title">ماۋزۇ</string> + <!-- Text indicating the description of a media item in details window [CHAR LIMIT=14] --> + <string name="description">چۈشەندۈرۈش</string> + <!-- Text indicating the creation time of a media item in details window [CHAR LIMIT=14] --> + <string name="time">ۋاقىت</string> + <!-- Text indicating the location of a media item in details window [CHAR LIMIT=14] --> + <string name="location">ئورنى</string> + <!-- Text indicating the path of a media item in details window [CHAR LIMIT=14] --> + <string name="path">يول</string> + <!-- Text indicating the width of a media item in details window [CHAR LIMIT=14] --> + <string name="width">كەڭلىك</string> + <!-- Text indicating the height of a media item in details window [CHAR LIMIT=14] --> + <string name="height">ئېگىزلىك</string> + <!-- Text indicating the orientation of a media item in details window [CHAR LIMIT=14] --> + <string name="orientation">يۆنىلىش</string> + <!-- Text indicating the duration of a video item in details window [CHAR LIMIT=14] --> + <string name="duration">داۋاملىشىش ۋاقتى</string> + <!-- Text indicating the mime type of a media item in details window [CHAR LIMIT=14] --> + <string name="mimetype">MIME تىپى</string> + <!-- Text indicating the file size of a media item in details window [CHAR LIMIT=14] --> + <string name="file_size">ھۆججەت چوڭلۇقى</string> + <!-- Text indicating the maker of a media item in details window [CHAR LIMIT=14] --> + <string name="maker">ياسىغۇچ</string> + <!-- Text indicating the model of a media item in details window [CHAR LIMIT=14] --> + <string name="model">ئەندىزە</string> + <!-- Text indicating flash info of a media item in details window [CHAR LIMIT=14] --> + <string name="flash">چاقماق لامپا</string> + <!-- Text indicating aperture of a media item in details window [CHAR LIMIT=14] --> + <string name="aperture">نۇر گەردىشى</string> + <!-- Text indicating the focal length of a media item in details window [CHAR LIMIT=14] --> + <string name="focal_length">فوكۇس ئارىلىقى</string> + <!-- Text indicating the white balance of a media item in details window [CHAR LIMIT=14] --> + <string name="white_balance">ئاق تەڭپۇڭلۇق</string> + <!-- Text indicating the exposure time of a media item in details window [CHAR LIMIT=14] --> + <string name="exposure_time">ئاشكارىلانغان ۋاقتى</string> + <!-- Text indicating the ISO speed rating of a media item in details window [CHAR LIMIT=14] --> + <!-- String indicating the time units in seconds. [CHAR LIMIT=8] --> + <!-- String indicating the length units in milli-meters. [CHAR LIMIT=8] --> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <string name="manual">قولدا</string> + <!-- String indicating how camera shooting feature is used. [CHAR LIMIT=8] --> + <string name="auto">ئاپتوماتىك</string> + <!-- String indicating camera flash is fired. [CHAR LIMIT=14] --> + <string name="flash_on">چاقماق لامپا</string> + <!-- String indicating camera flash is not used. [CHAR LIMIT=14] --> + <string name="flash_off">چاقماق لامپا يوق</string> + <!-- String indicating image width or height is unknown. [CHAR LIMIT=14] --> + <string name="unknown">يوچۇن</string> + <!-- String for the empty not filtered image [CHAR LIMIT=10] --> + <string name="ffx_original">ئەسلى</string> + <!-- String for brown-colored old-fashion looking filter (filtershow_fx_0000_vintage) [CHAR LIMIT=10] --> + <string name="ffx_vintage">قەدىمىي</string> + <!-- String for filter that brightens colors like instant cameras(filtershow_fx_0001_instant) [CHAR LIMIT=10] --> + <string name="ffx_instant">شۇئان</string> + <!-- String for filter that washes out colors (filtershow_fx_0002_bleach) [CHAR LIMIT=10] --> + <string name="ffx_bleach">ئاقارتىش</string> + <!-- String for filter that makes colors a bluish (filtershow_fx_0003_blue_crush) [CHAR LIMIT=10] --> + <string name="ffx_blue_crush">كۆك</string> + <!-- String for filter that makes image black & white (filtershow_fx_0004_bw_contrast) [CHAR LIMIT=10] --> + <string name="ffx_bw_contrast">B/W</string> + <!-- String for filter that makes colors a yellowish (filtershow_fx_0005_punch) [CHAR LIMIT=10] --> + <string name="ffx_punch">يۇيۇپ چىڭداش</string> + <!-- String for filter that mimics the cross-process technique in + photography (makes colors bluish) (filtershow_fx_0006_x_process) [CHAR LIMIT=10] --> + <string name="ffx_x_process">ئەكسى يۇيۇش</string> + <!-- String for filter that makes image coffee-colored (filtershow_fx_0007_washout) [CHAR LIMIT=10] --> + <string name="ffx_washout">لاتتې قەھۋە</string> + <!-- String for filter that makes colors washed out and brownish + (filtershow_fx_0008_washout_color) [CHAR LIMIT=10] --> + <string name="ffx_washout_color">تاش باسما</string> + <!-- Toast message shown after we make some album(s) available offline [CHAR LIMIT=50] --> + <!-- Toast message shown after we try to make a local album available offline + [CHAR LIMIT=150] --> + <string name="try_to_set_local_album_available_offline">بۇ تۈر يەرلىك ئورۇنغا ساقلاندى، تورسىز ئىشلەتكىلى بولىدۇ.</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing all available albums [CHAR LIMIT=20] --> + <string name="set_label_all_albums">ھەممە ئالبۇم</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing albums stored locally on the device [CHAR LIMIT=20] --> + <string name="set_label_local_albums">يەرلىك ئالبۇم</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing MTP devices connected (like other digital cameras). + [CHAR LIMIT=20] --> + <string name="set_label_mtp_devices">MTP ئۈسكۈنىلىرى</string> + <!-- A label shown on the action bar. It indicates that the user is + viewing Picasa albums [CHAR LIMIT=20] --> + <string name="set_label_picasa_albums">Picasa ئالبۇمى</string> + <!-- Label indicating the amount on free space on the device. The parameter + is a string representation of the amount of free space, eg. "20MB". + [CHAR LIMIT=20] + --> + <string name="free_space_format"><xliff:g id="BYTES">%s</xliff:g> بوش</string> + <!-- Label of a group of pictures. The size of each picture in this group is + less than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <string name="size_below"><xliff:g id="SIZE">%s</xliff:g> ياكى تۆۋەن</string> + <!-- Label of a group of pictures. The size of each picture in this group is + more than a certain amount. The parameter is a string representation + of that amount, eg. "10MB". + [CHAR LIMIT=20] + --> + <string name="size_above"><xliff:g id="SIZE">%s</xliff:g> ياكى يۇقىرى</string> + <!-- Label of a group of pictures. The size of each picture in this group is + between two amounts. The parameters are string representations of the two + amounts, eg. "10MB", "100MB". + [CHAR LIMIT=20] + --> + <string name="size_between"><xliff:g id="MIN_SIZE">%1$s</xliff:g> دىن <xliff:g id="MAX_SIZE">%2$s</xliff:g> غا</string> + <!-- A label shown on the action bar. It indicates that the operation + to import media item(s) [CHAR LIMIT=20] --> + <string name="Import">ئەكىر</string> + <!-- A label shown on the action bar. It indicates whether the import + operation succeeds or fails. [CHAR LIMIT=20] --> + <string name="import_complete">ئەكىرىش تامام</string> + <string name="import_fail">ئەكىرەلمىدى</string> + <!-- A toast indicating a camera is connected to the device [CHAR LIMIT=30]--> + <string name="camera_connected">كامېرا باغلاندى</string> + <!-- A toast indicating a camera is disconnected [CHAR LIMIT=30] --> + <string name="camera_disconnected">كامېرا ئۈزۈلدى</string> + <!-- A label shown on MTP albums thumbnail to instruct users to import + [CHAR LIMIT=40] --> + <string name="click_import">بۇ جاي چېكىلسە ئەكىرىدۇ</string> + <!-- The label on the radio button for the widget type that shows the images randomly. [CHAR LIMIT=30]--> + <string name="widget_type_album">بىر ئالبۇم تاللاڭ</string> + <!-- The label on the radio button for the widget type that shows the images in an album. [CHAR LIMIT=30]--> + <string name="widget_type_shuffle">ھەممە سۈرەتنى سۆرەڭ</string> + <!-- The label on the radio button for the widget type that shows only one image. [CHAR LIMIT=30]--> + <string name="widget_type_photo">بىر سۈرەت تاللاڭ:</string> + <!-- The title of the dialog for choosing the type of widget. [CHAR LIMIT=20] --> + <string name="widget_type">سۈرەت تاللاڭ</string> + <!-- Title of the Android Dreams slideshow screensaver. [CHAR LIMIT=20] --> + <string name="slideshow_dream_name">تام تەسۋىر كۆرسەت</string> + <!-- Group by Albums tab on Action Bar. [CHAR LIMIT=12] --> + <string name="albums">سۈرەت توپلىمى</string> + <!-- Group by Times tab on Action Bar. [CHAR LIMIT=12] --> + <string name="times">ۋاقىت</string> + <!-- Group by Locations tab on Action Bar. [CHAR LIMIT=12] --> + <string name="locations">ئورنى</string> + <!-- Group by People tab on Action Bar. [CHAR LIMIT=12] --> + <string name="people">كىشى</string> + <!-- Group by Tags tab on Action Bar. [CHAR LIMIT=12] --> + <string name="tags">خەتكۈچلەر</string> + <!-- Group by menu item. [CHAR LIMIT=20] --> + <string name="group_by">گۇرۇپپا ئاساسى</string> + <!-- The title of the menu item which enable the settings [CHAR LIMIT=20] --> + <string name="settings">تەڭشەكلەر</string> + <!-- The title of menu item where user can add a new account --> + <string name="add_account">ھېسابات قوش</string> + <!-- The label for the folder contains pictures taken by the camera. [CHAR LIMIT=20]--> + <string name="folder_camera">كامېرا</string> + <!-- The label for the folder contains downloaded pictures. [CHAR LIMIT=20]--> + <string name="folder_download">چۈشۈر</string> + <!-- The label for the folder contains edited online pictures. [CHAR LIMIT=40]--> + <string name="folder_edited_online_photos">تەھرىرلەنگەن توردىكى سۈرەتلەر</string> + <!-- The label for the folder contains pictures that was imported from an + external camera. [CHAR LIMIT=20]--> + <string name="folder_imported">ئەكىردى</string> + <!-- The label for the folder contains screenshot images. [CHAR LIMIT=20]--> + <string name="folder_screenshot">ئېكراندىن تۇتۇلغان سۈرەت</string> + <!-- The title of the menu item which display online help in browser. [CHAR LIMIT=20]--> + <string name="help">ياردەم</string> + <!-- The tilte of a dialog showing there is no external storage. [CHAR LIMIT=20] --> + <string name="no_external_storage_title">ساقلىغۇچ يوق</string> + <!-- The message of a dialog showing there is no external storage. [CHAR LIMIT=none] --> + <string name="no_external_storage">ھېچقانداق سىرتقى ساقلىغۇچ يوق</string> + <!-- Label for album filmstrip button --> + <string name="switch_photo_filmstrip">تام تەسۋىر كۆرۈنۈش</string> + <!-- Label for album grid button --> + <string name="switch_photo_grid">سېتكا كۆرۈنۈش</string> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <string name="switch_photo_fullscreen">پۈتۈن ئېكران كۆرۈنۈش</string> + <!-- The tilte of a dialog showing trimming in progress. [CHAR LIMIT=20] --> + <string name="trimming">كېسىۋاتىدۇ</string> + <!-- The tilte of a dialog showing muting in progress. [CHAR LIMIT=20] --> + <string name="muting">ئۈنسىز قىلىۋاتىدۇ</string> + <!-- The content of a dialog showing trimming in progress. [CHAR LIMIT=30] --> + <string name="please_wait">سەل كۈتۈڭ</string> + <!-- Toast after the trimming / muting is done. [CHAR LIMIT=50] --> + <string name="save_into">سىننى <xliff:g id="ALBUM_NAME">%1$s</xliff:g> غا ساقلاۋاتىدۇ…</string> + <!-- Toast if the trimmed video is too short to trim. [CHAR LIMIT=80] --> + <string name="trim_too_short">كېسەلمەيدۇ: نىشان سىن بەك قىسقا\"</string> + <!-- Text to show with progress bar while stitching in Gallery --> + <string name="pano_progress_text">پۈتۈن مەنزىرە سۈرەتنى رەڭلەۋاتىدۇ</string> + <!-- The label on the button that will save an edited image --> + <string name="save" msgid="8140440041190264400">ساقلا</string> + <!-- A label representing the action of importing media item(s) [CHAR LIMIT=20] --> + <!-- A label that indicates the media import operation completed [CHAR LIMIT=20] --> + <!-- Text of notification message which is shown when user attaches camera --> + <string name="ingest_scanning" msgid="2048262851775139720">مەزمۇننى تەكشۈرۈۋاتىدۇ…</string> + <!-- String indicating how many media items from the camera have been scanned --> + <!-- String indicating how many media items from the camera have been selected --> + <!-- Status message shown when content from the camera is being sorted --> + <string name="ingest_sorting" msgid="624687230903648118">تەرتىپلەۋاتىدۇ…</string> + <!-- Status message shown when scanning the content from the camera has completed --> + <string name="ingest_scanning_done">تەكشۈرۈش تامام</string> + <!-- Status message shown when content from an external camera is being imported --> + <string name="ingest_importing">ئەكىرىۋاتىدۇ…</string> + <!-- Status message shown when there is no content available to be imported --> + <string name="ingest_empty_device">بۇ ئۈسكۈنىدە ئەكىرگىلى بولىدىغان ھېچقانداق مەزمۇن يوق.</string> + <!-- Status message shown when there is no MTP device connected --> + <string name="ingest_no_device">ھېچقانداق MTP ئۈسكۈنە باغلانمىدى</string> + <!-- Label for album grid button --> + <!-- Label for fullscreen button. [CHAR LIMIT=20] --> + <!-- Camera resources below --> + <!-- General strings --> + <!-- title for the dialog showing the error of camera hardware --> + <string name="camera_error_title">كامېرا خاتالىقى</string> + <!-- message for the dialog showing the error of camera hardware --> + <string name="cannot_connect_camera">كامېراغا باغلىنالمىدى</string> + <!-- message for the dialog showing the camera is disabled because of security policies. Camera cannot be used. --> + <string name="camera_disabled">بىخەتەرلىك تەدبىرى سەۋەبىدىن كامېرا چەكلەندى.</string> + <!-- label for the icon meaning 'show me all the images that were taken with the camera' --> + <string name="camera_label">كامېرا</string> + <!-- alert to the user to wait for some operation to complete --> + <string name="wait">سەل كۈتۈڭ…</string> + <!-- alert to the user that USB storage must be available before using the camera [CHAR LIMIT=NONE] --> + <string name="no_storage" product="nosdcard">كامېرانى ئىشلىتىشتىن ئىلگىرى USB ساقلىغۇچنى ئېگەرلەڭ.</string> + <!-- alert to the user that an SD card must be installed before using the camera --> + <string name="no_storage" product="default">كامېرا ئىشلىتىشتىن ئىلگىرى SD كارتا قىستۇرۇڭ.</string> + <!-- alert to the user that the USB storage is being disk-checked [CHAR LIMIT=30] --> + <string name="preparing_sd" product="nosdcard">USB ساقلىغۇچنى تەييارلاۋاتىدۇ…</string> + <!-- alert to the user that the SD card is being disk-checked --> + <string name="preparing_sd" product="default">SD كارتا تەييارلاۋاتىدۇ…</string> + <!-- alert to the user that the camera fails to read or write the USB storage. [CHAR LIMIT=NONE] --> + <string name="access_sd_fail" product="nosdcard">USB ساقلىغۇچنى زىيارەت قىلالمايدۇ.</string> + <!-- alert to the user that the camera fails to read or write the SD card. --> + <string name="access_sd_fail" product="default">SD كارتىنى زىيارەت قىلالمايدۇ.</string> + <!-- button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT=10] --> + <string name="review_cancel">ۋاز كەچ</string> + <!-- button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT=10] --> + <string name="review_ok">تامام</string> + <!-- A label that overlays on top of the preview frame to indicate the camcorder is in time lapse mode [CHAR LIMIT=35] --> + <string name="time_lapse_title">ۋاقىت بەلگىلەپ خاتىرىلەش</string> + <!-- Settings screen, camera selection dialog title. Users can select a camera from the phone (front-facing or back-facing). [CHAR LIMIT=20] --> + <string name="pref_camera_id_title">كامېرا تاللاڭ</string> + <!-- In select camera setting, back facing camera. [CHAR LIMIT=14] --> + <string name="pref_camera_id_entry_back">قايت</string> + <!-- In select camera setting, front-facing camera. [CHAR LIMIT=14] --> + <string name="pref_camera_id_entry_front">ئالدى</string> + <!-- Settings screen, setting title text --> + <string name="pref_camera_recordlocation_title">ساقلاش ئورنى</string> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <string name="pref_camera_location_label">ئورنى</string> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> + <string name="pref_camera_timer_title">تەتۈر سانىغۇچ ۋاقىت خاتىرىلىگۈچ</string> + <!-- Entry for countdown timer setting. e.g. 1 second, 10 seconds, etc. [CHAR LIMIT=30]--> + <!-- Text followed by a checkbox to turn on/off sound effects during the countdown. [CHAR LIMIT = 16]--> + <string name="pref_camera_timer_sound_title">تەتۈر ساناۋاتقاندا ئەسكەرتىش ئاۋازى چىقار</string> + <!-- Entry of a on/off setting. The setting is turned off. [CHAR LIMIT=15] --> + <string name="setting_off">تاقاق</string> + <!-- Entry of a on/off setting. The setting is turned on. [CHAR LIMIT=15] --> + <string name="setting_on">ئوچۇق</string> + <!-- The value of a camera preference indicating the setting is off. --> + <!-- The value of a camera preference indicating the setting is on. --> + <!-- The Video quality settings in preference [CHAR LIMIT=21] --> + <string name="pref_video_quality_title">سىن سۈپىتى</string> + <!-- The default quality value is 5 (720p) --> + <!-- Video quality setting entry. Videos will be recorded in 1080p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 720p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in 480p quality. [CHAR LIMIT=24] --> + <!-- Video quality setting entry. Videos will be recorded in the highest quality available on the device. [CHAR LIMIT=24] --> + <string name="pref_video_quality_entry_high">يۇقىرى</string> + <!-- Video quality setting entry. Videos will be recorded in the lowest quality available on the device. [CHAR LIMIT=24] --> + <string name="pref_video_quality_entry_low">تۆۋەن</string> + <!-- Describes the preference dialog for choosing interval between frame capture for + time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] --> + <string name="pref_video_time_lapse_frame_interval_title">ۋاقىت بەلگىلەپ سۈرەت تارتىش</string> + <!-- Settings screen, Camera setting category title --> + <string name="pref_camera_settings_category">كامېرا تەڭشەك</string> + <!-- Settings screen, Camcorder setting category title --> + <string name="pref_camcorder_settings_category">سىنئالغۇ تەڭشەك</string> + <!-- Settings screen, Picture size title --> + <string name="pref_camera_picturesize_title">رەسىم چوڭلۇقى</string> + <!-- Settings screen, dialog choice for 13 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_13mp">13 مىليون پىكسېل</string> + <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_8mp">8 مىليون پىكسېل</string> + <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_5mp">5 مىليون پىكسېل</string> + <!-- Settings screen, dialog choice for 4 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_4mp">4 مىليون پىكسېل</string> + <!-- Settings screen, dialog choice for 3 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_3mp">3 مىليون پىكسېل</string> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_2mp">2 مىليون پىكسېل</string> + <!-- Settings screen, dialog choice for 2 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_2mp_wide">2 مىليون پىكسېل (16:9)</string> + <!-- Settings screen, dialog choice for 1.3 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_1_3mp">1،3 مىليون پىكسېل</string> + <!-- Settings screen, dialog choice for 1 megapixels picture size [CHAR LIMIT=15] --> + <string name="pref_camera_picturesize_entry_1mp">1 مىليون پىكسېل</string> + <!-- Settings screen, dialog choice for VGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, dialog choice for QVGA picture size [CHAR LIMIT=15] --> + <!-- Settings screen, Focus mode title --> + <string name="pref_camera_focusmode_title">فوكۇس مودېلى</string> + <!-- Settings screen, Focus mode dialog radio button choices --> + <string name="pref_camera_focusmode_entry_auto">ئاپتوماتىك</string> + <string name="pref_camera_focusmode_entry_infinity">چەكسىز</string> + <string name="pref_camera_focusmode_entry_macro">ماكرو</string> + <!-- Menu, focus mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_focusmode_label_auto">ئاپتوماتىك</string> + <string name="pref_camera_focusmode_label_infinity">چەكسىز</string> + <string name="pref_camera_focusmode_label_macro">ماكرو</string> + <!-- Default flash mode setting.--> + <!-- Value for flash off setting--> + <!-- Settings screen, Flash mode title --> + <string name="pref_camera_flashmode_title">قول چىراغ ھالىتى</string> + <!-- flash label [CHAR LIMIT=50] --> + <string name="pref_camera_flashmode_label">چاقماق چىراغ ھالىتى</string> + <!-- Settings screen, Flash mode dialog radio button choices --> + <string name="pref_camera_flashmode_entry_auto">ئاپتوماتىك</string> + <string name="pref_camera_flashmode_entry_on">ئوچۇق</string> + <string name="pref_camera_flashmode_entry_off">تاقاق</string> + <!-- Menu, flash mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_flashmode_label_auto">چاقماق چىراغ ئاپتوماتىل</string> + <string name="pref_camera_flashmode_label_on">چاقماق چىراغ ئوچۇق</string> + <string name="pref_camera_flashmode_label_off">چاقماق چىراغ تاقاق</string> + <!-- Default videocamera flash mode setting.--> + <!-- Default white balance setting. --> + <!-- Settings screen, white balance title --> + <string name="pref_camera_whitebalance_title">ئاق تەڭپۇڭلۇق</string> + <!-- Menu, white balance label --> + <string name="pref_camera_whitebalance_label">ئاق تەڭپۇڭلۇق</string> + <!-- Settings screen, White balance dialog radio button choices --> + <string name="pref_camera_whitebalance_entry_auto">ئاپتوماتىك</string> + <string name="pref_camera_whitebalance_entry_incandescent">چوغلانما لامپا</string> + <string name="pref_camera_whitebalance_entry_daylight">كۈن نۇرى</string> + <string name="pref_camera_whitebalance_entry_fluorescent">يالتىراق لامپا</string> + <string name="pref_camera_whitebalance_entry_cloudy">بۇلۇتلۇق</string> + <!-- Menu, White balance labels [CHAR LIMIT=50] --> + <string name="pref_camera_whitebalance_label_auto">ئاپتوماتىك</string> + <string name="pref_camera_whitebalance_label_incandescent">چوغلانما لامپا</string> + <string name="pref_camera_whitebalance_label_daylight">كۈن نۇرى</string> + <string name="pref_camera_whitebalance_label_fluorescent">يالتىراق لامپا</string> + <string name="pref_camera_whitebalance_label_cloudy">بۇلۇتلۇق</string> + <!-- Default scene mode setting. --> + <!-- Settings screen, Select Scene mode --> + <string name="pref_camera_scenemode_title">مەنزىرە ھالىتى</string> + <!-- Settings menu, scene mode choices [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_auto">ئاپتوماتىك</string> + <!-- Scene mode that uses HDR (high dynamic range) [CHAR LIMIT=16] --> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_action">مەشغۇلات</string> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_night">كېچە</string> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_sunset">كۈن پېتىش</string> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> + <string name="pref_camera_scenemode_entry_party">يىغىلىش</string> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_auto">يوق</string> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_action">مەشغۇلات</string> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_night">كېچە</string> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_sunset">كۈن پېتىش</string> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_party">يىغىلىش</string> + <!-- Settings menu countdown timer labels [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label">تەتۈر سانىغۇچ ۋاقىت خاتىرىلىگۈچ</string> + <!-- Settings menu countdown timer off [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_off">ۋاقىت خاتىرىلىگۈچ تاقاق</string> + <!-- Settings menu countdown timer 1 second [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_one">1 سېكۇنت</string> + <!-- Settings menu countdown timer 3 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_three">3 سېكۇنت</string> + <!-- Settings menu countdown timer 10 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_ten">10 سېكۇنت</string> + <!-- Settings menu countdown timer 15 seconds [CHAR LIMIT=50] --> + <string name="pref_camera_countdown_label_fifteen">15 سېكۇنت</string> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> + <string name="not_selectable_in_scene_mode">تەڭشەكنى مەنزىرە ھالىتىدە تاللىغىلى بولمايدۇ.</string> + <!-- Exposure settings in preference --> + <string name="pref_exposure_title">نۇر ئۆتۈش</string> + <!-- menu label exposure compensation [CHAR LIMIT=50] --> + <string name="pref_exposure_label">نۇر ئۆتۈش</string> + <!-- Default HDR entry value --> + <!-- HDR label ON [CHAR LIMIT=60] --> + <!-- switch camera label back [CHAR LIMIT=60] --> + <string name="pref_camera_id_label_back">ئالدى كامېرا</string> + <!-- switch camera label front [CHAR LIMIT=60] --> + <string name="pref_camera_id_label_front">كەينى كامېرا</string> + <!-- Dialog "OK" button. Dismisses dialog. --> + <string name="dialog_ok">جەزملە</string> + <!-- Low-memory dialog message [CHAR LIMT=NONE] --> + <string name="spaceIsLow_content" product="nosdcard">USB ساقلىغۇچ بوشلۇقىڭىز توشاي دېدى. سۈپەت تەڭشەكنى ئۆزگەرتىڭ ياكى بەزى سۈرەتلەرنى ياكى باشقا ھۆججەتلەرنى ئۆچۈرۈڭ.</string> + <!-- Low-memory dialog message [CHAR LIMIT=NONE] --> + <string name="spaceIsLow_content" product="default">SD كارتا بوشلۇقىڭىز توشاي دېدى. سۈپەت تەڭشەكنى ئۆزگەرتىڭ ياكى بەزى سۈرەتلەرنى ياكى باشقا ھۆججەتلەرنى ئۆچۈرۈڭ.</string> + <!-- Camera format string for new image files. Passed to java.text.SimpleDateFormat. --> + <!-- Video Camera format string for new video files. Passed to java.text.SimpleDateFormat. --> + <!-- Filename prefix for panorama output. --> + <!-- The message shown when video record reaches size limit. --> + <string name="video_reach_size_limit">چوڭلۇق چېكىگە يەتتى.</string> + <!-- The text shown when the panorama panning speed is to fast [CHAR LIMIT=12] --> + <string name="pano_too_fast_prompt">بەك تېز</string> + <!-- The text shown in the progress dialog when panorama preview is generating in the background [CHAR LIMIT=30] --> + <string name="pano_dialog_prepare_preview">پۈتۈن مەنزىرە تەييارلاۋاتىدۇ</string> + <!-- The text shown in the dialog when panorama saving failed [CHAR LIMIT=40] --> + <string name="pano_dialog_panorama_failed">پۈتۈن مەنزىرە ساقلىيالمايدۇ.</string> + <!-- The text shown on the dialog title in the dialogs for Panorama [CHAR LIMIT=12] --> + <string name="pano_dialog_title">پۈتۈن مەنزىرە</string> + <!-- The text shown on the top-left corner of the screen to indicate the capturing is on going [CHAR LIMIT=27] --> + <string name="pano_capture_indication">پۈتۈن مەنزىرە سۈرەت تارتىۋاتىدۇ</string> + <!-- The text shown in the progress dialog when waiting for previous panorama finishing [CHAR LIMIT=40] --> + <string name="pano_dialog_waiting_previous">ئالدىنقى پۈتۈن مەنزىرە سۈرەتنىڭ بىر تەرەپ قىلىنىشىنى كۈتۈۋاتىدۇ</string> + <!-- The text shown on the bottom-left corner of the screen to indicate that the saving is in process [CHAR LIMIT=13] --> + <string name="pano_review_saving_indication_str">ساقلاۋاتىدۇ…</string> + <!-- The text shown on the screen to indicate that the panorama is rendering [CHAR LIMIT=27] --> + <string name="pano_review_rendering">پۈتۈن مەنزىرە سۈرەتنى رەڭلەۋاتىدۇ</string> + <!-- Toast telling users tapping on the viewfinder will trigger autofocus [CHAR LIMIT=28] --> + <string name="tap_to_focus">چېكىسلە فوكۇس توغرىلايدۇ.</string> + <!-- Default effect setting that clears the effect. --> + <!-- Title of video effect setting popup window --> + <string name="pref_video_effect_title">ئالاھىدە ئۈنۈم</string> + <!-- Effect setting item that clear the effect. [CHAR LIMIT=14] --> + <string name="effect_none">يوق</string> + <!-- Effect setting item that squeezes the face. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_squeeze">شەيتان ئەينەك</string> + <!-- Effect setting item that makes eyes big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_eyes">چوڭ كۆز</string> + <!-- Effect setting item that makes mouth big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_mouth">چوڭ ئېغىز</string> + <!-- Effect setting item that makes mouth small. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_small_mouth">كىچىك ئېغىز</string> + <!-- Effect setting item that makes nose big. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_big_nose">چوڭ بۇرۇن</string> + <!-- Effect setting item that makes eyes small. [CHAR LIMIT=14] --> + <string name="effect_goofy_face_small_eyes">كىچىك كۆز</string> + <!-- Effect setting item that replaces background with Android in Space. [CHAR LIMIT=14] --> + <string name="effect_backdropper_space">ئالەم تەگلىكى</string> + <!-- Effect setting item that replaces background with a sunset. [CHAR LIMIT=14] --> + <string name="effect_backdropper_sunset">كۈن پېتىش</string> + <!-- Effect setting item that replaces background with video from gallery. [CHAR LIMIT=14] --> + <string name="effect_backdropper_gallery">سىنلىرىڭىز</string> + <!-- Message displayed in overlay during background replacement training [CHAR LIMIT=180]--> + <string name="bg_replacement_message">ئۈسكۈنىنى پەسكە قويۇڭ.\"\n\"كۆرۈنۈش ئالدىدىن بىر دەم ئايرىلىڭ.</string> + <!-- Toast telling users tapping on the viewfinder will take a picture [CHAR LIMIT=54] --> + <string name="video_snapshot_hint">سىنغا ئېلىۋاتقاندا چېكىلسە بىر پارچە سۈرەت تارتىدۇ.</string> + <!-- Announcement telling users video recording has just started [CHAR LIMIT=NONE] --> + <string name="video_recording_started">سىنغا ئېلىش باشلاندى.</string> + <!-- Announcement telling users video recording has just stopped [CHAR LIMIT=NONE] --> + <string name="video_recording_stopped">سىنغا ئېلىش توختىدى.</string> + <!-- Toast telling users video snapshot is disabled when the effects are on and a user tries to tap on the viewfinder [CHAR LIMIT=65] --> + <string name="disable_video_snapshot_hint">ئالاھىدە ئۈنۈمنى قوزغاتقاندا سىندىن سۈرەت تۇتۇش چەكلىنىدۇ.</string> + <!-- A button in effect setting popup to clear the effect. [CHAR LIMIT=26] --> + <string name="clear_effects">ئۈنۈمنى تازىلا</string> + <!-- Title of category for silly face effects. [CHAR LIMIT=26] --> + <string name="effect_silly_faces">كۈلكىلىك چىرايلار</string> + <!-- Title of category for background replacement effects. [CHAR LIMIT=26] --> + <string name="effect_background">تەگلىك</string> + <!-- The shutter button. [CHAR LIMIT = NONE] --> + <string name="accessibility_shutter_button">Shutter توپچا</string> + <!-- The menu button. [CHAR LIMIT = NONE] --> + <string name="accessibility_menu_button">تىزىملىك توپچا</string> + <!-- The button to review the thumbnail. [CHAR LIMIT = NONE] --> + <string name="accessibility_review_thumbnail">يېقىنقى سۈرەت</string> + <!-- The front/back camera switch. [CHAR LIMIT = NONE] --> + <string name="accessibility_camera_picker">ئالدى كەينى كامېرا ئالماشتۇرغۇچ</string> + <!-- The mode picker to switch between camera, video and panorama. [CHAR LIMIT = NONE] --> + <string name="accessibility_mode_picker">كامېرا، سىن ياكى پۈتۈن مەنزىرە تاللىغۇچ</string> + <!-- The button to switch to the second-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <string name="accessibility_second_level_indicators">تېخىمۇ كۆپ تەڭشەك تىزگىنلىرى</string> + <!-- The button to back to the first-level indicators of the camera settings. [CHAR LIMIT = NONE] --> + <string name="accessibility_back_to_first_level">تەڭشەك تىزگىنىنى ياپ</string> + <!-- The zoom control button. [CHAR LIMIT = NONE] --> + <string name="accessibility_zoom_control">يىراق يېقىن تىزگىنى</string> + <!-- The decrement button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <string name="accessibility_decrement">%1$s نى يىراقلات</string> + <!-- The increment button in camera preference such as exposure, picture size. [CHAR LIMIT = NONE] --> + <string name="accessibility_increment">%1$s نى يېقىنلات</string> + <!-- The check box in camera settings, such as store location. [CHAR LIMIT = NONE] --> + <string name="accessibility_check_box">%1$s كۆپ تاللاش رامكىسى</string> + <!-- The button to switch to Camera mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_camera">سۈرەتكە ئالماشتۇر</string> + <!-- The button to switch to Video mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_video">سىنغا ئالماشتۇر</string> + <!-- The button to switch to Panorama mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_panorama">پۈتۈن مەنزىرىگە ئالماشتۇر</string> + <!-- The button to switch to new Panorama mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_new_panorama">يېڭى پۈتۈن مەنزىرىگە ئالماشتۇر</string> + <!-- The button to switch to the Re-Focus mode. [CHAR LIMIT = NONE] --> + <string name="accessibility_switch_to_refocus">قايتا فوكۇسلاشقا ئالماشتۇر</string> + <!-- The button in review mode indicating that the photo taking, video recording, and panorama saving session should be canceled [CHAR LIMIT = NONE] --> + <string name="accessibility_review_cancel">ئالدىن كۆزىتىشتىن ۋاز كەچ</string> + <!-- The button in review mode indicating that the taken photo/video is OK to be attached/uploaded [CHAR LIMIT = NONE] --> + <string name="accessibility_review_ok">ئالدىن كۆزىتىش تامام</string> + <!-- button in review mode indicate the user want to retake another photo/video for attachment [ +CHAR LIMIT = NONE] --> + <string name="accessibility_review_retake">ئالدىن كۆزىتىشنى قايتا تارت</string> + <!-- The button to play the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_play_video">سىن چال</string> + <!-- The button to pause the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_pause_video">سىننى ۋاقىتلىق توختات</string> + <!-- The button to reload the video. [CHAR LIMIT = NONE] --> + <string name="accessibility_reload_video">سىننى قايتا يۈكلە</string> + <!-- The time bar of the media player. [CHAR LIMIT = NONE] --> + <string name="accessibility_time_bar">سىن چالغۇچ ۋاقىت بالداق</string> + <!-- TODO: remove the string as it is a work-around solution to bypass the default speak of the element type. --> + <!-- Default text for a button that can be toggled on and off. --> + <string name="capital_on">ئوچۇق</string> + <!-- Default text for a button that can be toggled on and off. --> + <string name="capital_off">تاقاق</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_off">تاقاق</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_500">0.5 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1000">1 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1500">1.5 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_2000">2 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_2500">2.5 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_3000">3 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_4000">4 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_5000">5 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_6000">6 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_10000">10 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_12000">12 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_15000">15 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_24000">24 سېكۇنت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_30000">0-5 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_60000">1 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_90000">1.5 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_120000">2 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_150000">2.5 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_180000">3 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_240000">4 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_300000">5 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_360000">6 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_600000">10 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_720000">12 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_900000">15 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1440000">24 مىنۇت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_1800000">0.5 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_3600000">1 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_5400000">1.5 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_7200000">2 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_9000000">2.5 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_10800000">3 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_14400000">4 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_18000000">5 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_21600000">6 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_36000000">10 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_43200000">12 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_54000000">15 سائەت</string> + <!-- Text to indicate time lapse recording frame interval [CHAR LIMIT = 30] --> + <string name="pref_video_time_lapse_frame_interval_86400000">24 سائەت</string> + <!-- Seconds: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_seconds">سېكۇنت</string> + <!-- Minutes: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_minutes">مىنۇت</string> + <!-- Hours: a unit of time for time lapse intervals. [CHAR LIMIT = 20] --> + <string name="time_lapse_hours">سائەت</string> + <!-- The button to confirm time-lapse setting changes. [CHAR LIMIT = 20] --> + <string name="time_lapse_interval_set">تامام</string> + <!-- Title in time interval picker for setting time interval. [CHAR LIMIT = 30]--> + <string name="set_time_interval">\"ۋاقىت ئارىلىق تەڭشىكى\"</string> + <!-- Help text that is shown when the time lapse feature is turned off. [CHAR LIMIT = 180]--> + <string name="set_time_interval_help">ۋاقىت كېچىكتۈرۈپ سۈرەت تارتىش ئىقتىدارى تاقالدى. ۋاقىت ئارىلىقى تەڭشىمەكچى بولغاندا، ئالدى بىلەن شۇ ئىقتىدارنى ئېچىڭ.</string> + <!-- Help text that is shown when the countdown timer is turned off. [CHAR LIMIT = 180]--> + <string name="set_timer_help">تەتۈر ساناق ۋاقىت خاتىرىلىغۇچ تاقاق. سۈرەت تارتىشتىن ئىلگىرى تەتۈر ساناق ئۈچۈن، ئالدى بىلەن شۇ ئىقتىدارنى ئېچىڭ.</string> + <!-- Title in timer setting for setting the duration for the countdown timer. [CHAR LIMIT = 50]--> + <string name="set_duration">داۋاملىشىش ۋاقىت تەڭشىكى سېكۇنت</string> + <!-- On-screen hint during timer countdown for taking a photo. [CHAR LIMIT = 60]--> + <string name="count_down_title_text">سۈرەت تارتىش تەتۈر ساناق ساناۋاتىدۇ</string> + <!-- Title for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 50] --> + <string name="remember_location_title">سۈرەت تارتقان ئورۇننى ئەستە تۇتامدۇ؟</string> + <!-- Message for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = None] --> + <string name="remember_location_prompt">سىز تارتقان سىن ۋە سۈرەتلىرىڭىزگە تارتقان ئورۇن بەلگىسىنى سالىدۇ.\"\n\n\"باشقا ئەپلەر سىز ساقلىغان سۈرەتلەرنى كۆرگەندە بۇ ئۇچۇرلارنى زىيارەت قىلالايدۇ.</string> + <!-- Negative answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <string name="remember_location_no">ياق، رەھمەت</string> + <!-- Positive answer for first run dialog asking if the user wants to remember photo locations [CHAR LIMIT = 20] --> + <string name="remember_location_yes">ھەئە</string> + <!-- Menu item to launch the camera app [CHAR LIMIT=25] --> + <string name="menu_camera">كامېرا</string> + <!-- Menu item to search for photos [CHAR LIMIT=25] --> + <string name="menu_search">ئىزدە</string> + <!-- Title for the all photos tab [CHAR LIMIT=25] --> + <string name="tab_photos">سۈرەتلەر</string> + <!-- Title for the albums tab [CHAR LIMIT=25] --> + <string name="tab_albums">سۈرەت توپلىمى</string> + <!-- Camera menu labels --> + <!-- more options label [CHAR LIMIT=50] --> + <string name="camera_menu_more_label">تېخىمۇ كۆپ تاللانما</string> + <!-- settings label [CHAR LIMIT=50] --> + <string name="camera_menu_settings_label">تەڭشەكلەر</string> + <!-- String indicating how many photos are in an album [CHAR LIMIT=15] --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-uk/cm_strings.xml b/res/values-uk/cm_strings.xml new file mode 100644 index 000000000..4713de03e --- /dev/null +++ b/res/values-uk/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Час запису</string> +</resources> diff --git a/res/values-uk/codeaurora_strings.xml b/res/values-uk/codeaurora_strings.xml new file mode 100644 index 000000000..075c5f344 --- /dev/null +++ b/res/values-uk/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Крок</string> + <string name="step_option_desc">Налаштувати швидкий крок вперед/назад</string> + <string name="setp_option_three_second">3 секунди</string> + <string name="setp_option_six_second">6 секунд</string> + <string name="loop">"Петля"</string> + <string name="single">"Одиночна"</string> + <string name="stereo">"Стерео"</string> + <string name="speaker_on">Динамік УВІМК</string> + <string name="speaker_off">Динамік ВИМК</string> + <string name="speaker_need_headset">Підключіть навушники для використання цієї функції.</string> + <string name="single_track">"Одна композиція"</string> + <string name="input_url">"Введіть URL-адресу"</string> + <string name="streaming_settings">"Налаштування трансляції"</string> + <string name="next">"Наступна"</string> + <string name="previous">"Попередня"</string> + <string name="buffer_size">Розмір буфера</string> + <string name="apn">Бажаний APN</string> + <string name="rtp_min_port">Мін порт</string> + <string name="rtp_max_port">Макс порт</string> + <string name="set_rtp_min_port">Встановити мін. порт</string> + <string name="set_rtp_max_port">Встановити макс. порт</string> + <string name="set_buffer_size">Встановити розмір буфера</string> + <string name="set_apn">Виберіть бажаний APN</string> + <string name="setting">Налаштування</string> + <string name="server_timeout_title">"Час очікування сервера"</string> + <string name="server_timeout_message">"Підключатися до сервера повторно, щоб відтворити відео?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Не вдалося підключитися, спроба встановити підключення з %1$d\u2026"</string> + <string name="media_controller_live">Наживо</string> + <string name="media_controller_playing">Відтворюється</string> + <string name="media_controller_connecting">Підключення\u2026</string> + <string name="bookmark_add">"Додати закладку"</string> + <string name="bookmark_display">"Показати закладки"</string> + <string name="bookmark_empty">"Немає закладок"</string> + <string name="bookmark_exist">"Закладка вже існує"</string> + <string name="bookmark_add_success">"Закладку додано"</string> + <string name="bookmark_list">"Закладки"</string> + <string name="bookmark_title">"Назва"</string> + <string name="bookmark_location">"Місцезнаходження"</string> + <string name="delete_all">"Видалити все"</string> + <string name="default_title">"Назва за замовчуванням"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Більше зображень</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Не можна вимкнути звук: відео не підтримується</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Не встановлено жодних програм з картами, щоб показати місце.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Підсилення НЧ</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D-ефект</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Аудіо ефекти</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Підключіть навушники для цих ефектів.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Даний відеофайл не може бути обрізаний</string> + <string name="no_permission_for_drm">Вибачте, але відправка захищених DRM файлів неможлива</string> + <string name="drm_license_info">Відомості про ліцензію DRM</string> +</resources> diff --git a/res/values-ur-rPK/cm_strings.xml b/res/values-ur-rPK/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-ur-rPK/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-ur-rPK/codeaurora_strings.xml b/res/values-ur-rPK/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-ur-rPK/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-uz-rUZ/cm_strings.xml b/res/values-uz-rUZ/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-uz-rUZ/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-uz-rUZ/codeaurora_strings.xml b/res/values-uz-rUZ/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-uz-rUZ/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values-v21/colors.xml b/res/values-v21/colors.xml new file mode 100644 index 000000000..4ebfd2881 --- /dev/null +++ b/res/values-v21/colors.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- configuration for album set page --> + <color name="albumset_background">#ff21272b</color> + <color name="albumset_placeholder">#37474F</color> + <color name="albumset_label_background">#EE37474F</color> + <color name="albumset_label_title">#FBFBFB</color> + <color name="albumset_label_count">#A9ABAD</color> + + <!-- configuration for album page --> + <color name="album_background">#ff21272b</color> + <color name="album_placeholder">#37474F</color> + + <!-- configuration for photo page --> + <color name="photo_background">#ff21272b</color> + <color name="photo_placeholder">#37474F</color> + + <!-- configuration for manage cache page --> + <color name="cache_background">#ff21272b</color> + <color name="cache_placeholder">#37474F</color> + + <color name="bitmap_screennail_placeholder">#37474F</color> + + <color name="slideshow_background">#ff21272b</color> + + <color name="button_dark_transparent_background">#263238</color> + + <color name="ingest_highlight_semitransparent">#8833b5e5</color> + <color name="ingest_date_tile_text">#33b5e5</color> + + <!-- FAB --> + <color name="fab">#FF9800</color> + <color name="floating_action_button_touch_tint">#FFB74D</color> + <color name="floating_action_button_icon_color">#ffffff</color> + +</resources> diff --git a/res/values-v21/styles.xml b/res/values-v21/styles.xml new file mode 100644 index 000000000..75457ca1a --- /dev/null +++ b/res/values-v21/styles.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="Theme.GalleryBase" parent="android:Theme.Material"> + <item name="android:colorPrimary">@color/primary</item> + <item name="android:colorPrimaryDark">@color/primary_dark</item> + <item name="android:colorAccent">@color/accent</item> + <item name="listPreferredItemHeightSmall">?android:attr/listPreferredItemHeightSmall</item> + <item name="switchStyle">@android:style/Widget.CompoundButton</item> + </style> + <style name="Theme.Gallery.Dialog" parent="android:Theme.Material.Dialog"/> + <style name="Theme.Gallery" parent="Theme.GalleryBase"> + <item name="android:displayOptions"></item> + <item name="android:windowContentOverlay">@null</item> + <item name="android:actionBarStyle">@style/Material.ActionBar</item> + <item name="android:colorBackground">@color/material_blue_grey_950</item> + <item name="android:colorBackgroundCacheHint">@color/material_blue_grey_950</item> + <item name="android:actionModeBackground">@color/primary</item> + </style> + <style name="Theme.Crop" parent="Theme.GalleryBase"> + <item name="android:displayOptions"></item> + <item name="android:windowContentOverlay">@null</item> + <item name="android:actionBarStyle">@style/Material.ActionBar</item> + <item name="android:colorBackground">@null</item> + <item name="android:colorBackgroundCacheHint">@null</item> + <item name="android:windowBackground">@color/filtershow_background</item> + </style> + <style name="Material.ActionBar" parent="android:Widget.Material.ActionBar"> + <item name="android:title"></item> + <item name="android:displayOptions">useLogo|showTitle</item> + <item name="android:background">@color/primary</item> + <item name="android:backgroundStacked">@null</item> + <item name="android:titleTextStyle">@style/ActionBarTitle</item> + <item name="android:elevation">@dimen/action_bar_elevation</item> + </style> + <style name="ActionBarTitle" parent="android:style/TextAppearance.Material.Widget.ActionBar.Title"> + <item name="android:textStyle">bold</item> + <item name="android:textSize">18sp</item> + <item name="android:textAllCaps">true</item> + </style> + <style name="ActionBarTwoLinePrimary" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title"></style> + <style name="ActionBarTwoLineSecondary" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Subtitle"></style> + <style name="ActionBarTwoLineItem"> + <item name="android:background">?android:attr/activatedBackgroundIndicator</item> + </style> + <style name="Theme.Photos.Gallery" parent="android:Theme.Material"> + </style> + <style name="Theme.Photos.Fullscreen" parent="android:Theme.Material"> + </style> +</resources> diff --git a/res/values-vi/cm_strings.xml b/res/values-vi/cm_strings.xml new file mode 100644 index 000000000..ef477326a --- /dev/null +++ b/res/values-vi/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Thời gian ghi</string> +</resources> diff --git a/res/values-vi/codeaurora_strings.xml b/res/values-vi/codeaurora_strings.xml new file mode 100644 index 000000000..bf25c88c8 --- /dev/null +++ b/res/values-vi/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Bước</string> + <string name="step_option_desc">Tuỳ chỉnh bước tới/lui nhanh</string> + <string name="setp_option_three_second">3 giây</string> + <string name="setp_option_six_second">16 giây</string> + <string name="loop">"Lặp lại"</string> + <string name="single">"Đơn"</string> + <string name="stereo">"Âm thanh nổi"</string> + <string name="speaker_on">Loa ngoài BẬT</string> + <string name="speaker_off">Loa ngoài TẮT</string> + <string name="speaker_need_headset">Cắm tai nghe để dùng tính năng này.</string> + <string name="single_track">"Một bài hát"</string> + <string name="input_url">"Nhập URL"</string> + <string name="streaming_settings">"Cài đặt phát trực tuyến"</string> + <string name="next">"Tiếp theo"</string> + <string name="previous">"Trước"</string> + <string name="buffer_size">Kích cỡ bộ đệm</string> + <string name="apn">APN ưu tiên</string> + <string name="rtp_min_port">Cổng nhỏ nhất</string> + <string name="rtp_max_port">Cổng lớn nhất</string> + <string name="set_rtp_min_port">Đặt cổng nhỏ nhất</string> + <string name="set_rtp_max_port">Đặt cổng lớn nhất</string> + <string name="set_buffer_size">Đặt kích thước bộ đệm</string> + <string name="set_apn">Chọn APN ưu tiên</string> + <string name="setting">Cài đặt</string> + <string name="server_timeout_title">"Thời gian chờ máy chủ"</string> + <string name="server_timeout_message">"Kết nối lại đến máy chủ để phát video?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Kết nối thất bại, đang thử kết nối lại đến %1$d\u2026"</string> + <string name="media_controller_live">Trực tiếp</string> + <string name="media_controller_playing">Đang phát</string> + <string name="media_controller_connecting">Đang kết nối\u2026</string> + <string name="bookmark_add">"Thêm dấu trang"</string> + <string name="bookmark_display">"Hiện dấu trang"</string> + <string name="bookmark_empty">"Không có dấu trang"</string> + <string name="bookmark_exist">"Dấu trang đã tồn tại"</string> + <string name="bookmark_add_success">"Đã thêm dấu trang"</string> + <string name="bookmark_list">"Dấu trang"</string> + <string name="bookmark_title">"Tiêu đề"</string> + <string name="bookmark_location">"Vị trí"</string> + <string name="delete_all">"Xoá tất cả"</string> + <string name="default_title">"Tiêu đề mặc định"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">Nhiều ảnh hơn</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Không thể ngắt tiếng: video không hỗ trợ</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">Không có ứng dụng bản đồ để hiện vị trí.</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Tăng bass</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">Hiệu ứng 3D</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Hiệu ứng âm thanh</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Cắm tai nghe cho những hiệu ứng này.</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">Xin lỗi, không thể cắt video này</string> + <string name="no_permission_for_drm">Rất tiếc, không thể chia sẻ tập tin được bảo vệ DRM</string> + <string name="drm_license_info">Thông tin giấy phép DRM</string> +</resources> diff --git a/res/values-xlarge/dimensions.xml b/res/values-xlarge/dimensions.xml index 85329e012..ba654d5a5 100644 --- a/res/values-xlarge/dimensions.xml +++ b/res/values-xlarge/dimensions.xml @@ -22,6 +22,8 @@ <!-- configuration for album set page --> <integer name="albumset_rows_land">3</integer> <integer name="albumset_rows_port">5</integer> + <integer name="albumset_cols_land">5</integer> + <integer name="albumset_cols_port">3</integer> <dimen name="albumset_title_font_size">14sp</dimen> <dimen name="albumset_count_font_size">11sp</dimen> <dimen name="albumset_title_right_margin">23dp</dimen> @@ -30,4 +32,6 @@ <!-- configuration for album page --> <integer name="album_rows_land">3</integer> <integer name="album_rows_port">5</integer> + <integer name="album_cols_land">5</integer> + <integer name="album_cols_port">3</integer> </resources> diff --git a/res/values-zh-rCN/cm_strings.xml b/res/values-zh-rCN/cm_strings.xml new file mode 100644 index 000000000..ffa5bb6a4 --- /dev/null +++ b/res/values-zh-rCN/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">已记录时间</string> +</resources> diff --git a/res/values-zh-rCN/codeaurora_strings.xml b/res/values-zh-rCN/codeaurora_strings.xml new file mode 100644 index 000000000..3c6690ab5 --- /dev/null +++ b/res/values-zh-rCN/codeaurora_strings.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">步长</string> + <string name="step_option_desc">自定义快进/倒带步长</string> + <string name="setp_option_three_second">3 秒</string> + <string name="setp_option_six_second">6 秒</string> + <string name="loop">"循环"</string> + <string name="single">"单声道"</string> + <string name="stereo">"立体声"</string> + <string name="speaker_on">扬声器 开</string> + <string name="speaker_off">扬声器 关</string> + <string name="speaker_need_headset">插入耳机以使用此功能。</string> + <string name="single_track">"单音轨"</string> + <string name="input_url">"输入 URL"</string> + <string name="streaming_settings">"流媒体设置"</string> + <string name="next">"下一个"</string> + <string name="previous">"上一个"</string> + <string name="buffer_size">缓冲大小</string> + <string name="apn">首选 APN</string> + <string name="rtp_min_port">最小端口</string> + <string name="rtp_max_port">最大端口</string> + <string name="set_rtp_min_port">设置最小端口</string> + <string name="set_rtp_max_port">设置最大端口</string> + <string name="set_buffer_size">设置缓冲区大小</string> + <string name="set_apn">选择首选的 APN</string> + <string name="setting">设置</string> + <string name="server_timeout_title">"服务器超时"</string> + <string name="server_timeout_message">"重新连接到服务器以便继续播放视频?"</string> + <string name="videoview_error_text_cannot_connect_retry">"连接失败,正在尝试重新连接到 %1$d\u2026"</string> + <string name="media_controller_live">直播</string> + <string name="media_controller_playing">正在播放</string> + <string name="media_controller_connecting">正在连接\u2026</string> + <string name="bookmark_add">"添加书签"</string> + <string name="bookmark_display">"显示书签"</string> + <string name="bookmark_empty">"没有书签"</string> + <string name="bookmark_exist">"书签已存在"</string> + <string name="bookmark_add_success">"书签已添加"</string> + <string name="bookmark_list">"书签"</string> + <string name="bookmark_title">"标题"</string> + <string name="bookmark_location">"位置"</string> + <string name="delete_all">"删除所有"</string> + <string name="default_title">"默认标题"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">更多图片</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">不能静音:视频不支持</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">找不到用于显示地点的地图应用。</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">低音增强</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D 效果</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">音效</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">插上耳机来享受这些效果。</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">抱歉,此视频文件不能被修剪</string> + <string name="no_permission_for_drm">抱歉,受 DRM 保护的文件不能共享</string> + <string name="drm_license_info">DRM 许可证信息</string> +</resources> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 91a6358c2..e977e177c 100644..100755 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -105,6 +105,7 @@ <string name="group_by_size" msgid="153766174950394155">"按大小分组"</string> <string name="untagged" msgid="7281481064509590402">"未加标签"</string> <string name="no_location" msgid="4043624857489331676">"无位置信息"</string> + <string name="no_faces">"无人物信息"</string> <string name="no_connectivity" msgid="7164037617297293668">"出现网络问题,系统无法识别某些位置。"</string> <string name="sync_album_error" msgid="1020688062900977530">"无法下载此相册中的照片,请稍后重试。"</string> <string name="show_images_only" msgid="7263218480867672653">"仅限图片"</string> @@ -436,4 +437,9 @@ <item quantity="one" msgid="6949174783125614798">"%1$d张照片"</item> <item quantity="other" msgid="3813306834113858135">"%1$d张照片"</item> </plurals> + + <string name="text_makeup_whiten">美白</string> + <string name="text_makeup_Soften">磨皮</string> + <string name="text_makeup_trimface">瘦脸</string> + <string name="text_makeup_bigeye">大眼</string> </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..6b111e056 --- /dev/null +++ b/res/values-zh-rHK/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-zh-rHK/codeaurora_strings.xml b/res/values-zh-rHK/codeaurora_strings.xml new file mode 100644 index 000000000..48c9ff0c9 --- /dev/null +++ b/res/values-zh-rHK/codeaurora_strings.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">步驟</string> + <string name="step_option_desc">自訂快進/後退步驟</string> + <string name="setp_option_six_second">6 秒</string> + <string name="loop">"循環"</string> + <string name="single">"單聲道"</string> + <string name="stereo">"立體聲"</string> + <string name="speaker_on">開啟喇叭</string> + <string name="speaker_off">關閉喇叭</string> + <string name="speaker_need_headset">插上耳機才能使用此功能。</string> + <string name="single_track">"單音軌"</string> + <string name="input_url">"輸入 URL"</string> + <string name="streaming_settings">"串流設定"</string> + <string name="next">"下一首"</string> + <string name="previous">"上一首"</string> + <string name="buffer_size">緩衝區大小</string> + <string name="apn">首選 APN</string> + <string name="rtp_min_port">最小埠</string> + <string name="rtp_max_port">最大埠</string> + <string name="set_rtp_min_port">設定最小埠</string> + <string name="set_rtp_max_port">設定最大埠</string> + <string name="set_buffer_size">設定緩衝區大小</string> + <string name="set_apn">選擇首選 APN</string> + <string name="setting">設定</string> + <string name="server_timeout_title">"伺服器逾時"</string> + <string name="videoview_error_text_cannot_connect_retry">"連綫失敗,嘗試重新連綫至 %1$d\u2026"</string> + <string name="media_controller_live">直播</string> + <string name="media_controller_playing">正在播放</string> + <string name="media_controller_connecting">正在連綫\u2026</string> + <string name="bookmark_add">"新增書籤"</string> + <string name="bookmark_display">"顯示書籤"</string> + <string name="bookmark_empty">"無書籤"</string> + <string name="bookmark_exist">"書籤已存在"</string> + <string name="bookmark_add_success">"書籤已新增"</string> + <string name="bookmark_list">"書籤"</string> + <string name="bookmark_title">"標題"</string> + <string name="bookmark_location">"位置"</string> + <string name="delete_all">"全部刪除"</string> + <string name="default_title">"預設標題"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">更多圖像</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">無法靜音:影片不支援</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">沒有安裝地圖應用程式供顯示位置。</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">低音增強</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D 效果</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">音效</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">插入耳機來享受這些效果。</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">抱歉,此影片檔無法被修剪</string> +</resources> diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 68317d582..434190b43 100644..100755 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -105,6 +105,7 @@ <string name="group_by_size" msgid="153766174950394155">"依大小分類"</string> <string name="untagged" msgid="7281481064509590402">"無標記"</string> <string name="no_location" msgid="4043624857489331676">"無地點資訊"</string> + <string name="no_faces">"無人物資訊"</string> <string name="no_connectivity" msgid="7164037617297293668">"網絡發生問題,因此部分位置無法辨別。"</string> <string name="sync_album_error" msgid="1020688062900977530">"無法下載這本相簿中的相片,請稍後再試。"</string> <string name="show_images_only" msgid="7263218480867672653">"僅顯示相片"</string> diff --git a/res/values-zh-rTW/cm_strings.xml b/res/values-zh-rTW/cm_strings.xml new file mode 100644 index 000000000..b9e0b0e19 --- /dev/null +++ b/res/values-zh-rTW/cm_strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">記錄時間</string> +</resources> diff --git a/res/values-zh-rTW/codeaurora_strings.xml b/res/values-zh-rTW/codeaurora_strings.xml new file mode 100644 index 000000000..62a61f429 --- /dev/null +++ b/res/values-zh-rTW/codeaurora_strings.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">步幅</string> + <string name="step_option_desc">自訂快進/快退步驟</string> + <string name="setp_option_three_second">3 秒</string> + <string name="setp_option_six_second">6 秒</string> + <string name="loop">"重複"</string> + <string name="single">"單次"</string> + <string name="stereo">"立體聲"</string> + <string name="speaker_on">開啟揚聲器</string> + <string name="speaker_off">關閉揚聲器</string> + <string name="speaker_need_headset">插上耳機即可使用此功能。</string> + <string name="single_track">"單音軌"</string> + <string name="input_url">"輸入網址"</string> + <string name="streaming_settings">"串流媒體設定"</string> + <string name="next">"下一首"</string> + <string name="previous">"上一首"</string> + <string name="buffer_size">緩衝區大小</string> + <string name="apn">首選 APN</string> + <string name="rtp_min_port">最小埠</string> + <string name="rtp_max_port">最大埠</string> + <string name="set_rtp_min_port">設定最小埠</string> + <string name="set_rtp_max_port">設定最大埠</string> + <string name="set_buffer_size">設置緩衝區大小</string> + <string name="set_apn">選取首選的 APN</string> + <string name="setting">設定</string> + <string name="server_timeout_title">"伺服器逾時"</string> + <string name="server_timeout_message">"重新連接至伺服器並繼續播放影片嗎?"</string> + <string name="videoview_error_text_cannot_connect_retry">"連接失敗,嘗試重新連接至「%1$d」\u2026"</string> + <string name="media_controller_live">直播</string> + <string name="media_controller_playing">正在播放</string> + <string name="media_controller_connecting">正在連接\u2026</string> + <string name="bookmark_add">"新增書籤"</string> + <string name="bookmark_display">"顯示書籤"</string> + <string name="bookmark_empty">"沒有書籤"</string> + <string name="bookmark_exist">"書籤已存在"</string> + <string name="bookmark_add_success">"已新增書籤"</string> + <string name="bookmark_list">"書籤"</string> + <string name="bookmark_title">"標題"</string> + <string name="bookmark_location">"位置"</string> + <string name="delete_all">"刪除全部"</string> + <string name="default_title">"預設標題"</string> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">更多圖片</string> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">無法靜音:影片不支援</string> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">沒有安裝地圖應用程式可顯示位置</string> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">低音強化</string> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D 效果</string> + <!-- The label for the audio effects menu. --> + <string name="audio_effects">音訊效果</string> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">接上耳機來享受這些效果。</string> + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + <!-- The tips of trimming video --> + <string name="fail_trim">抱歉,此影片檔案無法被剪輯</string> +</resources> diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 88fa970d9..7372aabd3 100644..100755 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -105,6 +105,7 @@ <string name="group_by_size" msgid="153766174950394155">"依大小分類"</string> <string name="untagged" msgid="7281481064509590402">"無標記"</string> <string name="no_location" msgid="4043624857489331676">"無位置資訊"</string> + <string name="no_faces">"無人物資訊"</string> <string name="no_connectivity" msgid="7164037617297293668">"網路發生問題,因此無法辨識部分位置。"</string> <string name="sync_album_error" msgid="1020688062900977530">"無法下載這個相簿中的相片,請稍後再試。"</string> <string name="show_images_only" msgid="7263218480867672653">"僅顯示圖片"</string> diff --git a/res/values-zu/cm_strings.xml b/res/values-zu/cm_strings.xml new file mode 100644 index 000000000..6b111e056 --- /dev/null +++ b/res/values-zu/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> +</resources> diff --git a/res/values-zu/codeaurora_strings.xml b/res/values-zu/codeaurora_strings.xml new file mode 100644 index 000000000..5936bedfc --- /dev/null +++ b/res/values-zu/codeaurora_strings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--Generated by crowdin.com--> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <!-- A label describing to link website [CHAR LIMIT=30] --> + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <!-- The label for the bass boost knob of the audio effects dialog. --> + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <!-- The label for the audio effects menu. --> + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <!-- The title of the audio effects dialog. --> + <!-- The tips of trimming video --> +</resources> diff --git a/res/values/attrs.xml b/res/values/attrs.xml index 5a00a695a..eadd4f20b 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -42,5 +42,9 @@ <attr name="largeIcons" format="reference" /> <attr name="images" format="reference" /> </declare-styleable> - + <declare-styleable name="Knob"> + <attr name="label" format="string" /> + <attr name="background" format="integer" /> + <attr name="foreground" format="integer" /> + </declare-styleable> </resources> diff --git a/res/values/bool.xml b/res/values/bool.xml index 464842ab4..3412d825d 100644..100755 --- a/res/values/bool.xml +++ b/res/values/bool.xml @@ -15,4 +15,9 @@ --> <resources> <bool name="show_action_bar_title">false</bool> -</resources>
\ No newline at end of file + <bool name="playlist">true</bool> + <bool name="loop">true</bool> + <bool name="stereo">true</bool> + <bool name="streaming">true</bool> + <bool name="speaker">true</bool> +</resources> diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml new file mode 100644 index 000000000..d6da3b19d --- /dev/null +++ b/res/values/cm_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2012-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"> + <!-- Text indicating the time a media item was recorded in details window [CHAR LIMIT=14] --> + <string name="record_time">Record time</string> +</resources>
\ No newline at end of file diff --git a/res/values/codeaurora_strings.xml b/res/values/codeaurora_strings.xml new file mode 100644 index 000000000..9bc0ff4e8 --- /dev/null +++ b/res/values/codeaurora_strings.xml @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +Copyright (C) 2014-2015 The CyanogenMod Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Strings for step option settins --> + <string name="setp_option_name">Step</string> + <string name="step_option_desc">Customize fast forward/rewind step</string> + <string name="setp_option_three_second">3 seconds</string> + <string name="setp_option_six_second">6 seconds</string> + + <string name="loop">"Loop"</string> + <string name="single">"Single"</string> + <string name="stereo">"Stereo"</string> + <string name="speaker_on">Speaker ON</string> + <string name="speaker_off">Speaker OFF</string> + <string name="speaker_need_headset">Plug in headphones to use this feature.</string> + <string name="single_track">"Single track"</string> + <string name="input_url">"Enter URL"</string> + <string name="streaming_settings">"Streaming settings"</string> + <string name="next">"Next"</string> + <string name="previous">"Previous"</string> + + <string name="rtp_rtcp" translatable="false">RTP/RTCP</string> + <string name="buffer_size">Buffer size</string> + <string name="apn">Preferred APN</string> + <string name="rtp_min_port">Min port</string> + <string name="rtp_max_port">Max port</string> + <string name="set_rtp_min_port">Set min port</string> + <string name="set_rtp_max_port">Set max port</string> + <string name="set_buffer_size">Set buffer size</string> + <string name="set_apn">Select preferred APN</string> + <string name="setting">Settings</string> + + <string name="server_timeout_title">"Server timeout"</string> + <string name="server_timeout_message">"Reconnect to the server to play the video?"</string> + <string name="videoview_error_text_cannot_connect_retry">"Connection failed, trying to reconnect to %1$d\u2026"</string> + <string name="media_controller_live">Live</string> + <string name="media_controller_playing">Playing</string> + <string name="media_controller_connecting">Connecting\u2026</string> + + <string name="bookmark_add">"Add bookmark"</string> + <string name="bookmark_display">"Show bookmarks"</string> + <string name="bookmark_empty">"No bookmarks"</string> + <string name="bookmark_exist">"Bookmark already exists"</string> + <string name="bookmark_add_success">"Bookmark added"</string> + <string name="bookmark_list">"Bookmarks"</string> + <string name="bookmark_title">"Title"</string> + <string name="bookmark_location">"Location"</string> + <string name="delete_all">"Delete all"</string> + <string name="default_title">"Default title"</string> + + <!-- A label describing to link website [CHAR LIMIT=30] --> + <string name="more_image">More images</string> + <string name="website_for_more_image" translatable="false"></string> + + <!-- Toast if the muted video is not supported. [CHAR LIMIT=80] --> + <string name="mute_nosupport">Can not mute : video not supported</string> + + <!-- The message is shown in toast when click showOnMap Menu and there is no map app --> + <string name="map_activity_not_found_err">There is no maps app installed to show the location.</string> + + <!-- The label for the bass boost knob of the audio effects dialog. --> + <string name="bass_boost_strength">Bass boost</string> + + <!-- The label for the 3d effect knob of the audio effects dialog. --> + <string name="virtualizer_strength">3D effect</string> + + <!-- The label for the audio effects menu. --> + <string name="audio_effects">Audio effects</string> + + <!-- Toast if user attempts to control audio effects without headphones plugged in. --> + <string name="headset_plug">Plug in headphones for these effects.</string> + + <!-- The title of the audio effects dialog. --> + <string name="audio_effects_dialog_title">Snapdragon Audio+</string> + + <!-- The tips of trimming video --> + <string name="fail_trim">Sorry, this video file can not be trimmed</string> + + <string name="no_permission_for_drm">Sorry, DRM protected files cannot be shared</string> + <string name="drm_license_info">DRM license info</string> +</resources> diff --git a/res/values/colors.xml b/res/values/colors.xml index 4fe918094..9396a99cf 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -15,7 +15,10 @@ --> <resources> <color name="default_background">#000</color> - + <color name="primary">#37474F</color> + <color name="primary_dark">#263238</color> + <color name="accent">#607D8B</color> + <color name="material_blue_grey_950">#ff21272b</color> <!-- configuration for album set page --> <color name="albumset_background">#1A1A1A</color> <color name="albumset_placeholder">#333</color> @@ -70,4 +73,8 @@ <color name="face_detect_fail">#80d05060</color> <color name="gray">#FFAAAAAA</color> + <color name="highlight">#f41e26</color> + <color name="lowlight">#650101</color> + <color name="grey">#e7e7e7</color> + <color name="disabled_knob">#575757</color> </resources> diff --git a/res/values/config.xml b/res/values/config.xml index 33e1e146b..25b8e6a49 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2012 The Android Open Source Project +<!-- Copyright (c) 2014, The Linux Foundation. All rights reserved. + Not a Contribution. + + Copyright (C) 2012 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -19,4 +22,7 @@ <resources> <!-- Maximum recording length in milliseconds. 0 means unlimited. --> <integer name="max_video_recording_length">0</integer> + <bool name="config_show_more_images">false</bool> + + <bool name="config_scroll_horizontal">false</bool> </resources> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index ef742d2b5..308f31c41 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -112,9 +112,13 @@ <!-- configuration for legacy album set page --> <integer name="albumset_rows_land">2</integer> <integer name="albumset_rows_port">3</integer> - <dimen name="albumset_padding_top">7dp</dimen> - <dimen name="albumset_padding_bottom">7dp</dimen> - <dimen name="albumset_slot_gap">7dp</dimen> + <integer name="albumset_cols_land">3</integer> + <integer name="albumset_cols_port">2</integer> + <dimen name="albumset_padding_top">3dp</dimen> + <dimen name="albumset_padding_bottom">3dp</dimen> + <dimen name="albumset_padding_left">3dp</dimen> + <dimen name="albumset_padding_right">3dp</dimen> + <dimen name="albumset_slot_gap">3dp</dimen> <dimen name="albumset_label_background_height">30dp</dimen> <dimen name="albumset_title_offset">10dp</dimen> @@ -126,9 +130,15 @@ <dimen name="albumset_icon_size">25dp</dimen> <!-- configuration for album page --> - <integer name="album_rows_land">2</integer> + <integer name="album_rows_land">3</integer> <integer name="album_rows_port">4</integer> - <dimen name="album_slot_gap">5dp</dimen> + <integer name="album_cols_land">6</integer> + <integer name="album_cols_port">3</integer> + <dimen name="album_padding_top">3dp</dimen> + <dimen name="album_padding_bottom">3dp</dimen> + <dimen name="album_padding_left">3dp</dimen> + <dimen name="album_padding_right">3dp</dimen> + <dimen name="album_slot_gap">3dp</dimen> <!-- configuration for manage page --> <dimen name="cache_pin_size">24dp</dimen> @@ -152,4 +162,20 @@ <dimen name="photoeditor_text_padding">10dp</dimen> <dimen name="photoeditor_original_text_size">18dp</dimen> <dimen name="photoeditor_original_text_margin">4dp</dimen> + + <dimen name="action_bar_elevation">8dp</dimen> + + <!-- FAB --> + <!-- Floating action button --> + <dimen name="floating_action_button_height">56dp</dimen> + <dimen name="floating_action_button_width">56dp</dimen> + <dimen name="floating_action_button_radius">28dp</dimen> + <dimen name="floating_action_button_translation_z">5dp</dimen> + <dimen name="floating_action_button_margin_left">5dp</dimen> + <dimen name="floating_action_button_margin_right">5dp</dimen> + <dimen name="floating_action_button_margin_bottom">16dp</dimen> + <dimen name="elevation_low">1dp</dimen> + <dimen name="elevation_high">4dp</dimen> + <dimen name="add_button_margin">16dp</dimen> + </resources> diff --git a/res/values/filtershow_color.xml b/res/values/filtershow_color.xml index 4fb4495e7..9cdec49e2 100644 --- a/res/values/filtershow_color.xml +++ b/res/values/filtershow_color.xml @@ -20,29 +20,29 @@ <color name="red">#FF0000</color> <color name="blue">#0000FF</color> <color name="text_toolbar">#FFFFFF</color> - <color name="background_screen">#101010</color> - <color name="background_toolbar">#363949</color> - <color name="background_main_toolbar">#232323</color> + <color name="background_screen">#ff21272b</color> + <color name="background_toolbar">#37474F</color> + <color name="background_main_toolbar">#37474F</color> <color name="toolbar_separation_line">#333333</color> <color name="slider_dot_color">#646464</color> <color name="slider_line_color">#888888</color> - <color name="state_panel_separation_line">#232323</color> - <color name="filtershow_background">#333333</color> + <color name="state_panel_separation_line">#263238</color> + <color name="filtershow_background">#ff21272b</color> <color name="filtershow_graphic">#717171</color> - <color name="filtershow_stateview_end_background">#232323</color> + <color name="filtershow_stateview_end_background">#263238</color> <color name="filtershow_stateview_end_text">#a7a7a7</color> <color name="filtershow_stateview_background">#464646</color> <color name="filtershow_stateview_text">#FFFFFF</color> <color name="filtershow_stateview_selected_background">#c8c8c8</color> <color name="filtershow_stateview_selected_text">#000000</color> - <color name="filtershow_categoryview_background">#1a1a1a</color> + <color name="filtershow_categoryview_background">#ff21272b</color> <color name="filtershow_categoryview_text">#a7a7a7</color> <color name="filtershow_category_selection">#ffffffff</color> <color name="gradcontrol_point_center">#ffffffff</color> <color name="gradcontrol_point_edge">#ffffffff</color> <color name="gradcontrol_graypoint_center">#888888</color> <color name="gradcontrol_graypoint_edge">#BBBBBB</color> - <color name="gradcontrol_point_shadow_start">#66000000</color> + <color name="gradcontrol_point_shadow_start">#6621272b</color> <color name="gradcontrol_point_shadow_end">#00000000</color> <color name="gradcontrol_line_color">#FFFFFF</color> <color name="gradcontrol_line_shadow">#000000</color> diff --git a/res/values/filtershow_ids.xml b/res/values/filtershow_ids.xml index 460da61aa..58f16dcd1 100644 --- a/res/values/filtershow_ids.xml +++ b/res/values/filtershow_ids.xml @@ -50,4 +50,5 @@ <item type="id" name="editorParametric" /> <item type="id" name="editorGrad" /> <item type="id" name="editorChanSat" /> + <item type="id" name="editorMakeup" /> </resources> diff --git a/res/values/filtershow_strings.xml b/res/values/filtershow_strings.xml index 98f32ebda..9a6b08f08 100644 --- a/res/values/filtershow_strings.xml +++ b/res/values/filtershow_strings.xml @@ -35,7 +35,7 @@ <!-- Text to label an image as "original" [CHAR LIMIT=20] --> <string name="original">Original</string> <!-- Text for filters that apply a border to a picture [CHAR LIMIT=20] --> - <string name="borders" msgid="4461692156695893616">Borders</string> + <string name="borders" msgid="4461692156695893616">Frame</string> <!-- Text for the custom border filter [CHAR LIMIT=20] --> <string name="custom_border">Custom</string> diff --git a/res/values/iconbutton_styles.xml b/res/values/iconbutton_styles.xml index e33460af2..5e34063c1 100644 --- a/res/values/iconbutton_styles.xml +++ b/res/values/iconbutton_styles.xml @@ -38,8 +38,8 @@ <item name="android:textSize">13dp</item> <item name="android:scaleType">centerInside</item> <item name="android:gravity">center</item> - <item name="android:paddingLeft">3dp</item> - <item name="android:paddingRight">3dp</item> + <item name="android:paddingStart">3dp</item> + <item name="android:paddingEnd">3dp</item> <item name="android:paddingTop">6dp</item> <item name="android:paddingBottom">6dp</item> <item name="android:ellipsize">marquee</item> diff --git a/res/values/strings.xml b/res/values/strings.xml index 570014e3e..167ac893c 100644..100755 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -233,6 +233,10 @@ have location information in them [CHAR LIMIT=20]--> <string name="no_location">No location</string> + <!-- When grouping photos by peoples, the label used for photos that don't + have people information in them [CHAR LIMIT=20]--> + <string name="no_faces">No faces</string> + <!-- This toast message is shown when network connection is lost while doing clustering --> <string name="no_connectivity">Some locations couldn\'t be identified due to network problems.</string> @@ -1115,4 +1119,12 @@ CHAR LIMIT = NONE] --> <item quantity="one">%1$d photo</item> <item quantity="other">%1$d photos</item> </plurals> + + <!-- The tips of trimming video --> + <string name="can_not_trim">Only mp4 and 3gp file can be trimmed</string> + <string name="text_makeup_whiten">Whiten</string> + <string name="text_makeup_Soften">Soften</string> + <string name="text_makeup_trimface">Trimface</string> + <string name="text_makeup_bigeye">Bigeye</string> + </resources> diff --git a/res/values/styles.xml b/res/values/styles.xml index 33dcbecb6..45a965f6b 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -37,7 +37,7 @@ <item name="android:actionBarStyle">@style/Holo.ActionBar</item> <item name="android:colorBackground">@null</item> <item name="android:colorBackgroundCacheHint">@null</item> - <item name="android:windowBackground">@drawable/filtershow_tiled_background</item> + <item name="android:windowBackground">@color/filtershow_background</item> </style> <style name="Holo.ActionBar" parent="android:Widget.Holo.ActionBar"> <item name="android:displayOptions">useLogo|showHome</item> @@ -128,8 +128,8 @@ <item name="android:orientation">horizontal</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">@dimen/setting_row_height</item> - <item name="android:paddingLeft">@dimen/setting_item_list_margin</item> - <item name="android:paddingRight">@dimen/setting_item_list_margin</item> + <item name="android:paddingStart">@dimen/setting_item_list_margin</item> + <item name="android:paddingEnd">@dimen/setting_item_list_margin</item> <item name="android:background">@drawable/setting_picker</item> </style> <style name="OnViewfinderLabel"> @@ -138,8 +138,8 @@ <item name="android:layout_height">wrap_content</item> <item name="android:singleLine">true</item> <item name="android:layout_margin">10dp</item> - <item name="android:paddingLeft">15dp</item> - <item name="android:paddingRight">15dp</item> + <item name="android:paddingStart">15dp</item> + <item name="android:paddingEnd">15dp</item> <item name="android:paddingTop">3dp</item> <item name="android:paddingBottom">3dp</item> <item name="android:textColor">@android:color/white</item> @@ -150,8 +150,8 @@ <item name="android:textAppearance">@android:style/TextAppearance.Medium</item> </style> <style name="EffectSettingGrid"> - <item name="android:layout_marginLeft">@dimen/setting_item_list_margin</item> - <item name="android:layout_marginRight">@dimen/setting_item_list_margin</item> + <item name="android:layout_marginStart">@dimen/setting_item_list_margin</item> + <item name="android:layout_marginEnd">@dimen/setting_item_list_margin</item> <item name="android:paddingBottom">3dp</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> @@ -166,8 +166,8 @@ <item name="android:layout_height">wrap_content</item> <item name="android:paddingTop">9dp</item> <item name="android:paddingBottom">9dp</item> - <item name="android:paddingLeft">2dp</item> - <item name="android:paddingRight">2dp</item> + <item name="android:paddingStart">2dp</item> + <item name="android:paddingEnd">2dp</item> <item name="android:background">@drawable/setting_picker</item> </style> <style name="EffectSettingItemTitle"> @@ -188,12 +188,12 @@ <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:minHeight">@dimen/effect_setting_type_text_min_height</item> - <item name="android:paddingLeft">@dimen/effect_setting_type_text_left_padding</item> + <item name="android:paddingStart">@dimen/effect_setting_type_text_left_padding</item> </style> <style name="EffectTypeSeparator"> <item name="android:layout_width">match_parent</item> - <item name="android:layout_marginLeft">8dp</item> - <item name="android:layout_marginRight">8dp</item> + <item name="android:layout_marginStart">8dp</item> + <item name="android:layout_marginEnd">8dp</item> <item name="android:layout_marginBottom">14dp</item> <item name="android:layout_height">2dp</item> <item name="android:background">#2c2c2c</item> @@ -215,8 +215,8 @@ <item name="android:textColor">@color/primary_text</item> <item name="android:minHeight">48dip</item> <item name="android:minWidth">64dip</item> - <item name="android:paddingLeft">4dip</item> - <item name="android:paddingRight">4dip</item> + <item name="android:paddingStart">4dip</item> + <item name="android:paddingEnd">4dip</item> </style> <style name="ReviewControlText_xlarge"> @@ -224,8 +224,8 @@ <item name="android:layout_width">wrap_content</item> <item name="android:background">@drawable/bg_pressed_exit_fading</item> <item name="android:gravity">center</item> - <item name="android:paddingLeft">2dp</item> - <item name="android:paddingRight">10dp</item> + <item name="android:paddingStart">2dp</item> + <item name="android:paddingEnd">10dp</item> <item name="android:paddingTop">10dp</item> <item name="android:paddingBottom">10dp</item> <item name="android:textSize">18sp</item> @@ -240,7 +240,7 @@ <item name="android:layout_height">wrap_content</item> <item name="android:singleLine">true</item> <item name="android:textColor">@color/popup_title_color</item> - <item name="android:layout_marginLeft">10dp</item> + <item name="android:layout_marginStart">10dp</item> </style> <style name="PanoCustomDialogText_xlarge"> <item name="android:textAppearance">@android:style/TextAppearance.Large</item> @@ -266,9 +266,9 @@ <item name="android:layout_height">match_parent</item> </style> <style name="UndoBar"> - <item name="android:layout_marginLeft">4dp</item> - <item name="android:layout_marginRight">4dp</item> - <item name="android:paddingLeft">16dp</item> + <item name="android:layout_marginStart">4dp</item> + <item name="android:layout_marginEnd">4dp</item> + <item name="android:paddingStart">16dp</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">48dp</item> <item name="android:layout_gravity">bottom</item> @@ -284,12 +284,12 @@ <item name="android:layout_height">match_parent</item> <item name="android:layout_marginTop">10dp</item> <item name="android:layout_marginBottom">10dp</item> - <item name="android:paddingRight">12dp</item> + <item name="android:paddingEnd">12dp</item> </style> <style name="UndoButton"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">match_parent</item> - <item name="android:paddingRight">16dp</item> + <item name="android:paddingEnd">16dp</item> <item name="android:textSize">12sp</item> <item name="android:gravity">center_vertical</item> <item name="android:textStyle">bold</item> diff --git a/res/xml/file_paths.xml b/res/xml/file_paths.xml new file mode 100644 index 000000000..28d186477 --- /dev/null +++ b/res/xml/file_paths.xml @@ -0,0 +1,18 @@ +<!-- + Copyright (C) 2012-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. +--> +<paths xmlns:android="http://schemas.android.com/apk/res/android"> + <cache-path name="cropped_image"/> +</paths> diff --git a/res/xml/rtsp_settings_preferences.xml b/res/xml/rtsp_settings_preferences.xml new file mode 100644 index 000000000..4809cf0ee --- /dev/null +++ b/res/xml/rtsp_settings_preferences.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > + + <PreferenceCategory android:title="@string/rtp_rtcp" > + <EditTextPreference + android:dialogTitle="@string/set_rtp_min_port" + android:inputType="number" + android:key="rtp_min_port" + android:maxLength="5" + android:order="1" + android:summary="" + android:title="@string/rtp_min_port" /> + <EditTextPreference + android:dialogTitle="@string/set_rtp_max_port" + android:inputType="number" + android:key="rtp_max_port" + android:maxLength="5" + android:order="2" + android:summary="" + android:title="@string/rtp_max_port" /> + </PreferenceCategory> + <PreferenceCategory android:title="@string/buffer_size" > + <EditTextPreference + android:dialogTitle="@string/set_buffer_size" + android:inputType="number" + android:key="buffer_size" + android:maxLength="10" + android:order="5" + android:summary="" + android:title="@string/buffer_size" /> + </PreferenceCategory> + <PreferenceCategory android:title="@string/apn" > + <PreferenceScreen + android:key="apn" + android:title="@string/set_apn" > + </PreferenceScreen> + </PreferenceCategory> + +</PreferenceScreen> diff --git a/slim_manifest/AndroidManifest.xml b/slim_manifest/AndroidManifest.xml new file mode 100644 index 000000000..aae3467bc --- /dev/null +++ b/slim_manifest/AndroidManifest.xml @@ -0,0 +1,246 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (c) 2010-2014, The Linux Foundation. All rights reserved. + Not a Contribution. + + Copyright (C) 2007 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<manifest android:versionCode="40030" + android:versionName="1.1.40030" + xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.gallery3d"> + + <original-package android:name="com.android.gallery3d" /> + + <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" /> + + <permission android:name="com.android.gallery3d.permission.GALLERY_PROVIDER" + android:protectionLevel="signatureOrSystem" /> + + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> + <uses-permission android:name="android.permission.CAMERA" /> + <uses-permission android:name="android.permission.GET_ACCOUNTS" /> + <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> + <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> + <uses-permission android:name="android.permission.NFC" /> + <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> + <uses-permission android:name="android.permission.RECORD_AUDIO" /> + <uses-permission android:name="android.permission.SET_WALLPAPER" /> + <uses-permission android:name="android.permission.USE_CREDENTIALS" /> + <uses-permission android:name="android.permission.VIBRATE" /> + <uses-permission android:name="android.permission.WAKE_LOCK" /> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.WRITE_SETTINGS" /> + <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/> + <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> + <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/> + <uses-permission android:name="com.android.gallery3d.permission.GALLERY_PROVIDER" /> + <uses-permission android:name="android.permission.BLUETOOTH" /> + + <supports-screens android:smallScreens="false" + android:normalScreens="true" android:largeScreens="true" + android:anyDensity="true" /> + + <application android:icon="@mipmap/ic_launcher_gallery" android:label="@string/app_name" + android:name="com.android.gallery3d.app.GalleryAppImpl" + android:theme="@style/Theme.Gallery" + android:logo="@mipmap/ic_launcher_gallery" + android:hardwareAccelerated="true" + android:largeHeap="true" + android:restoreAnyVersion="true" + android:supportsRtl="true"> + <uses-library android:name="com.google.android.media.effects" android:required="false" /> + + <activity android:name="com.android.gallery3d.app.GalleryActivity" + android:label="@string/app_name" + android:configChanges="keyboardHidden|orientation|screenSize"> + <intent-filter> + <action android:name="android.intent.action.GET_CONTENT" /> + <category android:name="android.intent.category.OPENABLE" /> + <data android:mimeType="vnd.android.cursor.dir/image" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.PICK" /> + <category android:name="android.intent.category.DEFAULT" /> + <data android:mimeType="vnd.android.cursor.dir/image" /> + <data android:mimeType="vnd.android.cursor.dir/video" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + <category android:name="android.intent.category.DEFAULT" /> + <data android:mimeType="vnd.android.cursor.dir/image" /> + <data android:mimeType="vnd.android.cursor.dir/video" /> + </intent-filter> + </activity> + + <activity android:name="com.android.gallery3d.app.Wallpaper" + android:configChanges="keyboardHidden|orientation|screenSize" + android:theme="@style/android:Theme.Translucent.NoTitleBar"> + <intent-filter android:label="@string/camera_setas_wallpaper"> + <action android:name="android.intent.action.ATTACH_DATA" /> + <data android:mimeType="image/*" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <intent-filter android:label="@string/app_name"> + <action android:name="android.intent.action.SET_WALLPAPER" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <meta-data android:name="android.wallpaper.preview" + android:resource="@xml/wallpaper_picker_preview" /> + </activity> + <activity android:name="com.android.gallery3d.app.TrimVideo" + android:label="@string/trim_label"> + <intent-filter android:label="@string/crop_label"> + <action android:name="com.android.camera.action.TRIM" /> + <category android:name="android.intent.category.DEFAULT" /> + <data android:scheme="content" /> + <data android:scheme="file" /> + <data android:mimeType="video/*" /> + </intent-filter> + </activity> + + <permission android:name="com.android.gallery3d.filtershow.permission.READ" + android:protectionLevel="signature" /> + + <permission android:name="com.android.gallery3d.filtershow.permission.WRITE" + android:protectionLevel="signature" /> + + <provider + android:name="com.android.gallery3d.filtershow.provider.SharedImageProvider" + android:authorities="com.android.gallery3d.filtershow.provider.SharedImageProvider" + android:grantUriPermissions="true" + android:readPermission="com.android.gallery3d.filtershow.permission.READ" + android:writePermission="com.android.gallery3d.filtershow.permission.WRITE" /> + + <service + android:name=".filtershow.pipeline.ProcessingService" + android:exported="false" /> + + <activity + android:name="com.android.gallery3d.filtershow.FilterShowActivity" + android:label="@string/title_activity_filter_show" + android:theme="@style/Theme.FilterShow" + android:configChanges="keyboardHidden|orientation|screenSize"> + <intent-filter> + <action android:name="android.intent.action.EDIT" /> + <category android:name="android.intent.category.DEFAULT" /> + <data android:mimeType="image/*" /> + </intent-filter> + <intent-filter> + <action android:name="action_nextgen_edit" /> + <category android:name="android.intent.category.DEFAULT" /> + <data android:mimeType="image/*" /> + </intent-filter> + </activity> + + <activity + android:name="com.android.gallery3d.filtershow.crop.CropActivity" + android:label="@string/crop" + android:theme="@style/Theme.Crop" + android:configChanges="keyboardHidden|orientation|screenSize"> + <intent-filter android:label="@string/crop_label"> + <action android:name="com.android.camera.action.CROP" /> + <data android:scheme="http" /> + <data android:scheme="https" /> + <data android:scheme="content" /> + <data android:scheme="file" /> + <data android:mimeType="image/*" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.ALTERNATIVE" /> + <category android:name="android.intent.category.SELECTED_ALTERNATIVE" /> + </intent-filter> + </activity> + + <uses-library android:name="com.google.android.media.effects" + android:required="false" /> + + <activity android:name="com.android.gallery3d.settings.GallerySettings" + android:theme="@style/Theme.Gallery" + android:configChanges="orientation|keyboardHidden|screenSize" /> + + <activity android:name="com.android.gallery3d.util.ViewGifImage" + android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" + android:configChanges="orientation|keyboardHidden|screenSize|keyboard|navigation"> + <intent-filter> + <action android:name="com.android.gallery3d.VIEW_GIF" /> + <data android:mimeType="image/gif" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + </activity> + + <provider android:name="com.android.gallery3d.provider.GalleryProvider" + android:syncable="false" + android:grantUriPermissions="true" + android:exported="true" + android:permission="com.android.gallery3d.permission.GALLERY_PROVIDER" + android:authorities="com.android.gallery3d.provider" /> + <provider + android:name="com.android.photos.data.PhotoProvider" + android:authorities="com.android.gallery3d.photoprovider" + android:syncable="false" + android:exported="false"/> + <activity android:name="com.android.gallery3d.gadget.WidgetClickHandler" /> + <activity android:name="com.android.gallery3d.app.DialogPicker" + android:configChanges="keyboardHidden|orientation|screenSize" + android:theme="@style/DialogPickerTheme"/> + <activity android:name="com.android.gallery3d.app.AlbumPicker" + android:configChanges="keyboardHidden|orientation|screenSize" + android:theme="@style/DialogPickerTheme"/> + <activity android:name="com.android.gallery3d.gadget.WidgetTypeChooser" + android:configChanges="keyboardHidden|orientation|screenSize" + android:theme="@style/Theme.Gallery.Dialog"/> + + <receiver android:name="com.android.gallery3d.gadget.PhotoAppWidgetProvider" + android:label="@string/appwidget_title"> + <intent-filter> + <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> + </intent-filter> + <meta-data android:name="android.appwidget.provider" + android:resource="@xml/widget_info" /> + </receiver> + <receiver android:name="com.android.gallery3d.app.PackagesMonitor"> + <intent-filter> + <action android:name="android.intent.action.PACKAGE_ADDED"/> + <action android:name="android.intent.action.PACKAGE_REMOVED"/> + <action android:name="android.intent.action.PACKAGE_CHANGED"/> + <data android:scheme="package"/> + </intent-filter> + </receiver> + <service android:name="com.android.gallery3d.app.PackagesMonitor$AsyncService"/> + <service android:name="com.android.gallery3d.gadget.WidgetService" + android:permission="android.permission.BIND_REMOTEVIEWS"/> + <activity android:name="com.android.gallery3d.gadget.WidgetConfigure" + android:configChanges="keyboardHidden|orientation|screenSize" + android:theme="@style/android:Theme.Translucent.NoTitleBar"> + <intent-filter> + <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> + </intent-filter> + </activity> + <service android:name="com.android.gallery3d.app.BatchService" /> + <provider + android:name="android.support.v4.content.FileProvider" + android:authorities="com.android.gallery3d.fileprovider" + android:exported="false" + android:grantUriPermissions="true"> + <meta-data + android:name="android.support.FILE_PROVIDER_PATHS" + android:resource="@xml/file_paths" /> + </provider> + </application> +</manifest> diff --git a/src/com/android/gallery3d/app/AbstractGalleryActivity.java b/src/com/android/gallery3d/app/AbstractGalleryActivity.java index 9af1fb8ba..9f43b8de4 100644 --- a/src/com/android/gallery3d/app/AbstractGalleryActivity.java +++ b/src/com/android/gallery3d/app/AbstractGalleryActivity.java @@ -28,15 +28,20 @@ import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; +import android.content.SharedPreferences; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; +import android.os.Environment; import android.os.IBinder; +import android.os.storage.StorageManager; +import android.preference.PreferenceManager; import android.support.v4.print.PrintHelper; import android.view.Menu; import android.view.MenuItem; import android.view.Window; import android.view.WindowManager; +import android.os.Handler; import com.android.gallery3d.R; import com.android.gallery3d.common.ApiHelper; @@ -45,6 +50,7 @@ import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.filtershow.cache.ImageLoader; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLRootView; +import com.android.gallery3d.util.MediaSetUtils; import com.android.gallery3d.util.PanoramaViewHelper; import com.android.gallery3d.util.ThreadPool; import com.android.photos.data.GalleryBitmapPool; @@ -60,6 +66,7 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext private TransitionStore mTransitionStore = new TransitionStore(); private boolean mDisableToggleStatusBar; private PanoramaViewHelper mPanoramaViewHelper; + private static final int ONRESUME_DELAY = 50; private AlertDialog mAlertDialog = null; private BroadcastReceiver mMountReceiver = new BroadcastReceiver() { @@ -73,6 +80,7 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setStoragePath(); mOrientationManager = new OrientationManager(this); toggleStatusBarByOrientation(); getWindow().setBackgroundDrawable(null); @@ -81,6 +89,21 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext doBindBatchService(); } + private void setStoragePath() { + final String defaultStoragePath = Environment.getExternalStorageDirectory().toString(); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + String storagePath = prefs.getString(StorageChangeReceiver.KEY_STORAGE, + defaultStoragePath); + + // Check if volume is mounted + StorageManager sm = (StorageManager) getSystemService(Context.STORAGE_SERVICE); + if (!sm.getVolumeState(storagePath).equals(Environment.MEDIA_MOUNTED)) { + storagePath = defaultStoragePath; + } + + MediaSetUtils.setRoot(storagePath); + } + @Override protected void onSaveInstanceState(Bundle outState) { mGLRootView.lockRenderThread(); @@ -133,6 +156,15 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext return mGLRootView; } + public void GLRootResume(boolean isResume) { + if (isResume) { + mGLRootView.onResume(); + mGLRootView.lockRenderThread(); + } else { + mGLRootView.unlockRenderThread(); + } + } + public OrientationManager getOrientationManager() { return mOrientationManager; } @@ -203,15 +235,31 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext @Override protected void onResume() { super.onResume(); - mGLRootView.lockRenderThread(); - try { - getStateManager().resume(); - getDataManager().resume(); - } finally { - mGLRootView.unlockRenderThread(); - } - mGLRootView.onResume(); - mOrientationManager.resume(); + delayedOnResume(ONRESUME_DELAY); + } + + private void delayedOnResume(final int delay){ + final Handler handler = new Handler(); + Runnable delayTask = new Runnable() { + @Override + public void run() { + handler.postDelayed(new Runnable() { + @Override + public void run() { + mGLRootView.lockRenderThread(); + try { + getStateManager().resume(); + getDataManager().resume(); + } finally { + mGLRootView.unlockRenderThread(); + } + mGLRootView.onResume(); + mOrientationManager.resume(); + }}, delay); + } + }; + Thread delayThread = new Thread(delayTask); + delayThread.start(); } @Override diff --git a/src/com/android/gallery3d/app/AlbumDataLoader.java b/src/com/android/gallery3d/app/AlbumDataLoader.java index 28a822830..b56304e39 100644 --- a/src/com/android/gallery3d/app/AlbumDataLoader.java +++ b/src/com/android/gallery3d/app/AlbumDataLoader.java @@ -19,6 +19,8 @@ package com.android.gallery3d.app; import android.os.Handler; import android.os.Message; import android.os.Process; +import android.text.TextUtils; +import android.view.View; import com.android.gallery3d.common.Utils; import com.android.gallery3d.data.ContentListener; @@ -33,6 +35,7 @@ import java.util.Arrays; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; +import java.util.Locale; public class AlbumDataLoader { @SuppressWarnings("unused") @@ -119,7 +122,9 @@ public class AlbumDataLoader { } public MediaItem get(int index) { - if (!isActive(index)) { + if (!isActive(index) + && View.LAYOUT_DIRECTION_LTR == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { return mSource.getMediaItem(index, 1).get(0); } return mData[index % mData.length]; diff --git a/src/com/android/gallery3d/app/AlbumPage.java b/src/com/android/gallery3d/app/AlbumPage.java index 44f24043b..7e2f5f9e4 100644 --- a/src/com/android/gallery3d/app/AlbumPage.java +++ b/src/com/android/gallery3d/app/AlbumPage.java @@ -25,10 +25,12 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.MediaStore; +import android.text.TextUtils; import android.view.HapticFeedbackConstants; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.View; import android.widget.Toast; import com.android.gallery3d.R; @@ -59,6 +61,7 @@ import com.android.gallery3d.util.Future; import com.android.gallery3d.util.GalleryUtils; import com.android.gallery3d.util.MediaSetUtils; +import java.util.Locale; public class AlbumPage extends ActivityState implements GalleryActionBar.ClusterRunner, SelectionManager.SelectionListener, MediaSet.SyncListener, GalleryActionBar.OnAlbumModeSelectedListener { @@ -82,11 +85,15 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster private static final float USER_DISTANCE_METER = 0.3f; + // Data cache size, equal to AlbumDataLoader.DATA_CACHE_SIZE + private static final int DATA_CACHE_SIZE = 256; + private boolean mIsActive = false; private AlbumSlotRenderer mAlbumView; private Path mMediaSetPath; private String mParentMediaSetString; private SlotView mSlotView; + private Config.AlbumPage mConfig; private AlbumDataLoader mAlbumDataAdapter; @@ -152,9 +159,9 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster protected void onLayout( boolean changed, int left, int top, int right, int bottom) { - int slotViewTop = mActivity.getGalleryActionBar().getHeight(); - int slotViewBottom = bottom - top; - int slotViewRight = right - left; + int slotViewTop = mActivity.getGalleryActionBar().getHeight() + mConfig.paddingTop; + int slotViewBottom = bottom - top - mConfig.paddingBottom; + int slotViewRight = right - left - mConfig.paddingRight; if (mShowDetails) { mDetailsHelper.layout(left, slotViewTop, right, bottom); @@ -163,8 +170,8 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster } // Set the mSlotView as a reference point to the open animation - mOpenCenter.setReferencePosition(0, slotViewTop); - mSlotView.layout(0, slotViewTop, slotViewRight, slotViewBottom); + mOpenCenter.setReferencePosition(mConfig.paddingLeft, slotViewTop); + mSlotView.layout(mConfig.paddingLeft, slotViewTop, slotViewRight, slotViewBottom); GalleryUtils.setViewPointMatrix(mMatrix, (right - left) / 2, (bottom - top) / 2, -mUserDistance); } @@ -266,6 +273,17 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster } private void pickPhoto(int slotIndex) { + if ((View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) + && !mGetContent) { + // Fetch corresponding slotIndex from another side, (RTL) + if (slotIndex > DATA_CACHE_SIZE / 2 + && slotIndex < mAlbumDataAdapter.size() - DATA_CACHE_SIZE / 2) { + slotIndex = mAlbumDataAdapter.size() - slotIndex - 2; + } else { + slotIndex = mAlbumDataAdapter.size() - slotIndex - 1; + } + } pickPhoto(slotIndex, false); } @@ -278,10 +296,25 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster } MediaItem item = mAlbumDataAdapter.get(slotIndex); - if (item == null) return; // Item not ready yet, ignore the click + + // Checking it is RTL or not + boolean isLayoutRtl = (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) ? true : false; + + // When not RTL, return directly to ignore the click + if (!isLayoutRtl && item == null) { + return; + } + if (mGetContent) { + if (isLayoutRtl && item == null) { + return; // Item not ready yet, ignore the click + } onGetContent(item); } else if (mLaunchedFromPhotoPage) { + if (isLayoutRtl && item == null) { + return; // Item not ready yet, ignore the click + } TransitionStore transitions = mActivity.getTransitionStore(); transitions.put( PhotoPage.KEY_ALBUMPAGE_TRANSITION, @@ -297,8 +330,12 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster mSlotView.getSlotRect(slotIndex, mRootPane)); data.putString(PhotoPage.KEY_MEDIA_SET_PATH, mMediaSetPath.toString()); - data.putString(PhotoPage.KEY_MEDIA_ITEM_PATH, - item.getPath().toString()); + + // Item not ready yet, don't pass the photo path to bundle + if (!isLayoutRtl && item != null) { + data.putString(PhotoPage.KEY_MEDIA_ITEM_PATH, + item.getPath().toString()); + } data.putInt(PhotoPage.KEY_ALBUMPAGE_TRANSITION, PhotoPage.MSG_ALBUMPAGE_STARTED); data.putBoolean(PhotoPage.KEY_START_IN_FILMSTRIP, @@ -468,10 +505,10 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster private void initializeViews() { mSelectionManager = new SelectionManager(mActivity, false); mSelectionManager.setSelectionListener(this); - Config.AlbumPage config = Config.AlbumPage.get(mActivity); - mSlotView = new SlotView(mActivity, config.slotViewSpec); + mConfig = Config.AlbumPage.get(mActivity); + mSlotView = new SlotView(mActivity, mConfig.slotViewSpec); mAlbumView = new AlbumSlotRenderer(mActivity, mSlotView, - mSelectionManager, config.placeholderColor); + mSelectionManager, mConfig.placeholderColor); mSlotView.setSlotRenderer(mAlbumView); mRootPane.addComponent(mSlotView); mSlotView.setListener(new SlotView.SimpleListener() { @@ -574,8 +611,17 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster } private void switchToFilmstrip() { - if (mAlbumDataAdapter.size() < 1) return; + // Invalid album, return back directly. + if (mAlbumDataAdapter.size() < 1) { + return; + } + int targetPhoto = mSlotView.getVisibleStart(); + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + // Fetch corresponding index from another side, only in RTL + targetPhoto = mAlbumDataAdapter.size() - targetPhoto - 1; + } prepareAnimationBackToFilmstrip(targetPhoto); if(mLaunchedFromPhotoPage) { onBackPressed(); @@ -642,7 +688,22 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster case REQUEST_PHOTO: { if (data == null) return; mFocusIndex = data.getIntExtra(PhotoPage.KEY_RETURN_INDEX_HINT, 0); + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + // Fetch corresponding index from another side, only in RTL + mFocusIndex = mAlbumDataAdapter.size() - mFocusIndex - 1; + // Prepare to jump to mFocusIndex position, only enabled in RTL + mSlotView.setIsFromPhotoPage(true); + } + + // Let picture of mFocusIndex visible mSlotView.makeSlotVisible(mFocusIndex); + + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + // Reset variable + mSlotView.setIsFromPhotoPage(false); + } break; } case REQUEST_DO_ANIMATION: { diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java index d56b5b85d..c09b91f6e 100644 --- a/src/com/android/gallery3d/app/AlbumSetPage.java +++ b/src/com/android/gallery3d/app/AlbumSetPage.java @@ -1,4 +1,7 @@ /* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * Not a Contribution. + * * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -20,6 +23,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Rect; +import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -134,7 +138,7 @@ public class AlbumSetPage extends ActivityState implements int slotViewTop = mActionBar.getHeight() + mConfig.paddingTop; int slotViewBottom = bottom - top - mConfig.paddingBottom; - int slotViewRight = right - left; + int slotViewRight = right - left - mConfig.paddingRight; if (mShowDetails) { mDetailsHelper.layout(left, slotViewTop, right, bottom); @@ -142,7 +146,7 @@ public class AlbumSetPage extends ActivityState implements mAlbumSetView.setHighlightItemPath(null); } - mSlotView.layout(0, slotViewTop, slotViewRight, slotViewBottom); + mSlotView.layout(mConfig.paddingLeft, slotViewTop, slotViewRight, slotViewBottom); } @Override @@ -543,6 +547,13 @@ public class AlbumSetPage extends ActivityState implements inflater.inflate(R.menu.albumset, menu); boolean wasShowingClusterMenu = mShowClusterMenu; mShowClusterMenu = !inAlbum; + if (mShowClusterMenu != wasShowingClusterMenu) { + if (mShowClusterMenu) { + mActionBar.enableClusterMenu(mSelectedAction, this); + } else { + mActionBar.disableClusterMenu(true); + } + } boolean selectAlbums = !inAlbum && mActionBar.getClusterTypeAction() == FilterUtils.CLUSTER_BY_ALBUM; MenuItem selectItem = menu.findItem(R.id.action_select); @@ -560,15 +571,13 @@ public class AlbumSetPage extends ActivityState implements helpItem.setVisible(helpIntent != null); if (helpIntent != null) helpItem.setIntent(helpIntent); + MenuItem moreItem = menu.findItem(R.id.action_more_image); + moreItem.setVisible(mActivity.getResources().getBoolean( + R.bool.config_show_more_images)); + + mActionBar.setTitle(mTitle); mActionBar.setSubtitle(mSubtitle); - if (mShowClusterMenu != wasShowingClusterMenu) { - if (mShowClusterMenu) { - mActionBar.enableClusterMenu(mSelectedAction, this); - } else { - mActionBar.disableClusterMenu(true); - } - } } return true; } @@ -577,6 +586,11 @@ public class AlbumSetPage extends ActivityState implements protected boolean onItemSelected(MenuItem item) { Activity activity = mActivity; switch (item.getItemId()) { + case R.id.action_more_image: + Uri moreUri = Uri.parse(mActivity.getString(R.string.website_for_more_image)); + Intent moreIntent = new Intent(Intent.ACTION_VIEW, moreUri); + mActivity.startActivity(moreIntent); + return true; case R.id.action_cancel: activity.setResult(Activity.RESULT_CANCELED); activity.finish(); diff --git a/src/com/android/gallery3d/app/CommonControllerOverlay.java b/src/com/android/gallery3d/app/CommonControllerOverlay.java index 9adb4e7a8..7a553e906 100644 --- a/src/com/android/gallery3d/app/CommonControllerOverlay.java +++ b/src/com/android/gallery3d/app/CommonControllerOverlay.java @@ -47,10 +47,13 @@ public abstract class CommonControllerOverlay extends FrameLayout implements PAUSED, ENDED, ERROR, - LOADING + LOADING, + BUFFERING, + RETRY_CONNECTING, + RETRY_CONNECTING_ERROR } - private static final float ERROR_MESSAGE_RELATIVE_PADDING = 1.0f / 6; + protected static final float ERROR_MESSAGE_RELATIVE_PADDING = 1.0f / 6; protected Listener mListener; @@ -96,13 +99,9 @@ public abstract class CommonControllerOverlay extends FrameLayout implements ProgressBar spinner = new ProgressBar(context); spinner.setIndeterminate(true); mLoadingView.addView(spinner, wrapContent); - TextView loadingText = createOverlayTextView(context); - loadingText.setText(R.string.loading_video); - mLoadingView.addView(loadingText, wrapContent); addView(mLoadingView, wrapContent); mPlayPauseReplayView = new ImageView(context); - mPlayPauseReplayView.setImageResource(R.drawable.ic_vidcontrol_play); mPlayPauseReplayView.setContentDescription( context.getResources().getString(R.string.accessibility_play_video)); mPlayPauseReplayView.setBackgroundResource(R.drawable.bg_vidcontrol); @@ -119,7 +118,6 @@ public abstract class CommonControllerOverlay extends FrameLayout implements new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); setLayoutParams(params); - hide(); } abstract protected void createTimeBar(Context context); @@ -252,7 +250,7 @@ public abstract class CommonControllerOverlay extends FrameLayout implements // | Navigation Bar | insets.bottom // +-----------------+/ // Please see View.fitSystemWindows() for more details. - private final Rect mWindowInsets = new Rect(); + protected final Rect mWindowInsets = new Rect(); @Override protected boolean fitSystemWindows(Rect insets) { @@ -290,7 +288,7 @@ public abstract class CommonControllerOverlay extends FrameLayout implements } } - private void layoutCenteredView(View view, int l, int t, int r, int b) { + protected void layoutCenteredView(View view, int l, int t, int r, int b) { int cw = view.getMeasuredWidth(); int ch = view.getMeasuredHeight(); int cl = (r - l - cw) / 2; diff --git a/src/com/android/gallery3d/app/Config.java b/src/com/android/gallery3d/app/Config.java index 7183acc33..3625dafe4 100644 --- a/src/com/android/gallery3d/app/Config.java +++ b/src/com/android/gallery3d/app/Config.java @@ -31,6 +31,8 @@ final class Config { public AlbumSetSlotRenderer.LabelSpec labelSpec; public int paddingTop; public int paddingBottom; + public int paddingLeft; + public int paddingRight; public int placeholderColor; public static synchronized AlbumSetPage get(Context context) { @@ -48,11 +50,15 @@ final class Config { slotViewSpec = new SlotView.Spec(); slotViewSpec.rowsLand = r.getInteger(R.integer.albumset_rows_land); slotViewSpec.rowsPort = r.getInteger(R.integer.albumset_rows_port); + slotViewSpec.colsLand = r.getInteger(R.integer.albumset_cols_land); + slotViewSpec.colsPort = r.getInteger(R.integer.albumset_cols_port); slotViewSpec.slotGap = r.getDimensionPixelSize(R.dimen.albumset_slot_gap); slotViewSpec.slotHeightAdditional = 0; paddingTop = r.getDimensionPixelSize(R.dimen.albumset_padding_top); paddingBottom = r.getDimensionPixelSize(R.dimen.albumset_padding_bottom); + paddingLeft = r.getDimensionPixelSize(R.dimen.albumset_padding_left); + paddingRight = r.getDimensionPixelSize(R.dimen.albumset_padding_right); labelSpec = new AlbumSetSlotRenderer.LabelSpec(); labelSpec.labelBackgroundHeight = r.getDimensionPixelSize( @@ -82,6 +88,10 @@ final class Config { private static AlbumPage sInstance; public SlotView.Spec slotViewSpec; + public int paddingTop; + public int paddingBottom; + public int paddingLeft; + public int paddingRight; public int placeholderColor; public static synchronized AlbumPage get(Context context) { @@ -99,7 +109,14 @@ final class Config { slotViewSpec = new SlotView.Spec(); slotViewSpec.rowsLand = r.getInteger(R.integer.album_rows_land); slotViewSpec.rowsPort = r.getInteger(R.integer.album_rows_port); + slotViewSpec.colsLand = r.getInteger(R.integer.album_cols_land); + slotViewSpec.colsPort = r.getInteger(R.integer.album_cols_port); slotViewSpec.slotGap = r.getDimensionPixelSize(R.dimen.album_slot_gap); + + paddingTop = r.getDimensionPixelSize(R.dimen.album_padding_top); + paddingBottom = r.getDimensionPixelSize(R.dimen.album_padding_bottom); + paddingLeft = r.getDimensionPixelSize(R.dimen.album_padding_left); + paddingRight = r.getDimensionPixelSize(R.dimen.album_padding_right); } } diff --git a/src/com/android/gallery3d/app/ControllerOverlay.java b/src/com/android/gallery3d/app/ControllerOverlay.java index 078f59e28..6f049da2d 100644 --- a/src/com/android/gallery3d/app/ControllerOverlay.java +++ b/src/com/android/gallery3d/app/ControllerOverlay.java @@ -27,6 +27,8 @@ public interface ControllerOverlay { void onSeekEnd(int time, int trimStartTime, int trimEndTime); void onShown(); void onHidden(); + // get current video is from RTSP + boolean onIsRTSP(); void onReplay(); } @@ -53,4 +55,10 @@ public interface ControllerOverlay { void setTimes(int currentTime, int totalTime, int trimStartTime, int trimEndTime); + + //set view enabled (play/pause asynchronous processing) + void setViewEnabled(boolean isEnabled); + + //view from disable to resume (play/pause asynchronous processing) + void setPlayPauseReplayResume(); } diff --git a/src/com/android/gallery3d/app/GalleryActionBar.java b/src/com/android/gallery3d/app/GalleryActionBar.java index 588f5842a..11057fb02 100644 --- a/src/com/android/gallery3d/app/GalleryActionBar.java +++ b/src/com/android/gallery3d/app/GalleryActionBar.java @@ -47,6 +47,7 @@ public class GalleryActionBar implements OnNavigationListener { private ClusterRunner mClusterRunner; private CharSequence[] mTitles; + private CharSequence mTitle; private ArrayList<Integer> mActions; private Context mContext; private LayoutInflater mInflater; @@ -159,7 +160,8 @@ public class GalleryActionBar implements OnNavigationListener { parent, false); } TwoLineListItem view = (TwoLineListItem) convertView; - view.getText1().setText(mActionBar.getTitle()); + CharSequence title = mActionBar.getTitle(); + view.getText1().setText(title == null ? mTitle : title); view.getText2().setText((CharSequence) getItem(position)); return convertView; } @@ -326,12 +328,14 @@ public class GalleryActionBar implements OnNavigationListener { } public void setTitle(String title) { + mTitle = title; if (mActionBar != null) mActionBar.setTitle(title); } public void setTitle(int titleId) { if (mActionBar != null) { - mActionBar.setTitle(mContext.getString(titleId)); + mTitle = mContext.getString(titleId); + mActionBar.setTitle(mTitle); } } diff --git a/src/com/android/gallery3d/app/GalleryActivity.java b/src/com/android/gallery3d/app/GalleryActivity.java index bb2a6b8f1..1be5e73c8 100644 --- a/src/com/android/gallery3d/app/GalleryActivity.java +++ b/src/com/android/gallery3d/app/GalleryActivity.java @@ -50,6 +50,7 @@ public final class GalleryActivity extends AbstractGalleryActivity implements On public static final String KEY_TYPE_BITS = "type-bits"; public static final String KEY_MEDIA_TYPES = "mediaTypes"; public static final String KEY_DISMISS_KEYGUARD = "dismiss-keyguard"; + public static final String KEY_FROM_SNAPCAM = "from-snapcam"; private static final String TAG = "GalleryActivity"; private Dialog mVersionCheckDialog; @@ -206,7 +207,9 @@ public final class GalleryActivity extends AbstractGalleryActivity implements On Path albumPath = dm.getDefaultSetOf(itemPath); data.putString(PhotoPage.KEY_MEDIA_ITEM_PATH, itemPath.toString()); - data.putBoolean(PhotoPage.KEY_READONLY, true); + if (!intent.getBooleanExtra(KEY_FROM_SNAPCAM, false)) { + data.putBoolean(PhotoPage.KEY_READONLY, true); + } // TODO: Make the parameter "SingleItemOnly" public so other // activities can reference it. diff --git a/src/com/android/gallery3d/app/GalleryAppImpl.java b/src/com/android/gallery3d/app/GalleryAppImpl.java index c6e7a0b57..9c5f232df 100644 --- a/src/com/android/gallery3d/app/GalleryAppImpl.java +++ b/src/com/android/gallery3d/app/GalleryAppImpl.java @@ -36,6 +36,7 @@ public class GalleryAppImpl extends Application implements GalleryApp { private static final String DOWNLOAD_FOLDER = "download"; private static final long DOWNLOAD_CAPACITY = 64 * 1024 * 1024; // 64M + private static GalleryAppImpl sGalleryAppImpl; private ImageCacheService mImageCacheService; private Object mLock = new Object(); @@ -51,6 +52,7 @@ public class GalleryAppImpl extends Application implements GalleryApp { WidgetUtils.initialize(this); PicasaSource.initialize(this); UsageStatistics.initialize(this); + sGalleryAppImpl = this; } @Override @@ -58,6 +60,10 @@ public class GalleryAppImpl extends Application implements GalleryApp { return this; } + public static Context getContext() { + return sGalleryAppImpl; + } + @Override public synchronized DataManager getDataManager() { if (mDataManager == null) { diff --git a/src/com/android/gallery3d/app/MovieActivity.java b/src/com/android/gallery3d/app/MovieActivity.java index 1547f6faf..275b04ab3 100644 --- a/src/com/android/gallery3d/app/MovieActivity.java +++ b/src/com/android/gallery3d/app/MovieActivity.java @@ -18,31 +18,62 @@ package com.android.gallery3d.app; import android.annotation.TargetApi; import android.app.ActionBar; +import android.app.ActionBar.OnMenuVisibilityListener; import android.app.Activity; +import android.app.AlertDialog; +import android.app.KeyguardManager; +import android.bluetooth.BluetoothClass; +import android.bluetooth.BluetoothDevice; import android.content.AsyncQueryHandler; +import android.content.BroadcastReceiver; import android.content.ContentResolver; +import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; +import android.content.IntentFilter; +import android.content.res.Configuration; +import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.media.AudioManager; +import android.media.audiofx.AudioEffect; +import android.media.audiofx.AudioEffect.Descriptor; +import android.media.audiofx.BassBoost; +import android.media.audiofx.Virtualizer; +import android.media.MediaPlayer; import android.net.Uri; +import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.provider.MediaStore; import android.provider.OpenableColumns; +import android.view.Gravity; import android.view.KeyEvent; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.widget.CompoundButton; import android.widget.ShareActionProvider; +import android.widget.ToggleButton; +import android.widget.Toast; import com.android.gallery3d.R; import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.common.Utils; +import com.android.gallery3d.ui.Knob; +import org.codeaurora.gallery3d.ext.IActivityHooker; +import org.codeaurora.gallery3d.ext.IMovieItem; +import org.codeaurora.gallery3d.ext.MovieItem; +import org.codeaurora.gallery3d.ext.MovieUtils; +import org.codeaurora.gallery3d.video.ExtensionHelper; +import org.codeaurora.gallery3d.video.MovieTitleHelper; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothProfile; /** * This activity plays a video from a specified URI. @@ -53,14 +84,77 @@ import com.android.gallery3d.common.Utils; */ public class MovieActivity extends Activity { @SuppressWarnings("unused") - private static final String TAG = "MovieActivity"; - public static final String KEY_LOGO_BITMAP = "logo-bitmap"; - public static final String KEY_TREAT_UP_AS_BACK = "treat-up-as-back"; + private static final String TAG = "MovieActivity"; + private static final boolean LOG = false; + public static final String KEY_LOGO_BITMAP = "logo-bitmap"; + public static final String KEY_TREAT_UP_AS_BACK = "treat-up-as-back"; + private static final String VIDEO_SDP_MIME_TYPE = "application/sdp"; + private static final String VIDEO_SDP_TITLE = "rtsp://"; + private static final String VIDEO_FILE_SCHEMA = "file"; + private static final String VIDEO_MIME_TYPE = "video/*"; + private static final String SHARE_HISTORY_FILE = "video_share_history_file"; private MoviePlayer mPlayer; - private boolean mFinishOnCompletion; - private Uri mUri; - private boolean mTreatUpAsBack; + private boolean mFinishOnCompletion; + private Uri mUri; + + private static final short BASSBOOST_MAX_STRENGTH = 1000; + private static final short VIRTUALIZER_MAX_STRENGTH = 1000; + + private boolean mIsHeadsetOn = false; + private boolean mVirtualizerSupported = false; + private boolean mBassBoostSupported = false; + + static enum Key { + global_enabled, bb_strength, virt_strength + }; + + private BassBoost mBassBoostEffect; + private Virtualizer mVirtualizerEffect; + private AlertDialog mEffectDialog; + private ToggleButton mSwitch; + private Knob mBassBoostKnob; + private Knob mVirtualizerKnob; + + private SharedPreferences mPrefs; + private ShareActionProvider mShareProvider; + private IMovieItem mMovieItem; + private IActivityHooker mMovieHooker; + private KeyguardManager mKeyguardManager; + + private boolean mResumed = false; + private boolean mControlResumed = false; + + private final BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(final Context context, final Intent intent) { + final String action = intent.getAction(); + final AudioManager audioManager = + (AudioManager) getSystemService(Context.AUDIO_SERVICE); + if (action.equals(Intent.ACTION_HEADSET_PLUG)) { + mIsHeadsetOn = (intent.getIntExtra("state", 0) == 1) + || audioManager.isBluetoothA2dpOn(); + } else if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED) + || action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) { + final int deviceClass = ((BluetoothDevice) + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)) + .getBluetoothClass().getDeviceClass(); + if ((deviceClass == BluetoothClass.Device.AUDIO_VIDEO_HEADPHONES) + || (deviceClass == BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET)) { + mIsHeadsetOn = action.equals(BluetoothDevice.ACTION_ACL_CONNECTED) + || audioManager.isWiredHeadsetOn(); + } + } else if (action.equals(AudioManager.ACTION_AUDIO_BECOMING_NOISY)) { + mIsHeadsetOn = false; + } + if (mEffectDialog != null) { + if (!mIsHeadsetOn && !isBtHeadsetConnected() && mEffectDialog.isShowing()) { + mEffectDialog.dismiss(); + showHeadsetPlugToast(); + } + } + } + }; @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void setSystemUiVisibility(View rootView) { @@ -84,16 +178,24 @@ public class MovieActivity extends Activity { setSystemUiVisibility(rootView); Intent intent = getIntent(); + + mMovieHooker = ExtensionHelper.getHooker(this); + initMovieInfo(intent); + initializeActionBar(intent); mFinishOnCompletion = intent.getBooleanExtra( MediaStore.EXTRA_FINISH_ON_COMPLETION, true); - mTreatUpAsBack = intent.getBooleanExtra(KEY_TREAT_UP_AS_BACK, false); - mPlayer = new MoviePlayer(rootView, this, intent.getData(), savedInstanceState, + mPrefs = getSharedPreferences(getApplicationContext().getPackageName(), + Context.MODE_PRIVATE); + mPlayer = new MoviePlayer(rootView, this, mMovieItem, savedInstanceState, !mFinishOnCompletion) { @Override public void onCompletion() { if (mFinishOnCompletion) { - finish(); + finishActivity(); + mControlResumed = false; + Bookmarker mBookmarker = new Bookmarker(MovieActivity.this); + mBookmarker.setBookmark(mMovieItem.getUri(), 0, 1); } } }; @@ -114,6 +216,29 @@ public class MovieActivity extends Activity { // We set the background in the theme to have the launching animation. // But for the performance (and battery), we remove the background here. win.setBackgroundDrawable(null); + mMovieHooker.init(this, intent); + mMovieHooker.setParameter(null, mPlayer.getMoviePlayerExt()); + mMovieHooker.setParameter(null, mMovieItem); + mMovieHooker.setParameter(null, mPlayer.getVideoSurface()); + mMovieHooker.onCreate(savedInstanceState); + + // Determine available/supported effects + final Descriptor[] effects = AudioEffect.queryEffects(); + for (final Descriptor effect : effects) { + if (effect.type.equals(AudioEffect.EFFECT_TYPE_VIRTUALIZER)) { + mVirtualizerSupported = true; + } else if (effect.type.equals(AudioEffect.EFFECT_TYPE_BASS_BOOST)) { + mBassBoostSupported = true; + } + } + + mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + mPlayer.onPrepared(mp); + initEffects(mp.getAudioSessionId()); + } + }); } private void setActionBarLogoFromIntent(Intent intent) { @@ -132,9 +257,21 @@ public class MovieActivity extends Activity { } setActionBarLogoFromIntent(intent); actionBar.setDisplayOptions( - ActionBar.DISPLAY_HOME_AS_UP, - ActionBar.DISPLAY_HOME_AS_UP); + ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE, + ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE); + actionBar.addOnMenuVisibilityListener(new OnMenuVisibilityListener() { + @Override + public void onMenuVisibilityChanged(boolean isVisible) { + if (mPlayer != null) { + if (isVisible) { + mPlayer.cancelHidingController(); + } else { + mPlayer.restartHidingController(); + } + } + } + }); String title = intent.getStringExtra(Intent.EXTRA_TITLE); if (title != null) { actionBar.setTitle(title); @@ -170,24 +307,193 @@ public class MovieActivity extends Activity { public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.movie, menu); + MenuItem shareMenu = menu.findItem(R.id.action_share); + ShareActionProvider provider = (ShareActionProvider) shareMenu.getActionProvider(); + mShareProvider = provider; + if (mShareProvider != null) { + // share provider is singleton, we should refresh our history file. + mShareProvider.setShareHistoryFileName(SHARE_HISTORY_FILE); + } + refreshShareProvider(mMovieItem); + + final MenuItem mi = menu.add(R.string.audio_effects); + mi.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + onAudioEffectsMenuItemClick(); + return true; + } + }); + mMovieHooker.onCreateOptionsMenu(menu); + return true; + } - // Document says EXTRA_STREAM should be a content: Uri - // So, we only share the video if it's "content:". - MenuItem shareItem = menu.findItem(R.id.action_share); - if (ContentResolver.SCHEME_CONTENT.equals(mUri.getScheme())) { - shareItem.setVisible(true); - ((ShareActionProvider) shareItem.getActionProvider()) - .setShareIntent(createShareIntent()); + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + super.onPrepareOptionsMenu(menu); + mMovieHooker.onPrepareOptionsMenu(menu); + return true; + } + + private void onAudioEffectsMenuItemClick() { + if (!mIsHeadsetOn && !isBtHeadsetConnected()) { + showHeadsetPlugToast(); } else { - shareItem.setVisible(false); + LayoutInflater factory = LayoutInflater.from(this); + final View content = factory.inflate(R.layout.audio_effects_dialog, null); + final View title = factory.inflate(R.layout.audio_effects_title, null); + + boolean enabled = mPrefs.getBoolean(Key.global_enabled.toString(), false); + + mSwitch = (ToggleButton) title.findViewById(R.id.audio_effects_switch); + mSwitch.setChecked(enabled); + mSwitch.setBackgroundResource(enabled ? + R.drawable.switch_thumb_activated : R.drawable.switch_thumb_off); + + mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + mSwitch.setBackgroundResource(isChecked ? + R.drawable.switch_thumb_activated : R.drawable.switch_thumb_off); + if(mBassBoostEffect != null) { + mBassBoostEffect.setEnabled(isChecked); + } + if(mVirtualizerEffect != null) { + mVirtualizerEffect.setEnabled(isChecked); + } + mBassBoostKnob.setEnabled(isChecked); + mVirtualizerKnob.setEnabled(isChecked); + } + }); + + mBassBoostKnob = (Knob) content.findViewById(R.id.bBStrengthKnob); + mBassBoostKnob.setEnabled(enabled); + mBassBoostKnob.setMax(BASSBOOST_MAX_STRENGTH); + mBassBoostKnob.setValue(mPrefs.getInt(Key.bb_strength.toString(), 0)); + mBassBoostKnob.setOnKnobChangeListener(new Knob.OnKnobChangeListener() { + @Override + public void onValueChanged(Knob knob, int value, boolean fromUser) { + if(mBassBoostEffect != null) { + mBassBoostEffect.setStrength((short) value); + } + } + + @Override + public boolean onSwitchChanged(Knob knob, boolean enabled) { + return false; + } + }); + + mVirtualizerKnob = (Knob) content.findViewById(R.id.vIStrengthKnob); + mVirtualizerKnob.setEnabled(enabled); + mVirtualizerKnob.setMax(VIRTUALIZER_MAX_STRENGTH); + mVirtualizerKnob.setValue(mPrefs.getInt(Key.virt_strength.toString(), 0)); + mVirtualizerKnob.setOnKnobChangeListener(new Knob.OnKnobChangeListener() { + @Override + public void onValueChanged(Knob knob, int value, boolean fromUser) { + if(mVirtualizerEffect != null) { + mVirtualizerEffect.setStrength((short) value); + } + } + + @Override + public boolean onSwitchChanged(Knob knob, boolean enabled) { + return false; + } + }); + + mEffectDialog = new AlertDialog.Builder(MovieActivity.this, + AlertDialog.THEME_HOLO_DARK) + .setCustomTitle(title) + .setView(content) + .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SharedPreferences.Editor editor = mPrefs.edit(); + editor.putBoolean(Key.global_enabled.toString(), mSwitch.isChecked()); + editor.putInt(Key.bb_strength.toString(), mBassBoostKnob.getValue()); + editor.putInt(Key.virt_strength.toString(), + mVirtualizerKnob.getValue()); + editor.commit(); + } + }) + .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + boolean enabled = mPrefs.getBoolean(Key.global_enabled.toString(), false); + if(mBassBoostEffect != null) { + mBassBoostEffect.setStrength((short) + mPrefs.getInt(Key.bb_strength.toString(), 0)); + mBassBoostEffect.setEnabled(enabled); + } + if(mVirtualizerEffect != null) { + mVirtualizerEffect.setStrength((short) + mPrefs.getInt(Key.virt_strength.toString(), 0)); + mVirtualizerEffect.setEnabled(enabled); + } + } + }) + .setCancelable(false) + .create(); + mEffectDialog.show(); + mEffectDialog.findViewById(com.android.internal.R.id.titleDivider) + .setBackgroundResource(R.color.highlight); + } + } + + public void initEffects(int sessionId) { + // Singleton instance + if ((mBassBoostEffect == null) && mBassBoostSupported) { + mBassBoostEffect = new BassBoost(0, sessionId); + } + + if ((mVirtualizerEffect == null) && mVirtualizerSupported) { + mVirtualizerEffect = new Virtualizer(0, sessionId); + } + + if (mIsHeadsetOn || isBtHeadsetConnected()) { + if (mPrefs.getBoolean(Key.global_enabled.toString(), false)) { + if (mBassBoostSupported) { + mBassBoostEffect.setStrength((short) + mPrefs.getInt(Key.bb_strength.toString(), 0)); + mBassBoostEffect.setEnabled(true); + } + if (mVirtualizerSupported) { + mVirtualizerEffect.setStrength((short) + mPrefs.getInt(Key.virt_strength.toString(), 0)); + mVirtualizerEffect.setEnabled(true); + } + } else { + if (mBassBoostSupported) { + mBassBoostEffect.setStrength((short) + mPrefs.getInt(Key.bb_strength.toString(), 0)); + } + if (mVirtualizerSupported) { + mVirtualizerEffect.setStrength((short) + mPrefs.getInt(Key.virt_strength.toString(), 0)); + } + } + } + + } + + public void releaseEffects() { + if (mBassBoostEffect != null) { + mBassBoostEffect.setEnabled(false); + mBassBoostEffect.release(); + mBassBoostEffect = null; + } + if (mVirtualizerEffect != null) { + mVirtualizerEffect.setEnabled(false); + mVirtualizerEffect.release(); + mVirtualizerEffect = null; } - return true; } private Intent createShareIntent() { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("video/*"); - intent.putExtra(Intent.EXTRA_STREAM, mUri); + intent.putExtra(Intent.EXTRA_STREAM, mMovieItem.getUri()); return intent; } @@ -195,19 +501,23 @@ public class MovieActivity extends Activity { public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { - if (mTreatUpAsBack) { - finish(); - } else { - startActivity(new Intent(this, GalleryActivity.class)); - finish(); - } + // If click back up button, we will always finish current activity and + // back to previous one. + finish(); return true; } else if (id == R.id.action_share) { startActivity(Intent.createChooser(createShareIntent(), getString(R.string.share))); return true; } - return false; + return mMovieHooker.onOptionsItemSelected(item); + } + + public void showHeadsetPlugToast() { + final Toast toast = Toast.makeText(getApplicationContext(), R.string.headset_plug, + Toast.LENGTH_LONG); + toast.setGravity(Gravity.CENTER, toast.getXOffset() / 2, toast.getYOffset() / 2); + toast.show(); } @Override @@ -216,6 +526,8 @@ public class MovieActivity extends Activity { .requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); super.onStart(); + mMovieHooker.onStart(); + registerScreenReceiver(); } @Override @@ -223,18 +535,72 @@ public class MovieActivity extends Activity { ((AudioManager) getSystemService(AUDIO_SERVICE)) .abandonAudioFocus(null); super.onStop(); + if (mControlResumed && mPlayer != null) { + mPlayer.onStop(); + mControlResumed = false; + } + mMovieHooker.onStop(); + unregisterScreenReceiver(); } @Override public void onPause() { - mPlayer.onPause(); + // Audio track will be deallocated for local video playback, + // thus recycle effect here. + releaseEffects(); + try { + unregisterReceiver(mReceiver); + } catch (IllegalArgumentException e) { + // Do nothing + } + mResumed = false; + if (mControlResumed && mPlayer != null) { + mControlResumed = !mPlayer.onPause(); + } super.onPause(); + mMovieHooker.onPause(); } @Override public void onResume() { - mPlayer.onResume(); + invalidateOptionsMenu(); + + if ((mVirtualizerSupported) || (mBassBoostSupported)) { + final IntentFilter intentFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); + intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); + intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); + intentFilter.addAction(AudioManager.ACTION_AUDIO_BECOMING_NOISY); + registerReceiver(mReceiver, intentFilter); + } + + mResumed = true; + if (!isKeyguardLocked() && !mControlResumed && mPlayer != null) { + mPlayer.onResume(); + mControlResumed = true; + //initEffects(mPlayer.getAudioSessionId()); + } + enhanceActionBar(); super.onResume(); + mMovieHooker.onResume(); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE || + this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { + mPlayer.setDefaultScreenMode(); + } + } + + private boolean isBtHeadsetConnected() { + BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); + if (adapter != null && adapter.isEnabled() && + (BluetoothProfile.STATE_CONNECTED == adapter.getProfileConnectionState(BluetoothProfile.HEADSET) + || BluetoothProfile.STATE_CONNECTED == adapter.getProfileConnectionState(BluetoothProfile.A2DP))) { + return true; + } + return false; } @Override @@ -245,8 +611,24 @@ public class MovieActivity extends Activity { @Override public void onDestroy() { + releaseEffects(); mPlayer.onDestroy(); super.onDestroy(); + mMovieHooker.onDestroy(); + } + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + if (LOG) { + Log.v(TAG, "onWindowFocusChanged(" + hasFocus + ") isKeyguardLocked=" + + isKeyguardLocked() + + ", mResumed=" + mResumed + ", mControlResumed=" + mControlResumed); + } + if (hasFocus && !isKeyguardLocked() && mResumed && !mControlResumed && mPlayer != null) { + mPlayer.onResume(); + mControlResumed = true; + } } @Override @@ -260,4 +642,156 @@ public class MovieActivity extends Activity { return mPlayer.onKeyUp(keyCode, event) || super.onKeyUp(keyCode, event); } + + private boolean isSharable() { + String scheme = mUri.getScheme(); + return ContentResolver.SCHEME_FILE.equals(scheme) + || (ContentResolver.SCHEME_CONTENT.equals(scheme) && MediaStore.AUTHORITY + .equals(mUri.getAuthority())); + } + private void initMovieInfo(Intent intent) { + Uri original = intent.getData(); + String mimeType = intent.getType(); + if (VIDEO_SDP_MIME_TYPE.equalsIgnoreCase(mimeType) + && VIDEO_FILE_SCHEMA.equalsIgnoreCase(original.getScheme())) { + mMovieItem = new MovieItem(VIDEO_SDP_TITLE + original, mimeType, null); + } else { + mMovieItem = new MovieItem(original, mimeType, null); + } + mMovieItem.setOriginalUri(original); + } + + // we do not stop live streaming when other dialog overlays it. + private BroadcastReceiver mScreenReceiver = new BroadcastReceiver() { + + @Override + public void onReceive(Context context, Intent intent) { + if (LOG) { + Log.v(TAG, "onReceive(" + intent.getAction() + ") mControlResumed=" + + mControlResumed); + } + if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) { + // Only stop video. + if (mControlResumed) { + mPlayer.onStop(); + mControlResumed = false; + } + } else if (Intent.ACTION_USER_PRESENT.equals(intent.getAction())) { + if (!mControlResumed) { + mPlayer.onResume(); + mControlResumed = true; + } + } + } + + }; + + private void registerScreenReceiver() { + IntentFilter filter = new IntentFilter(); + filter.addAction(Intent.ACTION_SCREEN_OFF); + filter.addAction(Intent.ACTION_USER_PRESENT); + registerReceiver(mScreenReceiver, filter); + } + + private void unregisterScreenReceiver() { + unregisterReceiver(mScreenReceiver); + } + + private boolean isKeyguardLocked() { + if (mKeyguardManager == null) { + mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); + } + // isKeyguardSecure excludes the slide lock case. + boolean locked = (mKeyguardManager != null) + && mKeyguardManager.inKeyguardRestrictedInputMode(); + if (LOG) { + Log.v(TAG, "isKeyguardLocked() locked=" + locked + ", mKeyguardManager=" + + mKeyguardManager); + } + return locked; + } + + public void refreshMovieInfo(IMovieItem info) { + mMovieItem = info; + setActionBarTitle(info.getTitle()); + refreshShareProvider(info); + mMovieHooker.setParameter(null, mMovieItem); + } + + private void refreshShareProvider(IMovieItem info) { + // we only share the video if it's "content:". + if (mShareProvider != null) { + Intent intent = new Intent(Intent.ACTION_SEND); + if (MovieUtils.isLocalFile(info.getUri(), info.getMimeType())) { + intent.setType("video/*"); + intent.putExtra(Intent.EXTRA_STREAM, info.getUri()); + } else { + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_TEXT, String.valueOf(info.getUri())); + } + mShareProvider.setShareIntent(intent); + } + } + + private void enhanceActionBar() { + final IMovieItem movieItem = mMovieItem;// remember original item + final Uri uri = mMovieItem.getUri(); + final String scheme = mMovieItem.getUri().getScheme(); + final String authority = mMovieItem.getUri().getAuthority(); + new AsyncTask<Void, Void, String>() { + @Override + protected String doInBackground(Void... params) { + String title = null; + if (ContentResolver.SCHEME_FILE.equals(scheme)) { + title = MovieTitleHelper.getTitleFromMediaData(MovieActivity.this, uri); + } else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) { + title = MovieTitleHelper.getTitleFromDisplayName(MovieActivity.this, uri); + if (title == null) { + title = MovieTitleHelper.getTitleFromData(MovieActivity.this, uri); + } + } + if (title == null) { + title = MovieTitleHelper.getTitleFromUri(uri); + } + if (LOG) { + Log.v(TAG, "enhanceActionBar() task return " + title); + } + return title; + } + + @Override + protected void onPostExecute(String result) { + if (LOG) { + Log.v(TAG, "onPostExecute(" + result + ") movieItem=" + movieItem + + ", mMovieItem=" + mMovieItem); + } + movieItem.setTitle(result); + if (movieItem == mMovieItem) { + setActionBarTitle(result); + } + }; + }.execute(); + if (LOG) { + Log.v(TAG, "enhanceActionBar() " + mMovieItem); + } + } + + public void setActionBarTitle(String title) { + if (LOG) { + Log.v(TAG, "setActionBarTitle(" + title + ")"); + } + ActionBar actionBar = getActionBar(); + if (title != null) { + actionBar.setTitle(title); + } + } + @Override + public void onBackPressed() { + finishActivity(); + } + private void finishActivity(){ + MovieActivity.this.finish(); + overridePendingTransition(0,0); + return; + } } diff --git a/src/com/android/gallery3d/app/MovieControllerOverlay.java b/src/com/android/gallery3d/app/MovieControllerOverlay.java index f01e619c6..c26b12655 100644 --- a/src/com/android/gallery3d/app/MovieControllerOverlay.java +++ b/src/com/android/gallery3d/app/MovieControllerOverlay.java @@ -17,14 +17,39 @@ package com.android.gallery3d.app; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.graphics.Rect; import android.os.Handler; +import android.util.DisplayMetrics; +import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.ImageView.ScaleType; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.RelativeLayout; +import android.widget.TextView; + import com.android.gallery3d.R; +import com.android.gallery3d.app.CommonControllerOverlay.State; +import org.codeaurora.gallery3d.ext.IContrllerOverlayExt; +import org.codeaurora.gallery3d.video.IControllerRewindAndForward; +import org.codeaurora.gallery3d.video.IControllerRewindAndForward.IRewindAndForwardListener; +import org.codeaurora.gallery3d.video.ExtensionHelper; +import org.codeaurora.gallery3d.video.ScreenModeManager; +import org.codeaurora.gallery3d.video.ScreenModeManager.ScreenModeListener; + /** * The playback controller for the Movie Player. @@ -32,15 +57,25 @@ import com.android.gallery3d.R; public class MovieControllerOverlay extends CommonControllerOverlay implements AnimationListener { + private static final String TAG = "Gallery3D/MovieControllerOverlay"; + private static final boolean LOG = false; + + private ScreenModeManager mScreenModeManager; + private ScreenModeExt mScreenModeExt = new ScreenModeExt(); + private ControllerRewindAndForwardExt mControllerRewindAndForwardExt = new ControllerRewindAndForwardExt(); + private OverlayExtension mOverlayExt = new OverlayExtension(); private boolean hidden; private final Handler handler; private final Runnable startHidingRunnable; private final Animation hideAnimation; + private boolean enableRewindAndForward = false; + private Context mContext; + public MovieControllerOverlay(Context context) { super(context); - + mContext = context; handler = new Handler(); startHidingRunnable = new Runnable() { @Override @@ -52,9 +87,64 @@ public class MovieControllerOverlay extends CommonControllerOverlay implements hideAnimation = AnimationUtils.loadAnimation(context, R.anim.player_out); hideAnimation.setAnimationListener(this); + enableRewindAndForward = true; + if (LOG) { + Log.v(TAG, "enableRewindAndForward is " + enableRewindAndForward); + } + mControllerRewindAndForwardExt.init(context); + mScreenModeExt.init(context, mTimeBar); + mBackground.setClickable(true); hide(); } + public void showPlaying() { + if (!mOverlayExt.handleShowPlaying()) { + mState = State.PLAYING; + showMainView(mPlayPauseReplayView); + } + if (LOG) { + Log.v(TAG, "showPlaying() state=" + mState); + } + } + + public void showPaused() { + if (!mOverlayExt.handleShowPaused()) { + mState = State.PAUSED; + showMainView(mPlayPauseReplayView); + } + if (LOG) { + Log.v(TAG, "showPaused() state=" + mState); + } + } + + public void showEnded() { + mOverlayExt.onShowEnded(); + mState = State.ENDED; + showMainView(mPlayPauseReplayView); + if (LOG) { + Log.v(TAG, "showEnded() state=" + mState); + } + } + + public void showLoading() { + mOverlayExt.onShowLoading(); + mState = State.LOADING; + showMainView(mLoadingView); + if (LOG) { + Log.v(TAG, "showLoading() state=" + mState); + } + } + + public void showErrorMessage(String message) { + mOverlayExt.onShowErrorMessage(message); + mState = State.ERROR; + int padding = (int) (getMeasuredWidth() * ERROR_MESSAGE_RELATIVE_PADDING); + mErrorView.setPadding(padding, mErrorView.getPaddingTop(), padding, + mErrorView.getPaddingBottom()); + mErrorView.setText(message); + showMainView(mErrorView); + } + @Override protected void createTimeBar(Context context) { mTimeBar = new TimeBar(context, this); @@ -64,25 +154,51 @@ public class MovieControllerOverlay extends CommonControllerOverlay implements public void hide() { boolean wasHidden = hidden; hidden = true; - super.hide(); + mPlayPauseReplayView.setVisibility(View.INVISIBLE); + mLoadingView.setVisibility(View.INVISIBLE); + if (!mOverlayExt.handleHide()) { + setVisibility(View.INVISIBLE); + } + mBackground.setVisibility(View.INVISIBLE); + mTimeBar.setVisibility(View.INVISIBLE); + mScreenModeExt.onHide(); + if (enableRewindAndForward) { + mControllerRewindAndForwardExt.onHide(); + } + setFocusable(true); + requestFocus(); if (mListener != null && wasHidden != hidden) { mListener.onHidden(); } } + private void showMainView(View view) { + mMainView = view; + mErrorView.setVisibility(mMainView == mErrorView ? View.VISIBLE + : View.INVISIBLE); + mLoadingView.setVisibility(mMainView == mLoadingView ? View.VISIBLE + : View.INVISIBLE); + mPlayPauseReplayView + .setVisibility(mMainView == mPlayPauseReplayView ? View.VISIBLE + : View.INVISIBLE); + mOverlayExt.onShowMainView(view); + show(); + } @Override public void show() { boolean wasHidden = hidden; hidden = false; - super.show(); + updateViews(); + setVisibility(View.VISIBLE); + setFocusable(false); if (mListener != null && wasHidden != hidden) { mListener.onShown(); } maybeStartHiding(); } - private void maybeStartHiding() { + public void maybeStartHiding() { cancelHiding(); if (mState == State.PLAYING) { handler.postDelayed(startHidingRunnable, 2500); @@ -90,8 +206,14 @@ public class MovieControllerOverlay extends CommonControllerOverlay implements } private void startHiding() { - startHideAnimation(mBackground); - startHideAnimation(mTimeBar); + if (mOverlayExt.canHidePanel()) { + startHideAnimation(mBackground); + startHideAnimation(mTimeBar); + mScreenModeExt.onStartHiding(); + if (enableRewindAndForward) { + mControllerRewindAndForwardExt.onStartHiding(); + } + } startHideAnimation(mPlayPauseReplayView); } @@ -101,10 +223,16 @@ public class MovieControllerOverlay extends CommonControllerOverlay implements } } - private void cancelHiding() { + public void cancelHiding() { handler.removeCallbacks(startHidingRunnable); - mBackground.setAnimation(null); - mTimeBar.setAnimation(null); + if (mOverlayExt.canHidePanel()) { + mBackground.setAnimation(null); + mTimeBar.setAnimation(null); + mScreenModeExt.onCancelHiding(); + if (enableRewindAndForward) { + mControllerRewindAndForwardExt.onCancelHiding(); + } + } mPlayPauseReplayView.setAnimation(null); } @@ -123,6 +251,65 @@ public class MovieControllerOverlay extends CommonControllerOverlay implements hide(); } + public void onClick(View view) { + if (LOG) { + Log.v(TAG, "onClick(" + view + ") listener=" + mListener + + ", state=" + mState + ", canReplay=" + mCanReplay); + } + if (mListener != null) { + if (view == mPlayPauseReplayView) { + if (mState == State.ENDED) { + if (mCanReplay) { + mListener.onReplay(); + } + } else if (mState == State.PAUSED || mState == State.PLAYING) { + mListener.onPlayPause(); + // set view disabled (play/pause asynchronous processing) + setViewEnabled(true); + } + } + } else { + mScreenModeExt.onClick(view); + if (enableRewindAndForward) { + mControllerRewindAndForwardExt.onClick(view); + } + } + } + + /* + * set view enable (non-Javadoc) + * @see com.android.gallery3d.app.ControllerOverlay#setViewEnabled(boolean) + */ + @Override + public void setViewEnabled(boolean isEnabled) { + if (mListener.onIsRTSP()) { + if (LOG) { + Log.v(TAG, "setViewEnabled is " + isEnabled); + } + mOverlayExt.setCanScrubbing(isEnabled); + mPlayPauseReplayView.setEnabled(isEnabled); + if (enableRewindAndForward) { + mControllerRewindAndForwardExt.setViewEnabled(isEnabled); + } + } + } + + /* + * set play pause button from disable to normal (non-Javadoc) + * @see + * com.android.gallery3d.app.ControllerOverlay#setPlayPauseReplayResume( + * void) + */ + @Override + public void setPlayPauseReplayResume() { + if (mListener.onIsRTSP()) { + if (LOG) { + Log.v(TAG, "setPlayPauseReplayResume is enabled is true"); + } + mPlayPauseReplayView.setEnabled(true); + } + } + @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (hidden) { @@ -144,7 +331,10 @@ public class MovieControllerOverlay extends CommonControllerOverlay implements switch (event.getAction()) { case MotionEvent.ACTION_DOWN: cancelHiding(); - if (mState == State.PLAYING || mState == State.PAUSED) { + // you can click play or pause when view is resumed + // play/pause asynchronous processing + if ((mState == State.PLAYING || mState == State.PAUSED) + && mOverlayExt.mEnableScrubbing) { mListener.onPlayPause(); } break; @@ -156,11 +346,71 @@ public class MovieControllerOverlay extends CommonControllerOverlay implements } @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + int width = ((MovieActivity) mContext).getWindowManager().getDefaultDisplay().getWidth(); + Rect insets = mWindowInsets; + int pl = insets.left; // the left paddings + int pr = insets.right; + int pt = insets.top; + int pb = insets.bottom; + + int h = bottom - top; + int w = right - left; + boolean error = mErrorView.getVisibility() == View.VISIBLE; + + int y = h - pb; + // Put both TimeBar and Background just above the bottom system + // component. + // But extend the background to the width of the screen, since we don't + // care if it will be covered by a system component and it looks better. + + // Needed, otherwise the framework will not re-layout in case only the + // padding is changed + if (enableRewindAndForward) { + mBackground.layout(0, y - mTimeBar.getPreferredHeight() - 80, w, y); + mTimeBar.layout(pl, y - mTimeBar.getPreferredHeight() - 120, w - pr, + y - mTimeBar.getBarHeight()); + mControllerRewindAndForwardExt.onLayout(0, width, y); + } else { + mBackground.layout(0, y - mTimeBar.getBarHeight(), w, y); + mTimeBar.layout(pl, y - mTimeBar.getPreferredHeight(), + w - pr - mScreenModeExt.getAddedRightPadding(), y); + } + mScreenModeExt.onLayout(w, pr, y); + // Put the play/pause/next/ previous button in the center of the screen + layoutCenteredView(mPlayPauseReplayView, 0, 0, w, h); + + if (mMainView != null) { + layoutCenteredView(mMainView, 0, 0, w, h); + } + } + + @Override protected void updateViews() { if (hidden) { return; } - super.updateViews(); + mBackground.setVisibility(View.VISIBLE); + mTimeBar.setVisibility(View.VISIBLE); + mPlayPauseReplayView.setImageResource( + mState == State.PAUSED ? R.drawable.videoplayer_play : + mState == State.PLAYING ? R.drawable.videoplayer_pause : + R.drawable.videoplayer_reload); + mScreenModeExt.onShow(); + if (enableRewindAndForward) { + mControllerRewindAndForwardExt.onShow(); + } + if (!mOverlayExt.handleUpdateViews()) { + mPlayPauseReplayView.setVisibility( + (mState != State.LOADING && mState != State.ERROR && + !(mState == State.ENDED && !mCanReplay)) + ? View.VISIBLE : View.GONE); + } + requestLayout(); + if (LOG) { + Log.v(TAG, "updateViews() state=" + mState + ", canReplay=" + + mCanReplay); + } } // TimeBar listener @@ -182,4 +432,569 @@ public class MovieControllerOverlay extends CommonControllerOverlay implements maybeStartHiding(); super.onScrubbingEnd(time, trimStartTime, trimEndTime); } + + public void setScreenModeManager(ScreenModeManager manager) { + mScreenModeManager = manager; + if (mScreenModeManager != null) { + mScreenModeManager.addListener(mScreenModeExt); + } + if (LOG) { + Log.v(TAG, "setScreenModeManager(" + manager + ")"); + } + } + + public void setDefaultScreenMode() { + mScreenModeManager.setScreenMode(ScreenModeManager.SCREENMODE_BIGSCREEN); + } + + public IContrllerOverlayExt getOverlayExt() { + return mOverlayExt; + } + + public IControllerRewindAndForward getControllerRewindAndForwardExt() { + if (enableRewindAndForward) { + return mControllerRewindAndForwardExt; + } + return null; + } + + private class OverlayExtension implements IContrllerOverlayExt { + private State mLastState; + private String mPlayingInfo; + // for pause feature + private boolean mCanPause = true; + private boolean mEnableScrubbing = false; + // for only audio feature + private boolean mAlwaysShowBottom; + + @Override + public void showBuffering(boolean fullBuffer, int percent) { + if (LOG) { + Log.v(TAG, "showBuffering(" + fullBuffer + ", " + percent + + ") " + "lastState=" + mLastState + ", state=" + mState); + } + if (fullBuffer) { + // do not show text and loading + mTimeBar.setSecondaryProgress(percent); + return; + } + if (mState == State.PAUSED || mState == State.PLAYING) { + mLastState = mState; + } + if (percent >= 0 && percent < 100) { // valid value + mState = State.BUFFERING; + String text = "media controller buffering"; + mTimeBar.setInfo(text); + showMainView(mLoadingView); + } else if (percent == 100) { + mState = mLastState; + mTimeBar.setInfo(null); + showMainView(mPlayPauseReplayView);// restore play pause state + } else { // here to restore old state + mState = mLastState; + mTimeBar.setInfo(null); + } + } + + // set buffer percent to unknown value + public void clearBuffering() { + if (LOG) { + Log.v(TAG, "clearBuffering()"); + } + mTimeBar.setSecondaryProgress(TimeBar.UNKNOWN); + showBuffering(false, TimeBar.UNKNOWN); + } + + public void showReconnecting(int times) { + clearBuffering(); + mState = State.RETRY_CONNECTING; + int msgId = R.string.videoview_error_text_cannot_connect_retry; + String text = getResources().getString(msgId, times); + mTimeBar.setInfo(text); + showMainView(mLoadingView); + if (LOG) { + Log.v(TAG, "showReconnecting(" + times + ")"); + } + } + + public void showReconnectingError() { + clearBuffering(); + mState = State.RETRY_CONNECTING_ERROR; + + String text = "can not connect to server"; + mTimeBar.setInfo(text); + showMainView(mPlayPauseReplayView); + if (LOG) { + Log.v(TAG, "showReconnectingError()"); + } + } + + public void setPlayingInfo(boolean liveStreaming) { + int msgId; + // TODO + if (liveStreaming) { + msgId = R.string.media_controller_live; + } else { + msgId = R.string.media_controller_playing; + } + mPlayingInfo = getResources().getString(msgId); + if (LOG) { + Log.v(TAG, "setPlayingInfo(" + liveStreaming + + ") playingInfo=" + mPlayingInfo); + } + } + + public void setCanPause(boolean canPause) { + this.mCanPause = canPause; + if (LOG) { + Log.v(TAG, "setCanPause(" + canPause + ")"); + } + } + + public void setCanScrubbing(boolean enable) { + mEnableScrubbing = enable; + mTimeBar.setScrubbing(enable); + if (LOG) { + Log.v(TAG, "setCanScrubbing(" + enable + ")"); + } + } + + public void setBottomPanel(boolean alwaysShow, boolean foreShow) { + mAlwaysShowBottom = alwaysShow; + if (!alwaysShow) { // clear background + setBackgroundDrawable(null); + setBackgroundColor(Color.TRANSPARENT); + } else { + setBackgroundResource(R.drawable.media_default_bkg); + if (foreShow) { + setVisibility(View.VISIBLE); + } + } + if (LOG) { + Log.v(TAG, "setBottomPanel(" + alwaysShow + ", " + foreShow + + ")"); + } + } + + public boolean isPlayingEnd() { + if (LOG) { + Log.v(TAG, "isPlayingEnd() state=" + mState); + } + boolean end = false; + if (State.ENDED == mState || State.ERROR == mState + || State.RETRY_CONNECTING_ERROR == mState) { + end = true; + } + return end; + } + + public boolean handleShowPlaying() { + if (mState == State.BUFFERING) { + mLastState = State.PLAYING; + return true; + } + return false; + } + + public boolean handleShowPaused() { + mTimeBar.setInfo(null); + if (mState == State.BUFFERING) { + mLastState = State.PAUSED; + return true; + } + return false; + } + + public void onShowLoading() { + // TODO + int msgId = R.string.media_controller_connecting; + String text = getResources().getString(msgId); + mTimeBar.setInfo(text); + } + + public void onShowEnded() { + clearBuffering(); + mTimeBar.setInfo(null); + } + + public void onShowErrorMessage(String message) { + clearBuffering(); + } + + public boolean handleUpdateViews() { + mPlayPauseReplayView + .setVisibility((mState != State.LOADING + && mState != State.ERROR + && mState != State.BUFFERING + && mState != State.RETRY_CONNECTING && !(mState != State.ENDED + && mState != State.RETRY_CONNECTING_ERROR && !mCanPause)) + // for live streaming + ? View.VISIBLE + : View.GONE); + + if (mPlayingInfo != null && mState == State.PLAYING) { + mTimeBar.setInfo(mPlayingInfo); + } + return true; + } + + public boolean handleHide() { + return mAlwaysShowBottom; + } + + public void onShowMainView(View view) { + if (LOG) { + Log.v(TAG, "showMainView(" + view + ") errorView=" + + mErrorView + ", loadingView=" + mLoadingView + + ", playPauseReplayView=" + mPlayPauseReplayView); + Log.v(TAG, "showMainView() enableScrubbing=" + + mEnableScrubbing + ", state=" + mState); + } + if (mEnableScrubbing + && (mState == State.PAUSED || mState == State.PLAYING)) { + mTimeBar.setScrubbing(true); + } else { + mTimeBar.setScrubbing(false); + } + } + + public boolean canHidePanel() { + return !mAlwaysShowBottom; + } + }; + + class ScreenModeExt implements View.OnClickListener, ScreenModeListener { + // for screen mode feature + private ImageView mScreenView; + private int mScreenPadding; + private int mScreenWidth; + + private static final int MARGIN = 10; // dip + private ViewGroup mParent; + private ImageView mSeprator; + + void init(Context context, View myTimeBar) { + DisplayMetrics metrics = context.getResources().getDisplayMetrics(); + int padding = (int) (metrics.density * MARGIN); + myTimeBar.setPadding(padding, 0, padding, 0); + + LayoutParams wrapContent = + new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + // add screenView + mScreenView = new ImageView(context); + // default next screen mode + mScreenView.setImageResource(R.drawable.ic_media_fullscreen); + mScreenView.setScaleType(ScaleType.CENTER); + mScreenView.setFocusable(true); + mScreenView.setClickable(true); + mScreenView.setOnClickListener(this); + addView(mScreenView, wrapContent); + + if (enableRewindAndForward) { + if (LOG) { + Log.v(TAG, "ScreenModeExt enableRewindAndForward"); + } + mSeprator = new ImageView(context); + // default next screen mode + mSeprator.setImageResource(R.drawable.ic_separator_line); + mSeprator.setScaleType(ScaleType.CENTER); + mSeprator.setFocusable(true); + mSeprator.setClickable(true); + mSeprator.setOnClickListener(this); + addView(mSeprator, wrapContent); + + } else { + if (LOG) { + Log.v(TAG, "ScreenModeExt unenableRewindAndForward"); + } + } + + // for screen layout + Bitmap screenButton = BitmapFactory.decodeResource(context.getResources(), + R.drawable.ic_media_bigscreen); + mScreenWidth = screenButton.getWidth(); + mScreenPadding = (int) (metrics.density * MARGIN); + screenButton.recycle(); + } + + private void updateScreenModeDrawable() { + int screenMode = mScreenModeManager.getNextScreenMode(); + if (screenMode == ScreenModeManager.SCREENMODE_BIGSCREEN) { + mScreenView.setImageResource(R.drawable.ic_media_bigscreen); + } else if (screenMode == ScreenModeManager.SCREENMODE_FULLSCREEN) { + mScreenView.setImageResource(R.drawable.ic_media_fullscreen); + } else { + mScreenView.setImageResource(R.drawable.ic_media_cropscreen); + } + } + + @Override + public void onClick(View v) { + if (v == mScreenView && mScreenModeManager != null) { + mScreenModeManager.setScreenMode(mScreenModeManager + .getNextScreenMode()); + show(); + } + } + + public void onStartHiding() { + startHideAnimation(mScreenView); + } + + public void onCancelHiding() { + mScreenView.setAnimation(null); + } + + public void onHide() { + mScreenView.setVisibility(View.INVISIBLE); + if (enableRewindAndForward) { + mSeprator.setVisibility(View.INVISIBLE); + } + } + + public void onShow() { + mScreenView.setVisibility(View.VISIBLE); + if (enableRewindAndForward) { + mSeprator.setVisibility(View.VISIBLE); + } + } + + public void onLayout(int width, int paddingRight, int yPosition) { + // layout screen view position + int sw = getAddedRightPadding(); + mScreenView.layout(width - paddingRight - sw, yPosition + - mTimeBar.getPreferredHeight(), width - paddingRight, + yPosition); + if (enableRewindAndForward) { + mSeprator.layout(width - paddingRight - sw - 22, yPosition + - mTimeBar.getPreferredHeight(), width - paddingRight - sw - 20, + yPosition); + } + } + + public int getAddedRightPadding() { + return mScreenPadding * 2 + mScreenWidth; + } + + @Override + public void onScreenModeChanged(int newMode) { + updateScreenModeDrawable(); + } + } + + class ControllerRewindAndForwardExt implements View.OnClickListener, + IControllerRewindAndForward { + private LinearLayout mContollerButtons; + private ImageView mStop; + private ImageView mForward; + private ImageView mRewind; + private IRewindAndForwardListener mListenerForRewind; + private int mButtonWidth; + private static final int BUTTON_PADDING = 40; + private int mTimeBarHeight = 0; + + void init(Context context) { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt init"); + } + mTimeBarHeight = mTimeBar.getPreferredHeight(); + Bitmap button = BitmapFactory.decodeResource(context.getResources(), + R.drawable.ic_menu_forward); + mButtonWidth = button.getWidth(); + button.recycle(); + + mContollerButtons = new LinearLayout(context); + LinearLayout.LayoutParams wrapContent = new LinearLayout.LayoutParams( + getAddedRightPadding(), mTimeBarHeight); + mContollerButtons.setHorizontalGravity(LinearLayout.HORIZONTAL); + mContollerButtons.setVisibility(View.VISIBLE); + mContollerButtons.setGravity(Gravity.CENTER); + + LinearLayout.LayoutParams buttonParam = new LinearLayout.LayoutParams( + mButtonWidth, mTimeBarHeight); + mRewind = new ImageView(context); + mRewind.setImageResource(R.drawable.icn_media_rewind); + mRewind.setScaleType(ScaleType.CENTER); + mRewind.setFocusable(true); + mRewind.setClickable(true); + mRewind.setOnClickListener(this); + mContollerButtons.addView(mRewind, buttonParam); + + mStop = new ImageView(context); + mStop.setImageResource(R.drawable.icn_media_stop); + mStop.setScaleType(ScaleType.CENTER); + mStop.setFocusable(true); + mStop.setClickable(true); + mStop.setOnClickListener(this); + LinearLayout.LayoutParams stopLayoutParam = new LinearLayout.LayoutParams( + mTimeBarHeight, mTimeBarHeight); + stopLayoutParam.setMargins(BUTTON_PADDING, 0, BUTTON_PADDING, 0); + mContollerButtons.addView(mStop, stopLayoutParam); + + mForward = new ImageView(context); + mForward.setImageResource(R.drawable.icn_media_forward); + mForward.setScaleType(ScaleType.CENTER); + mForward.setFocusable(true); + mForward.setClickable(true); + mForward.setOnClickListener(this); + mContollerButtons.addView(mForward, buttonParam); + + // Do NOT RTL for media controller + mContollerButtons.setLayoutDirection(View.LAYOUT_DIRECTION_LTR); + + addView(mContollerButtons, wrapContent); + } + + @Override + public void onClick(View v) { + if (v == mStop) { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onClick mStop"); + } + mListenerForRewind.onStopVideo(); + } else if (v == mRewind) { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onClick mRewind"); + } + mListenerForRewind.onRewind(); + } else if (v == mForward) { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onClick mForward"); + } + mListenerForRewind.onForward(); + } + } + + public void onStartHiding() { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onStartHiding"); + } + startHideAnimation(mContollerButtons); + } + + public void onCancelHiding() { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onCancelHiding"); + } + mContollerButtons.setAnimation(null); + } + + public void onHide() { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onHide"); + } + mContollerButtons.setVisibility(View.INVISIBLE); + } + + public void onShow() { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onShow"); + } + mContollerButtons.setVisibility(View.VISIBLE); + } + + public void onLayout(int l, int r, int b) { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onLayout"); + } + int cl = (r - l - getAddedRightPadding()) / 2; + int cr = cl + getAddedRightPadding(); + mContollerButtons.layout(cl, b - mTimeBar.getPreferredHeight(), cr, b); + } + + public int getAddedRightPadding() { + return mTimeBarHeight * 3 + BUTTON_PADDING * 2; + } + + @Override + public void setIListener(IRewindAndForwardListener listener) { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt setIListener " + listener); + } + mListenerForRewind = listener; + } + + @Override + public void showControllerButtonsView(boolean canStop, boolean canRewind, boolean canForward) { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt showControllerButtonsView " + canStop + + canRewind + canForward); + } + // show ui + mStop.setEnabled(canStop); + mRewind.setEnabled(canRewind); + mForward.setEnabled(canForward); + } + + @Override + public void setListener(Listener listener) { + setListener(listener); + } + + @Override + public boolean getPlayPauseEanbled() { + return mPlayPauseReplayView.isEnabled(); + } + + @Override + public boolean getTimeBarEanbled() { + return mTimeBar.getScrubbing(); + } + + @Override + public void setCanReplay(boolean canReplay) { + setCanReplay(canReplay); + } + + @Override + public View getView() { + return mContollerButtons; + } + + @Override + public void show() { + show(); + } + + @Override + public void showPlaying() { + showPlaying(); + } + + @Override + public void showPaused() { + showPaused(); + } + + @Override + public void showEnded() { + showEnded(); + } + + @Override + public void showLoading() { + showLoading(); + } + + @Override + public void showErrorMessage(String message) { + showErrorMessage(message); + } + + public void setTimes(int currentTime, int totalTime, int trimStartTime, int trimEndTime) { + setTimes(currentTime, totalTime, 0, 0); + } + + public void setPlayPauseReplayResume() { + } + + public void setViewEnabled(boolean isEnabled) { + // TODO Auto-generated method stub + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt setViewEnabled is " + isEnabled); + } + mRewind.setEnabled(isEnabled); + mForward.setEnabled(isEnabled); + } + } } diff --git a/src/com/android/gallery3d/app/MoviePlayer.java b/src/com/android/gallery3d/app/MoviePlayer.java index f6bd36725..2ef7c2e85 100644..100755 --- a/src/com/android/gallery3d/app/MoviePlayer.java +++ b/src/com/android/gallery3d/app/MoviePlayer.java @@ -23,10 +23,15 @@ import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.DialogInterface.OnClickListener; +import android.content.DialogInterface.OnDismissListener; +import android.content.DialogInterface.OnShowListener; import android.content.Intent; import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.graphics.Color; import android.media.AudioManager; import android.media.MediaPlayer; +import android.media.Metadata; import android.media.audiofx.AudioEffect; import android.media.audiofx.Virtualizer; import android.net.Uri; @@ -35,26 +40,47 @@ import android.os.Bundle; import android.os.Handler; import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.SurfaceView; import android.view.View; import android.view.ViewGroup; import android.widget.VideoView; +import android.widget.Toast; import com.android.gallery3d.R; import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.common.BlobCache; import com.android.gallery3d.util.CacheManager; import com.android.gallery3d.util.GalleryUtils; +import org.codeaurora.gallery3d.ext.IContrllerOverlayExt; +import org.codeaurora.gallery3d.ext.IMoviePlayer; +import org.codeaurora.gallery3d.ext.IMovieItem; +import org.codeaurora.gallery3d.ext.MovieUtils; +import org.codeaurora.gallery3d.video.BookmarkEnhance; +import org.codeaurora.gallery3d.video.ExtensionHelper; +import org.codeaurora.gallery3d.video.IControllerRewindAndForward; +import org.codeaurora.gallery3d.video.IControllerRewindAndForward.IRewindAndForwardListener; +import org.codeaurora.gallery3d.video.ScreenModeManager; +import org.codeaurora.gallery3d.video.ScreenModeManager.ScreenModeListener; +import org.codeaurora.gallery3d.video.CodeauroraVideoView; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; +import java.util.HashMap; +import java.util.Map; public class MoviePlayer implements MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener, - ControllerOverlay.Listener { + ControllerOverlay.Listener, + MediaPlayer.OnInfoListener, + MediaPlayer.OnPreparedListener, + MediaPlayer.OnSeekCompleteListener, + MediaPlayer.OnVideoSizeChangedListener, + MediaPlayer.OnBufferingUpdateListener { @SuppressWarnings("unused") private static final String TAG = "MoviePlayer"; + private static final boolean LOG = false; private static final String KEY_VIDEO_POSITION = "video-position"; private static final String KEY_RESUMEABLE_TIME = "resumeable-timeout"; @@ -68,18 +94,32 @@ public class MoviePlayer implements private static final String CMDNAME = "command"; private static final String CMDPAUSE = "pause"; + private static final String KEY_VIDEO_CAN_SEEK = "video_can_seek"; + private static final String KEY_VIDEO_CAN_PAUSE = "video_can_pause"; + private static final String KEY_VIDEO_LAST_DURATION = "video_last_duration"; + private static final String KEY_VIDEO_LAST_DISCONNECT_TIME = "last_disconnect_time"; + private static final String KEY_VIDEO_STREAMING_TYPE = "video_streaming_type"; + private static final String KEY_VIDEO_STATE = "video_state"; + private static final String VIRTUALIZE_EXTRA = "virtualize"; private static final long BLACK_TIMEOUT = 500; + private static final int DELAY_REMOVE_MS = 10000; + public static final int SERVER_TIMEOUT = 8801; // If we resume the acitivty with in RESUMEABLE_TIMEOUT, we will keep playing. // Otherwise, we pause the player. private static final long RESUMEABLE_TIMEOUT = 3 * 60 * 1000; // 3 mins + public static final int STREAMING_LOCAL = 0; + public static final int STREAMING_HTTP = 1; + public static final int STREAMING_RTSP = 2; + public static final int STREAMING_SDP = 3; + private int mStreamingType = STREAMING_LOCAL; + private Context mContext; - private final VideoView mVideoView; + private final CodeauroraVideoView mVideoView; private final View mRootView; private final Bookmarker mBookmarker; - private final Uri mUri; private final Handler mHandler = new Handler(); private final AudioBecomingNoisyReceiver mAudioBecomingNoisyReceiver; private final MovieControllerOverlay mController; @@ -87,6 +127,11 @@ public class MoviePlayer implements private long mResumeableTime = Long.MAX_VALUE; private int mVideoPosition = 0; private boolean mHasPaused = false; + private boolean mVideoHasPaused = false; + private boolean mCanResumed = false; + private boolean mFirstBePlayed = false; + private boolean mKeyguardLocked = false; + private boolean mIsOnlyAudio = false; private int mLastSystemUiVis = 0; // If the time bar is being dragged. @@ -97,6 +142,36 @@ public class MoviePlayer implements private Virtualizer mVirtualizer; + private MovieActivity mActivityContext;//for dialog and toast context + private MoviePlayerExtension mPlayerExt = new MoviePlayerExtension(); + private RetryExtension mRetryExt = new RetryExtension(); + private ServerTimeoutExtension mServerTimeoutExt = new ServerTimeoutExtension(); + private ScreenModeExt mScreenModeExt = new ScreenModeExt(); + private IContrllerOverlayExt mOverlayExt; + private IControllerRewindAndForward mControllerRewindAndForwardExt; + private IRewindAndForwardListener mRewindAndForwardListener = new ControllerRewindAndForwardExt(); + private boolean mCanReplay; + private boolean mVideoCanSeek = false; + private boolean mVideoCanPause = false; + private boolean mWaitMetaData; + private boolean mIsShowResumingDialog; + private TState mTState = TState.PLAYING; + private IMovieItem mMovieItem; + private int mVideoLastDuration;//for duration displayed in init state + + private enum TState { + PLAYING, + PAUSED, + STOPED, + COMPELTED, + RETRY_ERROR + } + + interface Restorable { + void onRestoreInstanceState(Bundle icicle); + void onSaveInstanceState(Bundle outState); + } + private final Runnable mPlayingChecker = new Runnable() { @Override public void run() { @@ -116,22 +191,57 @@ public class MoviePlayer implements } }; + private Runnable mDelayVideoRunnable = new Runnable() { + @Override + public void run() { + if (LOG) { + Log.v(TAG, "mDelayVideoRunnable.run()"); + } + mVideoView.setVisibility(View.VISIBLE); + } + }; + + private final BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) { + mKeyguardLocked = true; + } else if (Intent.ACTION_USER_PRESENT.equals(intent.getAction())) { + if ((mCanResumed) && (!mVideoHasPaused)) { + playVideo(); + } + mKeyguardLocked = false; + mCanResumed = false; + } else if (Intent.ACTION_SHUTDOWN.equals(intent.getAction())) { + if (LOG) { + Log.v(TAG, "Intent.ACTION_SHUTDOWN received"); + } + mActivityContext.finish(); + } + } + }; + public MoviePlayer(View rootView, final MovieActivity movieActivity, - Uri videoUri, Bundle savedInstance, boolean canReplay) { + IMovieItem info, Bundle savedInstance, boolean canReplay) { mContext = movieActivity.getApplicationContext(); mRootView = rootView; - mVideoView = (VideoView) rootView.findViewById(R.id.surface_view); + mVideoView = (CodeauroraVideoView) rootView.findViewById(R.id.surface_view); mBookmarker = new Bookmarker(movieActivity); - mUri = videoUri; - mController = new MovieControllerOverlay(mContext); + mController = new MovieControllerOverlay(movieActivity); ((ViewGroup)rootView).addView(mController.getView()); mController.setListener(this); mController.setCanReplay(canReplay); + init(movieActivity, info, canReplay); + mVideoView.setOnErrorListener(this); mVideoView.setOnCompletionListener(this); - mVideoView.setVideoURI(mUri); + + if (mVirtualizer != null) { + mVirtualizer.release(); + mVirtualizer = null; + } Intent ai = movieActivity.getIntent(); boolean virtualize = ai.getBooleanExtra(VIRTUALIZE_EXTRA, false); @@ -186,20 +296,39 @@ public class MoviePlayer implements i.putExtra(CMDNAME, CMDPAUSE); movieActivity.sendBroadcast(i); + // Listen for broadcasts related to user-presence + final IntentFilter filter = new IntentFilter(); + filter.addAction(Intent.ACTION_SCREEN_OFF); + filter.addAction(Intent.ACTION_USER_PRESENT); + filter.addAction(Intent.ACTION_SHUTDOWN); + mContext.registerReceiver(mReceiver, filter); + if (savedInstance != null) { // this is a resumed activity mVideoPosition = savedInstance.getInt(KEY_VIDEO_POSITION, 0); mResumeableTime = savedInstance.getLong(KEY_RESUMEABLE_TIME, Long.MAX_VALUE); - mVideoView.start(); - mVideoView.suspend(); + onRestoreInstanceState(savedInstance); mHasPaused = true; + doStartVideo(true, mVideoPosition, mVideoLastDuration,false); + mVideoView.start(); + mActivityContext.initEffects(mVideoView.getAudioSessionId()); } else { - final Integer bookmark = mBookmarker.getBookmark(mUri); - if (bookmark != null) { - showResumeDialog(movieActivity, bookmark); + mTState = TState.PLAYING; + mFirstBePlayed = true; + String mUri = mMovieItem.getUri().toString(); + boolean isLive = mUri.startsWith("rtsp://") && (mUri.contains(".sdp") + || mUri.contains(".smil")); + if (!isLive) { + final BookmarkerInfo bookmark = mBookmarker.getBookmark(mMovieItem.getUri()); + if (bookmark != null) { + showResumeDialog(movieActivity, bookmark); + } else { + doStartVideo(false, 0, 0); + } } else { - startVideo(); + doStartVideo(false, 0, 0); } } + mScreenModeExt.setScreenMode(); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @@ -213,11 +342,17 @@ public class MoviePlayer implements new View.OnSystemUiVisibilityChangeListener() { @Override public void onSystemUiVisibilityChange(int visibility) { + boolean finish = (mActivityContext == null ? true : mActivityContext.isFinishing()); int diff = mLastSystemUiVis ^ visibility; mLastSystemUiVis = visibility; if ((diff & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) != 0 && (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) { mController.show(); + mRootView.setBackgroundColor(Color.BLACK); + } + + if (LOG) { + Log.v(TAG, "onSystemUiVisibilityChange(" + visibility + ") finishing()=" + finish); } } }); @@ -242,14 +377,15 @@ public class MoviePlayer implements public void onSaveInstanceState(Bundle outState) { outState.putInt(KEY_VIDEO_POSITION, mVideoPosition); outState.putLong(KEY_RESUMEABLE_TIME, mResumeableTime); + onSaveInstanceStateMore(outState); } - private void showResumeDialog(Context context, final int bookmark) { + private void showResumeDialog(Context context, final BookmarkerInfo bookmark) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.resume_playing_title); builder.setMessage(String.format( context.getString(R.string.resume_playing_message), - GalleryUtils.formatDuration(context, bookmark / 1000))); + GalleryUtils.formatDuration(context, bookmark.mBookmark / 1000))); builder.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { @@ -260,42 +396,157 @@ public class MoviePlayer implements R.string.resume_playing_resume, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - mVideoView.seekTo(bookmark); - startVideo(); + // here try to seek for bookmark + mVideoCanSeek = true; + doStartVideo(true, bookmark.mBookmark, bookmark.mDuration); } }); builder.setNegativeButton( R.string.resume_playing_restart, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - startVideo(); + doStartVideo(true, 0, bookmark.mDuration); + } + }); + AlertDialog dialog = builder.create(); + dialog.setOnShowListener(new OnShowListener() { + @Override + public void onShow(DialogInterface arg0) { + mIsShowResumingDialog = true; } }); - builder.show(); + dialog.setOnDismissListener(new OnDismissListener() { + @Override + public void onDismiss(DialogInterface arg0) { + mIsShowResumingDialog = false; + } + }); + dialog.show(); + } + + public void setDefaultScreenMode() { + addBackground(); + mController.setDefaultScreenMode(); + removeBackground(); + } + + public boolean onPause() { + if (LOG) { + Log.v(TAG, "onPause() isLiveStreaming()=" + isLiveStreaming()); + } + boolean pause = false; + if (isLiveStreaming()) { + pause = false; + } else { + doOnPause(); + pause = true; + } + if (LOG) { + Log.v(TAG, "onPause() , return " + pause); + } + return pause; } - public void onPause() { + // we should stop video anyway after this function called. + public void onStop() { + if (LOG) { + Log.v(TAG, "onStop() mHasPaused=" + mHasPaused); + } + if (!mHasPaused) { + doOnPause(); + } + } + + private void doOnPause() { + long start = System.currentTimeMillis(); + addBackground(); mHasPaused = true; mHandler.removeCallbacksAndMessages(null); - mVideoPosition = mVideoView.getCurrentPosition(); - mBookmarker.setBookmark(mUri, mVideoPosition, mVideoView.getDuration()); + int position = mVideoView.getCurrentPosition(); + mVideoPosition = position >= 0 ? position : mVideoPosition; + Log.v(TAG, "mVideoPosition is " + mVideoPosition); + int duration = mVideoView.getDuration(); + mVideoLastDuration = duration > 0 ? duration : mVideoLastDuration; + mBookmarker.setBookmark(mMovieItem.getUri(), mVideoPosition, mVideoLastDuration); + long end1 = System.currentTimeMillis(); mVideoView.suspend(); mResumeableTime = System.currentTimeMillis() + RESUMEABLE_TIMEOUT; + mVideoView.setResumed(false);// avoid start after surface created + long end2 = System.currentTimeMillis(); + // TODO comments by sunlei + mOverlayExt.clearBuffering(); + mServerTimeoutExt.recordDisconnectTime(); + if (LOG) { + Log.v(TAG, "doOnPause() save video info consume:" + (end1 - start)); + Log.v(TAG, "doOnPause() suspend video consume:" + (end2 - end1)); + Log.v(TAG, "doOnPause() mVideoPosition=" + mVideoPosition + ", mResumeableTime=" + + mResumeableTime + + ", mVideoLastDuration=" + mVideoLastDuration + ", mIsShowResumingDialog=" + + mIsShowResumingDialog); + } } public void onResume() { + mDragging = false;// clear drag info if (mHasPaused) { - mVideoView.seekTo(mVideoPosition); - mVideoView.resume(); + //M: same as launch case to delay transparent. + mVideoView.removeCallbacks(mDelayVideoRunnable); + mVideoView.postDelayed(mDelayVideoRunnable, BLACK_TIMEOUT); - // If we have slept for too long, pause the play - if (System.currentTimeMillis() > mResumeableTime) { - pauseVideo(); + if (mServerTimeoutExt.handleOnResume() || mIsShowResumingDialog) { + mHasPaused = false; + return; + } + switch (mTState) { + case RETRY_ERROR: + mRetryExt.showRetry(); + break; + case STOPED: + mPlayerExt.stopVideo(); + break; + case COMPELTED: + mController.showEnded(); + if (mVideoCanSeek || mVideoView.canSeekForward()) { + mVideoView.seekTo(mVideoPosition); + } + mVideoView.setDuration(mVideoLastDuration); + break; + case PAUSED: + // if video was paused, so it should be started. + doStartVideo(true, mVideoPosition, mVideoLastDuration, false); + pauseVideo(); + break; + default: + mVideoView.seekTo(mVideoPosition); + mVideoView.resume(); + pauseVideoMoreThanThreeMinutes(); + break; } + mHasPaused = false; + } + + if (System.currentTimeMillis() > mResumeableTime) { + mHandler.removeCallbacks(mPlayingChecker); + mHandler.postDelayed(mPlayingChecker, 250); } + mHandler.post(mProgressChecker); } + private void pauseVideoMoreThanThreeMinutes() { + // If we have slept for too long, pause the play + // If is live streaming, do not pause it too + long now = System.currentTimeMillis(); + if (now > mResumeableTime && !isLiveStreaming()) { + if (mVideoCanPause || mVideoView.canPause()) { + pauseVideo(); + } + } + if (LOG) { + Log.v(TAG, "pauseVideoMoreThanThreeMinutes() now=" + now); + } + } + public void onDestroy() { if (mVirtualizer != null) { mVirtualizer.release(); @@ -303,27 +554,36 @@ public class MoviePlayer implements } mVideoView.stopPlayback(); mAudioBecomingNoisyReceiver.unregister(); + mContext.unregisterReceiver(mReceiver); + mServerTimeoutExt.clearTimeoutDialog(); } // This updates the time bar display (if necessary). It is called every // second by mProgressChecker and also from places where the time bar needs // to be updated immediately. private int setProgress() { - if (mDragging || !mShowing) { + if (mDragging || (!mShowing && !mIsOnlyAudio)) { return 0; } int position = mVideoView.getCurrentPosition(); int duration = mVideoView.getDuration(); mController.setTimes(position, duration, 0, 0); + if (mControllerRewindAndForwardExt != null + && mControllerRewindAndForwardExt.getPlayPauseEanbled()) { + updateRewindAndForwardUI(); + } return position; } - private void startVideo() { + private void doStartVideo(final boolean enableFasten, final int position, final int duration, + boolean start) { // For streams that we expect to be slow to start up, show a // progress spinner until playback starts. - String scheme = mUri.getScheme(); - if ("http".equalsIgnoreCase(scheme) || "rtsp".equalsIgnoreCase(scheme)) { + String scheme = mMovieItem.getUri().getScheme(); + if ("http".equalsIgnoreCase(scheme) || "rtsp".equalsIgnoreCase(scheme) + || "https".equalsIgnoreCase(scheme)) { mController.showLoading(); + mOverlayExt.setPlayingInfo(isLiveStreaming()); mHandler.removeCallbacks(mPlayingChecker); mHandler.postDelayed(mPlayingChecker, 250); } else { @@ -331,35 +591,94 @@ public class MoviePlayer implements mController.hide(); } - mVideoView.start(); + if (onIsRTSP()) { + Map<String, String> header = new HashMap<String, String>(1); + header.put("CODEAURORA-ASYNC-RTSP-PAUSE-PLAY", "true"); + mVideoView.setVideoURI(mMovieItem.getUri(), header, !mWaitMetaData); + } else { + mVideoView.setVideoURI(mMovieItem.getUri(), null, !mWaitMetaData); + } + if (start) { + mVideoView.start(); + mVideoView.setVisibility(View.VISIBLE); + mActivityContext.initEffects(mVideoView.getAudioSessionId()); + } + //we may start video from stopVideo, + //this case, we should reset canReplay flag according canReplay and loop + boolean loop = mPlayerExt.getLoop(); + boolean canReplay = loop ? loop : mCanReplay; + mController.setCanReplay(canReplay); + if (position > 0 && (mVideoCanSeek || mVideoView.canSeek())) { + mVideoView.seekTo(position); + } + if (enableFasten) { + mVideoView.setDuration(duration); + } setProgress(); } + private void doStartVideo(boolean enableFasten, int position, int duration) { + doStartVideo(enableFasten, position, duration, true); + } + private void playVideo() { + if (LOG) { + Log.v(TAG, "playVideo()"); + } + mTState = TState.PLAYING; mVideoView.start(); mController.showPlaying(); setProgress(); } private void pauseVideo() { + if (LOG) { + Log.v(TAG, "pauseVideo()"); + } + mTState = TState.PAUSED; mVideoView.pause(); + setProgress(); mController.showPaused(); } // Below are notifications from VideoView @Override public boolean onError(MediaPlayer player, int arg1, int arg2) { + mMovieItem.setError(); + if (mServerTimeoutExt.onError(player, arg1, arg2)) { + return true; + } + if (mRetryExt.onError(player, arg1, arg2)) { + return true; + } mHandler.removeCallbacksAndMessages(null); // VideoView will show an error dialog if we return false, so no need // to show more message. + //M:resume controller + mController.setViewEnabled(true); mController.showErrorMessage(""); return false; } @Override public void onCompletion(MediaPlayer mp) { - mController.showEnded(); - onCompletion(); + if (LOG) { + Log.v(TAG, "onCompletion() mCanReplay=" + mCanReplay); + } + if (mMovieItem.getError()) { + Log.w(TAG, "error occured, exit the video player!"); + mActivityContext.finish(); + return; + } + if (mPlayerExt.getLoop()) { + onReplay(); + } else { //original logic + mTState = TState.COMPELTED; + if (mCanReplay) { + mController.showEnded(); + } + onCompletion(); + } } public void onCompletion() { @@ -369,9 +688,23 @@ public class MoviePlayer implements @Override public void onPlayPause() { if (mVideoView.isPlaying()) { - pauseVideo(); + if (mVideoView.canPause()) { + pauseVideo(); + //set view disabled(play/pause asynchronous processing) + mController.setViewEnabled(true); + if (mControllerRewindAndForwardExt != null) { + mControllerRewindAndForwardExt.showControllerButtonsView(mPlayerExt + .canStop(), false, false); + } + } } else { playVideo(); + //set view disabled(play/pause asynchronous processing) + mController.setViewEnabled(true); + if (mControllerRewindAndForwardExt != null) { + mControllerRewindAndForwardExt.showControllerButtonsView(mPlayerExt + .canStop(), false, false); + } } } @@ -382,18 +715,27 @@ public class MoviePlayer implements @Override public void onSeekMove(int time) { - mVideoView.seekTo(time); + if (mVideoView.canSeek()) { + mVideoView.seekTo(time); + } } @Override public void onSeekEnd(int time, int start, int end) { mDragging = false; - mVideoView.seekTo(time); + if (mVideoView.canSeek()) { + mVideoView.seekTo(time); + } + } + + @Override + public void onSeekComplete(MediaPlayer mp) { setProgress(); } @Override public void onShown() { + addBackground(); mShowing = true; setProgress(); showSystemUi(true); @@ -403,11 +745,82 @@ public class MoviePlayer implements public void onHidden() { mShowing = false; showSystemUi(false); + removeBackground(); + } + + @Override + public boolean onInfo(MediaPlayer mp, int what, int extra) { + if (LOG) { + Log.v(TAG, "onInfo() what:" + what + " extra:" + extra); + } + if (what == MediaPlayer.MEDIA_INFO_NOT_SEEKABLE && mOverlayExt != null) { + boolean flag = (extra == 1); + mOverlayExt.setCanPause(flag); + mOverlayExt.setCanScrubbing(flag); + } else if (what == MediaPlayer.MEDIA_INFO_METADATA_UPDATE && mServerTimeoutExt != null) { + Log.e(TAG, "setServerTimeout " + extra); + mServerTimeoutExt.setTimeout(extra * 1000); + } + if (mRetryExt.onInfo(mp, what, extra)) { + return true; + } + return false; + } + + @Override + public void onBufferingUpdate(MediaPlayer mp, int percent) { + boolean fullBuffer = isFullBuffer(); + mOverlayExt.showBuffering(fullBuffer, percent); + } + + @Override + public void onPrepared(MediaPlayer mp) { + if (LOG) { + Log.v(TAG, "onPrepared(" + mp + ")"); + } + if (!isLocalFile()) { + mOverlayExt.setPlayingInfo(isLiveStreaming()); + } + getVideoInfo(mp); + boolean canPause = mVideoView.canPause(); + boolean canSeek = mVideoView.canSeek(); + mOverlayExt.setCanPause(canPause); + mOverlayExt.setCanScrubbing(canSeek); + mController.setPlayPauseReplayResume(); + if (!canPause && !mVideoView.isTargetPlaying()) { + mVideoView.start(); + } + updateRewindAndForwardUI(); + if (LOG) { + Log.v(TAG, "onPrepared() canPause=" + canPause + ", canSeek=" + canSeek); + } + } + + public boolean onIsRTSP() { + if (MovieUtils.isRtspStreaming(mMovieItem.getUri(), mMovieItem + .getMimeType())) { + if (LOG) { + Log.v(TAG, "onIsRTSP() is RTSP"); + } + return true; + } + if (LOG) { + Log.v(TAG, "onIsRTSP() is not RTSP"); + } + return false; } @Override public void onReplay() { - startVideo(); + if (LOG) { + Log.v(TAG, "onReplay()"); + } + mTState = TState.PLAYING; + mFirstBePlayed = true; + if (mRetryExt.handleOnReplay()) { + return; + } + doStartVideo(false, 0, 0); } // Below are key events passed from MovieActivity. @@ -421,14 +834,14 @@ public class MoviePlayer implements switch (keyCode) { case KeyEvent.KEYCODE_HEADSETHOOK: case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: - if (mVideoView.isPlaying()) { + if (mVideoView.isPlaying() && mVideoView.canPause()) { pauseVideo(); } else { playVideo(); } return true; case KEYCODE_MEDIA_PAUSE: - if (mVideoView.isPlaying()) { + if (mVideoView.isPlaying() && mVideoView.canPause()) { pauseVideo(); } return true; @@ -450,6 +863,21 @@ public class MoviePlayer implements return isMediaKey(keyCode); } + public void updateRewindAndForwardUI() { + if (LOG) { + Log.v(TAG, "updateRewindAndForwardUI"); + Log.v(TAG, "updateRewindAndForwardUI== getCurrentPosition = " + mVideoView.getCurrentPosition()); + Log.v(TAG, "updateRewindAndForwardUI==getDuration =" + mVideoView.getDuration()); + } + if (mControllerRewindAndForwardExt != null) { + mControllerRewindAndForwardExt.showControllerButtonsView(mPlayerExt + .canStop(), mVideoView.canSeekBackward() + && mControllerRewindAndForwardExt.getTimeBarEanbled(), mVideoView + .canSeekForward() + && mControllerRewindAndForwardExt.getTimeBarEanbled()); + } + } + private static boolean isMediaKey(int keyCode) { return keyCode == KeyEvent.KEYCODE_HEADSETHOOK || keyCode == KeyEvent.KEYCODE_MEDIA_PREVIOUS @@ -459,6 +887,30 @@ public class MoviePlayer implements || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE; } + private void init(MovieActivity movieActivity, IMovieItem info, boolean canReplay) { + mActivityContext = movieActivity; + mCanReplay = canReplay; + mMovieItem = info; + judgeStreamingType(info.getUri(), info.getMimeType()); + + mVideoView.setOnInfoListener(this); + mVideoView.setOnPreparedListener(this); + mVideoView.setOnBufferingUpdateListener(this); + mVideoView.setOnVideoSizeChangedListener(this); + mRootView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + mController.show(); + return true; + } + }); + mOverlayExt = mController.getOverlayExt(); + mControllerRewindAndForwardExt = mController.getControllerRewindAndForwardExt(); + if (mControllerRewindAndForwardExt != null) { + mControllerRewindAndForwardExt.setIListener(mRewindAndForwardListener); + } + } + // We want to pause when the headset is unplugged. private class AudioBecomingNoisyReceiver extends BroadcastReceiver { @@ -473,7 +925,691 @@ public class MoviePlayer implements @Override public void onReceive(Context context, Intent intent) { - if (mVideoView.isPlaying()) pauseVideo(); + if (mVideoView.isPlaying() && mVideoView.canPause()) pauseVideo(); + } + } + + public int getAudioSessionId() { + return mVideoView.getAudioSessionId(); + } + + public void setOnPreparedListener(MediaPlayer.OnPreparedListener listener) { + mVideoView.setOnPreparedListener(listener); + } + + public boolean isFullBuffer() { + if (mStreamingType == STREAMING_RTSP || mStreamingType == STREAMING_SDP) { + return false; + } + return true; + } + + public boolean isLocalFile() { + if (mStreamingType == STREAMING_LOCAL) { + return true; + } + return false; + } + + private void getVideoInfo(MediaPlayer mp) { + if (!MovieUtils.isLocalFile(mMovieItem.getUri(), mMovieItem.getMimeType())) { + Metadata data = mp.getMetadata(MediaPlayer.METADATA_ALL, + MediaPlayer.BYPASS_METADATA_FILTER); + if (data != null) { + // TODO comments by sunlei + mServerTimeoutExt.setVideoInfo(data); + } else { + Log.w(TAG, "Metadata is null!"); + } + } + } + + private void judgeStreamingType(Uri uri, String mimeType) { + if (LOG) { + Log.v(TAG, "judgeStreamingType(" + uri + ")"); + } + if (uri == null) { + return; + } + String scheme = uri.getScheme(); + mWaitMetaData = true; + if (MovieUtils.isSdpStreaming(uri, mimeType)) { + mStreamingType = STREAMING_SDP; + mWaitMetaData = false; + } else if (MovieUtils.isRtspStreaming(uri, mimeType)) { + mStreamingType = STREAMING_RTSP; + mWaitMetaData = false; + } else if (MovieUtils.isHttpStreaming(uri, mimeType)) { + mStreamingType = STREAMING_HTTP; + mWaitMetaData = false; + } else { + mStreamingType = STREAMING_LOCAL; + mWaitMetaData = false; + } + if (LOG) { + Log.v(TAG, "mStreamingType=" + mStreamingType + + " mCanGetMetaData=" + mWaitMetaData); + } + } + + public boolean isLiveStreaming() { + boolean isLive = false; + if (mStreamingType == STREAMING_SDP) { + isLive = true; + } + if (LOG) { + Log.v(TAG, "isLiveStreaming() return " + isLive); + } + return isLive; + } + + public void onVideoSizeChanged(MediaPlayer mp, int width, int height) { + // reget the audio type + if (width != 0 && height != 0) { + mIsOnlyAudio = false; + } else { + mIsOnlyAudio = true; + } + mOverlayExt.setBottomPanel(mIsOnlyAudio, true); + if (LOG) { + Log.v(TAG, "onVideoSizeChanged(" + width + ", " + height + ") mIsOnlyAudio=" + + mIsOnlyAudio); + } + } + + public IMoviePlayer getMoviePlayerExt() { + return mPlayerExt; + } + + public SurfaceView getVideoSurface() { + return mVideoView; + } + + // Wait for any animation, ten seconds should be enough + private final Runnable mRemoveBackground = new Runnable() { + @Override + public void run() { + if (LOG) { + Log.v(TAG, "mRemoveBackground.run()"); + } + mRootView.setBackground(null); + } + }; + + private void removeBackground() { + if (LOG) { + Log.v(TAG, "removeBackground()"); + } + mHandler.removeCallbacks(mRemoveBackground); + mHandler.postDelayed(mRemoveBackground, DELAY_REMOVE_MS); + } + + // add background for removing ghost image. + private void addBackground() { + if (LOG) { + Log.v(TAG, "addBackground()"); + } + mHandler.removeCallbacks(mRemoveBackground); + mRootView.setBackgroundColor(Color.BLACK); + } + + private void clearVideoInfo() { + mVideoPosition = 0; + mVideoLastDuration = 0; + mIsOnlyAudio = false; + + if (mServerTimeoutExt != null) { + mServerTimeoutExt.clearServerInfo(); + } + } + + private void onSaveInstanceStateMore(Bundle outState) { + outState.putInt(KEY_VIDEO_LAST_DURATION, mVideoLastDuration); + outState.putBoolean(KEY_VIDEO_CAN_SEEK, mVideoView.canSeekForward()); + outState.putBoolean(KEY_VIDEO_CAN_PAUSE, mVideoView.canPause()); + outState.putInt(KEY_VIDEO_STREAMING_TYPE, mStreamingType); + outState.putString(KEY_VIDEO_STATE, String.valueOf(mTState)); + mServerTimeoutExt.onSaveInstanceState(outState); + mScreenModeExt.onSaveInstanceState(outState); + mRetryExt.onSaveInstanceState(outState); + mPlayerExt.onSaveInstanceState(outState); + } + + private void onRestoreInstanceState(Bundle icicle) { + mVideoLastDuration = icicle.getInt(KEY_VIDEO_LAST_DURATION); + mVideoCanSeek = icicle.getBoolean(KEY_VIDEO_CAN_SEEK); + mVideoCanPause = icicle.getBoolean(KEY_VIDEO_CAN_PAUSE); + mStreamingType = icicle.getInt(KEY_VIDEO_STREAMING_TYPE); + mTState = TState.valueOf(icicle.getString(KEY_VIDEO_STATE)); + mServerTimeoutExt.onRestoreInstanceState(icicle); + mScreenModeExt.onRestoreInstanceState(icicle); + mRetryExt.onRestoreInstanceState(icicle); + mPlayerExt.onRestoreInstanceState(icicle); + } + + private class MoviePlayerExtension implements IMoviePlayer, Restorable { + + private static final String KEY_VIDEO_IS_LOOP = "video_is_loop"; + + private BookmarkEnhance mBookmark;//for bookmark + private boolean mIsLoop; + private boolean mLastPlaying; + private boolean mLastCanPaused; + + @Override + public boolean getLoop() { + return mIsLoop; + } + + @Override + public void setLoop(boolean loop) { + if (isLocalFile()) { + mIsLoop = loop; + mController.setCanReplay(loop); + } + } + + @Override + public void startNextVideo(IMovieItem item) { + IMovieItem next = item; + if (next != null && next != mMovieItem) { + int position = mVideoView.getCurrentPosition(); + int duration = mVideoView.getDuration(); + mBookmarker.setBookmark(mMovieItem.getUri(), position, duration); + mVideoView.stopPlayback(); + mVideoView.setVisibility(View.INVISIBLE); + clearVideoInfo(); + mActivityContext.releaseEffects(); + mMovieItem = next; + mActivityContext.refreshMovieInfo(mMovieItem); + doStartVideo(false, 0, 0); + mVideoView.setVisibility(View.VISIBLE); + } else { + Log.e(TAG, "Cannot play the next video! " + item); + } + mActivityContext.closeOptionsMenu(); + } + + @Override + public void onRestoreInstanceState(Bundle icicle) { + mIsLoop = icicle.getBoolean(KEY_VIDEO_IS_LOOP, false); + if (mIsLoop) { + mController.setCanReplay(true); + } // else will get can replay from intent. + } + + @Override + public void onSaveInstanceState(Bundle outState) { + outState.putBoolean(KEY_VIDEO_IS_LOOP, mIsLoop); + } + + @Override + public void stopVideo() { + if (LOG) { + Log.v(TAG, "stopVideo()"); + } + mTState = TState.STOPED; + mVideoView.clearSeek(); + mVideoView.clearDuration(); + mVideoView.stopPlayback(); + mVideoView.setResumed(false); + mVideoView.setVisibility(View.INVISIBLE); + clearVideoInfo(); + mActivityContext.releaseEffects(); + mFirstBePlayed = false; + mController.setCanReplay(true); + mController.showEnded(); + mController.setViewEnabled(true); + setProgress(); + } + + @Override + public boolean canStop() { + boolean stopped = false; + if (mController != null) { + stopped = mOverlayExt.isPlayingEnd(); + } + if (LOG) { + Log.v(TAG, "canStop() stopped=" + stopped); + } + return !stopped; + } + + @Override + public void addBookmark() { + if (mBookmark == null) { + mBookmark = new BookmarkEnhance(mActivityContext); + } + String uri = String.valueOf(mMovieItem.getUri()); + if (mBookmark.exists(uri)) { + Toast.makeText(mActivityContext, R.string.bookmark_exist, Toast.LENGTH_SHORT) + .show(); + } else { + mBookmark.insert(mMovieItem.getTitle(), uri, + mMovieItem.getMimeType(), 0); + Toast.makeText(mActivityContext, R.string.bookmark_add_success, Toast.LENGTH_SHORT) + .show(); + } + } + }; + + private class RetryExtension implements Restorable, MediaPlayer.OnErrorListener, + MediaPlayer.OnInfoListener { + private static final String KEY_VIDEO_RETRY_COUNT = "video_retry_count"; + private int mRetryDuration; + private int mRetryPosition; + private int mRetryCount; + + public void retry() { + doStartVideo(true, mRetryPosition, mRetryDuration); + if (LOG) { + Log.v(TAG, "retry() mRetryCount=" + mRetryCount + ", mRetryPosition=" + + mRetryPosition); + } + } + + public void clearRetry() { + if (LOG) { + Log.v(TAG, "clearRetry() mRetryCount=" + mRetryCount); + } + mRetryCount = 0; + } + + public boolean reachRetryCount() { + if (LOG) { + Log.v(TAG, "reachRetryCount() mRetryCount=" + mRetryCount); + } + if (mRetryCount > 3) { + return true; + } + return false; + } + + public int getRetryCount() { + if (LOG) { + Log.v(TAG, "getRetryCount() return " + mRetryCount); + } + return mRetryCount; + } + + public boolean isRetrying() { + boolean retry = false; + if (mRetryCount > 0) { + retry = true; + } + if (LOG) { + Log.v(TAG, "isRetrying() mRetryCount=" + mRetryCount); + } + return retry; + } + + @Override + public void onRestoreInstanceState(Bundle icicle) { + mRetryCount = icicle.getInt(KEY_VIDEO_RETRY_COUNT); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + outState.putInt(KEY_VIDEO_RETRY_COUNT, mRetryCount); + } + + @Override + public boolean onError(MediaPlayer mp, int what, int extra) { + return false; + } + + @Override + public boolean onInfo(MediaPlayer mp, int what, int extra) { + return false; + } + + public boolean handleOnReplay() { + if (isRetrying()) { // from connecting error + clearRetry(); + int errorPosition = mVideoView.getCurrentPosition(); + int errorDuration = mVideoView.getDuration(); + doStartVideo(errorPosition > 0, errorPosition, errorDuration); + if (LOG) { + Log.v(TAG, "onReplay() errorPosition=" + errorPosition + ", errorDuration=" + + errorDuration); + } + return true; + } + return false; + } + + public void showRetry() { + if (mVideoCanSeek || mVideoView.canSeekForward()) { + mVideoView.seekTo(mVideoPosition); + } + mVideoView.setDuration(mVideoLastDuration); + mRetryPosition = mVideoPosition; + mRetryDuration = mVideoLastDuration; + } + } + private class ServerTimeoutExtension implements Restorable, MediaPlayer.OnErrorListener { + // for cmcc server timeout case + // please remember to clear this value when changed video. + private int mServerTimeout = -1; + private long mLastDisconnectTime; + private boolean mIsShowDialog = false; + private AlertDialog mServerTimeoutDialog; + private int RESUME_DIALOG_TIMEOUT = 3 * 60 * 1000; // 3 mins + + // check whether disconnect from server timeout or not. + // if timeout, return false. otherwise, return true. + private boolean passDisconnectCheck() { + if (!isFullBuffer()) { + // record the time disconnect from server + long now = System.currentTimeMillis(); + if (LOG) { + Log.v(TAG, "passDisconnectCheck() now=" + now + ", mLastDisconnectTime=" + + mLastDisconnectTime + + ", mServerTimeout=" + mServerTimeout); + } + if (mServerTimeout > 0 && (now - mLastDisconnectTime) > mServerTimeout) { + // disconnect time more than server timeout, notify user + notifyServerTimeout(); + return false; + } + } + return true; + } + + private void recordDisconnectTime() { + if (!isFullBuffer()) { + // record the time disconnect from server + mLastDisconnectTime = System.currentTimeMillis(); + } + if (LOG) { + Log.v(TAG, "recordDisconnectTime() mLastDisconnectTime=" + mLastDisconnectTime); + } + } + + private void clearServerInfo() { + mServerTimeout = -1; + } + + private void notifyServerTimeout() { + if (mServerTimeoutDialog == null) { + // for updating last position and duration. + if (mVideoCanSeek || mVideoView.canSeekForward()) { + mVideoView.seekTo(mVideoPosition); + } + mVideoView.setDuration(mVideoLastDuration); + AlertDialog.Builder builder = new AlertDialog.Builder(mActivityContext); + mServerTimeoutDialog = builder.setTitle(R.string.server_timeout_title) + .setMessage(R.string.server_timeout_message) + .setNegativeButton(android.R.string.cancel, new OnClickListener() { + + public void onClick(DialogInterface dialog, int which) { + if (LOG) { + Log.v(TAG, "NegativeButton.onClick() mIsShowDialog=" + + mIsShowDialog); + } + mController.showEnded(); + onCompletion(); + } + + }) + .setPositiveButton(R.string.resume_playing_resume, new OnClickListener() { + + public void onClick(DialogInterface dialog, int which) { + if (LOG) { + Log.v(TAG, "PositiveButton.onClick() mIsShowDialog=" + + mIsShowDialog); + } + doStartVideo(true, mVideoPosition, mVideoLastDuration); + } + + }) + .setOnCancelListener(new OnCancelListener() { + public void onCancel(DialogInterface dialog) { + mController.showEnded(); + onCompletion(); + } + }) + .create(); + mServerTimeoutDialog.setOnDismissListener(new OnDismissListener() { + + public void onDismiss(DialogInterface dialog) { + if (LOG) { + Log.v(TAG, "mServerTimeoutDialog.onDismiss()"); + } + mVideoView.setDialogShowState(false); + mIsShowDialog = false; + } + + }); + mServerTimeoutDialog.setOnShowListener(new OnShowListener() { + + public void onShow(DialogInterface dialog) { + if (LOG) { + Log.v(TAG, "mServerTimeoutDialog.onShow()"); + } + mVideoView.setDialogShowState(true); + mIsShowDialog = true; + } + + }); + } + mServerTimeoutDialog.show(); + } + + private void clearTimeoutDialog() { + if (mServerTimeoutDialog != null && mServerTimeoutDialog.isShowing()) { + mServerTimeoutDialog.dismiss(); + } + mServerTimeoutDialog = null; + } + + @Override + public void onRestoreInstanceState(Bundle icicle) { + mLastDisconnectTime = icicle.getLong(KEY_VIDEO_LAST_DISCONNECT_TIME); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + outState.putLong(KEY_VIDEO_LAST_DISCONNECT_TIME, mLastDisconnectTime); + } + + public boolean handleOnResume() { + if (mIsShowDialog && !isLiveStreaming()) { + // wait for user's operation + return true; + } + if (!passDisconnectCheck()) { + return true; + } + return false; + } + + public void setVideoInfo(Metadata data) { + mServerTimeout = RESUME_DIALOG_TIMEOUT; + if (data.has(SERVER_TIMEOUT)) { + mServerTimeout = data.getInt(SERVER_TIMEOUT); + if (mServerTimeout == 0) { + mServerTimeout = RESUME_DIALOG_TIMEOUT; + } + if (LOG) { + Log.v(TAG, "get server timeout from metadata. mServerTimeout=" + + mServerTimeout); + } + } + } + + @Override + public boolean onError(MediaPlayer mp, int what, int extra) { + // if we are showing a dialog, cancel the error dialog + if (mIsShowDialog) { + return true; + } + return false; + } + + public void setTimeout(int timeout) { + mServerTimeout = timeout; + } + } + + private class ScreenModeExt implements Restorable, ScreenModeListener { + private static final String KEY_VIDEO_SCREEN_MODE = "video_screen_mode"; + private int mScreenMode = ScreenModeManager.SCREENMODE_BIGSCREEN; + private ScreenModeManager mScreenModeManager = new ScreenModeManager(); + + public void setScreenMode() { + mVideoView.setScreenModeManager(mScreenModeManager); + mController.setScreenModeManager(mScreenModeManager); + mScreenModeManager.addListener(this); + //notify all listener to change screen mode + mScreenModeManager.setScreenMode(mScreenMode); + if (LOG) { + Log.v(TAG, "setScreenMode() mScreenMode=" + mScreenMode); + } + } + + @Override + public void onScreenModeChanged(int newMode) { + mScreenMode = newMode;// changed from controller + if (LOG) { + Log.v(TAG, "OnScreenModeClicked(" + newMode + ")"); + } + } + + @Override + public void onRestoreInstanceState(Bundle icicle) { + mScreenMode = icicle.getInt(KEY_VIDEO_SCREEN_MODE, + ScreenModeManager.SCREENMODE_BIGSCREEN); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + outState.putInt(KEY_VIDEO_SCREEN_MODE, mScreenMode); + } + } + + private class ControllerRewindAndForwardExt implements IRewindAndForwardListener { + @Override + public void onPlayPause() { + onPlayPause(); + } + + @Override + public void onSeekStart() { + onSeekStart(); + } + + @Override + public void onSeekMove(int time) { + onSeekMove(time); + } + + @Override + public void onSeekEnd(int time, int trimStartTime, int trimEndTime) { + onSeekEnd(time, trimStartTime, trimEndTime); + } + + @Override + public void onShown() { + onShown(); + } + + @Override + public void onHidden() { + onHidden(); + } + + @Override + public void onReplay() { + onReplay(); + } + + @Override + public boolean onIsRTSP() { + return false; + } + + @Override + public void onStopVideo() { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onStopVideo()"); + } + if (mPlayerExt.canStop()) { + mPlayerExt.stopVideo(); + mControllerRewindAndForwardExt.showControllerButtonsView(false, + false, false); + } + } + + @Override + public void onRewind() { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onRewind()"); + } + if (mVideoView != null && mVideoView.canSeekBackward()) { + mControllerRewindAndForwardExt.showControllerButtonsView(mPlayerExt + .canStop(), + false, false); + int stepValue = getStepOptionValue(); + int targetDuration = mVideoView.getCurrentPosition() + - stepValue < 0 ? 0 : mVideoView.getCurrentPosition() + - stepValue; + if (LOG) { + Log.v(TAG, "onRewind targetDuration " + targetDuration); + } + mVideoView.seekTo(targetDuration); + } else { + mControllerRewindAndForwardExt.showControllerButtonsView(mPlayerExt + .canStop(), + false, false); + } + } + + @Override + public void onForward() { + if (LOG) { + Log.v(TAG, "ControllerRewindAndForwardExt onForward()"); + } + if (mVideoView != null && mVideoView.canSeekForward()) { + mControllerRewindAndForwardExt.showControllerButtonsView(mPlayerExt + .canStop(), + false, false); + int stepValue = getStepOptionValue(); + int targetDuration = mVideoView.getCurrentPosition() + + stepValue > mVideoView.getDuration() ? mVideoView + .getDuration() : mVideoView.getCurrentPosition() + + stepValue; + if (LOG) { + Log.v(TAG, "onForward targetDuration " + targetDuration); + } + mVideoView.seekTo(targetDuration); + } else { + mControllerRewindAndForwardExt.showControllerButtonsView(mPlayerExt + .canStop(), + false, false); + } + } + } + + public int getStepOptionValue() { + final String slectedStepOption = "selected_step_option"; + final String videoPlayerData = "video_player_data"; + final int stepBase = 3000; + final int stepOptionThreeSeconds = 0; + SharedPreferences mPrefs = mContext.getSharedPreferences( + videoPlayerData, 0); + return (mPrefs.getInt(slectedStepOption, stepOptionThreeSeconds) + 1) * stepBase; + } + + public void restartHidingController() { + if (mController != null) { + mController.maybeStartHiding(); + } + } + + public void cancelHidingController() { + if (mController != null) { + mController.cancelHiding(); } } } @@ -497,6 +1633,10 @@ class Bookmarker { public void setBookmark(Uri uri, int bookmark, int duration) { try { + // do not record or override bookmark if duration is not valid. + if (duration <= 0) { + return; + } BlobCache cache = CacheManager.getCache(mContext, BOOKMARK_CACHE_FILE, BOOKMARK_CACHE_MAX_ENTRIES, BOOKMARK_CACHE_MAX_BYTES, BOOKMARK_CACHE_VERSION); @@ -505,7 +1645,7 @@ class Bookmarker { DataOutputStream dos = new DataOutputStream(bos); dos.writeUTF(uri.toString()); dos.writeInt(bookmark); - dos.writeInt(duration); + dos.writeInt(Math.abs(duration)); dos.flush(); cache.insert(uri.hashCode(), bos.toByteArray()); } catch (Throwable t) { @@ -513,7 +1653,7 @@ class Bookmarker { } } - public Integer getBookmark(Uri uri) { + public BookmarkerInfo getBookmark(Uri uri) { try { BlobCache cache = CacheManager.getCache(mContext, BOOKMARK_CACHE_FILE, BOOKMARK_CACHE_MAX_ENTRIES, @@ -537,10 +1677,31 @@ class Bookmarker { || (bookmark > (duration - HALF_MINUTE))) { return null; } - return Integer.valueOf(bookmark); + return new BookmarkerInfo(bookmark, duration); } catch (Throwable t) { Log.w(TAG, "getBookmark failed", t); } return null; } } + +class BookmarkerInfo { + public final int mBookmark; + public final int mDuration; + + public BookmarkerInfo(int bookmark, int duration) { + this.mBookmark = bookmark; + this.mDuration = duration; + } + + @Override + public String toString() { + return new StringBuilder() + .append("BookmarkInfo(bookmark=") + .append(mBookmark) + .append(", duration=") + .append(mDuration) + .append(")") + .toString(); + } +} diff --git a/src/com/android/gallery3d/app/MuteVideo.java b/src/com/android/gallery3d/app/MuteVideo.java index d3f3aa594..dd05397d2 100644..100755 --- a/src/com/android/gallery3d/app/MuteVideo.java +++ b/src/com/android/gallery3d/app/MuteVideo.java @@ -16,6 +16,8 @@ package com.android.gallery3d.app; +import java.util.ArrayList; + import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; @@ -40,6 +42,13 @@ public class MuteVideo { private SaveVideoFileInfo mDstFileInfo = null; private Activity mActivity = null; private final Handler mHandler = new Handler(); + private String mMimeType; + ArrayList<String> mUnsupportedMuteFileTypes = new ArrayList<String>(); + private final String FILE_TYPE_DIVX = "video/divx"; + private final String FILE_TYPE_AVI = "video/avi"; + private final String FILE_TYPE_WMV = "video/x-ms-wmv"; + private final String FILE_TYPE_ASF = "video/x-ms-asf"; + private final String FILE_TYPE_WEBM = "video/webm"; final String TIME_STAMP_NAME = "'MUTE'_yyyyMMdd_HHmmss"; @@ -47,6 +56,13 @@ public class MuteVideo { mUri = uri; mFilePath = filePath; mActivity = activity; + if (mUnsupportedMuteFileTypes != null) { + mUnsupportedMuteFileTypes.add(FILE_TYPE_DIVX); + mUnsupportedMuteFileTypes.add(FILE_TYPE_AVI); + mUnsupportedMuteFileTypes.add(FILE_TYPE_WMV); + mUnsupportedMuteFileTypes.add(FILE_TYPE_ASF); + mUnsupportedMuteFileTypes.add(FILE_TYPE_WEBM); + } } public void muteInBackground() { @@ -54,6 +70,15 @@ public class MuteVideo { mActivity.getContentResolver(), mUri, mActivity.getString(R.string.folder_download)); + mMimeType = mActivity.getContentResolver().getType(mUri); + if(!isValidFileForMute(mMimeType)) { + Toast.makeText(mActivity.getApplicationContext(), + mActivity.getString(R.string.mute_nosupport), + Toast.LENGTH_SHORT) + .show(); + return; + } + showProgressDialog(); new Thread(new Runnable() { @Override @@ -62,9 +87,19 @@ public class MuteVideo { VideoUtils.startMute(mFilePath, mDstFileInfo); SaveVideoFileUtils.insertContent( mDstFileInfo, mActivity.getContentResolver(), mUri); - } catch (IOException e) { - Toast.makeText(mActivity, mActivity.getString(R.string.video_mute_err), - Toast.LENGTH_SHORT).show(); + } catch (Exception e) { + mHandler.post(new Runnable() { + @Override + public void run() { + Toast.makeText(mActivity, mActivity.getString(R.string.video_mute_err), + Toast.LENGTH_SHORT).show(); + if (mMuteProgress != null) { + mMuteProgress.dismiss(); + mMuteProgress = null; + } + } + }); + return; } // After muting is done, trigger the UI changed. mHandler.post(new Runnable() { @@ -101,4 +136,16 @@ public class MuteVideo { mMuteProgress.setCanceledOnTouchOutside(false); mMuteProgress.show(); } + private boolean isValidFileForMute(String mimeType) { + if (mimeType != null) { + for (String fileType : mUnsupportedMuteFileTypes) { + if (mimeType.equals(fileType)) { + return false; + } + } + return true; + } else { + return false; + } + } } diff --git a/src/com/android/gallery3d/app/PhotoDataAdapter.java b/src/com/android/gallery3d/app/PhotoDataAdapter.java index fd3a7cf73..4322d9b7a 100644..100755 --- a/src/com/android/gallery3d/app/PhotoDataAdapter.java +++ b/src/com/android/gallery3d/app/PhotoDataAdapter.java @@ -20,15 +20,19 @@ import android.graphics.Bitmap; import android.graphics.BitmapRegionDecoder; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; +import android.view.View; import com.android.gallery3d.common.BitmapUtils; import com.android.gallery3d.common.Utils; +import com.android.gallery3d.data.CameraShortcutImage; import com.android.gallery3d.data.ContentListener; import com.android.gallery3d.data.LocalMediaItem; import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.data.MediaObject; import com.android.gallery3d.data.MediaSet; import com.android.gallery3d.data.Path; +import com.android.gallery3d.data.SnailItem; import com.android.gallery3d.glrenderer.TiledTexture; import com.android.gallery3d.ui.PhotoView; import com.android.gallery3d.ui.ScreenNail; @@ -49,6 +53,7 @@ import java.util.HashSet; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; +import java.util.Locale; public class PhotoDataAdapter implements PhotoPage.Model { @SuppressWarnings("unused") @@ -67,6 +72,7 @@ public class PhotoDataAdapter implements PhotoPage.Model { private static final int BIT_SCREEN_NAIL = 1; private static final int BIT_FULL_IMAGE = 2; + private static final long NOTIFY_DIRTY_WAIT_TIME = 10; // sImageFetchSeq is the fetching sequence for images. // We want to fetch the current screennail first (offset = 0), the next // screennail (offset = +1), then the previous screennail (offset = -1) etc. @@ -155,6 +161,9 @@ public class PhotoDataAdapter implements PhotoPage.Model { private int mFocusHintDirection = FOCUS_HINT_NEXT; private Path mFocusHintPath = null; + // If Bundle is from widget, it's true, otherwise it's false. + private boolean mIsFromWidget = false; + public interface DataListener extends LoadingListener { public void onPhotoChanged(int index, Path item); } @@ -292,6 +301,13 @@ public class PhotoDataAdapter implements PhotoPage.Model { mDataListener = listener; } + /** + * Set this to true if it is from widget. + */ + public void setFromWidget(boolean isFromWidget) { + mIsFromWidget = isFromWidget; + } + private void updateScreenNail(Path path, Future<ScreenNail> future) { ImageEntry entry = mImageCache.get(path); ScreenNail screenNail = future.get(); @@ -512,6 +528,13 @@ public class PhotoDataAdapter implements PhotoPage.Model { } @Override + public boolean isGif(int offset) { + MediaItem item = getItem(mCurrentIndex + offset); + return (item != null) && + MediaItem.MIME_TYPE_GIF.equalsIgnoreCase(item.getMimeType()); + } + + @Override public boolean isDeletable(int offset) { MediaItem item = getItem(mCurrentIndex + offset); return (item == null) @@ -653,6 +676,31 @@ public class PhotoDataAdapter implements PhotoPage.Model { } } + /** + * Update the image window and data window for RTL. + */ + private void updateSlidingWindowForRTL() { + // 1. Update the image window + int nStart = Utils.clamp(mCurrentIndex - IMAGE_CACHE_SIZE / 2, + 0, Math.max(0, mSize - IMAGE_CACHE_SIZE)); + int nEnd = Math.min(mSize, nStart + IMAGE_CACHE_SIZE); + + if (mActiveStart == nStart && mActiveEnd == nEnd) { + return; // don't need to refresh + } + + mActiveStart = nStart; + mActiveEnd = nEnd; + + // 2. Update the data window + nStart = Utils.clamp(mCurrentIndex - DATA_CACHE_SIZE / 2, + 0, Math.max(0, mSize - DATA_CACHE_SIZE)); + nEnd = Math.min(mSize, nStart + DATA_CACHE_SIZE); + + mContentStart = nStart; + mContentEnd = nEnd; + } + private void updateImageRequests() { if (!mIsActive) return; @@ -747,7 +795,7 @@ public class PhotoDataAdapter implements PhotoPage.Model { // Must be an item in camera roll. if (!(mediaItem instanceof LocalMediaItem)) return false; LocalMediaItem item = (LocalMediaItem) mediaItem; - if (item.getBucketId() != MediaSetUtils.CAMERA_BUCKET_ID) return false; + if (item.getBucketId() != MediaSetUtils.getCameraBucketId()) return false; // Must have no size, but must have width and height information if (item.getSize() != 0) return false; if (item.getWidth() == 0) return false; @@ -1033,13 +1081,75 @@ public class PhotoDataAdapter implements PhotoPage.Model { UpdateInfo info = executeAndWait(new GetUpdateInfo()); updateLoading(true); long version = mSource.reload(); + + // Used for delete photo, RTL need to re-decide the slide range. + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault()) + && mSource.getCurrectSize() == 1 && mCurrentIndex > 0) { + mCurrentIndex = mCurrentIndex - 1; + mSize = mSource.getMediaItemCount(); + updateSlidingWindowForRTL(); + info = executeAndWait(new GetUpdateInfo()); + } + if (info.version != version) { info.reloadContent = true; info.size = mSource.getMediaItemCount(); } if (!info.reloadContent) continue; - info.items = mSource.getMediaItem( - info.contentStart, info.contentEnd); + + // Check it is from camera or not + boolean isCameraFlag = false; + if (mCameraIndex == mCurrentIndex) { + info.items = mSource.getMediaItem(mCameraIndex, 1); + if (info.items.get(0) instanceof CameraShortcutImage + || info.items.get(0) instanceof SnailItem) { + isCameraFlag = true; + } + } + + // If RTL, need to descending photos + if (!isCameraFlag + && info.contentStart < info.contentEnd + && (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault()))) { + + // Calculate picture index/range etc.. + int nIndex = isCameraFlag ? mCurrentIndex : info.size - mCurrentIndex - 1; + int nStart = Utils.clamp(nIndex - DATA_CACHE_SIZE / 2, 0, + Math.max(0, info.size - DATA_CACHE_SIZE)); + info.items = mSource.getMediaItem(nStart, DATA_CACHE_SIZE); + + // Initialize temporary picture list + ArrayList<MediaItem> mediaItemList = new ArrayList<MediaItem>(); + + // Fetch source, check the first item is camera or not + ArrayList<MediaItem> itemstmpList = mSource.getMediaItem(0, 1); + MediaItem itemstmp = itemstmpList.size() > 0 ? itemstmpList.get(0) : null; + boolean isCameraItem = (itemstmp != null) + && (itemstmp instanceof CameraShortcutImage + || itemstmp instanceof SnailItem); + if (isCameraItem) { + // If it's camera mode, need to put camera to first position + mediaItemList.add(itemstmp); + } + + // Descending + for (int i = info.items.size() - 1; i >= 0; i--) { + if (isCameraItem && 0 == i) { + continue; + } + mediaItemList.add(info.items.get(i)); + } + info.items = (ArrayList<MediaItem>) mediaItemList.clone(); + + // Clear temporary list and free memory immediately + mediaItemList.clear(); + mediaItemList = null; + } else { + info.items = mSource.getMediaItem( + info.contentStart, info.contentEnd); + } // If RTL, need to descending photos end int index = MediaSet.INDEX_NOT_FOUND; @@ -1055,7 +1165,15 @@ public class PhotoDataAdapter implements PhotoPage.Model { if (item != null && item.getPath() == info.target) { index = info.indexHint; } else { - index = findIndexOfTarget(info); + // If RTL and it's not from widget, the index don't need to be amended + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault()) + && !mIsFromWidget) { + index = info.indexHint; + } else { + index = findIndexOfTarget(info); + mIsFromWidget = false; + } } } diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 915fdab5a..dd27f2689 100644..100755 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -25,6 +25,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Rect; +import android.media.MediaFile; import android.net.Uri; import android.nfc.NfcAdapter; import android.nfc.NfcAdapter.CreateBeamUrisCallback; @@ -33,6 +34,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.SystemClock; +import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -72,6 +74,10 @@ import com.android.gallery3d.ui.SelectionManager; import com.android.gallery3d.ui.SynchronizedHandler; import com.android.gallery3d.util.GalleryUtils; import com.android.gallery3d.util.UsageStatistics; +import com.android.gallery3d.util.ViewGifImage; + +import java.util.ArrayList; +import java.util.Locale; public abstract class PhotoPage extends ActivityState implements PhotoView.Listener, AppBridge.Server, ShareActionProvider.OnShareTargetSelectedListener, @@ -102,6 +108,9 @@ public abstract class PhotoPage extends ActivityState implements private static final int REQUEST_PLAY_VIDEO = 5; private static final int REQUEST_TRIM = 6; + // Data cache size, equal to AlbumDataLoader.DATA_CACHE_SIZE + private static final int DATA_CACHE_SIZE = 256; + public static final String KEY_MEDIA_SET_PATH = "media-set-path"; public static final String KEY_MEDIA_ITEM_PATH = "media-item-path"; public static final String KEY_INDEX_HINT = "index-hint"; @@ -114,6 +123,10 @@ public abstract class PhotoPage extends ActivityState implements public static final String KEY_IN_CAMERA_ROLL = "in_camera_roll"; public static final String KEY_READONLY = "read-only"; + + // Bundle key, used for checking whether it is from widget + public static final String KEY_IS_FROM_WIDGET = "is_from_widget"; + public static final String KEY_ALBUMPAGE_TRANSITION = "albumpage-transition"; public static final int MSG_ALBUMPAGE_NONE = 0; public static final int MSG_ALBUMPAGE_STARTED = 1; @@ -159,6 +172,8 @@ public abstract class PhotoPage extends ActivityState implements private SnailAlbum mScreenNailSet; private OrientationManager mOrientationManager; private boolean mTreatBackAsUp; + // Used for checking whether it is from widget + private boolean mIsFromWidget; private boolean mStartInFilmstrip; private boolean mHasCameraScreennailOrPlaceholder = false; private boolean mRecenterCameraOnResume = true; @@ -389,6 +404,7 @@ public abstract class PhotoPage extends ActivityState implements Path.fromString(data.getString(KEY_MEDIA_ITEM_PATH)) : null; mTreatBackAsUp = data.getBoolean(KEY_TREAT_BACK_AS_UP, false); + mIsFromWidget = data.getBoolean(KEY_IS_FROM_WIDGET, false); mStartInFilmstrip = data.getBoolean(KEY_START_IN_FILMSTRIP, false); boolean inCameraRoll = data.getBoolean(KEY_IN_CAMERA_ROLL, false); mCurrentIndex = data.getInt(KEY_INDEX_HINT, 0); @@ -465,6 +481,30 @@ public abstract class PhotoPage extends ActivityState implements return; } } + + // If it is from widget, need to re-calcuate index and range + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault()) + && mIsFromWidget) { + int nMediaItemCount = mMediaSet.getMediaItemCount(); + ArrayList<MediaItem> mediaItemList = mMediaSet.getMediaItem(0, nMediaItemCount); + int nItemIndex; + for (nItemIndex = 0; nItemIndex < nMediaItemCount; nItemIndex++) { + if (mediaItemList.get(nItemIndex).getPath().toString() + .equals(itemPath.toString())) { + int nIndex; + if (nItemIndex > DATA_CACHE_SIZE / 2 + && nItemIndex < (mMediaSet.getMediaItemCount() - + DATA_CACHE_SIZE / 2)) { + nIndex = mMediaSet.getMediaItemCount() - nItemIndex - 2; + } else { + nIndex = mMediaSet.getMediaItemCount() - nItemIndex - 1; + } + itemPath = mMediaSet.getMediaItem(nIndex, 1).get(0).getPath(); + break; + } + } + } PhotoDataAdapter pda = new PhotoDataAdapter( mActivity, mPhotoView, mMediaSet, itemPath, mCurrentIndex, mAppBridge == null ? -1 : 0, @@ -473,6 +513,12 @@ public abstract class PhotoPage extends ActivityState implements mModel = pda; mPhotoView.setModel(mModel); + // If RTL and from widget, set the flag into PhotoDataAdapter. + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault()) + && mIsFromWidget) { + pda.setFromWidget(mIsFromWidget); + } pda.setDataListener(new PhotoDataAdapter.DataListener() { @Override @@ -773,7 +819,7 @@ public abstract class PhotoPage extends ActivityState implements int supportedOperations = mCurrentPhoto.getSupportedOperations(); if (mReadOnlyView) { - supportedOperations ^= MediaObject.SUPPORT_EDIT; + supportedOperations &= ~MediaObject.SUPPORT_EDIT; } if (mSecureAlbum != null) { supportedOperations &= MediaObject.SUPPORT_DELETE; @@ -1022,6 +1068,12 @@ public abstract class PhotoPage extends ActivityState implements return true; } int currentIndex = mModel.getCurrentIndex(); + + // If RTL, the current index need be revised. + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + currentIndex = mMediaSet.getMediaItemCount() - currentIndex - 1; + } Path path = current.getPath(); DataManager manager = mActivity.getDataManager(); @@ -1057,8 +1109,15 @@ public abstract class PhotoPage extends ActivityState implements Intent intent = new Intent(mActivity, TrimVideo.class); intent.setData(manager.getContentUri(path)); // We need the file path to wrap this into a RandomAccessFile. - intent.putExtra(KEY_MEDIA_ITEM_PATH, current.getFilePath()); - mActivity.startActivityForResult(intent, REQUEST_TRIM); + String str = android.media.MediaFile.getMimeTypeForFile(current.getFilePath()); + if("video/mp4".equals(str) || "video/mpeg4".equals(str) + || "video/3gpp".equals(str) || "video/3gpp2".equals(str)) { + intent.putExtra(KEY_MEDIA_ITEM_PATH, current.getFilePath()); + mActivity.startActivityForResult(intent, REQUEST_TRIM); + } else { + Toast.makeText(mActivity,mActivity.getString(R.string.can_not_trim), + Toast.LENGTH_SHORT).show(); + } return true; } case R.id.action_mute: { @@ -1136,6 +1195,10 @@ public abstract class PhotoPage extends ActivityState implements // item is not ready or it is camera preview, ignore return; } + if (item.getMimeType().equals(MediaItem.MIME_TYPE_GIF)) { + viewAnimateGif((Activity) mActivity, item.getContentUri()); + return; + } int supported = item.getSupportedOperations(); boolean playVideo = ((supported & MediaItem.SUPPORT_PLAY) != 0); @@ -1200,7 +1263,14 @@ public abstract class PhotoPage extends ActivityState implements onCommitDeleteImage(); // commit the previous deletion mDeletePath = path; mDeleteIsFocus = (offset == 0); - mMediaSet.addDeletion(path, mCurrentIndex + offset); + + // If RTL, the index need be revised. + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + mMediaSet.addDeletion(path, mMediaSet.getMediaItemCount() - mCurrentIndex - 1); + } else { + mMediaSet.addDeletion(path, mCurrentIndex + offset); + } } @Override @@ -1284,6 +1354,12 @@ public abstract class PhotoPage extends ActivityState implements if (data == null) break; String path = data.getStringExtra(SlideshowPage.KEY_ITEM_PATH); int index = data.getIntExtra(SlideshowPage.KEY_PHOTO_INDEX, 0); + + // If RTL, the index need be revised. + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + index = mMediaSet.getMediaItemCount() - index - 1; + } if (path != null) { mModel.setCurrentPhoto(Path.fromString(path), index); } @@ -1384,6 +1460,15 @@ public abstract class PhotoPage extends ActivityState implements } @Override + public void onConfigurationChanged(Configuration config) { + super.onConfigurationChanged(config); + if(mIsActive) return; + mActivity.GLRootResume(true); + mModel.resume(); + mActivity.GLRootResume(false); + } + + @Override protected void onResume() { super.onResume(); @@ -1530,4 +1615,8 @@ public abstract class PhotoPage extends ActivityState implements } } + private static void viewAnimateGif(Activity activity, Uri uri) { + Intent intent = new Intent(ViewGifImage.VIEW_GIF_ACTION, uri); + activity.startActivity(intent); + } } diff --git a/src/com/android/gallery3d/app/SinglePhotoDataAdapter.java b/src/com/android/gallery3d/app/SinglePhotoDataAdapter.java index 00f2fe78f..8134756f8 100644..100755 --- a/src/com/android/gallery3d/app/SinglePhotoDataAdapter.java +++ b/src/com/android/gallery3d/app/SinglePhotoDataAdapter.java @@ -89,7 +89,16 @@ public class SinglePhotoDataAdapter extends TileImageViewAdapter @Override public void onFutureDone(Future<BitmapRegionDecoder> future) { BitmapRegionDecoder decoder = future.get(); - if (decoder == null) return; + // cannot get large bitmap, then try to get thumb bitmap + if (decoder == null) { + if (mTask != null && !mTask.isCancelled()) { + Log.w(TAG, "fail to get region decoder, try to request thumb image"); + mHasFullImage = false; + pause(); + resume(); + } + return; + } int width = decoder.getWidth(); int height = decoder.getHeight(); BitmapFactory.Options options = new BitmapFactory.Options(); @@ -136,7 +145,6 @@ public class SinglePhotoDataAdapter extends TileImageViewAdapter Bitmap backup = future.get(); if (backup == null) { mLoadingState = LOADING_FAIL; - return; } else { mLoadingState = LOADING_COMPLETE; } @@ -227,6 +235,11 @@ public class SinglePhotoDataAdapter extends TileImageViewAdapter } @Override + public boolean isGif(int offset) { + return MediaItem.MIME_TYPE_GIF.equalsIgnoreCase(mItem.getMimeType()); + } + + @Override public boolean isDeletable(int offset) { return (mItem.getSupportedOperations() & MediaItem.SUPPORT_DELETE) != 0; } diff --git a/src/com/android/gallery3d/app/StorageChangeReceiver.java b/src/com/android/gallery3d/app/StorageChangeReceiver.java new file mode 100644 index 000000000..f42179c84 --- /dev/null +++ b/src/com/android/gallery3d/app/StorageChangeReceiver.java @@ -0,0 +1,39 @@ +/* + * 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.gallery3d.app; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; + +public class StorageChangeReceiver extends BroadcastReceiver { + public static final String KEY_STORAGE = "pref_camera_storage_key"; + + @Override + public void onReceive(Context context, Intent intent) { + String storagePath = intent.getExtras().getString(KEY_STORAGE, null); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + + if ((storagePath != null) && !storagePath.equals(prefs.getString(KEY_STORAGE, null))) { + SharedPreferences.Editor editor = prefs.edit(); + editor.putString(KEY_STORAGE, storagePath); + editor.apply(); + } + } +} diff --git a/src/com/android/gallery3d/app/TimeBar.java b/src/com/android/gallery3d/app/TimeBar.java index 246346a56..2870c489c 100644..100755 --- a/src/com/android/gallery3d/app/TimeBar.java +++ b/src/com/android/gallery3d/app/TimeBar.java @@ -22,13 +22,17 @@ import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; +import android.text.TextUtils; import android.util.DisplayMetrics; +import android.util.Log; import android.view.MotionEvent; import android.view.View; import com.android.gallery3d.R; import com.android.gallery3d.common.Utils; +import java.util.Locale; + /** * The time bar view, which includes the current and total time, the progress * bar, and the scrubber. @@ -51,6 +55,10 @@ public class TimeBar extends View { private static final int TEXT_SIZE_IN_DP = 14; + private static final String TAG = "Gallery3D/TimeBar"; + private static final boolean LOG = false; + public static final int UNKNOWN = -1; + protected final Listener mListener; // the bars we use for displaying the progress @@ -71,6 +79,7 @@ public class TimeBar extends View { protected boolean mScrubbing; protected boolean mShowTimes; protected boolean mShowScrubber; + private boolean mEnableScrubbing; protected int mTotalTime; protected int mCurrentTime; @@ -78,6 +87,11 @@ public class TimeBar extends View { protected final Rect mTimeBounds; protected int mVPaddingInPx; + private int mLastShowTime = UNKNOWN; + + private ITimeBarSecondaryProgressExt mSecondaryProgressExt = new TimeBarSecondaryProgressExtImpl(); + private ITimeBarInfoExt mInfoExt = new TimeBarInfoExtImpl(); + private ITimeBarLayoutExt mLayoutExt = new TimeBarLayoutExtImpl(); public TimeBar(Context context, Listener listener) { super(context); @@ -108,21 +122,53 @@ public class TimeBar extends View { mScrubberPadding = (int) (metrics.density * SCRUBBER_PADDING_IN_DP); mVPaddingInPx = (int) (metrics.density * V_PADDING_IN_DP); + mLayoutExt.init(mScrubberPadding, mVPaddingInPx); + mInfoExt.init(textSizeInPx); + mSecondaryProgressExt.init(); } private void update() { mPlayedBar.set(mProgressBar); if (mTotalTime > 0) { - mPlayedBar.right = - mPlayedBar.left + (int) ((mProgressBar.width() * (long) mCurrentTime) / mTotalTime); + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + // The progress bar should be reversed in RTL. + mPlayedBar.left = mPlayedBar.right + - (int) ((mProgressBar.width() * (long) mCurrentTime) / mTotalTime); + } else { + mPlayedBar.right = mPlayedBar.left + + (int) ((mProgressBar.width() * (long) mCurrentTime) / mTotalTime); + } + /* + * M: if duration is not accurate, here just adjust playedBar we + * also show the accurate position text to final user. + */ + if (mPlayedBar.right > mProgressBar.right) { + mPlayedBar.right = mProgressBar.right; + } } else { - mPlayedBar.right = mProgressBar.left; + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + // The progress bar should be reversed in RTL. + mPlayedBar.left = mProgressBar.right; + } else { + mPlayedBar.right = mProgressBar.left; + } } if (!mScrubbing) { - mScrubberLeft = mPlayedBar.right - mScrubber.getWidth() / 2; + if (View.LAYOUT_DIRECTION_RTL == TextUtils.getLayoutDirectionFromLocale( + Locale.getDefault())) { + // The progress bar should be reversed in RTL. + mScrubberLeft = mPlayedBar.left - mScrubber.getWidth() / 2; + } else { + mScrubberLeft = mPlayedBar.right - mScrubber.getWidth() / 2; + } } + // update text bounds when layout changed or time changed + updateBounds(); + mInfoExt.updateVisibleText(this, mProgressBar, mTimeBounds); invalidate(); } @@ -130,14 +176,16 @@ public class TimeBar extends View { * @return the preferred height of this view, including invisible padding */ public int getPreferredHeight() { - return mTimeBounds.height() + mVPaddingInPx + mScrubberPadding; + int preferredHeight = mTimeBounds.height() + mVPaddingInPx + mScrubberPadding; + return mLayoutExt.getPreferredHeight(preferredHeight, mTimeBounds); } /** * @return the height of the time bar, excluding invisible padding */ public int getBarHeight() { - return mTimeBounds.height() + mVPaddingInPx; + int barHeight = mTimeBounds.height() + mVPaddingInPx; + return mLayoutExt.getBarHeight(barHeight, mTimeBounds); } public void setTime(int currentTime, int totalTime, @@ -146,7 +194,10 @@ public class TimeBar extends View { return; } mCurrentTime = currentTime; - mTotalTime = totalTime; + mTotalTime = Math.abs(totalTime); + if (totalTime <= 0) { /// M: disable scrubbing before mediaplayer ready. + setScrubbing(false); + } update(); } @@ -165,9 +216,17 @@ public class TimeBar extends View { } private int getScrubberTime() { - return (int) ((long) (mScrubberLeft + mScrubber.getWidth() / 2 - mProgressBar.left) - * mTotalTime / mProgressBar.width()); - } + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + // The progress bar's scrubber time should be reversed in RTL. + return (int) ((long) (mProgressBar.width() - (mScrubberLeft + + mScrubber.getWidth() / 2 - mProgressBar.left)) + * mTotalTime / mProgressBar.width()); + } else { + return (int) ((long) (mScrubberLeft + mScrubber.getWidth() / 2 - mProgressBar.left) + * mTotalTime / mProgressBar.width()); + } + } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { @@ -180,7 +239,8 @@ public class TimeBar extends View { if (mShowTimes) { margin += mTimeBounds.width(); } - int progressY = (h + mScrubberPadding) / 2; + margin = mLayoutExt.getProgressMargin(margin); + int progressY = (h + mScrubberPadding) / 2 + mLayoutExt.getProgressOffset(mTimeBounds); mScrubberTop = progressY - mScrubber.getHeight() / 2 + 1; mProgressBar.set( getPaddingLeft() + margin, progressY, @@ -191,8 +251,10 @@ public class TimeBar extends View { @Override protected void onDraw(Canvas canvas) { + super.onDraw(canvas); // draw progress bars canvas.drawRect(mProgressBar, mProgressPaint); + mSecondaryProgressExt.draw(canvas, mProgressBar); canvas.drawRect(mPlayedBar, mPlayedPaint); // draw scrubber and timers @@ -200,22 +262,44 @@ public class TimeBar extends View { canvas.drawBitmap(mScrubber, mScrubberLeft, mScrubberTop, null); } if (mShowTimes) { - canvas.drawText( - stringForTime(mCurrentTime), - mTimeBounds.width() / 2 + getPaddingLeft(), - mTimeBounds.height() + mVPaddingInPx / 2 + mScrubberPadding + 1, - mTimeTextPaint); - canvas.drawText( - stringForTime(mTotalTime), - getWidth() - getPaddingRight() - mTimeBounds.width() / 2, - mTimeBounds.height() + mVPaddingInPx / 2 + mScrubberPadding + 1, - mTimeTextPaint); + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + // The progress bar's time should be reversed in RTL. + canvas.drawText( + stringForTime(mCurrentTime), + getWidth() - getPaddingRight() - mTimeBounds.width() / 2, + mTimeBounds.height() + mVPaddingInPx / 2 + mScrubberPadding + 1, + mTimeTextPaint); + canvas.drawText( + stringForTime(mTotalTime), + mTimeBounds.width() / 2 + getPaddingLeft(), + mTimeBounds.height() + mVPaddingInPx / 2 + mScrubberPadding + 1, + mTimeTextPaint); + } else { + canvas.drawText( + stringForTime(mCurrentTime), + mTimeBounds.width() / 2 + getPaddingLeft(), + mTimeBounds.height() + mVPaddingInPx / 2 + mScrubberPadding + 1, + mTimeTextPaint); + canvas.drawText( + stringForTime(mTotalTime), + getWidth() - getPaddingRight() - mTimeBounds.width() / 2, + mTimeBounds.height() + mVPaddingInPx / 2 + mScrubberPadding + 1, + mTimeTextPaint); + } } + mInfoExt.draw(canvas, mLayoutExt.getInfoBounds(this, mTimeBounds)); } @Override public boolean onTouchEvent(MotionEvent event) { - if (mShowScrubber) { + if (LOG) { + Log.v(TAG, "onTouchEvent() showScrubber=" + mShowScrubber + + ", enableScrubbing=" + mEnableScrubbing + ", totalTime=" + + mTotalTime + ", scrubbing=" + mScrubbing + ", event=" + + event); + } + if (mShowScrubber && mEnableScrubbing) { int x = (int) event.getX(); int y = (int) event.getY(); @@ -233,15 +317,19 @@ public class TimeBar extends View { clampScrubber(); mCurrentTime = getScrubberTime(); mListener.onScrubbingMove(mCurrentTime); + update(); invalidate(); return true; } case MotionEvent.ACTION_CANCEL: - case MotionEvent.ACTION_UP: { - mListener.onScrubbingEnd(getScrubberTime(), 0, 0); - mScrubbing = false; - return true; - } + case MotionEvent.ACTION_UP: + if (mScrubbing) { + mListener.onScrubbingEnd(getScrubberTime(), 0, 0); + mScrubbing = false; + update(); + return true; + } + break; } } return false; @@ -263,4 +351,235 @@ public class TimeBar extends View { mShowScrubber = canSeek; } + private void updateBounds() { + int showTime = mTotalTime > mCurrentTime ? mTotalTime : mCurrentTime; + if (mLastShowTime == showTime) { + // do not need to recompute the bounds. + return; + } + String durationText = stringForTime(showTime); + int length = durationText.length(); + mTimeTextPaint.getTextBounds(durationText, 0, length, mTimeBounds); + mLastShowTime = showTime; + if (LOG) { + Log.v(TAG, "updateBounds() durationText=" + durationText + ", timeBounds=" + + mTimeBounds); + } + } + + public void setScrubbing(boolean enable) { + if (LOG) { + Log.v(TAG, "setScrubbing(" + enable + ") scrubbing=" + mScrubbing); + } + mEnableScrubbing = enable; + if (mScrubbing) { // if it is scrubbing, change it to false + mListener.onScrubbingEnd(getScrubberTime(), 0, 0); + mScrubbing = false; + } + } + + public boolean getScrubbing() { + if (LOG) { + Log.v(TAG, "mEnableScrubbing=" + mEnableScrubbing); + } + return mEnableScrubbing; + } + + public void setInfo(String info) { + if (LOG) { + Log.v(TAG, "setInfo(" + info + ")"); + } + mInfoExt.setInfo(info); + mInfoExt.updateVisibleText(this, mProgressBar, mTimeBounds); + invalidate(); + } + + public void setSecondaryProgress(int percent) { + if (LOG) { + Log.v(TAG, "setSecondaryProgress(" + percent + ")"); + } + mSecondaryProgressExt.setSecondaryProgress(mProgressBar, percent); + invalidate(); + } +} + +interface ITimeBarInfoExt { + void init(float textSizeInPx); + + void setInfo(String info); + + void draw(Canvas canvas, Rect infoBounds); + + void updateVisibleText(View parent, Rect progressBar, Rect timeBounds); +} + +interface ITimeBarSecondaryProgressExt { + void init(); + + void setSecondaryProgress(Rect progressBar, int percent); + + void draw(Canvas canvas, Rect progressBounds); +} + +interface ITimeBarLayoutExt { + void init(int scrubberPadding, int vPaddingInPx); + + int getPreferredHeight(int originalPreferredHeight, Rect timeBounds); + + int getBarHeight(int originalBarHeight, Rect timeBounds); + + int getProgressMargin(int originalMargin); + + int getProgressOffset(Rect timeBounds); + + int getTimeOffset(); + + Rect getInfoBounds(View parent, Rect timeBounds); +} + +class TimeBarInfoExtImpl implements ITimeBarInfoExt { + private static final String TAG = "TimeBarInfoExtensionImpl"; + private static final boolean LOG = false; + private static final String ELLIPSE = "..."; + + private Paint mInfoPaint; + private Rect mInfoBounds; + private String mInfoText; + private String mVisibleText; + private int mEllipseLength; + + @Override + public void init(float textSizeInPx) { + mInfoPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + mInfoPaint.setColor(0xFFCECECE); + mInfoPaint.setTextSize(textSizeInPx); + mInfoPaint.setTextAlign(Paint.Align.CENTER); + + mEllipseLength = (int) Math.ceil(mInfoPaint.measureText(ELLIPSE)); + } + + @Override + public void draw(Canvas canvas, Rect infoBounds) { + if (mInfoText != null && mVisibleText != null) { + canvas.drawText(mVisibleText, infoBounds.centerX(), infoBounds.centerY(), mInfoPaint); + } + } + + @Override + public void setInfo(String info) { + mInfoText = info; + } + + public void updateVisibleText(View parent, Rect progressBar, Rect timeBounds) { + if (mInfoText == null) { + mVisibleText = null; + return; + } + float tw = mInfoPaint.measureText(mInfoText); + float space = progressBar.width() - timeBounds.width() * 2 - parent.getPaddingLeft() + - parent.getPaddingRight(); + if (tw > 0 && space > 0 && tw > space) { + // we need to cut the info text for visible + float originalNum = mInfoText.length(); + int realNum = (int) ((space - mEllipseLength) * originalNum / tw); + if (LOG) { + Log.v(TAG, "updateVisibleText() infoText=" + mInfoText + " text width=" + tw + + ", space=" + space + ", originalNum=" + originalNum + ", realNum=" + + realNum + + ", getPaddingLeft()=" + parent.getPaddingLeft() + ", getPaddingRight()=" + + parent.getPaddingRight() + + ", progressBar=" + progressBar + ", timeBounds=" + timeBounds); + } + mVisibleText = mInfoText.substring(0, realNum) + ELLIPSE; + } else { + mVisibleText = mInfoText; + } + if (LOG) { + Log.v(TAG, "updateVisibleText() infoText=" + mInfoText + ", visibleText=" + + mVisibleText + + ", text width=" + tw + ", space=" + space); + } + } +} + +class TimeBarSecondaryProgressExtImpl implements ITimeBarSecondaryProgressExt { + private static final String TAG = "TimeBarSecondaryProgressExtensionImpl"; + private static final boolean LOG = false; + + private int mBufferPercent; + private Rect mSecondaryBar; + private Paint mSecondaryPaint; + + @Override + public void init() { + mSecondaryBar = new Rect(); + mSecondaryPaint = new Paint(); + mSecondaryPaint.setColor(0xFF5CA0C5); + } + + @Override + public void draw(Canvas canvas, Rect progressBounds) { + if (mBufferPercent >= 0) { + mSecondaryBar.set(progressBounds); + mSecondaryBar.right = mSecondaryBar.left + + (int) (mBufferPercent * progressBounds.width() / 100); + canvas.drawRect(mSecondaryBar, mSecondaryPaint); + } + if (LOG) { + Log.v(TAG, "draw() bufferPercent=" + mBufferPercent + ", secondaryBar=" + + mSecondaryBar); + } + } + + @Override + public void setSecondaryProgress(Rect progressBar, int percent) { + mBufferPercent = percent; + } +} + +class TimeBarLayoutExtImpl implements ITimeBarLayoutExt { + private static final String TAG = "TimeBarLayoutExtensionImpl"; + private static final boolean LOG = false; + + private int mTextPadding; + private int mVPaddingInPx; + + @Override + public void init(int scrubberPadding, int vPaddingInPx) { + mTextPadding = scrubberPadding / 2; + mVPaddingInPx = vPaddingInPx; + } + + @Override + public int getPreferredHeight(int originalPreferredHeight, Rect timeBounds) { + return originalPreferredHeight + timeBounds.height() + mTextPadding; + } + + @Override + public int getBarHeight(int originalBarHeight, Rect timeBounds) { + return originalBarHeight + timeBounds.height() + mTextPadding; + } + + @Override + public int getProgressMargin(int originalMargin) { + return 0; + } + + @Override + public int getProgressOffset(Rect timeBounds) { + return (timeBounds.height() + mTextPadding) / 2; + } + + @Override + public int getTimeOffset() { + return mTextPadding - mVPaddingInPx / 2; + } + + @Override + public Rect getInfoBounds(View parent, Rect timeBounds) { + Rect bounds = new Rect(parent.getPaddingLeft(), 0, + parent.getWidth() - parent.getPaddingRight(), + (timeBounds.height() + mTextPadding * 3 + 1) * 2); + return bounds; + } } diff --git a/src/com/android/gallery3d/app/TrimControllerOverlay.java b/src/com/android/gallery3d/app/TrimControllerOverlay.java index cae016626..9d2e7aee1 100644 --- a/src/com/android/gallery3d/app/TrimControllerOverlay.java +++ b/src/com/android/gallery3d/app/TrimControllerOverlay.java @@ -108,4 +108,14 @@ public class TrimControllerOverlay extends CommonControllerOverlay { } return true; } + + @Override + public void setViewEnabled(boolean isEnabled) { + // TODO Auto-generated method stub + } + + @Override + public void setPlayPauseReplayResume() { + // TODO Auto-generated method stub + } } diff --git a/src/com/android/gallery3d/app/TrimVideo.java b/src/com/android/gallery3d/app/TrimVideo.java index b0ed8e635..a52c25606 100644 --- a/src/com/android/gallery3d/app/TrimVideo.java +++ b/src/com/android/gallery3d/app/TrimVideo.java @@ -57,6 +57,7 @@ public class TrimVideo extends Activity implements private int mTrimStartTime = 0; private int mTrimEndTime = 0; + private boolean mCheckTrimStartTime; private int mVideoPosition = 0; public static final String KEY_TRIM_START = "trim_start"; public static final String KEY_TRIM_END = "trim_end"; @@ -177,10 +178,11 @@ public class TrimVideo extends Activity implements mVideoPosition = mVideoView.getCurrentPosition(); // If the video position is smaller than the starting point of trimming, // correct it. - if (mVideoPosition < mTrimStartTime) { + if (mCheckTrimStartTime && (mVideoPosition < mTrimStartTime)) { mVideoView.seekTo(mTrimStartTime); mVideoPosition = mTrimStartTime; } + mCheckTrimStartTime = false; // If the position is bigger than the end point of trimming, show the // replay button and pause. if (mVideoPosition >= mTrimEndTime && mTrimEndTime > 0) { @@ -204,6 +206,7 @@ public class TrimVideo extends Activity implements private void playVideo() { mVideoView.start(); + mCheckTrimStartTime = true; mController.showPlaying(); setProgress(); } @@ -237,6 +240,7 @@ public class TrimVideo extends Activity implements new Thread(new Runnable() { @Override public void run() { + boolean hasError = false; try { VideoUtils.startTrim(mSrcFile, mDstFileInfo.mFile, mTrimStartTime, mTrimEndTime); @@ -244,7 +248,28 @@ public class TrimVideo extends Activity implements SaveVideoFileUtils.insertContent(mDstFileInfo, getContentResolver(), mUri); } catch (IOException e) { + hasError = true; e.printStackTrace(); + } catch (IllegalStateException e) { + hasError = true; + e.printStackTrace(); + } + //If the exception happens,just notify the UI and avoid the crash. + if (hasError){ + mHandler.post(new Runnable(){ + @Override + public void run(){ + Toast.makeText(getApplicationContext(), + getString(R.string.fail_trim), + Toast.LENGTH_SHORT) + .show(); + if (mProgress != null) { + mProgress.dismiss(); + mProgress = null; + } + } + }); + return; } // After trimming is done, trigger the UI changed. mHandler.post(new Runnable() { @@ -320,6 +345,12 @@ public class TrimVideo extends Activity implements } @Override + public boolean onIsRTSP() { + // TODO Auto-generated method stub + return false; + } + + @Override public void onReplay() { mVideoView.seekTo(mTrimStartTime); playVideo(); diff --git a/src/com/android/gallery3d/app/VideoUtils.java b/src/com/android/gallery3d/app/VideoUtils.java index 359cf76f5..4f551a67d 100644..100755 --- a/src/com/android/gallery3d/app/VideoUtils.java +++ b/src/com/android/gallery3d/app/VideoUtils.java @@ -156,11 +156,16 @@ public class VideoUtils { if (selectCurrentTrack) { extractor.selectTrack(i); - int dstIndex = muxer.addTrack(format); - indexMap.put(i, dstIndex); - if (format.containsKey(MediaFormat.KEY_MAX_INPUT_SIZE)) { - int newSize = format.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE); - bufferSize = newSize > bufferSize ? newSize : bufferSize; + try { + int dstIndex = muxer.addTrack(format); + indexMap.put(i, dstIndex); + if (format.containsKey(MediaFormat.KEY_MAX_INPUT_SIZE)) { + int newSize = format.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE); + bufferSize = newSize > bufferSize ? newSize : bufferSize; + } + } catch (IllegalArgumentException e) { + Log.e(LOGTAG, "Unsupported format '" + mime + "'"); + throw new IOException("Muxer does not support " + mime); } } } @@ -221,6 +226,11 @@ public class VideoUtils { } catch (IllegalStateException e) { // Swallow the exception due to malformed source. Log.w(LOGTAG, "The source video file is malformed"); + File f = new File(dstPath); + if (f.exists()) { + f.delete(); + } + throw e; } finally { muxer.release(); } diff --git a/src/com/android/gallery3d/app/Wallpaper.java b/src/com/android/gallery3d/app/Wallpaper.java index 2022f5a4a..5c19d9016 100644 --- a/src/com/android/gallery3d/app/Wallpaper.java +++ b/src/com/android/gallery3d/app/Wallpaper.java @@ -44,6 +44,11 @@ public class Wallpaper extends Activity { private static final String IMAGE_TYPE = "image/*"; private static final String KEY_STATE = "activity-state"; private static final String KEY_PICKED_ITEM = "picked-item"; + private static final String KEY_ASPECT_X = "aspectX"; + private static final String KEY_ASPECT_Y = "aspectY"; + private static final String KEY_SPOTLIGHT_X = "spotlightX"; + private static final String KEY_SPOTLIGHT_Y = "spotlightY"; + private static final String KEY_FROM_SCREENCOLOR = "fromScreenColor"; private static final int STATE_INIT = 0; private static final int STATE_PHOTO_PICKED = 1; @@ -100,7 +105,14 @@ public class Wallpaper extends Activity { } case STATE_PHOTO_PICKED: { Intent cropAndSetWallpaperIntent; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + boolean fromScreenColor = false; + + // Do this for screencolor select and crop image to preview. + Bundle extras = intent.getExtras(); + if (extras != null) { + fromScreenColor = extras.getBoolean(KEY_FROM_SCREENCOLOR, false); + } + if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) && (!fromScreenColor)) { WallpaperManager wpm = WallpaperManager.getInstance(getApplicationContext()); try { cropAndSetWallpaperIntent = wpm.getCropAndSetWallpaperIntent(mPickedItem); @@ -114,11 +126,23 @@ public class Wallpaper extends Activity { } } - int width = getWallpaperDesiredMinimumWidth(); - int height = getWallpaperDesiredMinimumHeight(); - Point size = getDefaultDisplaySize(new Point()); - float spotlightX = (float) size.x / width; - float spotlightY = (float) size.y / height; + int width,height; + float spotlightX,spotlightY; + + if (fromScreenColor) { + width = extras.getInt(KEY_ASPECT_X, 0); + height = extras.getInt(KEY_ASPECT_Y, 0); + spotlightX = extras.getFloat(KEY_SPOTLIGHT_X, 0); + spotlightY = extras.getFloat(KEY_SPOTLIGHT_Y, 0); + } else { + width = getWallpaperDesiredMinimumWidth(); + height = getWallpaperDesiredMinimumHeight(); + Point size = getDefaultDisplaySize(new Point()); + spotlightX = (float) size.x / width; + spotlightY = (float) size.y / height; + } + + //Don't set wallpaper from screencolor. cropAndSetWallpaperIntent = new Intent(CropActivity.CROP_ACTION) .setClass(this, CropActivity.class) .setDataAndType(mPickedItem, IMAGE_TYPE) @@ -131,7 +155,7 @@ public class Wallpaper extends Activity { .putExtra(CropExtras.KEY_SPOTLIGHT_Y, spotlightY) .putExtra(CropExtras.KEY_SCALE, true) .putExtra(CropExtras.KEY_SCALE_UP_IF_NEEDED, true) - .putExtra(CropExtras.KEY_SET_AS_WALLPAPER, true); + .putExtra(CropExtras.KEY_SET_AS_WALLPAPER, !fromScreenColor); startActivity(cropAndSetWallpaperIntent); finish(); } diff --git a/src/com/android/gallery3d/data/DecodeUtils.java b/src/com/android/gallery3d/data/DecodeUtils.java index 2853baffb..7e10191b7 100644 --- a/src/com/android/gallery3d/data/DecodeUtils.java +++ b/src/com/android/gallery3d/data/DecodeUtils.java @@ -17,6 +17,7 @@ package com.android.gallery3d.data; import android.annotation.TargetApi; +import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; @@ -32,6 +33,7 @@ import com.android.gallery3d.ui.Log; import com.android.gallery3d.util.ThreadPool.CancelListener; import com.android.gallery3d.util.ThreadPool.JobContext; +import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.InputStream; @@ -308,4 +310,46 @@ public class DecodeUtils { decodeBounds(jc, fileDescriptor, options); return GalleryBitmapPool.getInstance().get(options.outWidth, options.outHeight); } + + public static Bitmap decodeBitmap(Resources res, int resId, int reqWidth, int reqHeight) { + // First decode with inJustDecodeBounds=true to check dimensions + final BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeResource(res, resId, options); + + // Calculate inSampleSize (use 1024 as maximum size, the minimum supported + // by all the gles20 devices) + options.inSampleSize = calculateBitmapRatio( + options, + Math.min(reqWidth, 1024), + Math.min(reqHeight, 1024)); + + // Decode the bitmap with inSampleSize set + options.inJustDecodeBounds = false; + options.inPreferQualityOverSpeed = false; + options.inPurgeable = true; + options.inInputShareable = true; + options.inDither = true; + return BitmapFactory.decodeResource(res, resId, options); + } + + private static int calculateBitmapRatio(Options options, int reqWidth, int reqHeight) { + // Raw height and width of image + final int height = options.outHeight; + final int width = options.outWidth; + int inSampleSize = 1; + + if (height > reqHeight || width > reqWidth) { + // Calculate ratios of height and width to requested height and width + final int heightRatio = Math.round((float) height / (float) reqHeight); + final int widthRatio = Math.round((float) width / (float) reqWidth); + + // Choose the smallest ratio as inSampleSize value, this will guarantee + // a final image with both dimensions larger than or equal to the + // requested height and width. + inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; + } + + return inSampleSize; + } } diff --git a/src/com/android/gallery3d/data/FaceClustering.java b/src/com/android/gallery3d/data/FaceClustering.java index 819915edb..a0d567902 100644..100755 --- a/src/com/android/gallery3d/data/FaceClustering.java +++ b/src/com/android/gallery3d/data/FaceClustering.java @@ -83,7 +83,7 @@ public class FaceClustering extends Clustering { } public FaceClustering(Context context) { - mUntaggedString = context.getResources().getString(R.string.untagged); + mUntaggedString = context.getResources().getString(R.string.no_faces); mContext = context; } diff --git a/src/com/android/gallery3d/data/FilterDeleteSet.java b/src/com/android/gallery3d/data/FilterDeleteSet.java index c76412ff8..f7329739d 100644 --- a/src/com/android/gallery3d/data/FilterDeleteSet.java +++ b/src/com/android/gallery3d/data/FilterDeleteSet.java @@ -223,6 +223,11 @@ public class FilterDeleteSet extends MediaSet implements ContentListener { return mDataVersion; } + @Override + public int getCurrectSize() { + return mCurrent.size(); + } + private void sendRequest(int type, Path path, int indexHint) { Request r = new Request(type, path, indexHint); synchronized (mRequests) { diff --git a/src/com/android/gallery3d/data/LocalAlbum.java b/src/com/android/gallery3d/data/LocalAlbum.java index 7b7015af6..0757d8883 100644 --- a/src/com/android/gallery3d/data/LocalAlbum.java +++ b/src/com/android/gallery3d/data/LocalAlbum.java @@ -95,7 +95,7 @@ public class LocalAlbum extends MediaSet { @Override public boolean isCameraRoll() { - return mBucketId == MediaSetUtils.CAMERA_BUCKET_ID; + return mBucketId == MediaSetUtils.getCameraBucketId(); } @Override @@ -279,7 +279,7 @@ public class LocalAlbum extends MediaSet { public static String getLocalizedName(Resources res, int bucketId, String name) { - if (bucketId == MediaSetUtils.CAMERA_BUCKET_ID) { + if (bucketId == MediaSetUtils.getCameraBucketId()) { return res.getString(R.string.folder_camera); } else if (bucketId == MediaSetUtils.DOWNLOAD_BUCKET_ID) { return res.getString(R.string.folder_download); @@ -297,7 +297,7 @@ public class LocalAlbum extends MediaSet { // Relative path is the absolute path minus external storage path public static String getRelativePath(int bucketId) { String relativePath = "/"; - if (bucketId == MediaSetUtils.CAMERA_BUCKET_ID) { + if (bucketId == MediaSetUtils.getCameraBucketId()) { relativePath += BucketNames.CAMERA; } else if (bucketId == MediaSetUtils.DOWNLOAD_BUCKET_ID) { relativePath += BucketNames.DOWNLOAD; diff --git a/src/com/android/gallery3d/data/LocalAlbumSet.java b/src/com/android/gallery3d/data/LocalAlbumSet.java index b2b4b8c5d..877eaff5c 100644 --- a/src/com/android/gallery3d/data/LocalAlbumSet.java +++ b/src/com/android/gallery3d/data/LocalAlbumSet.java @@ -113,7 +113,7 @@ public class LocalAlbumSet extends MediaSet int offset = 0; // Move camera and download bucket to the front, while keeping the // order of others. - int index = findBucket(entries, MediaSetUtils.CAMERA_BUCKET_ID); + int index = findBucket(entries, MediaSetUtils.getCameraBucketId()); if (index != -1) { circularShiftRight(entries, offset++, index); } diff --git a/src/com/android/gallery3d/data/MediaDetails.java b/src/com/android/gallery3d/data/MediaDetails.java index cac524b88..225266029 100644 --- a/src/com/android/gallery3d/data/MediaDetails.java +++ b/src/com/android/gallery3d/data/MediaDetails.java @@ -17,15 +17,11 @@ package com.android.gallery3d.data; import com.android.gallery3d.R; -import com.android.gallery3d.common.Utils; import com.android.gallery3d.exif.ExifInterface; import com.android.gallery3d.exif.ExifTag; -import com.android.gallery3d.exif.Rational; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; @@ -50,15 +46,16 @@ public class MediaDetails implements Iterable<Entry<Integer, Object>> { public static final int INDEX_SIZE = 10; // for EXIF - public static final int INDEX_MAKE = 100; - public static final int INDEX_MODEL = 101; - public static final int INDEX_FLASH = 102; - public static final int INDEX_FOCAL_LENGTH = 103; - public static final int INDEX_WHITE_BALANCE = 104; - public static final int INDEX_APERTURE = 105; - public static final int INDEX_SHUTTER_SPEED = 106; - public static final int INDEX_EXPOSURE_TIME = 107; - public static final int INDEX_ISO = 108; + public static final int INDEX_DATETIME_ORIGINAL = 100; + public static final int INDEX_MAKE = 101; + public static final int INDEX_MODEL = 102; + public static final int INDEX_FLASH = 103; + public static final int INDEX_FOCAL_LENGTH = 104; + public static final int INDEX_WHITE_BALANCE = 105; + public static final int INDEX_APERTURE = 106; + public static final int INDEX_SHUTTER_SPEED = 107; + public static final int INDEX_EXPOSURE_TIME = 108; + public static final int INDEX_ISO = 109; // Put this last because it may be long. public static final int INDEX_PATH = 200; @@ -148,6 +145,12 @@ public class MediaDetails implements Iterable<Entry<Integer, Object>> { MediaDetails.INDEX_WIDTH); setExifData(details, exif.getTag(ExifInterface.TAG_IMAGE_LENGTH), MediaDetails.INDEX_HEIGHT); + ExifTag recordTag = exif.getTag(ExifInterface.TAG_DATE_TIME_ORIGINAL); + if (recordTag == null) + recordTag = exif.getTag(ExifInterface.TAG_DATE_TIME_DIGITIZED); + if (recordTag == null) + recordTag = exif.getTag(ExifInterface.TAG_DATE_TIME); + setExifData(details, recordTag, MediaDetails.INDEX_DATETIME_ORIGINAL); setExifData(details, exif.getTag(ExifInterface.TAG_MAKE), MediaDetails.INDEX_MAKE); setExifData(details, exif.getTag(ExifInterface.TAG_MODEL), diff --git a/src/com/android/gallery3d/data/MediaItem.java b/src/com/android/gallery3d/data/MediaItem.java index 59ea86551..92ac88dc6 100644 --- a/src/com/android/gallery3d/data/MediaItem.java +++ b/src/com/android/gallery3d/data/MediaItem.java @@ -37,6 +37,7 @@ public abstract class MediaItem extends MediaObject { public static final int IMAGE_ERROR = -1; public static final String MIME_TYPE_JPEG = "image/jpeg"; + public static final String MIME_TYPE_GIF = "image/gif"; private static final int BYTESBUFFE_POOL_SIZE = 4; private static final int BYTESBUFFER_SIZE = 200 * 1024; diff --git a/src/com/android/gallery3d/data/MediaSet.java b/src/com/android/gallery3d/data/MediaSet.java index 683aa6b32..4c009c735 100644 --- a/src/com/android/gallery3d/data/MediaSet.java +++ b/src/com/android/gallery3d/data/MediaSet.java @@ -87,6 +87,11 @@ public abstract class MediaSet extends MediaObject { return 0; } + public int getCurrectSize() { + // Dummy method, need to be override in implementation classes + return 0; + } + public MediaSet getSubMediaSet(int index) { throw new IndexOutOfBoundsException(); } diff --git a/src/com/android/gallery3d/data/SecureAlbum.java b/src/com/android/gallery3d/data/SecureAlbum.java index 204f848f8..bb505a50f 100644 --- a/src/com/android/gallery3d/data/SecureAlbum.java +++ b/src/com/android/gallery3d/data/SecureAlbum.java @@ -151,7 +151,7 @@ public class SecureAlbum extends MediaSet implements StitchingChangeListener { private boolean isCameraBucketEmpty(Uri baseUri) { Uri uri = baseUri.buildUpon() .appendQueryParameter("limit", "1").build(); - String[] selection = {String.valueOf(MediaSetUtils.CAMERA_BUCKET_ID)}; + String[] selection = {String.valueOf(MediaSetUtils.getCameraBucketId())}; Cursor cursor = mContext.getContentResolver().query(uri, PROJECTION, "bucket_id = ?", selection, null); if (cursor == null) return true; diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index e627a612b..fe383cef7 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -84,6 +84,7 @@ import com.android.gallery3d.filtershow.editors.EditorColorBorder; import com.android.gallery3d.filtershow.editors.EditorCrop; import com.android.gallery3d.filtershow.editors.EditorDraw; import com.android.gallery3d.filtershow.editors.EditorGrad; +import com.android.gallery3d.filtershow.editors.EditorMakeup; import com.android.gallery3d.filtershow.editors.EditorManager; import com.android.gallery3d.filtershow.editors.EditorMirror; import com.android.gallery3d.filtershow.editors.EditorPanel; @@ -100,6 +101,7 @@ import com.android.gallery3d.filtershow.filters.FilterStraightenRepresentation; import com.android.gallery3d.filtershow.filters.FilterUserPresetRepresentation; import com.android.gallery3d.filtershow.filters.FiltersManager; import com.android.gallery3d.filtershow.filters.ImageFilter; +import com.android.gallery3d.filtershow.filters.SimpleMakeupImageFilter; import com.android.gallery3d.filtershow.history.HistoryItem; import com.android.gallery3d.filtershow.history.HistoryManager; import com.android.gallery3d.filtershow.imageshow.ImageShow; @@ -120,6 +122,7 @@ import com.android.gallery3d.filtershow.ui.ExportDialog; import com.android.gallery3d.filtershow.ui.FramedTextButton; import com.android.gallery3d.util.GalleryUtils; import com.android.photos.data.GalleryBitmapPool; +import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine; import java.io.File; import java.io.FileDescriptor; @@ -178,6 +181,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL private CategoryAdapter mCategoryGeometryAdapter = null; private CategoryAdapter mCategoryFiltersAdapter = null; private CategoryAdapter mCategoryVersionsAdapter = null; + private CategoryAdapter mCategoryMakeupAdapter = null; private int mCurrentPanel = MainPanel.LOOKS; private Vector<FilterUserPresetRepresentation> mVersions = new Vector<FilterUserPresetRepresentation>(); @@ -195,6 +199,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL private DialogInterface mCurrentDialog = null; private PopupMenu mCurrentMenu = null; private boolean mLoadingVisible = true; + private boolean mLoadingComplete = false; public ProcessingService getProcessingService() { return mBoundService; @@ -283,6 +288,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL doBindService(); getWindow().setBackgroundDrawable(new ColorDrawable(Color.GRAY)); setContentView(R.layout.filtershow_splashscreen); + mLoadingComplete = false; } public boolean isShowingImageStatePanel() { @@ -351,8 +357,6 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL ActionBar actionBar = getActionBar(); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setCustomView(R.layout.filtershow_actionbar); - actionBar.setBackgroundDrawable(new ColorDrawable( - getResources().getColor(R.color.background_screen))); mSaveButton = actionBar.getCustomView(); mSaveButton.setOnClickListener(new OnClickListener() { @@ -380,6 +384,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL fillTools(); fillEffects(); fillVersions(); + fillMakeup(); } public void setupStatePanel() { @@ -468,6 +473,25 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL } } + private void fillMakeup() { + if(!SimpleMakeupImageFilter.HAS_TS_MAKEUP) { + return; + } + + FiltersManager filtersManager = FiltersManager.getManager(); + ArrayList<FilterRepresentation> makeups = filtersManager.getMakeup(); + if (mCategoryMakeupAdapter != null) { + mCategoryMakeupAdapter.clear(); + } + mCategoryMakeupAdapter = new CategoryAdapter(this); + for (FilterRepresentation makeup : makeups) { + if (makeup.getTextId() != 0) { + makeup.setName(getString(makeup.getTextId())); + } + mCategoryMakeupAdapter.add(new Action(this, makeup)); + } + } + private void fillTools() { FiltersManager filtersManager = FiltersManager.getManager(); ArrayList<FilterRepresentation> filtersRepresentations = filtersManager.getTools(); @@ -483,7 +507,8 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL } } if (!found) { - FilterRepresentation representation = new FilterDrawRepresentation(); + FilterRepresentation representation = + new FilterDrawRepresentation(getString(R.string.imageDraw)); Action action = new Action(this, representation); action.setIsDoubleAction(true); mCategoryGeometryAdapter.add(action); @@ -528,6 +553,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL mEditorPlaceHolder.addEditor(new EditorMirror()); mEditorPlaceHolder.addEditor(new EditorRotate()); mEditorPlaceHolder.addEditor(new EditorStraighten()); + mEditorPlaceHolder.addEditor(new EditorMakeup()); } private void setDefaultValues() { @@ -558,24 +584,15 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL private void fillBorders() { FiltersManager filtersManager = FiltersManager.getManager(); ArrayList<FilterRepresentation> borders = filtersManager.getBorders(); + mCategoryBordersAdapter = new CategoryAdapter(this); for (int i = 0; i < borders.size(); i++) { FilterRepresentation filter = borders.get(i); - filter.setName(getString(R.string.borders)); + filter.setName(getString(R.string.borders) + "" + i); if (i == 0) { filter.setName(getString(R.string.none)); } - } - - if (mCategoryBordersAdapter != null) { - mCategoryBordersAdapter.clear(); - } - mCategoryBordersAdapter = new CategoryAdapter(this); - for (FilterRepresentation representation : borders) { - if (representation.getTextId() != 0) { - representation.setName(getString(representation.getTextId())); - } - mCategoryBordersAdapter.add(new Action(this, representation, Action.FULL_VIEW)); + mCategoryBordersAdapter.add(new Action(this, filter, Action.FULL_VIEW)); } } @@ -591,6 +608,10 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL return mCategoryBordersAdapter; } + public CategoryAdapter getCategoryMakeupAdapter() { + return mCategoryMakeupAdapter; + } + public CategoryAdapter getCategoryGeometryAdapter() { return mCategoryGeometryAdapter; } @@ -744,16 +765,16 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL MasterImage master = MasterImage.getImage(); Rect originalBounds = master.getOriginalBounds(); if (master.supportsHighRes()) { - int highresPreviewSize = master.getOriginalBitmapLarge().getWidth() * 2; - if (highresPreviewSize > originalBounds.width()) { - highresPreviewSize = originalBounds.width(); - } + int highresPreviewSize = Math.min(MasterImage.MAX_BITMAP_DIM, getScreenImageSize()); + Log.d(LOGTAG, "FilterShowActivity.LoadHighresBitmapTask.doInBackground(): after, highresPreviewSize is " + highresPreviewSize); Rect bounds = new Rect(); Bitmap originalHires = ImageLoader.loadOrientedConstrainedBitmap(master.getUri(), master.getActivity(), highresPreviewSize, master.getOrientation(), bounds); master.setOriginalBounds(bounds); master.setOriginalBitmapHighres(originalHires); + Log.d(LOGTAG, "FilterShowActivity.LoadHighresBitmapTask.doInBackground(): originalHires.WH is (" + originalHires.getWidth() + + ", " + originalHires.getHeight() +"), bounds is " + bounds.toString()); mBoundService.setOriginalBitmapHighres(originalHires); master.warnListeners(); } @@ -766,6 +787,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL if (highresBitmap != null) { float highResPreviewScale = (float) highresBitmap.getWidth() / (float) MasterImage.getImage().getOriginalBounds().width(); + Log.d(LOGTAG, "FilterShowActivity.LoadHighresBitmapTask.onPostExecute(): highResPreviewScale is " + highResPreviewScale); mBoundService.setHighresPreviewScaleFactor(highResPreviewScale); } MasterImage.getImage().warnListeners(); @@ -793,6 +815,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL public LoadBitmapTask() { mBitmapSize = getScreenImageSize(); + Log.d(LOGTAG, "FilterShowActivity.LoadBtimapTask(): mBitmapSize is " + mBitmapSize); } @Override @@ -849,6 +872,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL float previewScale = (float) largeBitmap.getWidth() / (float) MasterImage.getImage().getOriginalBounds().width(); + Log.d(LOGTAG, "FilterShowActivity.LoadBitmapTask.onPostExecute(): previewScale is " + previewScale); mBoundService.setPreviewScaleFactor(previewScale); if (!mShowingTinyPlanet) { mCategoryFiltersAdapter.removeTinyPlanet(); @@ -857,10 +881,14 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL mCategoryBordersAdapter.imageLoaded(); mCategoryGeometryAdapter.imageLoaded(); mCategoryFiltersAdapter.imageLoaded(); + if(mCategoryMakeupAdapter != null) { + mCategoryMakeupAdapter.imageLoaded(); + } mLoadBitmapTask = null; MasterImage.getImage().warnListeners(); loadActions(); + mLoadingComplete = false; if (mOriginalPreset != null) { MasterImage.getImage().setLoadedPreset(mOriginalPreset); @@ -1030,6 +1058,9 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL if (mShareActionProvider != null) { mShareActionProvider.setOnShareTargetSelectedListener(this); } + if(SimpleMakeupImageFilter.HAS_TS_MAKEUP) { + MakeupEngine.getMakeupObj().setContext(getBaseContext()); + } } @Override @@ -1162,6 +1193,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL } public void enableSave(boolean enable) { + mLoadingComplete = true; if (mSaveButton != null) { mSaveButton.setEnabled(enable); } @@ -1329,6 +1361,10 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL Fragment currentPanel = getSupportFragmentManager().findFragmentByTag(MainPanel.FRAGMENT_TAG); if (currentPanel instanceof MainPanel) { if (!mImageShow.hasModifications()) { + if (!mLoadingComplete) { + Log.v(LOGTAG,"Background processing is ON, rejecting back key event"); + return; + } done(); } else { AlertDialog.Builder builder = new AlertDialog.Builder(this); diff --git a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java index 52c296c78..30d535d77 100644 --- a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java +++ b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java @@ -108,7 +108,7 @@ public final class ImageLoader { new String[] { MediaStore.Images.ImageColumns.ORIENTATION }, null, null, null); if (cursor != null && cursor.moveToNext()) { - int ori = cursor.getInt(0); + int ori = cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.ORIENTATION); switch (ori) { case 90: return ORI_ROTATE_90; @@ -147,6 +147,8 @@ public final class ImageLoader { return parseExif(exif); } catch (IOException e) { Log.w(LOGTAG, "Failed to read EXIF orientation", e); + } catch (NullPointerException e) { + Log.w(LOGTAG, "Invalid EXIF data", e); } finally { try { if (is != null) { @@ -576,6 +578,8 @@ public final class ImageLoader { return taglist; } catch (IOException e) { Log.w(LOGTAG, "Failed to read EXIF tags", e); + } catch (NullPointerException e) { + Log.e(LOGTAG, "Failed to read EXIF tags", e); } } return null; diff --git a/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java b/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java index 09f02dd37..50f0e9436 100644 --- a/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java +++ b/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java @@ -79,6 +79,9 @@ public class CategoryAdapter extends ArrayAdapter<Action> { mSelectedPosition = 0; mAddButtonText = getContext().getString(R.string.filtershow_add_button_looks); } +// if (category == MainPanel.MAKEUP) { +// mSelectedPosition = 0; +// } if (category == MainPanel.BORDERS) { mSelectedPosition = 0; } diff --git a/src/com/android/gallery3d/filtershow/category/CategoryPanel.java b/src/com/android/gallery3d/filtershow/category/CategoryPanel.java index fb51bf5ad..66b352ffb 100644 --- a/src/com/android/gallery3d/filtershow/category/CategoryPanel.java +++ b/src/com/android/gallery3d/filtershow/category/CategoryPanel.java @@ -29,7 +29,7 @@ import android.widget.ListView; import android.widget.TextView; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.FilterShowActivity; - +import android.util.Log; public class CategoryPanel extends Fragment implements View.OnClickListener { public static final String FRAGMENT_TAG = "CategoryPanel"; @@ -89,6 +89,13 @@ public class CategoryPanel extends Fragment implements View.OnClickListener { } break; } + case MainPanel.MAKEUP: { + mAdapter = activity.getCategoryMakeupAdapter(); + if (mAdapter != null) { + mAdapter.initializeSelection(MainPanel.MAKEUP); + } + break; + } } updateAddButtonVisibility(); } @@ -148,7 +155,7 @@ public class CategoryPanel extends Fragment implements View.OnClickListener { return; } FilterShowActivity activity = (FilterShowActivity) getActivity(); - if (activity.isShowingImageStatePanel() && mAdapter.showAddButton()) { + if (activity.isShowingImageStatePanel() && mAdapter != null && mAdapter.showAddButton()) { mAddButton.setVisibility(View.VISIBLE); if (mAdapter != null) { mAddButton.setText(mAdapter.getAddButtonText()); diff --git a/src/com/android/gallery3d/filtershow/category/MainPanel.java b/src/com/android/gallery3d/filtershow/category/MainPanel.java index 082bf143a..1dbe42083 100644 --- a/src/com/android/gallery3d/filtershow/category/MainPanel.java +++ b/src/com/android/gallery3d/filtershow/category/MainPanel.java @@ -24,9 +24,10 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.LinearLayout; - +import android.util.Log; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.FilterShowActivity; +import com.android.gallery3d.filtershow.filters.SimpleMakeupImageFilter; import com.android.gallery3d.filtershow.imageshow.MasterImage; import com.android.gallery3d.filtershow.state.StatePanel; @@ -39,6 +40,7 @@ public class MainPanel extends Fragment { private ImageButton bordersButton; private ImageButton geometryButton; private ImageButton filtersButton; + private ImageButton makeupButton; public static final String FRAGMENT_TAG = "MainPanel"; public static final int LOOKS = 0; @@ -46,6 +48,7 @@ public class MainPanel extends Fragment { public static final int GEOMETRY = 2; public static final int FILTERS = 3; public static final int VERSIONS = 4; + public static final int MAKEUP = 5; private int mCurrentSelected = -1; private int mPreviousToggleVersions = -1; @@ -72,6 +75,12 @@ public class MainPanel extends Fragment { filtersButton.setSelected(value); break; } + case MAKEUP: { + if(makeupButton != null) { + makeupButton.setSelected(value); + } + break; + } } } @@ -97,6 +106,19 @@ public class MainPanel extends Fragment { bordersButton = (ImageButton) mMainView.findViewById(R.id.borderButton); geometryButton = (ImageButton) mMainView.findViewById(R.id.geometryButton); filtersButton = (ImageButton) mMainView.findViewById(R.id.colorsButton); + if(SimpleMakeupImageFilter.HAS_TS_MAKEUP) { + makeupButton = (ImageButton) mMainView.findViewById(R.id.makeupButton); + makeupButton.setVisibility(View.VISIBLE); + } + + if(makeupButton != null) { + makeupButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showPanel(MAKEUP); + } + }); + } looksButton.setOnClickListener(new View.OnClickListener() { @Override @@ -173,6 +195,19 @@ public class MainPanel extends Fragment { selection(mCurrentSelected, true); } + public void loadCategoryMakeupPanel() { + if (makeupButton == null || mCurrentSelected == MAKEUP) { + return; + } + boolean fromRight = isRightAnimation(MAKEUP); + selection(mCurrentSelected, false); + CategoryPanel categoryPanel = new CategoryPanel(); + categoryPanel.setAdapter(MAKEUP); + setCategoryFragment(categoryPanel, fromRight); + mCurrentSelected = MAKEUP; + selection(mCurrentSelected, true); + } + public void loadCategoryGeometryPanel() { if (mCurrentSelected == GEOMETRY) { return; @@ -239,6 +274,10 @@ public class MainPanel extends Fragment { loadCategoryVersionsPanel(); break; } + case MAKEUP: { + loadCategoryMakeupPanel(); + break; + } } } diff --git a/src/com/android/gallery3d/filtershow/controller/ColorChooser.java b/src/com/android/gallery3d/filtershow/controller/ColorChooser.java index f9f29bccc..82ce80bbf 100644 --- a/src/com/android/gallery3d/filtershow/controller/ColorChooser.java +++ b/src/com/android/gallery3d/filtershow/controller/ColorChooser.java @@ -68,9 +68,16 @@ public class ColorChooser implements Control { Color.colorToHSV(palette[i], hsvo); hsvo[OPACITY_OFFSET] = (0xFF & (palette[i] >> 24)) / (float) 255; button.setTag(hsvo); + + String colorString = "(" + Integer.toHexString(palette[i]) + ")"; + boolean colorSelect = false; + if (parameter.getValueString().equals(colorString)) { + mSelectedButton = i; + colorSelect = true; + } GradientDrawable sd = ((GradientDrawable) button.getBackground()); sd.setColor(palette[i]); - sd.setStroke(3, (mSelectedButton == i) ? mSelected : mTransparent); + sd.setStroke(3, colorSelect? mSelected : mTransparent); final int buttonNo = i; button.setOnClickListener(new View.OnClickListener() { diff --git a/src/com/android/gallery3d/filtershow/controller/StyleChooser.java b/src/com/android/gallery3d/filtershow/controller/StyleChooser.java index f5afec921..dc31401e0 100644 --- a/src/com/android/gallery3d/filtershow/controller/StyleChooser.java +++ b/src/com/android/gallery3d/filtershow/controller/StyleChooser.java @@ -41,7 +41,7 @@ public class StyleChooser implements Control { int n = mParameter.getNumberOfStyles(); mIconButton.clear(); Resources res = context.getResources(); - int dim = res.getDimensionPixelSize(R.dimen.draw_style_icon_dim); + int dim = mTopView.getMeasuredWidth() / n; LayoutParams lp = new LayoutParams(dim, dim); for (int i = 0; i < n; i++) { final ImageButton button = new ImageButton(context); diff --git a/src/com/android/gallery3d/filtershow/crop/CropActivity.java b/src/com/android/gallery3d/filtershow/crop/CropActivity.java index 3a7829681..94c859333 100644 --- a/src/com/android/gallery3d/filtershow/crop/CropActivity.java +++ b/src/com/android/gallery3d/filtershow/crop/CropActivity.java @@ -83,7 +83,7 @@ public class CropActivity extends Activity { * sure the intent stays below 1MB.We should consider just returning a byte * array instead of a Bitmap instance to avoid overhead. */ - public static final int MAX_BMAP_IN_INTENT = 750000; + public static final int MAX_BMAP_IN_INTENT = 520000; // Flags private static final int DO_SET_WALLPAPER = 1; @@ -400,16 +400,8 @@ public class CropActivity extends Activity { mOutputX = outputX; mOutputY = outputY; - if ((flags & DO_EXTRA_OUTPUT) != 0) { - if (mOutUri == null) { - Log.w(LOGTAG, "cannot write file, no output URI given"); - } else { - try { - mOutStream = getContentResolver().openOutputStream(mOutUri); - } catch (FileNotFoundException e) { - Log.w(LOGTAG, "cannot write file: " + mOutUri.toString(), e); - } - } + if ((flags & DO_EXTRA_OUTPUT) != 0 && mOutUri == null) { + Log.w(LOGTAG, "cannot write file, no output URI given"); } if ((flags & (DO_EXTRA_OUTPUT | DO_SET_WALLPAPER)) != 0) { @@ -542,7 +534,14 @@ public class CropActivity extends Activity { // Get output compression format CompressFormat cf = convertExtensionToCompressFormat(getFileExtension(mOutputFormat)); - + Utils.closeSilently(mInStream); + if (mOutUri != null) { + try { + mOutStream = getContentResolver().openOutputStream(mOutUri); + } catch (FileNotFoundException e) { + Log.w(LOGTAG, "cannot write file: " + mOutUri.toString(), e); + } + } // If we only need to output to a URI, compress straight to file if (mFlags == DO_EXTRA_OUTPUT) { if (mOutStream == null @@ -604,7 +603,7 @@ public class CropActivity extends Activity { @Override protected void onPostExecute(Boolean result) { Utils.closeSilently(mOutStream); - Utils.closeSilently(mInStream); + // Utils.closeSilently(mInStream); doneBitmapIO(result.booleanValue(), mResultIntent); } diff --git a/src/com/android/gallery3d/filtershow/editors/EditorMakeup.java b/src/com/android/gallery3d/filtershow/editors/EditorMakeup.java new file mode 100644 index 000000000..331d31b57 --- /dev/null +++ b/src/com/android/gallery3d/filtershow/editors/EditorMakeup.java @@ -0,0 +1,44 @@ +/* +* Copyright (C) 2014,2015 Thundersoft Corporation +* All rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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.gallery3d.filtershow.editors; + +import android.view.View; +import android.widget.SeekBar; + +import com.android.gallery3d.R; + +public class EditorMakeup extends BasicEditor { + public static int ID = R.id.editorMakeup; + private final String LOGTAG = "EditorMakeup"; + + public EditorMakeup() { + super(ID, R.layout.filtershow_default_editor, R.id.basicEditor); + } + + @Override + public void setUtilityPanelUI(View actionButton, View editControl) { + super.setUtilityPanelUI(actionButton, editControl); + mSeekBar = (SeekBar) editControl.findViewById(R.id.primarySeekBar); + if (mSeekBar != null) { + mSeekBar.setVisibility(View.INVISIBLE); + } + } + + + +} diff --git a/src/com/android/gallery3d/filtershow/editors/EditorPanel.java b/src/com/android/gallery3d/filtershow/editors/EditorPanel.java index a60b6722c..0581835f4 100644 --- a/src/com/android/gallery3d/filtershow/editors/EditorPanel.java +++ b/src/com/android/gallery3d/filtershow/editors/EditorPanel.java @@ -20,6 +20,7 @@ import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -50,6 +51,7 @@ public class EditorPanel extends Fragment { super.onAttach(activity); FilterShowActivity filterShowActivity = (FilterShowActivity) activity; mEditor = filterShowActivity.getEditor(mEditorID); + Log.d(LOGTAG, "EditorPanle.onAttach(): mEditorID is " + mEditorID + ", mEditor is " + mEditor); } public void cancelCurrentFilter() { diff --git a/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java b/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java index 8350ff356..e93175a92 100644 --- a/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java +++ b/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java @@ -36,6 +36,7 @@ public abstract class BaseFiltersManager implements FiltersManagerInterface { protected ArrayList<FilterRepresentation> mBorders = new ArrayList<FilterRepresentation>(); protected ArrayList<FilterRepresentation> mTools = new ArrayList<FilterRepresentation>(); protected ArrayList<FilterRepresentation> mEffects = new ArrayList<FilterRepresentation>(); + protected ArrayList<FilterRepresentation> mMakeup = new ArrayList<FilterRepresentation>(); private static int mImageBorderSize = 4; // in percent protected void init() { @@ -140,6 +141,12 @@ public abstract class BaseFiltersManager implements FiltersManagerInterface { filters.add(ImageFilterFx.class); filters.add(ImageFilterBorder.class); filters.add(ImageFilterColorBorder.class); + if(SimpleMakeupImageFilter.HAS_TS_MAKEUP) { + filters.add(ImageFilterMakeupWhiten.class); + filters.add(ImageFilterMakeupSoften.class); + filters.add(ImageFilterMakeupTrimface.class); + filters.add(ImageFilterMakeupBigeye.class); + } } public ArrayList<FilterRepresentation> getLooks() { @@ -158,8 +165,11 @@ public abstract class BaseFiltersManager implements FiltersManagerInterface { return mEffects; } - public void addBorders(Context context) { + public ArrayList<FilterRepresentation> getMakeup() { + return mMakeup; + } + public void addBorders(Context context) { // Do not localize String[] serializationNames = { "FRAME_4X5", @@ -305,6 +315,15 @@ public abstract class BaseFiltersManager implements FiltersManagerInterface { mEffects.add(getRepresentation(ImageFilterKMeans.class)); } + public void addMakeups(Context context) { + if(SimpleMakeupImageFilter.HAS_TS_MAKEUP) { + mMakeup.add(getRepresentation(ImageFilterMakeupWhiten.class)); + mMakeup.add(getRepresentation(ImageFilterMakeupSoften.class)); + mMakeup.add(getRepresentation(ImageFilterMakeupTrimface.class)); + mMakeup.add(getRepresentation(ImageFilterMakeupBigeye.class)); + } + } + public void addTools(Context context) { int[] textId = { diff --git a/src/com/android/gallery3d/filtershow/filters/FilterCropRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterCropRepresentation.java index ba697d87f..98afc3a08 100644 --- a/src/com/android/gallery3d/filtershow/filters/FilterCropRepresentation.java +++ b/src/com/android/gallery3d/filtershow/filters/FilterCropRepresentation.java @@ -65,6 +65,9 @@ public class FilterCropRepresentation extends FilterRepresentation { return false; } FilterCropRepresentation crop = (FilterCropRepresentation) rep; + if (crop.isNil()) { + return true; + } if (mCrop.bottom != crop.mCrop.bottom || mCrop.left != crop.mCrop.left || mCrop.right != crop.mCrop.right diff --git a/src/com/android/gallery3d/filtershow/filters/FilterDrawRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterDrawRepresentation.java index 48d3d9077..5c5e561ca 100644 --- a/src/com/android/gallery3d/filtershow/filters/FilterDrawRepresentation.java +++ b/src/com/android/gallery3d/filtershow/filters/FilterDrawRepresentation.java @@ -157,15 +157,20 @@ public class FilterDrawRepresentation extends FilterRepresentation { private Vector<StrokeData> mDrawing = new Vector<StrokeData>(); private StrokeData mCurrent; // used in the currently drawing style - public FilterDrawRepresentation() { - super("Draw"); + public FilterDrawRepresentation(String name) { + super(name); setFilterClass(ImageFilterDraw.class); - setSerializationName("DRAW"); + setSerializationName(name); setFilterType(FilterRepresentation.TYPE_VIGNETTE); setTextId(R.string.imageDraw); setEditorId(EditorDraw.ID); setOverlayId(R.drawable.filtershow_drawing); setOverlayOnly(true); + setDefaultColor(); + } + + private void setDefaultColor() { + mParamColor.setValue(DEFAULT_MENU_COLOR1); } @Override @@ -185,7 +190,7 @@ public class FilterDrawRepresentation extends FilterRepresentation { @Override public FilterRepresentation copy() { - FilterDrawRepresentation representation = new FilterDrawRepresentation(); + FilterDrawRepresentation representation = new FilterDrawRepresentation(getName()); copyAllParameters(representation); return representation; } diff --git a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java index 0fb157d7b..36675b71b 100644 --- a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java +++ b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java @@ -47,6 +47,7 @@ public class FilterRepresentation { public static final byte TYPE_NORMAL = 5; public static final byte TYPE_TINYPLANET = 6; public static final byte TYPE_GEOMETRY = 7; + public static final byte TYPE_MAKEUP = 8; protected static final String NAME_TAG = "Name"; public FilterRepresentation(String name) { diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java index 437137416..1fcd3008c 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java @@ -19,7 +19,7 @@ package com.android.gallery3d.filtershow.filters; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Matrix; -import android.support.v8.renderscript.Allocation; +import android.renderscript.Allocation; import android.widget.Toast; import com.android.gallery3d.filtershow.imageshow.GeometryMathUtils; diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java index a7286f0fa..5f3502272 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java @@ -18,13 +18,15 @@ package com.android.gallery3d.filtershow.filters; import android.content.res.Resources; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import com.android.gallery3d.data.DecodeUtils; + import java.util.HashMap; +import java.lang.ref.WeakReference; public class ImageFilterBorder extends ImageFilter { private static final float NINEPATCH_ICON_SCALING = 10; @@ -32,7 +34,7 @@ public class ImageFilterBorder extends ImageFilter { private FilterImageBorderRepresentation mParameters = null; private Resources mResources = null; - private HashMap<Integer, Drawable> mDrawables = new HashMap<Integer, Drawable>(); + private HashMap<Integer, WeakReference<Drawable>> mDrawables = new HashMap<Integer, WeakReference<Drawable>>(); public ImageFilterBorder() { mName = "Border"; @@ -57,7 +59,7 @@ public class ImageFilterBorder extends ImageFilter { Rect bounds = new Rect(0, 0, (int) (w * scale1), (int) (h * scale1)); Canvas canvas = new Canvas(bitmap); canvas.scale(scale2, scale2); - Drawable drawable = getDrawable(getParameters().getDrawableResource()); + Drawable drawable = getDrawable(getParameters().getDrawableResource(), w, h); drawable.setBounds(bounds); drawable.draw(canvas); return bitmap; @@ -80,11 +82,12 @@ public class ImageFilterBorder extends ImageFilter { } } - public Drawable getDrawable(int rsc) { - Drawable drawable = mDrawables.get(rsc); + public Drawable getDrawable(int rsc, int reqWidth, int reqHeight) { + Drawable drawable = (mDrawables.get(rsc) != null) ? mDrawables.get(rsc).get() : null; if (drawable == null && mResources != null && rsc != 0) { - drawable = new BitmapDrawable(mResources, BitmapFactory.decodeResource(mResources, rsc)); - mDrawables.put(rsc, drawable); + drawable = new BitmapDrawable(mResources, DecodeUtils.decodeBitmap( + mResources, rsc, reqWidth, reqHeight)); + mDrawables.put(rsc, new WeakReference<Drawable>(drawable)); } return drawable; } diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterChanSat.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterChanSat.java index 5d3856ebc..6c48a6a9f 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterChanSat.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterChanSat.java @@ -18,11 +18,11 @@ package com.android.gallery3d.filtershow.filters; import android.graphics.Bitmap; import android.graphics.Matrix; -import android.support.v8.renderscript.Allocation; -import android.support.v8.renderscript.Element; -import android.support.v8.renderscript.RenderScript; -import android.support.v8.renderscript.Script.LaunchOptions; -import android.support.v8.renderscript.Type; +import android.renderscript.Allocation; +import android.renderscript.Element; +import android.renderscript.RenderScript; +import android.renderscript.Script; +import android.renderscript.Type; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.pipeline.FilterEnvironment; @@ -132,7 +132,7 @@ public class ImageFilterChanSat extends ImageFilterRS { int width = in.getType().getX(); int height = in.getType().getY(); - LaunchOptions options = new LaunchOptions(); + Script.LaunchOptions options = new Script.LaunchOptions(); int ty; options.setX(0, width); diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java index 8fd5b029e..da7de9379 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java @@ -29,6 +29,7 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import com.android.gallery3d.R; +import com.android.gallery3d.app.GalleryAppImpl; import com.android.gallery3d.app.Log; import com.android.gallery3d.filtershow.cache.ImageLoader; import com.android.gallery3d.filtershow.filters.FilterDrawRepresentation.StrokeData; @@ -47,7 +48,8 @@ public class ImageFilterDraw extends ImageFilter { int mCachedStrokes = -1; int mCurrentStyle = 0; - FilterDrawRepresentation mParameters = new FilterDrawRepresentation(); + FilterDrawRepresentation mParameters = new FilterDrawRepresentation( + GalleryAppImpl.getContext().getString(R.string.imageDraw)); public ImageFilterDraw() { mName = "Image Draw"; @@ -69,7 +71,8 @@ public class ImageFilterDraw extends ImageFilter { @Override public FilterRepresentation getDefaultRepresentation() { - return new FilterDrawRepresentation(); + return new FilterDrawRepresentation( + GalleryAppImpl.getContext().getString(R.string.imageDraw)); } @Override diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterGrad.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterGrad.java index 0a615afd4..7f10af990 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterGrad.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterGrad.java @@ -26,11 +26,12 @@ import com.android.gallery3d.filtershow.pipeline.FilterEnvironment; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.Matrix; -import android.support.v8.renderscript.Allocation; -import android.support.v8.renderscript.Element; -import android.support.v8.renderscript.RenderScript; -import android.support.v8.renderscript.Script.LaunchOptions; -import android.support.v8.renderscript.Type; + +import android.renderscript.Allocation; +import android.renderscript.Element; +import android.renderscript.RenderScript; +import android.renderscript.Script; +import android.renderscript.Type; import android.util.Log; import com.android.gallery3d.R; @@ -161,7 +162,7 @@ public class ImageFilterGrad extends ImageFilterRS { int width = in.getType().getX(); int height = in.getType().getY(); - LaunchOptions options = new LaunchOptions(); + Script.LaunchOptions options = new Script.LaunchOptions(); int ty; options.setX(0, width); diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupBigeye.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupBigeye.java new file mode 100644 index 000000000..64067881e --- /dev/null +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupBigeye.java @@ -0,0 +1,54 @@ +/* +* Copyright (C) 2014,2015 Thundersoft Corporation +* All rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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.gallery3d.filtershow.filters; + +import android.graphics.Bitmap; + +import com.android.gallery3d.R; + +import com.thundersoft.hz.selfportrait.detect.FaceInfo; +import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine; + +public class ImageFilterMakeupBigeye extends SimpleMakeupImageFilter { + private static final String SERIALIZATION_NAME = "BIGEYE"; + + public ImageFilterMakeupBigeye() { + mName = "Bigeye"; + } + + public FilterRepresentation getDefaultRepresentation() { + FilterBasicRepresentation representation = + (FilterBasicRepresentation) super.getDefaultRepresentation(); + representation.setName("Bigeye"); + representation.setSerializationName(SERIALIZATION_NAME); + representation.setFilterClass(ImageFilterMakeupBigeye.class); + representation.setTextId(R.string.text_makeup_bigeye); + representation.setOverlayOnly(true); + representation.setOverlayId(R.drawable.ic_ts_makeup_bigeye); + representation.setMinimum(0); + representation.setMaximum(100); + representation.setSupportsPartialRendering(true); + return representation; + } + + protected void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height, + int value) { + MakeupEngine.doWarpFace(bitmap, bitmap, width, height, faceInfo.eye1, faceInfo.eye2, + faceInfo.mouth, value, 0); + } +} diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupSoften.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupSoften.java new file mode 100644 index 000000000..8587158c3 --- /dev/null +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupSoften.java @@ -0,0 +1,52 @@ +/* +* Copyright (C) 2014,2015 Thundersoft Corporation +* All rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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.gallery3d.filtershow.filters; + +import android.graphics.Bitmap; + +import com.android.gallery3d.R; + +import com.thundersoft.hz.selfportrait.detect.FaceInfo; +import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine; + +public class ImageFilterMakeupSoften extends SimpleMakeupImageFilter { + private static final String SERIALIZATION_NAME = "SOFTEN"; + + public ImageFilterMakeupSoften() { + mName = "Soften"; + } + + public FilterRepresentation getDefaultRepresentation() { + FilterBasicRepresentation representation = + (FilterBasicRepresentation) super.getDefaultRepresentation(); + representation.setName("Soften"); + representation.setSerializationName(SERIALIZATION_NAME); + representation.setFilterClass(ImageFilterMakeupSoften.class); + representation.setTextId(R.string.text_makeup_Soften); + representation.setOverlayOnly(true); + representation.setOverlayId(R.drawable.ic_ts_makeup_soften); + representation.setMinimum(0); + representation.setMaximum(100); + representation.setSupportsPartialRendering(true); + return representation; + } + + protected void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height, int value) { + MakeupEngine.doProcessBeautify(bitmap, bitmap, width, height, faceInfo.face, value, 0); + } +} diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupTrimface.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupTrimface.java new file mode 100644 index 000000000..4b0499036 --- /dev/null +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupTrimface.java @@ -0,0 +1,55 @@ +/* +* Copyright (C) 2014,2015 Thundersoft Corporation +* All rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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.gallery3d.filtershow.filters; + +import android.graphics.Bitmap; + +import com.android.gallery3d.R; + +import com.thundersoft.hz.selfportrait.detect.FaceInfo; +import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine; + +public class ImageFilterMakeupTrimface extends SimpleMakeupImageFilter { + private static final String SERIALIZATION_NAME = "TRIMFACE"; + + public ImageFilterMakeupTrimface() { + mName = "Trimface"; + } + + public FilterRepresentation getDefaultRepresentation() { + FilterBasicRepresentation representation = + (FilterBasicRepresentation) super.getDefaultRepresentation(); + representation.setName("Trimface"); + representation.setSerializationName(SERIALIZATION_NAME); + representation.setFilterClass(ImageFilterMakeupTrimface.class); + representation.setTextId(R.string.text_makeup_trimface); + representation.setOverlayOnly(true); + representation.setOverlayId(R.drawable.ic_ts_makeup_trimface); + representation.setMinimum(0); + representation.setMaximum(100); + representation.setSupportsPartialRendering(true); + return representation; + } + + protected void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height, + int value) { + MakeupEngine.doWarpFace(bitmap, bitmap, width, height, faceInfo.eye1, faceInfo.eye2, + faceInfo.mouth, 0, value); + } + +} diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupWhiten.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupWhiten.java new file mode 100644 index 000000000..e60be84d7 --- /dev/null +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupWhiten.java @@ -0,0 +1,53 @@ +/* +* Copyright (C) 2014,2015 Thundersoft Corporation +* All rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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.gallery3d.filtershow.filters; + +import android.graphics.Bitmap; + +import com.android.gallery3d.R; + +import com.thundersoft.hz.selfportrait.detect.FaceInfo; +import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine; + +public class ImageFilterMakeupWhiten extends SimpleMakeupImageFilter { + private static final String SERIALIZATION_NAME = "WHITEN"; + + public ImageFilterMakeupWhiten() { + mName = "Whiten"; + } + + public FilterRepresentation getDefaultRepresentation() { + FilterBasicRepresentation representation = + (FilterBasicRepresentation) super.getDefaultRepresentation(); + representation.setName("Whiten"); + representation.setSerializationName(SERIALIZATION_NAME); + representation.setFilterClass(ImageFilterMakeupWhiten.class); + representation.setTextId(R.string.text_makeup_whiten); + representation.setOverlayOnly(true); + representation.setOverlayId(R.drawable.ic_ts_makeup_whiten); + representation.setMinimum(0); + representation.setMaximum(100); + representation.setSupportsPartialRendering(true); + return representation; + } + + protected void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height, int value) { + MakeupEngine.doProcessBeautify(bitmap, bitmap, width, height, faceInfo.face, 0, value); + } + +} diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java index e94e2a63a..b7c4d80e0 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java @@ -18,7 +18,10 @@ package com.android.gallery3d.filtershow.filters; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.support.v8.renderscript.*; +import android.renderscript.Allocation; +import android.renderscript.Element; +import android.renderscript.RenderScript; +import android.renderscript.Type; import android.util.Log; import android.content.res.Resources; import com.android.gallery3d.R; diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java index e0b4cf687..279bd1857 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java @@ -24,11 +24,8 @@ import android.graphics.Rect; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.imageshow.MasterImage; import com.android.gallery3d.filtershow.pipeline.FilterEnvironment; -import android.support.v8.renderscript.Allocation; -import android.support.v8.renderscript.Element; -import android.support.v8.renderscript.RenderScript; -import android.support.v8.renderscript.Script.LaunchOptions; -import android.support.v8.renderscript.Type; + +import android.renderscript.RenderScript; import android.util.Log; public class ImageFilterVignette extends ImageFilterRS { diff --git a/src/com/android/gallery3d/filtershow/filters/SimpleMakeupImageFilter.java b/src/com/android/gallery3d/filtershow/filters/SimpleMakeupImageFilter.java new file mode 100644 index 000000000..584074c02 --- /dev/null +++ b/src/com/android/gallery3d/filtershow/filters/SimpleMakeupImageFilter.java @@ -0,0 +1,82 @@ +/* +* Copyright (C) 2014,2015 Thundersoft Corporation +* All rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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.gallery3d.filtershow.filters; + +import android.graphics.Bitmap; +import android.util.Log; + +import com.thundersoft.hz.selfportrait.detect.FaceDetect; +import com.thundersoft.hz.selfportrait.detect.FaceInfo; + +public abstract class SimpleMakeupImageFilter extends SimpleImageFilter { + private static final String LOGTAG = "SimpleMakeupImageFilter"; + protected static final int MAKEUP_INTENSITY = 50; + + public static final boolean HAS_TS_MAKEUP = android.os.SystemProperties.getBoolean("persist.ts.postmakeup", false); + + public SimpleMakeupImageFilter() { + } + + public FilterRepresentation getDefaultRepresentation() { + FilterRepresentation representation = new FilterBasicRepresentation("Default", 0, + MAKEUP_INTENSITY, 100); + representation.setShowParameterValue(true); + return representation; + } + + protected FaceInfo detectFaceInfo(Bitmap bitmap) { + FaceDetect faceDetect = new FaceDetect(); + faceDetect.initialize(); + FaceInfo[] faceInfos = faceDetect.dectectFeatures(bitmap); + faceDetect.uninitialize(); + + Log.v(LOGTAG, "SimpleMakeupImageFilter.detectFaceInfo(): detect faceNum is " + + (faceInfos != null ? faceInfos.length : "NULL")); + if (faceInfos == null || faceInfos.length <= 0) { + return null; + } + + return faceInfos[0]; + } + + @Override + public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) { + if (getParameters() == null) { + return bitmap; + } + int w = bitmap.getWidth(); + int h = bitmap.getHeight(); + if(w % 2 != 0 || h % 2 != 0) { + return bitmap; + } + int value = getParameters().getValue(); + applyHelper(bitmap, w, h, value); + return bitmap; + } + + private void applyHelper(Bitmap bitmap, int w, int h, int value) { + FaceInfo faceInfo = detectFaceInfo(bitmap); + if(faceInfo != null) { + doMakeupEffect(bitmap, faceInfo, w, h, value); + } + } + + abstract void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height, + int value); + +} diff --git a/src/com/android/gallery3d/filtershow/history/HistoryManager.java b/src/com/android/gallery3d/filtershow/history/HistoryManager.java index 569b299cc..9d5065a28 100644 --- a/src/com/android/gallery3d/filtershow/history/HistoryManager.java +++ b/src/com/android/gallery3d/filtershow/history/HistoryManager.java @@ -68,7 +68,7 @@ public class HistoryManager { } public boolean canUndo() { - if (mCurrentPresetPosition == getCount() - 1) { + if (mCurrentPresetPosition >= getCount() - 1) { return false; } return true; diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java index 2022ffd7e..d7c2eb4f8 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java @@ -288,7 +288,7 @@ public class ImageShow extends View implements OnGestureListener, drawImageAndAnimate(canvas, highresPreview); } - drawHighresImage(canvas, fullHighres); +// drawHighresImage(canvas, fullHighres); drawCompareImage(canvas, getGeometryOnlyImage()); canvas.restore(); diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java index f6b97f11f..5e27f4213 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java @@ -25,6 +25,7 @@ import android.graphics.Point; import android.graphics.Rect; import android.graphics.RectF; import android.net.Uri; +import android.util.Log; import com.android.gallery3d.exif.ExifTag; import com.android.gallery3d.filtershow.FilterShowActivity; @@ -211,6 +212,9 @@ public class MasterImage implements RenderingRequestCaller { int sh = (int) (sw * (float) mOriginalBitmapLarge.getHeight() / mOriginalBitmapLarge .getWidth()); mOriginalBitmapSmall = Bitmap.createScaledBitmap(mOriginalBitmapLarge, sw, sh, true); + Log.d(LOGTAG, "MasterImage.loadBitmap(): OriginalBitmapLarge.WH is (" + mOriginalBitmapLarge.getWidth() + ", " + + mOriginalBitmapLarge.getHeight() + "), OriginalBitmapSmall.WH is (" + sw + ", " + sh + "), originalBounds is " + + originalBounds.toString()); mZoomOrientation = mOrientation; warnListeners(); return true; @@ -271,6 +275,9 @@ public class MasterImage implements RenderingRequestCaller { public void onHistoryItemClick(int position) { HistoryItem historyItem = mHistory.getItem(position); // We need a copy from the history + if (historyItem == null) { + return; + } ImagePreset newPreset = new ImagePreset(historyItem.getImagePreset()); // don't need to add it to the history setPreset(newPreset, historyItem.getFilterRepresentation(), false); diff --git a/src/com/android/gallery3d/filtershow/pipeline/Buffer.java b/src/com/android/gallery3d/filtershow/pipeline/Buffer.java index c378eb994..a487a5d8d 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/Buffer.java +++ b/src/com/android/gallery3d/filtershow/pipeline/Buffer.java @@ -18,8 +18,8 @@ package com.android.gallery3d.filtershow.pipeline; import android.graphics.Bitmap; import android.graphics.Canvas; -import android.support.v8.renderscript.Allocation; -import android.support.v8.renderscript.RenderScript; +import android.renderscript.Allocation; +import android.renderscript.RenderScript; import android.util.Log; import com.android.gallery3d.filtershow.cache.BitmapCache; import com.android.gallery3d.filtershow.imageshow.MasterImage; diff --git a/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java b/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java index 8ae9a7c7b..06ce9e9df 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java +++ b/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java @@ -24,8 +24,9 @@ import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.RectF; -import android.support.v8.renderscript.Allocation; -import android.support.v8.renderscript.RenderScript; + +import android.renderscript.Allocation; +import android.renderscript.RenderScript; import android.util.Log; import com.android.gallery3d.filtershow.cache.BitmapCache; @@ -175,6 +176,9 @@ public class CachingPipeline implements PipelineInterface { } public void setOriginal(Bitmap bitmap) { + if (mOriginalBitmap != null) { + mOriginalBitmap.recycle(); + } mOriginalBitmap = bitmap; Log.v(LOGTAG,"setOriginal, size " + bitmap.getWidth() + " x " + bitmap.getHeight()); ImagePreset preset = MasterImage.getImage().getPreset(); diff --git a/src/com/android/gallery3d/filtershow/pipeline/FilterEnvironment.java b/src/com/android/gallery3d/filtershow/pipeline/FilterEnvironment.java index ebf83b720..0b84f5203 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/FilterEnvironment.java +++ b/src/com/android/gallery3d/filtershow/pipeline/FilterEnvironment.java @@ -18,7 +18,7 @@ package com.android.gallery3d.filtershow.pipeline; import android.graphics.Bitmap; import android.graphics.Canvas; -import android.support.v8.renderscript.Allocation; +import android.renderscript.Allocation; import com.android.gallery3d.app.Log; import com.android.gallery3d.filtershow.cache.BitmapCache; diff --git a/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java b/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java index 4765a5990..1460ad434 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java @@ -18,7 +18,7 @@ package com.android.gallery3d.filtershow.pipeline; import android.graphics.Bitmap; import android.graphics.Rect; -import android.support.v8.renderscript.Allocation; +import android.renderscript.Allocation; import android.util.JsonReader; import android.util.JsonWriter; import android.util.Log; @@ -67,9 +67,11 @@ public class ImagePreset { } public ImagePreset(ImagePreset source) { - for (int i = 0; i < source.mFilters.size(); i++) { - FilterRepresentation sourceRepresentation = source.mFilters.elementAt(i); - mFilters.add(sourceRepresentation.copy()); + if (source != null && source.mFilters != null) { + for (int i = 0; i < source.mFilters.size(); i++) { + FilterRepresentation sourceRepresentation = source.mFilters.elementAt(i); + mFilters.add(sourceRepresentation.copy()); + } } } @@ -237,7 +239,7 @@ public class ImagePreset { FilterRepresentation a = preset.mFilters.elementAt(i); FilterRepresentation b = mFilters.elementAt(i); - if (!a.same(b)) { + if (!a.equals(b)) { return false; } } diff --git a/src/com/android/gallery3d/filtershow/pipeline/PipelineInterface.java b/src/com/android/gallery3d/filtershow/pipeline/PipelineInterface.java index d53768c95..ad59e0c44 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/PipelineInterface.java +++ b/src/com/android/gallery3d/filtershow/pipeline/PipelineInterface.java @@ -18,8 +18,8 @@ package com.android.gallery3d.filtershow.pipeline; import android.content.res.Resources; import android.graphics.Bitmap; -import android.support.v8.renderscript.Allocation; -import android.support.v8.renderscript.RenderScript; +import android.renderscript.Allocation; +import android.renderscript.RenderScript; public interface PipelineInterface { public String getName(); diff --git a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java index e5736d43c..e334e8798 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java +++ b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java @@ -304,12 +304,14 @@ public class ProcessingService extends Service { filtersManager.addBorders(this); filtersManager.addTools(this); filtersManager.addEffects(); + filtersManager.addMakeups(this); FiltersManager highresFiltersManager = FiltersManager.getHighresManager(); highresFiltersManager.addLooks(this); highresFiltersManager.addBorders(this); highresFiltersManager.addTools(this); highresFiltersManager.addEffects(); +// highresFiltersManager.addMakeups(this); } private void tearDownPipeline() { diff --git a/src/com/android/gallery3d/filtershow/pipeline/UpdatePreviewTask.java b/src/com/android/gallery3d/filtershow/pipeline/UpdatePreviewTask.java index 61ee8eb71..a55abca3d 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/UpdatePreviewTask.java +++ b/src/com/android/gallery3d/filtershow/pipeline/UpdatePreviewTask.java @@ -57,8 +57,11 @@ public class UpdatePreviewTask extends ProcessingTask { SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer(); SharedPreset preset = MasterImage.getImage().getPreviewPreset(); ImagePreset renderingPreset = preset.dequeuePreset(); - if (renderingPreset != null) { + if ( (buffer != null) && (renderingPreset != null)) { mPreviewPipeline.compute(buffer, renderingPreset, 0); + if ( buffer.getProducer() == null) { + return null; + } // set the preset we used in the buffer for later inspection UI-side buffer.getProducer().setPreset(renderingPreset); buffer.getProducer().sync(); diff --git a/src/com/android/gallery3d/filtershow/state/StatePanel.java b/src/com/android/gallery3d/filtershow/state/StatePanel.java index 95c2df991..192400315 100644 --- a/src/com/android/gallery3d/filtershow/state/StatePanel.java +++ b/src/com/android/gallery3d/filtershow/state/StatePanel.java @@ -48,7 +48,9 @@ public class StatePanel extends Fragment { View panel = mMainView.findViewById(R.id.listStates); track = (StatePanelTrack) panel; - track.setAdapter(MasterImage.getImage().getState()); + StateAdapter imageStateAdapter = MasterImage.getImage().getState(); + if (imageStateAdapter == null) return null; + track.setAdapter(imageStateAdapter); mToggleVersionsPanel = (ImageButton) mMainView.findViewById(R.id.toggleVersionsPanel); if (FilterShowHelper.shouldUseVersions()) { if (mToggleVersionsPanel.getVisibility() == View.GONE diff --git a/src/com/android/gallery3d/filtershow/tools/SaveImage.java b/src/com/android/gallery3d/filtershow/tools/SaveImage.java index 17d698f15..e07dd2ce8 100644 --- a/src/com/android/gallery3d/filtershow/tools/SaveImage.java +++ b/src/com/android/gallery3d/filtershow/tools/SaveImage.java @@ -247,7 +247,7 @@ public class SaveImage { if (mimeType == null) { mimeType = ImageLoader.getMimeType(mSelectedImageUri); } - if (mimeType.equals(ImageLoader.JPEG_MIME_TYPE)) { + if (ImageLoader.JPEG_MIME_TYPE.equals(mimeType)) { InputStream inStream = null; try { inStream = mContext.getContentResolver().openInputStream(source); @@ -256,6 +256,8 @@ public class SaveImage { Log.w(LOGTAG, "Cannot find file: " + source, e); } catch (IOException e) { Log.w(LOGTAG, "Cannot read exif for: " + source, e); + } catch (NullPointerException e) { + Log.w(LOGTAG, "Invalid exif data for: " + source, e); } finally { Utils.closeSilently(inStream); } @@ -346,9 +348,9 @@ public class SaveImage { // newSourceUri is then pointing to the new location. // If no file is moved, newSourceUri will be the same as mSourceUri. Uri newSourceUri = mSourceUri; - if (!flatten) { - newSourceUri = moveSrcToAuxIfNeeded(mSourceUri, mDestinationFile); - } + /* + * if (!flatten) { newSourceUri = moveSrcToAuxIfNeeded(mSourceUri, mDestinationFile); } + */ Uri savedUri = mSelectedImageUri; if (mPreviewImage != null) { @@ -380,7 +382,7 @@ public class SaveImage { // After this call, mSelectedImageUri will be actually // pointing at the new file mDestinationFile. savedUri = SaveImage.linkNewFileToUri(mContext, mSelectedImageUri, - mDestinationFile, time, !flatten); + mDestinationFile, time, false); } } if (mCallback != null) { @@ -700,7 +702,7 @@ public class SaveImage { values.put(Images.Media.TITLE, file.getName()); values.put(Images.Media.DISPLAY_NAME, file.getName()); values.put(Images.Media.MIME_TYPE, "image/jpeg"); - values.put(Images.Media.DATE_TAKEN, time); + values.put(Images.Media.DATE_TAKEN, time * 1000); values.put(Images.Media.DATE_MODIFIED, time); values.put(Images.Media.DATE_ADDED, time); values.put(Images.Media.ORIENTATION, 0); diff --git a/src/com/android/gallery3d/filtershow/ui/ExportDialog.java b/src/com/android/gallery3d/filtershow/ui/ExportDialog.java index b42c9f367..001e07589 100644 --- a/src/com/android/gallery3d/filtershow/ui/ExportDialog.java +++ b/src/com/android/gallery3d/filtershow/ui/ExportDialog.java @@ -107,8 +107,16 @@ public class ExportDialog extends DialogFragment implements View.OnClickListener mOriginalBounds = MasterImage.getImage().getOriginalBounds(); ImagePreset preset = MasterImage.getImage().getPreset(); + if (mOriginalBounds == null || preset == null) return null; mOriginalBounds = preset.finalGeometryRect(mOriginalBounds.width(), mOriginalBounds.height()); + if (preset != null) { + mOriginalBounds = preset.finalGeometryRect(mOriginalBounds.width(), + mOriginalBounds.height()); + } + if (mOriginalBounds == null) { + return null; + } mRatio = mOriginalBounds.width() / (float) mOriginalBounds.height(); mWidthText.setText("" + mOriginalBounds.width()); mHeightText.setText("" + mOriginalBounds.height()); diff --git a/src/com/android/gallery3d/gadget/WidgetClickHandler.java b/src/com/android/gallery3d/gadget/WidgetClickHandler.java index e66a2a66f..e5b0a376c 100644 --- a/src/com/android/gallery3d/gadget/WidgetClickHandler.java +++ b/src/com/android/gallery3d/gadget/WidgetClickHandler.java @@ -57,6 +57,8 @@ public class WidgetClickHandler extends Activity { Intent intent; if (isValidDataUri(uri)) { intent = new Intent(Intent.ACTION_VIEW, uri); + // Used for checking whether it is from widget + intent.putExtra(PhotoPage.KEY_IS_FROM_WIDGET, true); if (tediousBack) { intent.putExtra(PhotoPage.KEY_TREAT_BACK_AS_UP, true); } diff --git a/src/com/android/gallery3d/gadget/WidgetConfigure.java b/src/com/android/gallery3d/gadget/WidgetConfigure.java index 2a4c6cfe4..b9a3fec23 100644 --- a/src/com/android/gallery3d/gadget/WidgetConfigure.java +++ b/src/com/android/gallery3d/gadget/WidgetConfigure.java @@ -18,11 +18,16 @@ package com.android.gallery3d.gadget; import android.app.Activity; import android.appwidget.AppWidgetManager; +import android.content.ClipData; import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.net.Uri; +import android.os.AsyncTask; import android.os.Bundle; +import android.provider.MediaStore; +import android.support.v4.content.FileProvider; import android.util.Log; import android.widget.RemoteViews; @@ -38,6 +43,14 @@ import com.android.gallery3d.data.Path; import com.android.gallery3d.filtershow.crop.CropActivity; import com.android.gallery3d.filtershow.crop.CropExtras; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + public class WidgetConfigure extends Activity { @SuppressWarnings("unused") private static final String TAG = "WidgetConfigure"; @@ -61,6 +74,7 @@ public class WidgetConfigure extends Activity { private int mAppWidgetId = -1; private Uri mPickedItem; + private Uri mCropSrc, mCropDst; @Override protected void onCreate(Bundle savedState) { @@ -116,48 +130,142 @@ public class WidgetConfigure extends Activity { } else if (requestCode == REQUEST_GET_PHOTO) { setChoosenPhoto(data); } else if (requestCode == REQUEST_CROP_IMAGE) { - setPhotoWidget(data); + setPhotoWidget(); } else { throw new AssertionError("unknown request: " + requestCode); } } - private void setPhotoWidget(Intent data) { - // Store the cropped photo in our database - Bitmap bitmap = (Bitmap) data.getParcelableExtra("data"); - WidgetDatabaseHelper helper = new WidgetDatabaseHelper(this); + private void setPhotoWidget() { + AsyncTask.execute(new Runnable() { + @Override + public void run() { + Bitmap bitmap = null; + InputStream stream = null; + try { + stream = WidgetConfigure.this.getContentResolver() + .openInputStream(mCropDst); + if (stream != null) { + bitmap = BitmapFactory.decodeStream(stream); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } finally { + if (stream != null) { + try { + stream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + getContentResolver().delete(mCropSrc, null, null); + getContentResolver().delete(mCropDst, null, null); + } + if (bitmap == null) { + setResult(Activity.RESULT_CANCELED); + finish(); + return; + } + WidgetDatabaseHelper helper = new WidgetDatabaseHelper(WidgetConfigure.this); + try { + helper.setPhoto(mAppWidgetId, mPickedItem, bitmap); + updateWidgetAndFinish(helper.getEntry(mAppWidgetId)); + } finally { + helper.close(); + } + } + }); + } + + private void setChoosenPhoto(final Intent data) { + AsyncTask.execute(new Runnable() { + @Override + public void run() { + Resources res = getResources(); + + float width = res.getDimension(R.dimen.appwidget_width); + float height = res.getDimension(R.dimen.appwidget_height); + + // We try to crop a larger image (by scale factor), but there is still + // a bound on the binder limit. + float scale = Math.min(WIDGET_SCALE_FACTOR, + MAX_WIDGET_SIDE / Math.max(width, height)); + + int widgetWidth = Math.round(width * scale); + int widgetHeight = Math.round(height * scale); + + File cropSrc = new File(getCacheDir(), "crop_source.png"); + File cropDst = new File(getCacheDir(), "crop_dest.png"); + mPickedItem = data.getData(); + if (!copyUriToFile(mPickedItem, cropSrc)) { + setResult(Activity.RESULT_CANCELED); + finish(); + return; + } + + mCropSrc = FileProvider.getUriForFile(WidgetConfigure.this, + "com.android.gallery3d.fileprovider", + new File(cropSrc.getAbsolutePath())); + mCropDst = FileProvider.getUriForFile(WidgetConfigure.this, + "com.android.gallery3d.fileprovider", + new File(cropDst.getAbsolutePath())); + + Intent request = new Intent(CropActivity.CROP_ACTION) + .putExtra(CropExtras.KEY_OUTPUT_X, widgetWidth) + .putExtra(CropExtras.KEY_OUTPUT_Y, widgetHeight) + .putExtra(CropExtras.KEY_ASPECT_X, widgetWidth) + .putExtra(CropExtras.KEY_ASPECT_Y, widgetHeight) + .putExtra(CropExtras.KEY_SCALE_UP_IF_NEEDED, true) + .putExtra(CropExtras.KEY_SCALE, true) + .putExtra(CropExtras.KEY_RETURN_DATA, false) + .setDataAndType(mCropSrc, "image/*") + .addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | + Intent.FLAG_GRANT_READ_URI_PERMISSION); + request.putExtra(MediaStore.EXTRA_OUTPUT, mCropDst); + request.setClipData(ClipData.newRawUri(MediaStore.EXTRA_OUTPUT, mCropDst)); + startActivityForResult(request, REQUEST_CROP_IMAGE); + } + }); + } + + public boolean copyUriToFile(Uri inUri, File dst) { + boolean isSuccessful = false; + InputStream in = null; + OutputStream out = null; try { - helper.setPhoto(mAppWidgetId, mPickedItem, bitmap); - updateWidgetAndFinish(helper.getEntry(mAppWidgetId)); + in = getContentResolver().openInputStream(inUri); + out = new FileOutputStream(dst); + + byte[] buf = new byte[1024]; + + try { + for (int len; (len = in.read(buf)) > 0; ) { + out.write(buf, 0, len); + } + isSuccessful = true; + } catch (IOException e) { + // ignore + } + + } catch (FileNotFoundException fnf) { + // ignore } finally { - helper.close(); + if (in != null) { + try { + in.close(); + } catch (IOException e) { + // ignore + } + } + if (out != null) { + try { + out.close(); + } catch (IOException e) { + // ignore + } + } } - } - - private void setChoosenPhoto(Intent data) { - Resources res = getResources(); - - float width = res.getDimension(R.dimen.appwidget_width); - float height = res.getDimension(R.dimen.appwidget_height); - - // We try to crop a larger image (by scale factor), but there is still - // a bound on the binder limit. - float scale = Math.min(WIDGET_SCALE_FACTOR, - MAX_WIDGET_SIDE / Math.max(width, height)); - - int widgetWidth = Math.round(width * scale); - int widgetHeight = Math.round(height * scale); - - mPickedItem = data.getData(); - Intent request = new Intent(CropActivity.CROP_ACTION, mPickedItem) - .putExtra(CropExtras.KEY_OUTPUT_X, widgetWidth) - .putExtra(CropExtras.KEY_OUTPUT_Y, widgetHeight) - .putExtra(CropExtras.KEY_ASPECT_X, widgetWidth) - .putExtra(CropExtras.KEY_ASPECT_Y, widgetHeight) - .putExtra(CropExtras.KEY_SCALE_UP_IF_NEEDED, true) - .putExtra(CropExtras.KEY_SCALE, true) - .putExtra(CropExtras.KEY_RETURN_DATA, true); - startActivityForResult(request, REQUEST_CROP_IMAGE); + return isSuccessful; } private void setChoosenAlbum(Intent data) { diff --git a/src/com/android/gallery3d/gadget/WidgetService.java b/src/com/android/gallery3d/gadget/WidgetService.java index fc54fb6e8..854433776 100644 --- a/src/com/android/gallery3d/gadget/WidgetService.java +++ b/src/com/android/gallery3d/gadget/WidgetService.java @@ -80,7 +80,7 @@ public class WidgetService extends RemoteViewsService { } @Override - public void onDestroy() { + public synchronized void onDestroy() { mSource.close(); mSource = null; } @@ -115,7 +115,11 @@ public class WidgetService extends RemoteViewsService { } @Override - public RemoteViews getViewAt(int position) { + public synchronized RemoteViews getViewAt(int position) { + if (mSource == null) { + // This instance has been destroyed, exit out + return null; + } Bitmap bitmap = mSource.getImage(position); if (bitmap == null) return getLoadingView(); RemoteViews views = new RemoteViews( diff --git a/src/com/android/gallery3d/glrenderer/UploadedTexture.java b/src/com/android/gallery3d/glrenderer/UploadedTexture.java index f41a979b7..546d9f398 100644 --- a/src/com/android/gallery3d/glrenderer/UploadedTexture.java +++ b/src/com/android/gallery3d/glrenderer/UploadedTexture.java @@ -221,8 +221,11 @@ public abstract class UploadedTexture extends BasicTexture { Assert.assertTrue(bWidth <= texWidth && bHeight <= texHeight); - // Upload the bitmap to a new texture. - mId = canvas.getGLId().generateTexture(); + // Null pointer check here is to avoid monkey test failure. + if (canvas.getGLId() != null) { + // Upload the bitmap to a new texture. + mId = canvas.getGLId().generateTexture(); + } canvas.setTextureParameters(this); if (bWidth == texWidth && bHeight == texHeight) { diff --git a/src/com/android/gallery3d/ui/ActionModeHandler.java b/src/com/android/gallery3d/ui/ActionModeHandler.java index 6b4f10312..411c578a5 100644 --- a/src/com/android/gallery3d/ui/ActionModeHandler.java +++ b/src/com/android/gallery3d/ui/ActionModeHandler.java @@ -272,7 +272,7 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi ArrayList<MediaObject> selected = new ArrayList<MediaObject>(); DataManager manager = mActivity.getDataManager(); for (Path path : unexpandedPaths) { - if (jc.isCancelled()) { + if (jc.isCancelled() || !mSelectionManager.inSelectionMode()) { return null; } selected.add(manager.getMediaObject(path)); diff --git a/src/com/android/gallery3d/ui/AlbumLabelMaker.java b/src/com/android/gallery3d/ui/AlbumLabelMaker.java index da1cac0bd..3ac3bb7fe 100644 --- a/src/com/android/gallery3d/ui/AlbumLabelMaker.java +++ b/src/com/android/gallery3d/ui/AlbumLabelMaker.java @@ -25,6 +25,7 @@ import android.graphics.PorterDuff; import android.graphics.Typeface; import android.text.TextPaint; import android.text.TextUtils; +import android.view.View; import com.android.gallery3d.R; import com.android.gallery3d.data.DataSourceType; @@ -32,6 +33,8 @@ import com.android.photos.data.GalleryBitmapPool; import com.android.gallery3d.util.ThreadPool; import com.android.gallery3d.util.ThreadPool.JobContext; +import java.util.Locale; + public class AlbumLabelMaker { private static final int BORDER_SIZE = 0; @@ -170,30 +173,60 @@ public class AlbumLabelMaker { canvas.translate(BORDER_SIZE, BORDER_SIZE); - // draw title - if (jc.isCancelled()) return null; - int x = s.leftMargin + s.iconSize; - // TODO: is the offset relevant in new reskin? - // int y = s.titleOffset; - int y = (s.labelBackgroundHeight - s.titleFontSize) / 2; - drawText(canvas, x, y, title, labelWidth - s.leftMargin - x - - s.titleRightMargin, mTitlePaint); - - // draw count - if (jc.isCancelled()) return null; - x = labelWidth - s.titleRightMargin; - y = (s.labelBackgroundHeight - s.countFontSize) / 2; - drawText(canvas, x, y, count, - labelWidth - x , mCountPaint); - - // draw the icon - if (icon != null) { + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) {// RTL + // draw title + if (jc.isCancelled()) return null; + int strLength = (int) mTitlePaint.measureText(title); + int x = labelWidth - (s.leftMargin + s.iconSize) - strLength; + // TODO: is the offset relevant in new reskin? + // int y = s.titleOffset; + int y = (s.labelBackgroundHeight - s.titleFontSize) / 2; + drawText(canvas, x, y, title, labelWidth - s.leftMargin - x - + s.titleRightMargin, mTitlePaint); + + // draw count + if (jc.isCancelled()) return null; + x = s.leftMargin + 10;// plus 10 to get a much bigger margin + y = (s.labelBackgroundHeight - s.countFontSize) / 2; + drawText(canvas, x, y, count, + labelWidth - x, mCountPaint); + // draw the icon + if (icon != null) { + if (jc.isCancelled()) return null; + float scale = (float) s.iconSize / icon.getWidth(); + canvas.translate(labelWidth - s.leftMargin - s.iconSize, + (s.labelBackgroundHeight - + Math.round(scale * icon.getHeight())) / 2f); + canvas.scale(scale, scale); + canvas.drawBitmap(icon, 0, 0, null); + } + } else { // LTR + // draw title + if (jc.isCancelled()) return null; + int x = s.leftMargin + s.iconSize; + // TODO: is the offset relevant in new reskin? + // int y = s.titleOffset; + int y = (s.labelBackgroundHeight - s.titleFontSize) / 2; + drawText(canvas, x, y, title, labelWidth - s.leftMargin - x - + s.titleRightMargin, mTitlePaint); + + // draw count if (jc.isCancelled()) return null; - float scale = (float) s.iconSize / icon.getWidth(); - canvas.translate(s.leftMargin, (s.labelBackgroundHeight - - Math.round(scale * icon.getHeight()))/2f); - canvas.scale(scale, scale); - canvas.drawBitmap(icon, 0, 0, null); + x = labelWidth - s.titleRightMargin; + y = (s.labelBackgroundHeight - s.countFontSize) / 2; + drawText(canvas, x, y, count, + labelWidth - x, mCountPaint); + + // draw the icon + if (icon != null) { + if (jc.isCancelled()) return null; + float scale = (float) s.iconSize / icon.getWidth(); + canvas.translate(s.leftMargin, (s.labelBackgroundHeight - + Math.round(scale * icon.getHeight())) / 2f); + canvas.scale(scale, scale); + canvas.drawBitmap(icon, 0, 0, null); + } } return bitmap; diff --git a/src/com/android/gallery3d/ui/DetailsHelper.java b/src/com/android/gallery3d/ui/DetailsHelper.java index 47296f655..4f610407f 100644 --- a/src/com/android/gallery3d/ui/DetailsHelper.java +++ b/src/com/android/gallery3d/ui/DetailsHelper.java @@ -139,6 +139,8 @@ public class DetailsHelper { return context.getString(R.string.exposure_time); case MediaDetails.INDEX_ISO: return context.getString(R.string.iso); + case MediaDetails.INDEX_DATETIME_ORIGINAL: + return context.getString(R.string.record_time); default: return "Unknown key" + key; } diff --git a/src/com/android/gallery3d/ui/DialogDetailsView.java b/src/com/android/gallery3d/ui/DialogDetailsView.java index 30fd1e18f..3e2af0d40 100644 --- a/src/com/android/gallery3d/ui/DialogDetailsView.java +++ b/src/com/android/gallery3d/ui/DialogDetailsView.java @@ -21,6 +21,7 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnDismissListener; +import android.text.TextUtils; import android.text.format.Formatter; import android.view.LayoutInflater; import android.view.View; @@ -33,14 +34,18 @@ import com.android.gallery3d.R; import com.android.gallery3d.app.AbstractGalleryActivity; import com.android.gallery3d.common.Utils; import com.android.gallery3d.data.MediaDetails; +import com.android.gallery3d.exif.ExifInterface; import com.android.gallery3d.ui.DetailsAddressResolver.AddressResolvingListener; import com.android.gallery3d.ui.DetailsHelper.CloseListener; import com.android.gallery3d.ui.DetailsHelper.DetailsSource; import com.android.gallery3d.ui.DetailsHelper.DetailsViewContainer; import com.android.gallery3d.ui.DetailsHelper.ResolutionResolvingListener; +import java.text.DateFormat; import java.text.DecimalFormat; +import java.text.ParseException; import java.util.ArrayList; +import java.util.Date; import java.util.Locale; import java.util.Map.Entry; @@ -131,6 +136,15 @@ public class DialogDetailsView implements DetailsViewContainer { setDetails(context, details); } + private String exifDateToFormatedDate(String exifDt) { + try { + Date date = ExifInterface.DATETIME_FORMAT.parse(exifDt); + return DateFormat.getDateTimeInstance().format(date); + } catch (ParseException e) { + return exifDt; + } + } + private void setDetails(Context context, MediaDetails details) { boolean resolutionIsValid = true; String path = null; @@ -221,6 +235,9 @@ public class DialogDetailsView implements DetailsViewContainer { case MediaDetails.INDEX_ORIENTATION: value = toLocalInteger(detail.getValue()); break; + case MediaDetails.INDEX_DATETIME_ORIGINAL: + value = exifDateToFormatedDate(detail.getValue().toString()); + break; default: { Object valueObj = detail.getValue(); // This shouldn't happen, log its key to help us diagnose the problem. @@ -236,13 +253,20 @@ public class DialogDetailsView implements DetailsViewContainer { value = String.format("%s: %s %s", DetailsHelper.getDetailsName( context, key), value, context.getString(details.getUnit(key))); } else { - value = String.format("%s: %s", DetailsHelper.getDetailsName( - context, key), value); + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault()) + && (key == MediaDetails.INDEX_PATH)) { + value = String.format("%s : \n%s", + DetailsHelper.getDetailsName(context, key), value); + } else { + value = String.format("%s: %s", DetailsHelper.getDetailsName(context, key), + value); + } } mItems.add(value); - } - if (!resolutionIsValid) { - DetailsHelper.resolveResolution(path, this); + if (!resolutionIsValid) { + DetailsHelper.resolveResolution(path, this); + } } } diff --git a/src/com/android/gallery3d/ui/Knob.java b/src/com/android/gallery3d/ui/Knob.java new file mode 100644 index 000000000..179023e02 --- /dev/null +++ b/src/com/android/gallery3d/ui/Knob.java @@ -0,0 +1,337 @@ +/* + * Copyright (c) 2013, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.android.gallery3d.ui; + +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.RectF; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import java.lang.Math; + +import com.android.gallery3d.R; + +public class Knob extends FrameLayout { + private static final int STROKE_WIDTH = 6; + private static final float TEXT_SIZE = 0.20f; + private static final float TEXT_PADDING = 0.31f; + private static final float LABEL_PADDING = 0.05f; + private static final float LABEL_SIZE = 0.09f; + private static final float LABEL_WIDTH = 0.80f; + private static final float INDICATOR_RADIUS = 0.38f; + + public interface OnKnobChangeListener { + void onValueChanged(Knob knob, int value, boolean fromUser); + boolean onSwitchChanged(Knob knob, boolean on); + } + + private OnKnobChangeListener mOnKnobChangeListener = null; + + private float mProgress = 0.0f; + private int mMax = 100; + private boolean mOn = false; + private boolean mEnabled = false; + + private int mHighlightColor; + private int mLowlightColor; + private int mDisabledColor; + + private final Paint mPaint; + + private final TextView mLabelTV; + private final TextView mProgressTV; + + private final ImageView mKnobOn; + private final ImageView mKnobOff; + + private float mLastX; + private float mLastY; + private boolean mMoved; + + private int mWidth = 0; + private int mIndicatorWidth = 0; + + private RectF mRectF; + + public Knob(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Knob, 0, 0); + + String label; + int foreground; + try { + label = a.getString(R.styleable.Knob_label); + foreground = a.getResourceId(R.styleable.Knob_foreground, R.drawable.knob); + } finally { + a.recycle(); + } + + LayoutInflater li = (LayoutInflater) + context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + li.inflate(R.layout.knob, this, true); + + Resources res = getResources(); + mHighlightColor = res.getColor(R.color.highlight); + mLowlightColor = res.getColor(R.color.lowlight); + mDisabledColor = res.getColor(R.color.disabled_knob); + + ((ImageView) findViewById(R.id.knob_foreground)).setImageResource(foreground); + + mLabelTV = (TextView) findViewById(R.id.knob_label); + mLabelTV.setText(label); + mProgressTV = (TextView) findViewById(R.id.knob_value); + + mKnobOn = (ImageView) findViewById(R.id.knob_toggle_on); + mKnobOff = (ImageView) findViewById(R.id.knob_toggle_off); + + mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + mPaint.setColor(mHighlightColor); + mPaint.setStrokeWidth(STROKE_WIDTH); + mPaint.setStrokeCap(Paint.Cap.ROUND); + mPaint.setStyle(Paint.Style.STROKE); + + setWillNotDraw(false); + } + + public Knob(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public Knob(Context context) { + this(context, null); + } + + public void setOnKnobChangeListener(OnKnobChangeListener l) { + mOnKnobChangeListener = l; + } + + public void setValue(int value) { + if (mMax != 0) { + setProgress(((float) value) / mMax); + } + } + + public int getValue() { + return (int) (mProgress * mMax); + } + + public void setProgress(float progress) { + setProgress(progress, false); + } + + private void setProgressText(boolean on) { + if (on) { + mProgressTV.setText((int) (mProgress * 100) + "%"); + } else { + mProgressTV.setText("--%"); + } + } + + private void setProgress(float progress, boolean fromUser) { + if (progress > 1.0f) { + progress = 1.0f; + } + if (progress < 0.0f) { + progress = 0.0f; + } + mProgress = progress; + setProgressText(mOn && mEnabled); + + invalidate(); + + if (mOnKnobChangeListener != null) { + mOnKnobChangeListener.onValueChanged(this, (int) (progress * mMax), fromUser); + } + } + + public void setMax(int max) { + mMax = max; + } + + public float getProgress() { + return mProgress; + } + + private void drawIndicator() { + float r = mWidth * INDICATOR_RADIUS; + ImageView view = mOn ? mKnobOn : mKnobOff; + view.setTranslationX((float) Math.sin(mProgress * 2 * Math.PI) * r - mIndicatorWidth / 2); + view.setTranslationY((float) -Math.cos(mProgress * 2 * Math.PI) * r - mIndicatorWidth / 2); + } + + @Override + public void setEnabled(boolean enabled) { + mEnabled = enabled; + setOn(enabled); + } + + public void setOn(boolean on) { + if (on != mOn) { + mOn = on; + } + on = on && mEnabled; + mLabelTV.setTextColor(on ? mHighlightColor : mDisabledColor); + mProgressTV.setTextColor(on ? mHighlightColor : mDisabledColor); + setProgressText(on); + mPaint.setColor(on ? mHighlightColor : mDisabledColor); + mKnobOn.setVisibility(on ? View.VISIBLE : View.GONE); + mKnobOff.setVisibility(on ? View.GONE : View.VISIBLE); + invalidate(); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + drawIndicator(); + if (mOn && mEnabled) { + canvas.drawArc(mRectF, -90, mProgress * 360, false, mPaint); + } + } + + @Override + protected void onSizeChanged(int w, int h, int oldW, int oldH) { + int size = w > h ? h : w; + mWidth = size; + mIndicatorWidth = mKnobOn.getWidth(); + + int diff; + if (w > h) { + diff = (w - h) / 2; + mRectF = new RectF(STROKE_WIDTH + diff, STROKE_WIDTH, + w - STROKE_WIDTH - diff, h - STROKE_WIDTH); + } else { + diff = (h - w) / 2; + mRectF = new RectF(STROKE_WIDTH, STROKE_WIDTH + diff, + w - STROKE_WIDTH, h - STROKE_WIDTH - diff); + } + + mProgressTV.setTextSize(TypedValue.COMPLEX_UNIT_PX, size * TEXT_SIZE); + mProgressTV.setPadding(0, (int) (size * TEXT_PADDING), 0, 0); + mProgressTV.setVisibility(View.VISIBLE); + mLabelTV.setTextSize(TypedValue.COMPLEX_UNIT_PX, size * LABEL_SIZE); + mLabelTV.setPadding(0, (int) (size * LABEL_PADDING), 0, 0); + mLabelTV.setLayoutParams(new LinearLayout.LayoutParams((int) (w * LABEL_WIDTH), + LayoutParams.WRAP_CONTENT)); + mLabelTV.setVisibility(View.VISIBLE); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + return true; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + if (mOn) { + mLastX = event.getX(); + mLastY = event.getY(); + getParent().requestDisallowInterceptTouchEvent(true); + } + break; + case MotionEvent.ACTION_MOVE: + if (mOn) { + float x = event.getX(); + float y = event.getY(); + float center = mWidth / 2; + if (mMoved || (x - center) * (x - center) + (y - center) * (y - center) + > center * center / 4) { + float delta = getDelta(x, y); + setProgress(mProgress + delta / 360, true); + mMoved = true; + } + mLastX = x; + mLastY = y; + } + break; + case MotionEvent.ACTION_UP: + if (!mMoved) { + if (mOnKnobChangeListener == null + || mOnKnobChangeListener.onSwitchChanged(this, !mOn)) { + if (mEnabled) { + setOn(!mOn); + invalidate(); + } + } + } + mMoved = false; + break; + default: + break; + } + return true; + } + + private float getDelta(float x, float y) { + float angle = angle(x, y); + float oldAngle = angle(mLastX, mLastY); + float delta = angle - oldAngle; + if (delta >= 180.0f) { + delta = -oldAngle; + } else if (delta <= -180.0f) { + delta = 360 - oldAngle; + } + return delta; + } + + private float angle(float x, float y) { + float center = mWidth / 2.0f; + x -= center; + y -= center; + + if (x == 0.0f) { + if (y > 0.0f) { + return 180.0f; + } else { + return 0.0f; + } + } + + float angle = (float) (Math.atan(y / x) / Math.PI * 180.0); + if (x > 0.0f) { + angle += 90; + } else { + angle += 270; + } + return angle; + } +} diff --git a/src/com/android/gallery3d/ui/Paper.java b/src/com/android/gallery3d/ui/Paper.java index b36f5c3a2..6ed5013a2 100644 --- a/src/com/android/gallery3d/ui/Paper.java +++ b/src/com/android/gallery3d/ui/Paper.java @@ -28,53 +28,76 @@ class Paper { @SuppressWarnings("unused") private static final String TAG = "Paper"; private static final int ROTATE_FACTOR = 4; - private EdgeAnimation mAnimationLeft = new EdgeAnimation(); - private EdgeAnimation mAnimationRight = new EdgeAnimation(); + private EdgeAnimation mAnimationBegin = new EdgeAnimation(); + private EdgeAnimation mAnimationEnd = new EdgeAnimation(); private int mWidth; + private int mHeight; private float[] mMatrix = new float[16]; + private final boolean mIsWide; + + public Paper(boolean wide) { + mIsWide = wide; + } + public void overScroll(float distance) { distance /= mWidth; // make it relative to width if (distance < 0) { - mAnimationLeft.onPull(-distance); + mAnimationBegin.onPull(-distance); } else { - mAnimationRight.onPull(distance); + mAnimationEnd.onPull(distance); } } public void edgeReached(float velocity) { velocity /= mWidth; // make it relative to width if (velocity < 0) { - mAnimationRight.onAbsorb(-velocity); + mAnimationEnd.onAbsorb(-velocity); } else { - mAnimationLeft.onAbsorb(velocity); + mAnimationBegin.onAbsorb(velocity); } } public void onRelease() { - mAnimationLeft.onRelease(); - mAnimationRight.onRelease(); + mAnimationBegin.onRelease(); + mAnimationEnd.onRelease(); } public boolean advanceAnimation() { // Note that we use "|" because we want both animations get updated. - return mAnimationLeft.update() | mAnimationRight.update(); + return mAnimationBegin.update() | mAnimationEnd.update(); } public void setSize(int width, int height) { mWidth = width; + mHeight = height; } - public float[] getTransform(Rect rect, float scrollX) { - float left = mAnimationLeft.getValue(); - float right = mAnimationRight.getValue(); - float screenX = rect.centerX() - scrollX; - // We linearly interpolate the value [left, right] for the screenX - // range int [-1/4, 5/4]*mWidth. So if part of the thumbnail is outside + public float[] getTransform(Rect rect, float scroll) { + Log.d(TAG, rect.toString()); + float start = mAnimationBegin.getValue(); + float end = mAnimationEnd.getValue(); + int center = 0; + int screenWidth = mWidth; + int rotateX = 0; + int rotateY = 0; + final boolean wide = mIsWide; + if (wide) { + center = rect.centerX(); + rotateY = 1; + } else { + center = rect.centerY(); + rotateX = 1; + screenWidth = mHeight; + } + float screen = center - scroll; + // We linearly interpolate the value [start, end] for the screen + // range int [-1/4, 5/4]*screenWidth. So if part of the thumbnail is outside // the screen, we still get some transform. - float x = screenX + mWidth / 4; - int range = 3 * mWidth / 2; - float t = ((range - x) * left - x * right) / range; + float x = screen + screenWidth / 4; + int range = 3 * screenWidth / 2; + float t = ((range - x) * start - x * end) / range; + // compress t to the range (-1, 1) by the function // f(t) = (1 / (1 + e^-t) - 0.5) * 2 // then multiply by 90 to make the range (-45, 45) @@ -82,8 +105,9 @@ class Paper { (1 / (1 + (float) Math.exp(-t * ROTATE_FACTOR)) - 0.5f) * 2 * -45; Matrix.setIdentityM(mMatrix, 0); Matrix.translateM(mMatrix, 0, mMatrix, 0, rect.centerX(), rect.centerY(), 0); - Matrix.rotateM(mMatrix, 0, degrees, 0, 1, 0); + Matrix.rotateM(mMatrix, 0, degrees, rotateX, rotateY, 0); Matrix.translateM(mMatrix, 0, mMatrix, 0, -rect.width() / 2, -rect.height() / 2, 0); + return mMatrix; } } diff --git a/src/com/android/gallery3d/ui/PhotoView.java b/src/com/android/gallery3d/ui/PhotoView.java index e8c706f05..347d4b3af 100644..100755 --- a/src/com/android/gallery3d/ui/PhotoView.java +++ b/src/com/android/gallery3d/ui/PhotoView.java @@ -92,6 +92,9 @@ public class PhotoView extends GLView { // Returns true if the item is a Video. public boolean isVideo(int offset); + // Returns true if the item is a Gif. + public boolean isGif(int offset); + // Returns true if the item can be deleted. public boolean isDeletable(int offset); @@ -593,7 +596,6 @@ public class PhotoView extends GLView { private boolean mIsCamera; private boolean mIsPanorama; private boolean mIsStaticCamera; - private boolean mIsVideo; private boolean mIsDeletable; private int mLoadingState = Model.LOADING_INIT; private Size mSize = new Size(); @@ -606,7 +608,6 @@ public class PhotoView extends GLView { mIsCamera = mModel.isCamera(0); mIsPanorama = mModel.isPanorama(0); mIsStaticCamera = mModel.isStaticCamera(0); - mIsVideo = mModel.isVideo(0); mIsDeletable = mModel.isDeletable(0); mLoadingState = mModel.getLoadingState(0); setScreenNail(mModel.getScreenNail(0)); @@ -731,8 +732,11 @@ public class PhotoView extends GLView { // Draw the play video icon and the message. canvas.translate((int) (cx + 0.5f), (int) (cy + 0.5f)); int s = (int) (scale * Math.min(r.width(), r.height()) + 0.5f); - if (mIsVideo) drawVideoPlayIcon(canvas, s); - if (mLoadingState == Model.LOADING_FAIL) { + //Full pic locates at index 0 of the array in PhotoDataAdapter + if (mModel.isVideo(0) || mModel.isGif(0)) { + drawVideoPlayIcon(canvas, s); + } + if (mLoadingState == Model.LOADING_FAIL ) { drawLoadingFailMessage(canvas); } @@ -774,7 +778,6 @@ public class PhotoView extends GLView { private boolean mIsCamera; private boolean mIsPanorama; private boolean mIsStaticCamera; - private boolean mIsVideo; private boolean mIsDeletable; private int mLoadingState = Model.LOADING_INIT; private Size mSize = new Size(); @@ -788,7 +791,6 @@ public class PhotoView extends GLView { mIsCamera = mModel.isCamera(mIndex); mIsPanorama = mModel.isPanorama(mIndex); mIsStaticCamera = mModel.isStaticCamera(mIndex); - mIsVideo = mModel.isVideo(mIndex); mIsDeletable = mModel.isDeletable(mIndex); mLoadingState = mModel.getLoadingState(mIndex); setScreenNail(mModel.getScreenNail(mIndex)); @@ -852,8 +854,10 @@ public class PhotoView extends GLView { invalidate(); } int s = Math.min(drawW, drawH); - if (mIsVideo) drawVideoPlayIcon(canvas, s); - if (mLoadingState == Model.LOADING_FAIL) { + if (mModel.isVideo(mIndex) || mModel.isGif(mIndex)) { + drawVideoPlayIcon(canvas, s); + } + if (mLoadingState == Model.LOADING_FAIL ) { drawLoadingFailMessage(canvas); } canvas.restore(); @@ -1128,6 +1132,7 @@ public class PhotoView extends GLView { } private void deleteAfterAnimation(int duration) { + if (mHandler.hasMessages(MSG_DELETE_ANIMATION_DONE)) return; MediaItem item = mModel.getMediaItem(mTouchBoxIndex); if (item == null) return; mListener.onCommitDeleteImage(); @@ -1854,4 +1859,5 @@ public class PhotoView extends GLView { } return effect; } + } diff --git a/src/com/android/gallery3d/ui/SlotView.java b/src/com/android/gallery3d/ui/SlotView.java index bd0ffdc15..475d93a67 100644 --- a/src/com/android/gallery3d/ui/SlotView.java +++ b/src/com/android/gallery3d/ui/SlotView.java @@ -18,20 +18,24 @@ package com.android.gallery3d.ui; import android.graphics.Rect; import android.os.Handler; +import android.text.TextUtils; import android.view.GestureDetector; import android.view.MotionEvent; +import android.view.View; import android.view.animation.DecelerateInterpolator; +import com.android.gallery3d.R; import com.android.gallery3d.anim.Animation; import com.android.gallery3d.app.AbstractGalleryActivity; import com.android.gallery3d.common.Utils; import com.android.gallery3d.glrenderer.GLCanvas; +import java.util.Locale; + public class SlotView extends GLView { @SuppressWarnings("unused") private static final String TAG = "SlotView"; - private static final boolean WIDE = true; private static final int INDEX_NONE = -1; public static final int RENDER_MORE_PASS = 1; @@ -62,7 +66,7 @@ public class SlotView extends GLView { private final GestureDetector mGestureDetector; private final ScrollerHelper mScroller; - private final Paper mPaper = new Paper(); + private final Paper mPaper; private Listener mListener; private UserInteractionListener mUIListener; @@ -88,10 +92,17 @@ public class SlotView extends GLView { // to prevent allocating memory private final Rect mTempRect = new Rect(); + // Flag to check whether it is come from Photo Page. + private boolean isFromPhotoPage = false; + + private final boolean mIsWide; + public SlotView(AbstractGalleryActivity activity, Spec spec) { + mIsWide = activity.getResources().getBoolean(R.bool.config_scroll_horizontal); mGestureDetector = new GestureDetector(activity, new MyGestureListener()); mScroller = new ScrollerHelper(activity); mHandler = new SynchronizedHandler(activity.getGLRoot()); + mPaper = new Paper(mIsWide); setSlotSpec(spec); } @@ -109,7 +120,7 @@ public class SlotView extends GLView { return; } Rect rect = mLayout.getSlotRect(index, mTempRect); - int position = WIDE + int position = mIsWide ? (rect.left + rect.right - getWidth()) / 2 : (rect.top + rect.bottom - getHeight()) / 2; setScrollPosition(position); @@ -117,11 +128,11 @@ public class SlotView extends GLView { public void makeSlotVisible(int index) { Rect rect = mLayout.getSlotRect(index, mTempRect); - int visibleBegin = WIDE ? mScrollX : mScrollY; - int visibleLength = WIDE ? getWidth() : getHeight(); + int visibleBegin = mIsWide ? mScrollX : mScrollY; + int visibleLength = mIsWide ? getWidth() : getHeight(); int visibleEnd = visibleBegin + visibleLength; - int slotBegin = WIDE ? rect.left : rect.top; - int slotEnd = WIDE ? rect.right : rect.bottom; + int slotBegin = mIsWide ? rect.left : rect.top; + int slotEnd = mIsWide ? rect.right : rect.bottom; int position = visibleBegin; if (visibleLength < slotEnd - slotBegin) { @@ -135,7 +146,20 @@ public class SlotView extends GLView { setScrollPosition(position); } + /** + * Set the flag which used for check whether it is come from Photo Page. + */ + public void setIsFromPhotoPage(boolean flag) { + isFromPhotoPage = flag; + } + public void setScrollPosition(int position) { + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault()) + && position == 0 && !isFromPhotoPage) { + // If RTL and not from Photo Page, set position to max. + position = mLayout.getScrollLimit(); + } position = Utils.clamp(position, 0, mLayout.getScrollLimit()); mScroller.setPosition(position); updateScrollPosition(position, false); @@ -179,8 +203,8 @@ public class SlotView extends GLView { } private void updateScrollPosition(int position, boolean force) { - if (!force && (WIDE ? position == mScrollX : position == mScrollY)) return; - if (WIDE) { + if (!force && (mIsWide ? position == mScrollX : position == mScrollY)) return; + if (mIsWide) { mScrollX = position; } else { mScrollY = position; @@ -315,7 +339,7 @@ public class SlotView extends GLView { canvas.save(GLCanvas.SAVE_FLAG_ALPHA | GLCanvas.SAVE_FLAG_MATRIX); Rect rect = mLayout.getSlotRect(index, mTempRect); if (paperActive) { - canvas.multiplyMatrix(mPaper.getTransform(rect, mScrollX), 0); + canvas.multiplyMatrix(mPaper.getTransform(rect, (mIsWide ? mScrollX : mScrollY)), 0); } else { canvas.translate(rect.left, rect.top, 0); } @@ -389,6 +413,8 @@ public class SlotView extends GLView { public int rowsLand = -1; public int rowsPort = -1; + public int colsLand = -1; + public int colsPort = -1; public int slotGap = -1; } @@ -434,9 +460,17 @@ public class SlotView extends GLView { public Rect getSlotRect(int index, Rect rect) { int col, row; - if (WIDE) { - col = index / mUnitCount; - row = index - col * mUnitCount; + if (mIsWide) { + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + // If RTL, recalculate the columns and rows. + int count = ((mSlotCount + mUnitCount - 1) / mUnitCount); + col = count - index / mUnitCount - 1; + row = index % mUnitCount; + } else { + col = index / mUnitCount; + row = index - col * mUnitCount; + } } else { row = index / mUnitCount; col = index - row * mUnitCount; @@ -498,10 +532,17 @@ public class SlotView extends GLView { mSlotWidth = mSpec.slotWidth; mSlotHeight = mSpec.slotHeight; } else { - int rows = (mWidth > mHeight) ? mSpec.rowsLand : mSpec.rowsPort; - mSlotGap = mSpec.slotGap; - mSlotHeight = Math.max(1, (mHeight - (rows - 1) * mSlotGap) / rows); - mSlotWidth = mSlotHeight - mSpec.slotHeightAdditional; + if (mIsWide) { + int rows = (mWidth > mHeight) ? mSpec.rowsLand : mSpec.rowsPort; + mSlotGap = mSpec.slotGap; + mSlotHeight = Math.max(1, (mHeight - (rows - 1) * mSlotGap) / rows); + mSlotWidth = mSlotHeight - mSpec.slotHeightAdditional; + } else { + int cols = (mWidth > mHeight) ? mSpec.colsLand : mSpec.colsPort; + mSlotGap = mSpec.slotGap; + mSlotHeight = Math.max(1, (mWidth - (cols - 1) * mSlotGap) / cols); + mSlotWidth = mSlotHeight - mSpec.slotHeightAdditional; + } } if (mRenderer != null) { @@ -509,7 +550,7 @@ public class SlotView extends GLView { } int[] padding = new int[2]; - if (WIDE) { + if (mIsWide) { initLayoutParameters(mWidth, mHeight, mSlotWidth, mSlotHeight, padding); mVerticalPadding.startAnimateTo(padding[0]); mHorizontalPadding.startAnimateTo(padding[1]); @@ -530,7 +571,14 @@ public class SlotView extends GLView { private void updateVisibleSlotRange() { int position = mScrollPosition; - if (WIDE) { + if (mIsWide) { + if (View.LAYOUT_DIRECTION_RTL == TextUtils + .getLayoutDirectionFromLocale(Locale.getDefault())) { + // If RTL, recalculate the position. + position = mContentLength > mWidth ? (mContentLength - position - mWidth) + : position; + position = Math.max(0, position); + } int startCol = position / (mSlotWidth + mSlotGap); int start = Math.max(0, mUnitCount * startCol); int endCol = (position + mWidth + mSlotWidth + mSlotGap - 1) / @@ -575,9 +623,8 @@ public class SlotView extends GLView { } public int getSlotIndexByPosition(float x, float y) { - int absoluteX = Math.round(x) + (WIDE ? mScrollPosition : 0); - int absoluteY = Math.round(y) + (WIDE ? 0 : mScrollPosition); - + int absoluteX = Math.round(x) + (mIsWide ? mScrollPosition : 0); + int absoluteY = Math.round(y) + (mIsWide ? 0 : mScrollPosition); absoluteX -= mHorizontalPadding.get(); absoluteY -= mVerticalPadding.get(); @@ -588,11 +635,11 @@ public class SlotView extends GLView { int columnIdx = absoluteX / (mSlotWidth + mSlotGap); int rowIdx = absoluteY / (mSlotHeight + mSlotGap); - if (!WIDE && columnIdx >= mUnitCount) { + if (!mIsWide && columnIdx >= mUnitCount) { return INDEX_NONE; } - if (WIDE && rowIdx >= mUnitCount) { + if (mIsWide && rowIdx >= mUnitCount) { return INDEX_NONE; } @@ -604,7 +651,7 @@ public class SlotView extends GLView { return INDEX_NONE; } - int index = WIDE + int index = mIsWide ? (columnIdx * mUnitCount + rowIdx) : (rowIdx * mUnitCount + columnIdx); @@ -612,7 +659,7 @@ public class SlotView extends GLView { } public int getScrollLimit() { - int limit = WIDE ? mContentLength - mWidth : mContentLength - mHeight; + int limit = mIsWide ? mContentLength - mWidth : mContentLength - mHeight; return limit <= 0 ? 0 : limit; } @@ -660,7 +707,7 @@ public class SlotView extends GLView { cancelDown(false); int scrollLimit = mLayout.getScrollLimit(); if (scrollLimit == 0) return false; - float velocity = WIDE ? velocityX : velocityY; + float velocity = mIsWide ? velocityX : velocityY; mScroller.fling((int) -velocity, 0, scrollLimit); if (mUIListener != null) mUIListener.onUserInteractionBegin(); invalidate(); @@ -671,7 +718,7 @@ public class SlotView extends GLView { public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { cancelDown(false); - float distance = WIDE ? distanceX : distanceY; + float distance = mIsWide ? distanceX : distanceY; int overDistance = mScroller.startScroll( Math.round(distance), 0, mLayout.getScrollLimit()); if (mOverscrollEffect == OVERSCROLL_3D && overDistance != 0) { @@ -718,7 +765,7 @@ public class SlotView extends GLView { mStartIndex = INDEX_NONE; } // Reset the scroll position to avoid scrolling over the updated limit. - setScrollPosition(WIDE ? mScrollX : mScrollY); + setScrollPosition(mIsWide ? mScrollX : mScrollY); return changed; } @@ -785,4 +832,11 @@ public class SlotView extends GLView { if (progress == 1f) mEnabled = false; } } + + /** + * Get the SlotView's max scroll value. + */ + public int getScrollLimit() { + return mLayout.getScrollLimit(); + } } diff --git a/src/com/android/gallery3d/util/GIFView.java b/src/com/android/gallery3d/util/GIFView.java new file mode 100755 index 000000000..86003fb31 --- /dev/null +++ b/src/com/android/gallery3d/util/GIFView.java @@ -0,0 +1,214 @@ +package com.android.gallery3d.util; + +import com.android.gallery3d.R; + +import android.content.Context; +import android.content.ContentResolver; +import android.content.res.AssetManager; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.net.Uri; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.widget.ImageView; +import android.widget.Toast; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.IOException; + +public class GIFView extends ImageView implements GifAction { + + private static final String TAG = "GIFView"; + private static final float SCALE_LIMIT = 4; + private static final long FRAME_DELAY = 200; //milliseconds + + private GifDecoder mGifDecoder = null; + private Bitmap mCurrentImage = null; + private DrawThread mDrawThread = null; + + private Uri mUri; + private Context mContext; + + public GIFView(Context context) { + super(context); + mContext = context; + } + + public boolean setDrawable(Uri uri) { + if (null == uri) { + return false; + } + mUri = uri; + + InputStream is = getInputStream(uri); + if (is == null || (getFileSize (is) == 0)) { + return false; + } + startDecode(is); + return true; + } + + private int getFileSize (InputStream is) { + if(is == null) return 0; + + int size = 0; + try { + if (is instanceof FileInputStream) { + FileInputStream f = (FileInputStream) is; + size = (int) f.getChannel().size(); + } else { + while (-1 != is.read()) { + size++; + } + } + + } catch (IOException e) { + Log.e(TAG, "catch exception:" + e); + } + + return size; + + } + + private InputStream getInputStream (Uri uri) { + ContentResolver cr = mContext.getContentResolver(); + InputStream input = null; + try { + input = cr.openInputStream(uri); + } catch (IOException e) { + Log.e(TAG, "catch exception:" + e); + } + return input; + } + + private void startDecode(InputStream is) { + freeGifDecoder(); + mGifDecoder = new GifDecoder(is, this); + mGifDecoder.start(); + } + + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + if (mGifDecoder == null) { + return; + } + + if (mCurrentImage == null) { + mCurrentImage = mGifDecoder.getImage(); + } + if (mCurrentImage == null) { + // if this gif can not be displayed, just try to show it as jpg by parsing mUri + setImageURI(mUri); + return; + } + setImageURI(null); + int saveCount = canvas.getSaveCount(); + canvas.save(); + canvas.translate(getPaddingLeft(), getPaddingTop()); + Rect sRect = null; + Rect dRect = null; + + int imageHeight = mCurrentImage.getHeight(); + int imageWidth = mCurrentImage.getWidth(); + + int displayHeight = ViewGifImage.mDM.heightPixels; + int displayWidth = ViewGifImage.mDM.widthPixels; + + int width, height; + if (imageWidth >= displayWidth || imageHeight >= displayHeight) { + // scale-down the image + if (imageWidth * displayHeight > displayWidth * imageHeight) { + width = displayWidth; + height = (imageHeight * width) / imageWidth; + } else { + height = displayHeight; + width = (imageWidth * height) / imageHeight; + } + } else { + // scale-up the image + float scale = Math.min(SCALE_LIMIT, Math.min(displayWidth / (float) imageWidth, + displayHeight / (float) imageHeight)); + width = (int) (imageWidth * scale); + height = (int) (imageHeight * scale); + } + dRect = new Rect((displayWidth - width) / 2, (displayHeight - height) / 2, + (displayWidth + width) / 2, (displayHeight + height) / 2); + canvas.drawBitmap(mCurrentImage, sRect, dRect, null); + canvas.restoreToCount(saveCount); + } + + public void parseOk(boolean parseStatus, int frameIndex) { + if (parseStatus) { + //indicates the start of a new GIF + if (mGifDecoder != null && frameIndex == -1 + && mGifDecoder.getFrameCount() > 1) { + if (mDrawThread != null) { + mDrawThread = null; + } + mDrawThread = new DrawThread(); + mDrawThread.start(); + } + } else { + Log.e(TAG, "parse error"); + } + } + + private Handler mRedrawHandler = new Handler() { + public void handleMessage(Message msg) { + invalidate(); + } + }; + + private class DrawThread extends Thread { + public void run() { + if (mGifDecoder == null) { + return; + } + + while (true) { + if (!isShown() || mRedrawHandler == null) { + break; + } + if (mGifDecoder == null) { + return; + } + GifFrame frame = mGifDecoder.next(); + mCurrentImage = frame.mImage; + + Message msg = mRedrawHandler.obtainMessage(); + mRedrawHandler.sendMessage(msg); + try { + Thread.sleep(getDelay(frame)); + } catch (InterruptedException e) { + Log.e(TAG, "catch exception:" + e); + } + } + } + + } + + private long getDelay (GifFrame frame) { + //in milliseconds + return frame.mDelayInMs == 0 ? FRAME_DELAY : frame.mDelayInMs; + } + + private void freeGifDecoder () { + if (mGifDecoder != null) { + mGifDecoder.free(); + mGifDecoder = null; + } + + } + + public void freeMemory() { + if (mDrawThread != null) { + mDrawThread = null; + } + freeGifDecoder(); + } +} diff --git a/src/com/android/gallery3d/util/GalleryUtils.java b/src/com/android/gallery3d/util/GalleryUtils.java index 8fb926c0b..8e4ebb714 100644 --- a/src/com/android/gallery3d/util/GalleryUtils.java +++ b/src/com/android/gallery3d/util/GalleryUtils.java @@ -17,6 +17,7 @@ package com.android.gallery3d.util; import android.annotation.TargetApi; +import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.ComponentName; import android.content.Context; @@ -35,6 +36,7 @@ import android.provider.MediaStore; import android.util.DisplayMetrics; import android.util.Log; import android.view.WindowManager; +import android.widget.Toast; import com.android.gallery3d.R; import com.android.gallery3d.app.GalleryActivity; @@ -275,7 +277,7 @@ public class GalleryUtils { return String.format(Locale.ENGLISH, format, latitude, longitude); } - public static void showOnMap(Context context, double latitude, double longitude) { + public static void showOnMap(final Context context, double latitude, double longitude) { try { // We don't use "geo:latitude,longitude" because it only centers // the MapView to the specified location, but we need a marker @@ -292,8 +294,21 @@ public class GalleryUtils { // Use the "geo intent" if no GMM is installed Log.e(TAG, "GMM activity not found!", e); String url = formatLatitudeLongitude("geo:%f,%f", latitude, longitude); - Intent mapsIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - context.startActivity(mapsIntent); + try { + Intent mapsIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + context.startActivity(mapsIntent); + } catch (ActivityNotFoundException ex) { + Log.e(TAG, "Map view activity not found! url = " + url, ex); + ((Activity)context).runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(context, + context.getString(R.string.map_activity_not_found_err), + Toast.LENGTH_SHORT).show(); + } + }); + + } } } diff --git a/src/com/android/gallery3d/util/GifAction.java b/src/com/android/gallery3d/util/GifAction.java new file mode 100644 index 000000000..88e3cdee0 --- /dev/null +++ b/src/com/android/gallery3d/util/GifAction.java @@ -0,0 +1,5 @@ +package com.android.gallery3d.util; + +public interface GifAction { + public void parseOk(boolean parseStatus, int frameIndex); +} diff --git a/src/com/android/gallery3d/util/GifDecoder.java b/src/com/android/gallery3d/util/GifDecoder.java new file mode 100755 index 000000000..4235fc5a5 --- /dev/null +++ b/src/com/android/gallery3d/util/GifDecoder.java @@ -0,0 +1,723 @@ +package com.android.gallery3d.util; + +import android.graphics.Bitmap; +import android.graphics.Bitmap.Config; +import android.util.Log; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +public class GifDecoder extends Thread { + + public static final int STATUS_PARSING = 0; + public static final int STATUS_FORMAT_ERROR = 1; + public static final int STATUS_OPEN_ERROR = 2; + public static final int STATUS_FINISH = -1; + + private InputStream mIS; + private int mStatus; + + public int mWidth; // full image width + public int mHeight; // full image height + private boolean mGctFlag; // global color table used + private int mGctSize; // size of global color table + private int mLoopCount = 1; // iterations; 0 = repeat forever + + private int[] mGct; // global color table + private int[] mLct; // local color table + private int[] mAct; // active color table + + private int mBgIndex; // background color index + private int mBgColor; // background color + private int mLastBgColor; // previous bg color + private int mPixelAspect; // pixel aspect ratio + + private boolean mLctFlag; // local color table flag + private boolean mInterlace; // interlace flag + private int mLctSize; // local color table size + + private int mIx, mIy, mIw, mIh; // current image rectangle + private int mLrx, mLry, mLrw, mLrh; + private Bitmap mImage; // current frame + private Bitmap mLastImage; // previous frame + private GifFrame mCurrentFrame = null; + + private boolean mIsShow = false; + + private byte[] mBlock = new byte[256]; // current data block + private int mBlockSize = 0; // block size + private int mDispose = 0; + private int mLastDispose = 0; + private boolean mTransparency = false; // use transparent color + private int mDelay = 0; // delay in milliseconds + private int mTransIndex; // transparent color index + + // max decoder pixel stack size + private static final int MaxStackSize = 4096; + + // LZW decoder working arrays + private short[] mPrefix; + private byte[] mSuffix; + private byte[] mPixelStack; + private byte[] mPixels; + + private GifFrame mGifFrame; // frames read from current file + private int mFrameCount; + + private GifAction mGifAction = null; + + private byte[] mGifData = null; + + public GifDecoder(byte[] data, GifAction act) { + mGifData = data; + mGifAction = act; + } + + public GifDecoder(InputStream is, GifAction act) { + mIS = is; + mGifAction = act; + } + + public void run() { + if (mIS != null) { + readStream(); + } else if (mGifData != null) { + readByte(); + } + } + + public void free() { + freeFrame(); + freeIS(); + freeImage(); + } + + public int getStatus() { + return mStatus; + } + + public boolean parseOk() { + return mStatus == STATUS_FINISH; + } + + public int getDelay(int n) { + mDelay = -1; + if ((n >= 0) && (n < mFrameCount)) { + GifFrame f = getFrame(n); + if (f != null) { + mDelay = f.mDelayInMs; + } + } + return mDelay; + } + + public int[] getDelays() { + GifFrame f = mGifFrame; + int[] d = new int[mFrameCount]; + int i = 0; + while (f != null && i < mFrameCount) { + d[i] = f.mDelayInMs; + f = f.mNextFrame; + i++; + } + return d; + } + + public int getFrameCount() { + return mFrameCount; + } + + public Bitmap getImage() { + return getFrameImage(0); + } + + public int getLoopCount() { + return mLoopCount; + } + + private void setPixels() { + int[] dest = new int[mWidth * mHeight]; + // fill in starting image contents based on last image's dispose code + if (mLastDispose > 0) { + if (mLastDispose == 3) { + // use image before last + int n = mFrameCount - 2; + if (n > 0) { + mLastImage = getPreUndisposedImage(n - 1); + } else { + mLastImage = null; + } + } + if (mLastImage != null) { + mLastImage.getPixels(dest, 0, mWidth, 0, 0, mWidth, mHeight); + // copy pixels + if (mLastDispose == 2) { + // fill last image rect area with background color + int c = 0; + if (!mTransparency) { + c = mLastBgColor; + } + for (int i = 0; i < mLrh; i++) { + int n1 = (mLry + i) * mWidth + mLrx; + int n2 = n1 + mLrw; + for (int k = n1; k < n2; k++) { + dest[k] = c; + } + } + } + } + } + + // copy each source line to the appropriate place in the destination + int pass = 1; + int inc = 8; + int iline = 0; + for (int i = 0; i < mIh; i++) { + int line = i; + if (mInterlace) { + if (iline >= mIh) { + pass++; + switch (pass) { + case 2: + iline = 4; + break; + case 3: + iline = 2; + inc = 4; + break; + case 4: + iline = 1; + inc = 2; + } + } + line = iline; + iline += inc; + } + line += mIy; + if (line < mHeight) { + int k = line * mWidth; + int dx = k + mIx; // start of line in dest + int dlim = dx + mIw; // end of dest line + if ((k + mWidth) < dlim) { + dlim = k + mWidth; // past dest edge + } + int sx = i * mIw; // start of line in source + while (dx < dlim) { + // map color and insert in destination + int index = ((int) mPixels[sx++]) & 0xff; + int c = mAct[index]; + if (c != 0) { + dest[dx] = c; + } + dx++; + } + } + } + mImage = Bitmap.createBitmap(dest, mWidth, mHeight, Config.ARGB_4444); + } + + public Bitmap getFrameImage(int n) { + GifFrame frame = getFrame(n); + if (frame == null) { + return null; + } else { + return frame.mImage; + } + } + + public GifFrame getCurrentFrame() { + return mCurrentFrame; + } + + public GifFrame getFrame(int n) { + GifFrame frame = mGifFrame; + int i = 0; + while (frame != null) { + if (i == n) { + return frame; + } else { + frame = frame.mNextFrame; + } + i++; + } + return null; + } + + private Bitmap getPreUndisposedImage(int n) { + Bitmap preUndisposedImage = null; + GifFrame frame = mGifFrame; + int i = 0; + while (frame != null && i <= n) { + if (frame.mDispose == 1) { + preUndisposedImage = frame.mImage; + } else { + frame = frame.mNextFrame; + } + i++; + } + return preUndisposedImage; + } + + public void reset() { + mCurrentFrame = mGifFrame; + } + + public GifFrame next() { + if (mIsShow == false) { + mIsShow = true; + return mGifFrame; + } else { + if (mStatus == STATUS_PARSING) { + if (mCurrentFrame.mNextFrame != null) { + mCurrentFrame = mCurrentFrame.mNextFrame; + } + } else { + mCurrentFrame = mCurrentFrame.mNextFrame; + if (mCurrentFrame == null) { + mCurrentFrame = mGifFrame; + } + } + return mCurrentFrame; + } + } + + private int readByte() { + mIS = new ByteArrayInputStream(mGifData); + mGifData = null; + return readStream(); + } + + private int readStream() { + init(); + if (mIS != null) { + readHeader(); + if (!err()) { + readContents(); + if (mFrameCount < 0) { + mStatus = STATUS_FORMAT_ERROR; + mGifAction.parseOk(false, -1); + } else { + mStatus = STATUS_FINISH; + mGifAction.parseOk(true, -1); + } + } + try { + mIS.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + mStatus = STATUS_OPEN_ERROR; + mGifAction.parseOk(false, -1); + } + return mStatus; + } + + private void decodeImageData() { + int NullCode = -1; + int npix = mIw * mIh; + int available, clear, code_mask, code_size, end_of_information, in_code, old_code, + bits, code, count, i, datum, data_size, first, top, bi, pi; + + if ((mPixels == null) || (mPixels.length < npix)) { + mPixels = new byte[npix]; // allocate new pixel array + } + if (mPrefix == null) { + mPrefix = new short[MaxStackSize]; + } + if (mSuffix == null) { + mSuffix = new byte[MaxStackSize]; + } + if (mPixelStack == null) { + mPixelStack = new byte[MaxStackSize + 1]; + } + // Initialize GIF data stream decoder. + data_size = read(); + clear = 1 << data_size; + end_of_information = clear + 1; + available = clear + 2; + old_code = NullCode; + code_size = data_size + 1; + code_mask = (1 << code_size) - 1; + for (code = 0; code < clear; code++) { + mPrefix[code] = 0; + mSuffix[code] = (byte) code; + } + + // Decode GIF pixel stream. + datum = bits = count = first = top = pi = bi = 0; + for (i = 0; i < npix;) { + if (top == 0) { + if (bits < code_size) { + // Load bytes until there are enough bits for a code. + if (count == 0) { + // Read a new data block. + count = readBlock(); + if (count <= 0) { + break; + } + bi = 0; + } + datum += (((int) mBlock[bi]) & 0xff) << bits; + bits += 8; + bi++; + count--; + continue; + } + // Get the next code. + code = datum & code_mask; + datum >>= code_size; + bits -= code_size; + + // Interpret the code + if ((code > available) || (code == end_of_information)) { + break; + } + if (code == clear) { + // Reset decoder. + code_size = data_size + 1; + code_mask = (1 << code_size) - 1; + available = clear + 2; + old_code = NullCode; + continue; + } + if (old_code == NullCode) { + mPixelStack[top++] = mSuffix[code]; + old_code = code; + first = code; + continue; + } + in_code = code; + if (code == available) { + mPixelStack[top++] = (byte) first; + code = old_code; + } + while (code > clear) { + mPixelStack[top++] = mSuffix[code]; + code = mPrefix[code]; + } + first = ((int) mSuffix[code]) & 0xff; + // Add a new string to the string table, + if (available >= MaxStackSize) { + break; + } + mPixelStack[top++] = (byte) first; + mPrefix[available] = (short) old_code; + mSuffix[available] = (byte) first; + available++; + if (((available & code_mask) == 0) + && (available < MaxStackSize)) { + code_size++; + code_mask += available; + } + old_code = in_code; + } + + // Pop a pixel off the pixel stack. + top--; + mPixels[pi++] = mPixelStack[top]; + i++; + } + for (i = pi; i < npix; i++) { + mPixels[i] = 0; // clear missing pixels + } + } + + private boolean err() { + return mStatus != STATUS_PARSING; + } + + private void init() { + mStatus = STATUS_PARSING; + mFrameCount = 0; + mGifFrame = null; + mGct = null; + mLct = null; + } + + private int read() { + int curByte = 0; + try { + curByte = mIS.read(); + } catch (Exception e) { + mStatus = STATUS_FORMAT_ERROR; + } + return curByte; + } + + private int readBlock() { + mBlockSize = read(); + int n = 0; + if (mBlockSize > 0) { + try { + int count = 0; + while (n < mBlockSize) { + count = mIS.read(mBlock, n, mBlockSize - n); + if (count == -1) { + break; + } + n += count; + } + } catch (Exception e) { + e.printStackTrace(); + } + if (n < mBlockSize) { + mStatus = STATUS_FORMAT_ERROR; + } + } + return n; + } + + private int[] readColorTable(int ncolors) { + int nbytes = 3 * ncolors; + int[] tab = null; + byte[] c = new byte[nbytes]; + int n = 0; + try { + n = mIS.read(c); + } catch (Exception e) { + e.printStackTrace(); + } + if (n < nbytes) { + mStatus = STATUS_FORMAT_ERROR; + } else { + tab = new int[256]; // max size to avoid bounds checks + int i = 0; + int j = 0; + while (i < ncolors) { + int r = ((int) c[j++]) & 0xff; + int g = ((int) c[j++]) & 0xff; + int b = ((int) c[j++]) & 0xff; + tab[i++] = 0xff000000 | (r << 16) | (g << 8) | b; + } + } + return tab; + } + + private void readContents() { + // read GIF file content blocks + boolean done = false; + while (!(done || err())) { + int code = read(); + switch (code) { + case 0x2C: // image separator + readImage(); + break; + case 0x21: // extension + code = read(); + switch (code) { + case 0xf9: // graphics control extension + readGraphicControlExt(); + break; + case 0xff: // application extension + readBlock(); + String app = ""; + for (int i = 0; i < 11; i++) { + app += (char) mBlock[i]; + } + if (app.equals("NETSCAPE2.0")) { + readNetscapeExt(); + } else { + skip(); // don't care + } + break; + default: // uninteresting extension + skip(); + } + break; + case 0x3b: // terminator + done = true; + break; + case 0x00: // bad byte, but keep going and see what happens + break; + default: + mStatus = STATUS_FORMAT_ERROR; + } + } + } + + private void readGraphicControlExt() { + read(); // block size + int packed = read(); // packed fields + mDispose = (packed & 0x1c) >> 2; // disposal method + if (mDispose == 0) { + mDispose = 1; // elect to keep old image if discretionary + } + mTransparency = (packed & 1) != 0; + mDelay = readShort() * 10; // delay in milliseconds + mTransIndex = read(); // transparent color index + read(); // block terminator + } + + private void readHeader() { + String id = ""; + for (int i = 0; i < 6; i++) { + id += (char) read(); + } + if (!id.startsWith("GIF")) { + mStatus = STATUS_FORMAT_ERROR; + return; + } + readLSD(); + if (mGctFlag && !err()) { + mGct = readColorTable(mGctSize); + mBgColor = mGct[mBgIndex]; + } + } + + private void readImage() { + mIx = readShort(); // (sub)image position & size + mIy = readShort(); + mIw = readShort(); + mIh = readShort(); + int packed = read(); + mLctFlag = (packed & 0x80) != 0; // 1 - local color table flag + mInterlace = (packed & 0x40) != 0; // 2 - interlace flag + // 3 - sort flag + // 4-5 - reserved + mLctSize = 2 << (packed & 7); // 6-8 - local color table size + if (mLctFlag) { + mLct = readColorTable(mLctSize); // read table + mAct = mLct; // make local table active + } else { + mAct = mGct; // make global table active + if (mBgIndex == mTransIndex) { + mBgColor = 0; + } + } + int save = 0; + if (mTransparency) { + save = mAct[mTransIndex]; + mAct[mTransIndex] = 0; // set transparent color if specified + } + if (mAct == null) { + mStatus = STATUS_FORMAT_ERROR; // no color table defined + } + if (err()) { + return; + } + try { + decodeImageData(); // decode pixel data + skip(); + if (err()) { + return; + } + mFrameCount++; + // create new image to receive frame data + mImage = Bitmap.createBitmap(mWidth, mHeight, Config.ARGB_4444); + // createImage(mWidth, mHeight); + setPixels(); // transfer pixel data to image + if (mGifFrame == null) { + mGifFrame = new GifFrame(mImage, mDelay, mDispose); + mCurrentFrame = mGifFrame; + } else { + GifFrame f = mGifFrame; + while (f.mNextFrame != null) { + f = f.mNextFrame; + } + f.mNextFrame = new GifFrame(mImage, mDelay, mDispose); + } + // frames.addElement(new GifFrame(image, delay)); // add image to + // frame + // list + if (mTransparency) { + mAct[mTransIndex] = save; + } + resetFrame(); + mGifAction.parseOk(true, mFrameCount); + } catch (OutOfMemoryError e) { + Log.e("GifDecoder", ">>> log : " + e.toString()); + e.printStackTrace(); + } + } + + private void readLSD() { + // logical screen size + mWidth = readShort(); + mHeight = readShort(); + // packed fields + int packed = read(); + mGctFlag = (packed & 0x80) != 0; // 1 : global color table flag + // 2-4 : color resolution + // 5 : gct sort flag + mGctSize = 2 << (packed & 7); // 6-8 : gct size + mBgIndex = read(); // background color index + mPixelAspect = read(); // pixel aspect ratio + } + + private void readNetscapeExt() { + do { + readBlock(); + if (mBlock[0] == 1) { + // loop count sub-block + int b1 = ((int) mBlock[1]) & 0xff; + int b2 = ((int) mBlock[2]) & 0xff; + mLoopCount = (b2 << 8) | b1; + } + } while ((mBlockSize > 0) && !err()); + } + + private int readShort() { + // read 16-bit value, LSB first + return read() | (read() << 8); + } + + private void resetFrame() { + mLastDispose = mDispose; + mLrx = mIx; + mLry = mIy; + mLrw = mIw; + mLrh = mIh; + mLastImage = mImage; + mLastBgColor = mBgColor; + mDispose = 0; + mTransparency = false; + mDelay = 0; + mLct = null; + } + + /** + * Skips variable length blocks up to and including next zero length block. + */ + private void skip() { + do { + readBlock(); + } while ((mBlockSize > 0) && !err()); + } + + private void freeFrame() { + GifFrame fg = mGifFrame; + while (fg != null) { + if (fg.mImage != null) { + fg.mImage.recycle(); + } + fg.mImage = null; + fg = null; + mGifFrame = mGifFrame.mNextFrame; + fg = mGifFrame; + } + } + + private void freeIS() { + if (mIS != null) { + try { + mIS.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + mIS = null; + } + mGifData = null; + } + + private void freeImage() { + if (mImage != null) { + mImage.recycle(); + mImage = null; + } + if (mLastImage != null) { + mLastImage.recycle(); + mLastImage = null; + } + } +} diff --git a/src/com/android/gallery3d/util/GifFrame.java b/src/com/android/gallery3d/util/GifFrame.java new file mode 100755 index 000000000..87d58a40d --- /dev/null +++ b/src/com/android/gallery3d/util/GifFrame.java @@ -0,0 +1,17 @@ +package com.android.gallery3d.util; + +import android.graphics.Bitmap; + +public class GifFrame { + + public Bitmap mImage; + public int mDelayInMs; //in milliseconds + public int mDispose; + public GifFrame mNextFrame = null; + + public GifFrame(Bitmap bitmap, int delay, int dispose) { + mImage = bitmap; + mDelayInMs = delay; + mDispose = dispose; + } +} diff --git a/src/com/android/gallery3d/util/MediaSetUtils.java b/src/com/android/gallery3d/util/MediaSetUtils.java index 043800561..35a4dff04 100644 --- a/src/com/android/gallery3d/util/MediaSetUtils.java +++ b/src/com/android/gallery3d/util/MediaSetUtils.java @@ -28,9 +28,12 @@ import java.util.Comparator; public class MediaSetUtils { public static final Comparator<MediaSet> NAME_COMPARATOR = new NameComparator(); - public static final int CAMERA_BUCKET_ID = GalleryUtils.getBucketId( - Environment.getExternalStorageDirectory().toString() + "/" - + BucketNames.CAMERA); + private static String mRoot = Environment.getExternalStorageDirectory().toString(); + + public static void setRoot(String root) { + mRoot = root; + } + public static final int DOWNLOAD_BUCKET_ID = GalleryUtils.getBucketId( Environment.getExternalStorageDirectory().toString() + "/" + BucketNames.DOWNLOAD); @@ -44,14 +47,14 @@ public class MediaSetUtils { Environment.getExternalStorageDirectory().toString() + "/" + BucketNames.SCREENSHOTS); - private static final Path[] CAMERA_PATHS = { - Path.fromString("/local/all/" + CAMERA_BUCKET_ID), - Path.fromString("/local/image/" + CAMERA_BUCKET_ID), - Path.fromString("/local/video/" + CAMERA_BUCKET_ID)}; + public static int getCameraBucketId() { + return GalleryUtils.getBucketId(mRoot + "/" + BucketNames.CAMERA); + } public static boolean isCameraSource(Path path) { - return CAMERA_PATHS[0] == path || CAMERA_PATHS[1] == path - || CAMERA_PATHS[2] == path; + return path.equalsIgnoreCase("/local/all/" + getCameraBucketId()) + || path.equalsIgnoreCase("/local/image/" + getCameraBucketId()) + || path.equalsIgnoreCase("/local/video/" + getCameraBucketId()); } // Sort MediaSets by name diff --git a/src/com/android/gallery3d/util/ViewGifImage.java b/src/com/android/gallery3d/util/ViewGifImage.java new file mode 100755 index 000000000..cdd509280 --- /dev/null +++ b/src/com/android/gallery3d/util/ViewGifImage.java @@ -0,0 +1,67 @@ +package com.android.gallery3d.util; + +import com.android.gallery3d.R; + +import android.app.Activity; +import android.content.res.Configuration; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.DisplayMetrics; +import android.view.ViewGroup.LayoutParams; +import android.widget.ImageView; +import android.widget.LinearLayout; + +public class ViewGifImage extends Activity { + private static final String TAG = "ViewGifImage"; + public static final String VIEW_GIF_ACTION = "com.android.gallery3d.VIEW_GIF"; + + public static DisplayMetrics mDM; + + private ImageView mGifView; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.view_gif_image); + mDM = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(mDM); + if (getIntent().getAction() != null + && getIntent().getAction().equals(VIEW_GIF_ACTION)) { + Uri gifUri = getIntent().getData(); + showGifPicture(gifUri); + } + } + + @Override + protected void onStop() { + super.onStop(); + finish(); + } + + @Override + protected void onDestroy() { + if (mGifView != null && mGifView instanceof GIFView) { + ((GIFView) mGifView).freeMemory(); + mGifView = null; + } + super.onDestroy(); + } + + private void showGifPicture(Uri uri) { + mGifView = new GIFView(this); + ((LinearLayout) findViewById(R.id.image_absoluteLayout)).addView(mGifView, + new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); + if (((GIFView) mGifView).setDrawable(uri)) return; + + finish(); + + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + getWindowManager().getDefaultDisplay().getMetrics(mDM); + super.onConfigurationChanged(newConfig); + } +} diff --git a/src/com/thundersoft/hz/selfportrait/detect/FaceDetect.java b/src/com/thundersoft/hz/selfportrait/detect/FaceDetect.java new file mode 100644 index 000000000..a5c7fb043 --- /dev/null +++ b/src/com/thundersoft/hz/selfportrait/detect/FaceDetect.java @@ -0,0 +1,79 @@ +/* +* Copyright (C) 2014,2015 Thundersoft Corporation +* All rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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.thundersoft.hz.selfportrait.detect; + +import android.graphics.Bitmap; +import android.graphics.Rect; +import android.util.Log; + +public class FaceDetect { + private static final String TAG = "FaceDetect"; + + private int mHandle = 0; + + static { + try { + System.loadLibrary("ts_detected_face_jni"); + } catch (UnsatisfiedLinkError e) { + e.printStackTrace(); + Log.e(TAG, "ts_detected_face_jni library not found!"); + } + } + + /** + * initialize method,MUST called at first time. + */ + public void initialize() { + mHandle = native_create(); + } + + /** + * uninitialize method,MUST called at last time. + */ + + public void uninitialize() { + native_destroy(mHandle); + } + + /** + * dectectFeatures method,MUST called after initialize method and before + * uninitialize method. + * + * @param bmp, Android Bitmap instance,MUST not null. + * @return FaceInfo array if success, otherwise return null. + */ + public FaceInfo[] dectectFeatures(Bitmap bmp) { + int count = native_detect(mHandle, bmp); + if (count < 1) { + return null; + } + FaceInfo[] res = new FaceInfo[count]; + for (int i = 0; i < count; i++) { + FaceInfo face = new FaceInfo(); + native_face_info(mHandle, i, face.face, face.eye1, face.eye2, face.mouth); + res[i] = face; + } + return res; + } + + private static native int native_create(); + private static native void native_destroy(int handle); + private static native int native_detect(int handle, Bitmap bmp); + private static native int native_face_info(int handle, int index, Rect face, Rect eye1, + Rect eye2, Rect mouth); +} diff --git a/src/com/thundersoft/hz/selfportrait/detect/FaceInfo.java b/src/com/thundersoft/hz/selfportrait/detect/FaceInfo.java new file mode 100644 index 000000000..eee51f71b --- /dev/null +++ b/src/com/thundersoft/hz/selfportrait/detect/FaceInfo.java @@ -0,0 +1,39 @@ +/* +* Copyright (C) 2014,2015 Thundersoft Corporation +* All rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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.thundersoft.hz.selfportrait.detect; + +import android.graphics.Rect; + +public class FaceInfo { + /** + * face rectangle + */ + public Rect face = new Rect(); + /** + * left eye rectangle + */ + public Rect eye1 = new Rect(); + /** + * right eye rectangle + */ + public Rect eye2 = new Rect(); + /** + * mount rectangle + */ + public Rect mouth = new Rect(); +} diff --git a/src/com/thundersoft/hz/selfportrait/makeup/engine/MakeupEngine.java b/src/com/thundersoft/hz/selfportrait/makeup/engine/MakeupEngine.java new file mode 100644 index 000000000..8d58bcfef --- /dev/null +++ b/src/com/thundersoft/hz/selfportrait/makeup/engine/MakeupEngine.java @@ -0,0 +1,87 @@ +/* +* Copyright (C) 2014,2015 Thundersoft Corporation +* All rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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.thundersoft.hz.selfportrait.makeup.engine; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Rect; +import android.util.Log; + +public class MakeupEngine { + static { + try { + System.loadLibrary("ts_face_beautify_jni"); + } catch (UnsatisfiedLinkError e) { + e.printStackTrace(); + Log.e(MakeupEngine.class.getName(), "ts_face_beautify_jni library not found!"); + } + } + + private static MakeupEngine mInstance; + + private MakeupEngine() { + + } + + public static MakeupEngine getMakeupObj() { + if(mInstance == null) { + mInstance = new MakeupEngine(); + } + + return mInstance; + } + + private Context mContext; + + public void setContext(Context context) { + mContext = context; + } + + public Context getContext() { + return mContext; + } + + /** + * FUNCTION: doProcessBeautify + * Do process face region clean and whiten. + * @param inBitmap, the Bitmap instance which have face region, MUST not null. + * @param outBitmap, the result of process, MUST not null. + * @param frameWidth,frameHeight, the size of inBitmap. + * @param faceRect, the face region in inBitmap. + * @param cleanLevel, the level of clean.(0-100) + * @param whiteLevel, the level of white.(0-100) + */ + public static native boolean doProcessBeautify(Bitmap inBitmap, Bitmap outBitmap, int frameWidth, int frameHeight, + Rect faceRect, int cleanLevel, int beautyLevel); + + /** + * FUNCTION: doWarpFace + * Do process face region warp and big eye. + * @param inBitmap, the Bitmap instance which have face region, MUST not null. + * @param outBitmap, the result of process, MUST not null. + * @param frameWidth, the size of inBitmap. + * @param frameHeight, the size of inBitmap. + * @param leftEye, the left eye rectangle + * @param rightEye, the right eye rectangle + * @param mouth, the mouth rectangle + * @param bigEyeLevel, the level of big eye.(0-100) + * @param trimFaceLevel, the level of trim face.(0-100) + */ + public static native boolean doWarpFace(Bitmap inBitmap, Bitmap outBitmap, int frameWidth, int frameHeight, + Rect leftEye, Rect rightEye, Rect mouth, int bigEyeLevel, int trimFaceLevel); +} diff --git a/src/org/codeaurora/gallery3d/ext/ActivityHooker.java b/src/org/codeaurora/gallery3d/ext/ActivityHooker.java new file mode 100644 index 000000000..65761ff23 --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/ActivityHooker.java @@ -0,0 +1,96 @@ +package org.codeaurora.gallery3d.ext; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; + +/** + * Default implemention class of IActivityHooker. + */ +public class ActivityHooker implements IActivityHooker { + + private static final int MENU_MAX_NUMBER = 100; + private static int sMenuId = 1; + private int mMenuId; + private static Object sMenuLock = new Object(); + private Activity mContext; + private Intent mIntent; + + public ActivityHooker() { + synchronized (sMenuLock) { + sMenuId++; + mMenuId = sMenuId * MENU_MAX_NUMBER; + } + } + + @Override + public int getMenuActivityId(int id) { + return mMenuId + id; + }; + + @Override + public int getMenuOriginalId(int id) { + return id - mMenuId; + } + + @Override + public void init(Activity context, Intent intent) { + mContext = context; + mIntent = intent; + } + + @Override + public Activity getContext() { + return mContext; + } + + @Override + public Intent getIntent() { + return mIntent; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + } + + @Override + public void onStart() { + } + + @Override + public void onResume() { + } + + @Override + public void onPause() { + } + + @Override + public void onStop() { + } + + @Override + public void onDestroy() { + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + return false; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + return false; + } + + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + return false; + } + + @Override + public void setParameter(String key, Object value) { + } +} diff --git a/src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java b/src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java new file mode 100644 index 000000000..4bf8616e7 --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java @@ -0,0 +1,150 @@ +package org.codeaurora.gallery3d.ext; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; + +import java.util.ArrayList; + +/** + * The composite pattern class. It will deliver every action to its leaf + * hookers. + */ +public class ActivityHookerGroup extends ActivityHooker { + private ArrayList<IActivityHooker> mHooks = new ArrayList<IActivityHooker>(); + + /** + * Add hooker to current group. + * + * @param hooker + * @return + */ + public boolean addHooker(IActivityHooker hooker) { + return mHooks.add(hooker); + } + + /** + * Remove hooker from current group. + * + * @param hooker + * @return + */ + public boolean removeHooker(IActivityHooker hooker) { + return mHooks.remove(hooker); + } + + /** + * Get hooker of requested location. + * + * @param index + * @return + */ + public IActivityHooker getHooker(int index) { + return mHooks.get(index); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + for (IActivityHooker hook : mHooks) { + hook.onCreate(savedInstanceState); + } + } + + @Override + public void onStart() { + super.onStart(); + for (IActivityHooker hook : mHooks) { + hook.onStart(); + } + } + + @Override + public void onResume() { + super.onResume(); + for (IActivityHooker hook : mHooks) { + hook.onResume(); + } + } + + @Override + public void onPause() { + super.onPause(); + for (IActivityHooker hook : mHooks) { + hook.onPause(); + } + } + + @Override + public void onStop() { + super.onStop(); + for (IActivityHooker hook : mHooks) { + hook.onStop(); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + for (IActivityHooker hook : mHooks) { + hook.onDestroy(); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + super.onCreateOptionsMenu(menu); + boolean handle = false; + for (IActivityHooker hook : mHooks) { + boolean one = hook.onCreateOptionsMenu(menu); + if (!handle) { + handle = one; + } + } + return handle; + } + + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + super.onPrepareOptionsMenu(menu); + boolean handle = false; + for (IActivityHooker hook : mHooks) { + boolean one = hook.onPrepareOptionsMenu(menu); + if (!handle) { + handle = one; + } + } + return handle; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + super.onOptionsItemSelected(item); + boolean handle = false; + for (IActivityHooker hook : mHooks) { + boolean one = hook.onOptionsItemSelected(item); + if (!handle) { + handle = one; + } + } + return handle; + } + + @Override + public void setParameter(String key, Object value) { + super.setParameter(key, value); + for (IActivityHooker hook : mHooks) { + hook.setParameter(key, value); + } + } + + @Override + public void init(Activity context, Intent intent) { + super.init(context, intent); + for (IActivityHooker hook : mHooks) { + hook.init(context, intent); + } + } +} diff --git a/src/org/codeaurora/gallery3d/ext/IActivityHooker.java b/src/org/codeaurora/gallery3d/ext/IActivityHooker.java new file mode 100644 index 000000000..a83799626 --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/IActivityHooker.java @@ -0,0 +1,128 @@ +package org.codeaurora.gallery3d.ext; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; + +/** + * Activity action hooker class. Host app's activity will call this hooker's + * functions in its lifecycle. For example: + * HostActivity.onCreate()-->hooker.onCreate(). But void init(Activity context, + * Intent intent) will be called before other functions. <br/> + * IActivityHooker objects may show menus, but we should give a unique menu id + * to every menus. Hooker can call getMenuActivityId(int) to get a global unique + * menu id to be used in menu.add(), and can call getMenuOriginalId(int) to get + * the original menu id. the example: class Hooker implements IActivityHooker { + * private static final int MENU_EXAMPLE = 1; + * + * @Override public boolean onCreateOptionsMenu(Menu menu) { + * super.onCreateOptionsMenu(menu); menu.add(0, + * getMenuActivityId(MENU_EXAMPLE), 0, android.R.string.ok); return + * true; } + * @Override public boolean onOptionsItemSelected(MenuItem item) { + * switch(getMenuOriginalId(item.getItemId())) { case MENU_EXAMPLE: + * //do something return true; default: return false; } } } + */ +public interface IActivityHooker { + /** + * Will be called in Host Activity.onCreate(Bundle savedInstanceState) + * @param savedInstanceState + */ + void onCreate(Bundle savedInstanceState); + /** + * Will be called in Host Activity.onStart() + */ + void onStart(); + /** + * Will be called in Host Activity.onStop() + */ + void onStop(); + /** + * Will be called in Host Activity.onPause() + */ + void onPause(); + /** + * Will be called in Host Activity.onResume() + */ + void onResume(); + /** + * Will be called in Host Activity.onDestroy() + */ + void onDestroy(); + /** + * Will be called in Host Activity.onCreateOptionsMenu(Menu menu) + * @param menu + * @return + */ + /** + * Will be called in Host Activity.onCreateOptionsMenu(Menu menu) + * + * @param menu + * @return + */ + boolean onCreateOptionsMenu(Menu menu); + + /** + * Will be called in Host Activity.onPrepareOptionsMenu(Menu menu) + * + * @param menu + * @return + */ + boolean onPrepareOptionsMenu(Menu menu); + + /** + * Will be called in Host Activity.onOptionsItemSelected(MenuItem item) + * + * @param item + * @return + */ + boolean onOptionsItemSelected(MenuItem item); + + /** + * Should be called before any other functions. + * + * @param context + * @param intent + */ + void init(Activity context, Intent intent); + + /** + * @return return activity set by init(Activity context, Intent intent) + */ + Activity getContext(); + + /** + * @return return intent set by init(Activity context, Intent intent) + */ + Intent getIntent(); + + /** + * IActivityHooker objects may show menus, but we should give a unique menu + * id to every menus. Hooker can call this function to get a global unique + * menu id to be used in menu.add() + * + * @param id + * @return + */ + int getMenuActivityId(int id); + + /** + * When onOptionsItemSelected is called, we can get menu's id from + * parameter. You can get the original menu id by calling this function. + * + * @param id + * @return + */ + int getMenuOriginalId(int id); + + /** + * Host activity will call this function to set parameter to hooker + * activity. + * + * @param key + * @param value + */ + void setParameter(String key, Object value); +} diff --git a/src/org/codeaurora/gallery3d/ext/IContrllerOverlayExt.java b/src/org/codeaurora/gallery3d/ext/IContrllerOverlayExt.java new file mode 100644 index 000000000..da50cdffc --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/IContrllerOverlayExt.java @@ -0,0 +1,51 @@ +package org.codeaurora.gallery3d.ext; +/** + * Controller overlay extension interface. + */ +public interface IContrllerOverlayExt { + /** + * Show buffering state. + * @param fullBuffer + * @param percent + */ + void showBuffering(boolean fullBuffer, int percent); + /** + * Clear buffering state. + */ + void clearBuffering(); + /** + * Show re-connecting state. + * @param times + */ + void showReconnecting(int times); + /** + * Show re-connecting error for connecting fail error. + */ + void showReconnectingError(); + /** + * Show playing info or not. + * @param liveStreaming true means showing playing info, otherwise doesn't show playing info. + */ + void setPlayingInfo(boolean liveStreaming); + /** + * Indicates whether current video can be paused or not. + * @param canPause + */ + void setCanPause(boolean canPause); + /** + * Indicates whether thumb can be scrubbed or not. + * @param enable + */ + void setCanScrubbing(boolean enable); + /** + * Always show bottmon panel or not. + * @param alwaysShow + * @param foreShow + */ + void setBottomPanel(boolean alwaysShow, boolean foreShow); + /** + * Is playing end or not. + * @return + */ + boolean isPlayingEnd(); +} diff --git a/src/org/codeaurora/gallery3d/ext/IMovieItem.java b/src/org/codeaurora/gallery3d/ext/IMovieItem.java new file mode 100644 index 000000000..dece4e803 --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/IMovieItem.java @@ -0,0 +1,66 @@ +package org.codeaurora.gallery3d.ext; + +import android.net.Uri; + +/** + * Movie info class + */ +public interface IMovieItem { + /** + * @return movie Uri, it's may be not the original Uri. + */ + Uri getUri(); + + /** + * @return MIME type of video + */ + String getMimeType(); + + /** + * @return title of video + */ + String getTitle(); + + /** + * @return whether error occured or not. + */ + boolean getError(); + + /** + * set title of video + * + * @param title + */ + void setTitle(String title); + + /** + * set video Uri + * + * @param uri + */ + void setUri(Uri uri); + + /** + * Set MIME type of video + * + * @param mimeType + */ + void setMimeType(String mimeType); + + /** + * Set error occured flag + */ + void setError(); + + /** + * @return return original Uri of video. + */ + Uri getOriginalUri(); + + /** + * Set video original Uri. + * + * @param uri + */ + void setOriginalUri(Uri uri); +} diff --git a/src/org/codeaurora/gallery3d/ext/IMovieList.java b/src/org/codeaurora/gallery3d/ext/IMovieList.java new file mode 100644 index 000000000..404d24c41 --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/IMovieList.java @@ -0,0 +1,46 @@ +package org.codeaurora.gallery3d.ext; +/** + * Movie list extension interface + */ +public interface IMovieList { + /** + * Add movie item to list. + * @param item + */ + void add(IMovieItem item); + /** + * Get the item index of list + * @param item + * @return + */ + int index(IMovieItem item); + /** + * + * @return list size + */ + int size(); + /** + * + * @param item + * @return next item of current item + */ + IMovieItem getNext(IMovieItem item); + /** + * + * @param item + * @return previous item of current item + */ + IMovieItem getPrevious(IMovieItem item); + /** + * Is first item in list + * @param item + * @return + */ + boolean isFirst(IMovieItem item); + /** + * Is last item in list. + * @param item + * @return + */ + boolean isLast(IMovieItem item); +}
\ No newline at end of file diff --git a/src/org/codeaurora/gallery3d/ext/IMovieListLoader.java b/src/org/codeaurora/gallery3d/ext/IMovieListLoader.java new file mode 100644 index 000000000..fe5999858 --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/IMovieListLoader.java @@ -0,0 +1,51 @@ +package org.codeaurora.gallery3d.ext; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; + +public interface IMovieListLoader { + /** + * Load all video list or not.[boolean] + * "yes" means load all videos in all storages. + * "false" means load videos located in current video's folder. + */ + String EXTRA_ALL_VIDEO_FOLDER = "org.codeaurora.intent.extra.ALL_VIDEO_FOLDER"; + /** + * Video list order by column name.[String] + */ + String EXTRA_ORDERBY = "org.codeaurora.intent.extra.VIDEO_LIST_ORDERBY"; + /** + * Enable video list or not.[boolean] + */ + String EXTRA_ENABLE_VIDEO_LIST = "org.codeaurora.intent.extra.ENABLE_VIDEO_LIST"; + /** + * Loader listener interface + */ + public interface LoaderListener { + /** + * Will be called after movie list loaded. + * @param movieList + */ + void onListLoaded(IMovieList movieList); + } + /** + * Build the movie list from current item. + * @param context + * @param intent + * @param l + * @param item + */ + void fillVideoList(Activity context, Intent intent, LoaderListener l, IMovieItem item); + /** + * enable video list or not. + * @param intent + * @return + */ + boolean isEnabledVideoList(Intent intent); + /** + * Cancel current loading process. + */ + void cancelList(); + +} diff --git a/src/org/codeaurora/gallery3d/ext/IMoviePlayer.java b/src/org/codeaurora/gallery3d/ext/IMoviePlayer.java new file mode 100644 index 000000000..32d400b0d --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/IMoviePlayer.java @@ -0,0 +1,42 @@ +package org.codeaurora.gallery3d.ext; + +public interface IMoviePlayer { + + /** + * add new bookmark Uri. + */ + void addBookmark(); + + /** + * Loop current video. + * + * @param loop + */ + void setLoop(boolean loop); + + /** + * Loop current video or not + * + * @return + */ + boolean getLoop(); + + /** + * Can stop current video or not. + * + * @return + */ + boolean canStop(); + + /** + * Stop current video. + */ + void stopVideo(); + + /** + * start current item and stop playing video. + * + * @param item + */ + void startNextVideo(IMovieItem item); +} diff --git a/src/org/codeaurora/gallery3d/ext/MovieItem.java b/src/org/codeaurora/gallery3d/ext/MovieItem.java new file mode 100644 index 000000000..56afdda4b --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/MovieItem.java @@ -0,0 +1,115 @@ +package org.codeaurora.gallery3d.ext; + +import android.net.Uri; +import android.provider.MediaStore; + +public class MovieItem implements IMovieItem { + private static final String TAG = "MovieItem"; + private static final boolean LOG = false; + + private Uri mUri; + private String mMimeType; + private String mTitle; + private boolean mError; + // private int mStereoType; + private Uri mOriginal; + + private static final int STREO_TYPE_2D = 1; + + public MovieItem(Uri uri, String mimeType, String title, int stereoType) { + mUri = uri; + mMimeType = mimeType; + mTitle = title; + // mStereoType = stereoType; + mOriginal = uri; + } + + public MovieItem(String uri, String mimeType, String title, int stereoType) { + this(Uri.parse(uri), mimeType, title, stereoType); + } + + public MovieItem(Uri uri, String mimeType, String title) { + this(uri, mimeType, title, STREO_TYPE_2D); + } + + public MovieItem(String uri, String mimeType, String title) { + this(Uri.parse(uri), mimeType, title); + } + + @Override + public Uri getUri() { + return mUri; + } + + @Override + public String getMimeType() { + return mMimeType; + } + + @Override + public String getTitle() { + return mTitle; + } + + @Override + public boolean getError() { + return mError; + } + + // @Override + // public int getStereoType() { + // return mStereoType; + // } + + public void setTitle(String title) { + mTitle = title; + } + + @Override + public void setUri(Uri uri) { + mUri = uri; + } + + @Override + public void setMimeType(String mimeType) { + mMimeType = mimeType; + } + + // @Override + // public void setStereoType(int stereoType) { + // mStereoType = stereoType; + // } + + @Override + public void setError() { + mError = true; + } + + @Override + public Uri getOriginalUri() { + return mOriginal; + } + + @Override + public void setOriginalUri(Uri uri) { + mOriginal = uri; + } + + @Override + public String toString() { + return new StringBuilder().append("MovieItem(uri=") + .append(mUri) + .append(", mime=") + .append(mMimeType) + .append(", title=") + .append(mTitle) + .append(", error=") + .append(mError) + // .append(", support3D=") + // .append(mStereoType) + .append(", mOriginal=") + .append(mOriginal) + .append(")") + .toString(); + } +} diff --git a/src/org/codeaurora/gallery3d/ext/MovieList.java b/src/org/codeaurora/gallery3d/ext/MovieList.java new file mode 100644 index 000000000..ecb7f0db3 --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/MovieList.java @@ -0,0 +1,72 @@ +package org.codeaurora.gallery3d.ext; + +import android.util.Log; + +import java.util.ArrayList; + +public class MovieList implements IMovieList { + private static final String TAG = "MovieList"; + private static final boolean LOG = false; + + private final ArrayList<IMovieItem> mItems = new ArrayList<IMovieItem>(); + private static final int UNKNOWN = -1; + + @Override + public void add(IMovieItem item) { + if (LOG) { + Log.v(TAG, "add(" + item + ")"); + } + mItems.add(item); + } + + @Override + public int index(IMovieItem item) { + int find = UNKNOWN; + int size = mItems.size(); + for (int i = 0; i < size; i++) { + if (item == mItems.get(i)) { + find = i; + break; + } + } + if (LOG) { + Log.v(TAG, "index(" + item + ") return " + find); + } + return find; + } + + @Override + public int size() { + return mItems.size(); + } + + @Override + public IMovieItem getNext(IMovieItem item) { + IMovieItem next = null; + int find = index(item); + if (find >= 0 && find < size() - 1) { + next = mItems.get(++find); + } + return next; + } + + @Override + public IMovieItem getPrevious(IMovieItem item) { + IMovieItem prev = null; + int find = index(item); + if (find > 0 && find < size()) { + prev = mItems.get(--find); + } + return prev; + } + + @Override + public boolean isFirst(IMovieItem item) { + return getPrevious(item) == null; + } + + @Override + public boolean isLast(IMovieItem item) { + return getNext(item) == null; + } +} diff --git a/src/org/codeaurora/gallery3d/ext/MovieListLoader.java b/src/org/codeaurora/gallery3d/ext/MovieListLoader.java new file mode 100644 index 000000000..60f0392de --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/MovieListLoader.java @@ -0,0 +1,269 @@ +package org.codeaurora.gallery3d.ext; + +import android.app.Activity; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.database.sqlite.SQLiteException; +import android.net.Uri; +import android.os.AsyncTask; +import android.provider.MediaStore; +import android.provider.OpenableColumns; +import android.util.Log; + +import java.io.File; +import java.util.ArrayList; + +/** + * Movie list loader class. It will load videos from MediaProvider database. + * If MoviePlayer starting activity doesn't set any thing, default OrderBy will be used. + * Default OrderBy: MediaStore.Video.Media.DATE_TAKEN + " DESC, " + MediaStore.Video.Media._ID + " DESC "; + */ +public class MovieListLoader implements IMovieListLoader { + private static final String TAG = "MovieListLoader"; + private static final boolean LOG = false; + + private MovieListFetcherTask mListTask; + + @Override + public void fillVideoList(Activity activity, Intent intent, final LoaderListener l, + IMovieItem currentMovieItem) { + + // determine if a video playlist has been passed in through the intent + // if a playlist does exist, use that + ArrayList<Uri> uris = intent.getParcelableArrayListExtra("EXTRA_FILE_LIST"); + if (uris != null) { + final MovieList movieList = new MovieList(); + ContentResolver cr = activity.getContentResolver(); + + for(Uri uri : uris) { + // add currentMovieItem in its proper place in the video playlist + // 'Next' and 'Previous' functionality in MovieListHooker is dependent on reference + // matching currentMovieItem + if (currentMovieItem.getOriginalUri().equals(uri)) { + movieList.add(currentMovieItem); + continue; + } + + File videoFile = new File(uri.getPath()); + movieList.add(new MovieItem(uri, cr.getType(uri), videoFile.getName())); + } + + // notify callback on main thread + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + l.onListLoaded(movieList); + } + }); + + return; + } + + // proceed with creating a playlist if one isn't found + boolean fetechAll = false; + if (intent.hasExtra(EXTRA_ALL_VIDEO_FOLDER)) { + fetechAll = intent.getBooleanExtra(EXTRA_ALL_VIDEO_FOLDER, false); + } + //default order by + String orderBy = MediaStore.Video.Media.DATE_TAKEN + " DESC, " + MediaStore.Video.Media._ID + " DESC "; + if (intent.hasExtra(EXTRA_ORDERBY)) { + orderBy = intent.getStringExtra(EXTRA_ORDERBY); + } + cancelList(); + mListTask = new MovieListFetcherTask(activity, fetechAll, l, orderBy); + mListTask.execute(currentMovieItem); + if (LOG) { + Log.v(TAG, "fillVideoList() fetechAll=" + fetechAll + ", orderBy=" + orderBy); + } + } + + @Override + public boolean isEnabledVideoList(Intent intent) { + boolean enable = true; + if (intent != null && intent.hasExtra(EXTRA_ENABLE_VIDEO_LIST)) { + enable = intent.getBooleanExtra(EXTRA_ENABLE_VIDEO_LIST, true); + } + if (LOG) { + Log.v(TAG, "isEnabledVideoList() return " + enable); + } + return enable; + } + + @Override + public void cancelList() { + if (mListTask != null) { + mListTask.cancel(true); + } + } + + private class MovieListFetcherTask extends AsyncTask<IMovieItem, Void, IMovieList> { + private static final String TAG = "MovieListFetcherTask"; + private static final boolean LOG = false; + + // TODO comments by sunlei +// public static final String COLUMN_STEREO_TYPE = MediaStore.Video.Media.STEREO_TYPE; +// public static final String COLUMN_STEREO_TYPE = "STEREO_TYPE"; + + private final ContentResolver mCr; + private final LoaderListener mFetecherListener; + private final boolean mFetechAll; + private final String mOrderBy; + + public MovieListFetcherTask(Context context, boolean fetechAll, LoaderListener l, String orderBy) { + mCr = context.getContentResolver(); + mFetecherListener = l; + mFetechAll = fetechAll; + mOrderBy = orderBy; + if (LOG) { + Log.v(TAG, "MovieListFetcherTask() fetechAll=" + fetechAll + ", orderBy=" + orderBy); + } + } + + @Override + protected void onPostExecute(IMovieList params) { + if (LOG) { + Log.v(TAG, "onPostExecute() isCancelled()=" + isCancelled()); + } + if (isCancelled()) { + return; + } + if (mFetecherListener != null) { + mFetecherListener.onListLoaded(params); + } + } + + @Override + protected IMovieList doInBackground(IMovieItem... params) { + if (LOG) { + Log.v(TAG, "doInBackground() begin"); + } + if (params[0] == null) { + return null; + } + IMovieList movieList = null; + Uri uri = params[0].getUri(); + String mime = params[0].getMimeType(); + if (mFetechAll) { //get all list + if (MovieUtils.isLocalFile(uri, mime)) { + String uristr = String.valueOf(uri); + if (uristr.toLowerCase().startsWith("content://media")) { + //from gallery, gallery3D, videoplayer + long curId = Long.parseLong(uri.getPathSegments().get(3)); + movieList = fillUriList(null, null, curId, params[0]); + } else if (uristr.toLowerCase().startsWith("file://")) { + long curId = getCursorId(uri); + movieList = fillUriList(null, null, curId, params[0]); + } + } + } else { //get current list + if (MovieUtils.isLocalFile(uri, mime)) { + String uristr = String.valueOf(uri); + if (uristr.toLowerCase().startsWith("content://media")) { + Cursor cursor = mCr.query(uri, + new String[]{MediaStore.Video.Media.BUCKET_ID}, + null, null, null); + long bucketId = -1; + if (cursor != null) { + if (cursor.moveToFirst()) { + bucketId = cursor.getLong(0); + } + cursor.close(); + } + long curId = Long.parseLong(uri.getPathSegments().get(3)); + movieList = fillUriList(MediaStore.Video.Media.BUCKET_ID + "=? ", + new String[]{String.valueOf(bucketId)}, curId, params[0]); + } else if (uristr.toLowerCase().startsWith("file://")) { + String data = Uri.decode(uri.toString()); + data = data.replaceAll("'", "''"); + String where = "_data LIKE '%" + data.replaceFirst("file:///", "") + "'"; + Cursor cursor = mCr.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, + new String[]{"_id", MediaStore.Video.Media.BUCKET_ID}, + where, null, null); + long bucketId = -1; + long curId = -1; + if (cursor != null) { + if (cursor.moveToFirst()) { + curId = cursor.getLong(0); + bucketId = cursor.getLong(1); + } + cursor.close(); + } + movieList = fillUriList(MediaStore.Video.Media.BUCKET_ID + "=? ", + new String[]{String.valueOf(bucketId)}, curId, params[0]); + } + } + } + if (LOG) { + Log.v(TAG, "doInBackground() done return " + movieList); + } + return movieList; + } + + private IMovieList fillUriList(String where, String[] whereArgs, long curId, IMovieItem current) { + IMovieList movieList = null; + Cursor cursor = null; + try { + cursor = mCr.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, + new String[]{"_id", "mime_type", OpenableColumns.DISPLAY_NAME}, + where, + whereArgs, + mOrderBy); + boolean find = false; + if (cursor != null && cursor.getCount() > 0) { + movieList = new MovieList(); + while (cursor.moveToNext()) { + long id = cursor.getLong(0); + if (!find && id == curId) { + find = true; + movieList.add(current); + continue; + } + Uri uri = ContentUris.withAppendedId(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, id); + String mimeType = cursor.getString(1); + String title = cursor.getString(2); + + movieList.add(new MovieItem(uri, mimeType, title)); + } + } + } catch (final SQLiteException e) { + e.printStackTrace(); + } finally { + if (cursor != null) { + cursor.close(); + } + } + if (LOG) { + Log.v(TAG, "fillUriList() cursor=" + cursor + ", return " + movieList); + } + return movieList; + } + + private long getCursorId(Uri uri) { + long curId = -1; + Cursor cursor = null; + String data = Uri.decode(uri.toString()); + data = data.replaceAll("'", "''"); + String where = "_data LIKE '%" + data.replaceFirst("file:///", "") + "'"; + try { + cursor = mCr.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, + new String[] { + "_id" + }, where, null, null); + + if (cursor != null && cursor.moveToFirst()) { + curId = cursor.getLong(0); + } + } catch (final SQLiteException e) { + e.printStackTrace(); + } finally { + if (cursor != null) { + cursor.close(); + } + } + return curId; + } + } +} diff --git a/src/org/codeaurora/gallery3d/ext/MovieUtils.java b/src/org/codeaurora/gallery3d/ext/MovieUtils.java new file mode 100644 index 000000000..4bc70a39f --- /dev/null +++ b/src/org/codeaurora/gallery3d/ext/MovieUtils.java @@ -0,0 +1,98 @@ +package org.codeaurora.gallery3d.ext; + +import android.net.Uri; +import android.util.Log; + +import java.util.Locale; + +/** + * Util class for Movie functions. * + */ +public class MovieUtils { + private static final String TAG = "MovieUtils"; + private static final boolean LOG = false; + + private MovieUtils() { + } + + /** + * Whether current video(Uri) is RTSP streaming or not. + * + * @param uri + * @param mimeType + * @return + */ + public static boolean isRtspStreaming(Uri uri, String mimeType) { + boolean rtsp = false; + if (uri != null) { + if ("rtsp".equalsIgnoreCase(uri.getScheme())) { + rtsp = true; + } + } + if (LOG) { + Log.v(TAG, "isRtspStreaming(" + uri + ", " + mimeType + ") return " + rtsp); + } + return rtsp; + } + + /** + * Whether current video(Uri) is HTTP streaming or not. + * + * @param uri + * @param mimeType + * @return + */ + public static boolean isHttpStreaming(Uri uri, String mimeType) { + boolean http = false; + if (uri != null) { + if ("http".equalsIgnoreCase(uri.getScheme())) { + http = true; + } else if ("https".equalsIgnoreCase(uri.getScheme())) { + http = true; + } + } + if (LOG) { + Log.v(TAG, "isHttpStreaming(" + uri + ", " + mimeType + ") return " + http); + } + return http; + } + + /** + * Whether current video(Uri) is live streaming or not. + * + * @param uri + * @param mimeType + * @return + */ + public static boolean isSdpStreaming(Uri uri, String mimeType) { + boolean sdp = false; + if (uri != null) { + if ("application/sdp".equals(mimeType)) { + sdp = true; + } else if (uri.toString().toLowerCase(Locale.ENGLISH).endsWith(".sdp")) { + sdp = true; + } + } + if (LOG) { + Log.v(TAG, "isSdpStreaming(" + uri + ", " + mimeType + ") return " + sdp); + } + return sdp; + } + + /** + * Whether current video(Uri) is local file or not. + * + * @param uri + * @param mimeType + * @return + */ + public static boolean isLocalFile(Uri uri, String mimeType) { + boolean local = (!isSdpStreaming(uri, mimeType) + && !isRtspStreaming(uri, mimeType) + && !isHttpStreaming(uri, mimeType)); + if (LOG) { + Log.v(TAG, "isLocalFile(" + uri + ", " + mimeType + ") return " + local); + } + return local; + } +} diff --git a/src/org/codeaurora/gallery3d/video/BookmarkActivity.java b/src/org/codeaurora/gallery3d/video/BookmarkActivity.java new file mode 100644 index 000000000..e4662b4eb --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/BookmarkActivity.java @@ -0,0 +1,244 @@ +package org.codeaurora.gallery3d.video; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.content.Intent; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; +import android.net.Uri; +import android.os.Bundle; +import android.util.Log; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.AdapterView; +import android.widget.AdapterView.AdapterContextMenuInfo; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.SimpleCursorAdapter; +import android.widget.TextView; + +import com.android.gallery3d.R; +import com.android.gallery3d.app.MovieActivity; + +public class BookmarkActivity extends Activity implements OnItemClickListener { + private static final String TAG = "BookmarkActivity"; + private static final boolean LOG = false; + + private BookmarkEnhance mBookmark; + private BookmarkAdapter mAdapter; + private Cursor mCursor; + private ListView mListView; + private TextView mEmptyView; + + private static final int MENU_DELETE_ALL = 1; + private static final int MENU_DELETE_ONE = 2; + private static final int MENU_EDIT = 3; + + public static final String KEY_LOGO_BITMAP = "logo-bitmap"; + + @Override + protected void onCreate(final Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.bookmark); + + Bitmap logo = getIntent().getParcelableExtra(KEY_LOGO_BITMAP); + if (logo != null) { + getActionBar().setLogo(new BitmapDrawable(getResources(), logo)); + } + + mListView = (ListView) findViewById(android.R.id.list); + mEmptyView = (TextView) findViewById(android.R.id.empty); + + mBookmark = new BookmarkEnhance(this); + mCursor = mBookmark.query(); + mAdapter = new BookmarkAdapter(this, R.layout.bookmark_item, null, new String[] {}, + new int[] {}); + mListView.setEmptyView(mEmptyView); + mListView.setAdapter(mAdapter); + mAdapter.changeCursor(mCursor); + + mListView.setOnItemClickListener(this); + registerForContextMenu(mListView); + } + + @Override + protected void onStart() { + super.onStart(); + } + + @Override + protected void onResume() { + super.onResume(); + } + + @Override + protected void onPause() { + super.onPause(); + } + + @Override + protected void onDestroy() { + if (mAdapter != null) { + mAdapter.changeCursor(null); + } + super.onDestroy(); + } + + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + super.onCreateOptionsMenu(menu); + menu.add(0, MENU_DELETE_ALL, 0, R.string.delete_all) + .setIcon(android.R.drawable.ic_menu_delete); + return true; + } + + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + switch (item.getItemId()) { + case MENU_DELETE_ALL: + mBookmark.deleteAll(); + return true; + default: + break; + } + return super.onOptionsItemSelected(item); + } + + private class BookmarkAdapter extends SimpleCursorAdapter { + + public BookmarkAdapter(final Context context, final int layout, final Cursor c, + final String[] from, final int[] to) { + super(context, layout, c, from, to); + } + + @Override + public View newView(final Context context, final Cursor cursor, final ViewGroup parent) { + final View view = super.newView(context, cursor, parent); + final ViewHolder holder = new ViewHolder(); + holder.mTitleView = (TextView) view.findViewById(R.id.title); + holder.mDataView = (TextView) view.findViewById(R.id.data); + view.setTag(holder); + return view; + } + + @Override + public void bindView(final View view, final Context context, final Cursor cursor) { + final ViewHolder holder = (ViewHolder) view.getTag(); + holder.mId = cursor.getLong(BookmarkEnhance.INDEX_ID); + holder.mTitle = cursor.getString(BookmarkEnhance.INDEX_TITLE); + holder.mData = cursor.getString(BookmarkEnhance.INDEX_DATA); + holder.mMimetype = cursor.getString(BookmarkEnhance.INDEX_MIME_TYPE); + holder.mTitleView.setText(holder.mTitle); + holder.mDataView.setText(holder.mData); + } + + @Override + public void changeCursor(final Cursor c) { + super.changeCursor(c); + } + + } + + private class ViewHolder { + long mId; + String mTitle; + String mData; + String mMimetype; + TextView mTitleView; + TextView mDataView; + } + + @Override + public void onItemClick(final AdapterView<?> parent, final View view, final int position, + final long id) { + final Object o = view.getTag(); + if (o instanceof ViewHolder) { + final ViewHolder holder = (ViewHolder) o; + finish(); + final Intent intent = new Intent(this, MovieActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + String mime = "video/*"; + if (!(holder.mMimetype == null || "".equals(holder.mMimetype.trim()))) { + mime = holder.mMimetype; + } + intent.setDataAndType(Uri.parse(holder.mData), mime); + startActivity(intent); + } + if (LOG) { + Log.v(TAG, "onItemClick(" + position + ", " + id + ")"); + } + } + + @Override + public void onCreateContextMenu(final ContextMenu menu, final View v, + final ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + menu.add(0, MENU_DELETE_ONE, 0, R.string.delete); + menu.add(0, MENU_EDIT, 0, R.string.edit); + } + + @Override + public boolean onContextItemSelected(final MenuItem item) { + final AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); + switch (item.getItemId()) { + case MENU_DELETE_ONE: + mBookmark.delete(info.id); + return true; + case MENU_EDIT: + final Object obj = info.targetView.getTag(); + if (obj instanceof ViewHolder) { + showEditDialog((ViewHolder) obj); + } else { + Log.w(TAG, "wrong context item info " + info); + } + return true; + default: + return super.onContextItemSelected(item); + } + } + + private void showEditDialog(final ViewHolder holder) { + if (LOG) { + Log.v(TAG, "showEditDialog(" + holder + ")"); + } + if (holder == null) { + return; + } + final LayoutInflater inflater = LayoutInflater.from(this); + final View v = inflater.inflate(R.layout.bookmark_edit_dialog, null); + final EditText titleView = (EditText) v.findViewById(R.id.title); + final EditText dataView = (EditText) v.findViewById(R.id.data); + titleView.setText(holder.mTitle); + dataView.setText(holder.mData); + + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.edit); + builder.setView(v); + builder.setIcon(R.drawable.ic_menu_display_bookmark); + builder.setPositiveButton(android.R.string.ok, new OnClickListener() { + + @Override + public void onClick(final DialogInterface dialog, final int which) { + mBookmark.update(holder.mId, titleView.getText().toString(), + dataView.getText().toString(), 0); + } + + }); + builder.setNegativeButton(android.R.string.cancel, null); + final AlertDialog dialog = builder.create(); + dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + dialog.setInverseBackgroundForced(true); + dialog.show(); + } +} diff --git a/src/org/codeaurora/gallery3d/video/BookmarkEnhance.java b/src/org/codeaurora/gallery3d/video/BookmarkEnhance.java new file mode 100644 index 000000000..cf607ecc4 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/BookmarkEnhance.java @@ -0,0 +1,138 @@ +package org.codeaurora.gallery3d.video; + +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.util.Log; + +import com.android.gallery3d.R; + +public class BookmarkEnhance { + private static final String TAG = "BookmarkEnhance"; + private static final boolean LOG = false; + + private static final Uri BOOKMARK_URI = Uri.parse("content://media/internal/bookmark"); + + public static final String COLUMN_ID = "_id"; + public static final String COLUMN_DATA = "_data"; + public static final String COLUMN_TITLE = "_display_name"; + public static final String COLUMN_ADD_DATE = "date_added"; + public static final String COLUMN_MEDIA_TYPE = "mime_type"; + private static final String COLUMN_POSITION = "position"; + private static final String COLUMN_MIME_TYPE = "media_type"; + + private static final String NULL_HOCK = COLUMN_POSITION; + public static final String ORDER_COLUMN = COLUMN_ADD_DATE + " ASC "; + private static final String VIDEO_STREAMING_MEDIA_TYPE = "streaming"; + + public static final int INDEX_ID = 0; + public static final int INDEX_DATA = 1; + public static final int INDEX_TITLE = 2; + public static final int INDEX_ADD_DATE = 3; + public static final int INDEX_MIME_TYPE = 4; + private static final int INDEX_POSITION = 5; + private static final int INDEX_MEDIA_TYPE = 6; + + public static final String[] PROJECTION = new String[] { + COLUMN_ID, + COLUMN_DATA, + COLUMN_TITLE, + COLUMN_ADD_DATE, + COLUMN_MIME_TYPE, + }; + + private final Context mContext; + private final ContentResolver mCr; + + public BookmarkEnhance(final Context context) { + mContext = context; + mCr = context.getContentResolver(); + } + + public Uri insert(final String title, final String uri, final String mimeType, + final long position) { + final ContentValues values = new ContentValues(); + final String mytitle = (title == null ? mContext.getString(R.string.default_title) : title); + values.put(COLUMN_TITLE, mytitle); + values.put(COLUMN_DATA, uri); + values.put(COLUMN_POSITION, position); + values.put(COLUMN_ADD_DATE, System.currentTimeMillis()); + values.put(COLUMN_MEDIA_TYPE, VIDEO_STREAMING_MEDIA_TYPE); + values.put(COLUMN_MIME_TYPE, mimeType); + final Uri insertUri = mCr.insert(BOOKMARK_URI, values); + if (LOG) { + Log.v(TAG, "insert(" + title + "," + uri + ", " + position + ") return " + + insertUri); + } + return insertUri; + } + + public int delete(final long id) { + final Uri uri = ContentUris.withAppendedId(BOOKMARK_URI, id); + final int count = mCr.delete(uri, null, null); + if (LOG) { + Log.v(TAG, "delete(" + id + ") return " + count); + } + return count; + } + + public int deleteAll() { + final int count = mCr.delete(BOOKMARK_URI, COLUMN_MEDIA_TYPE + "=? ", new String[] { + VIDEO_STREAMING_MEDIA_TYPE + }); + if (LOG) { + Log.v(TAG, "deleteAll() return " + count); + } + return count; + } + + public boolean exists(final String uri) { + final Cursor cursor = mCr.query(BOOKMARK_URI, + PROJECTION, + COLUMN_DATA + "=? and " + COLUMN_MEDIA_TYPE + "=? ", + new String[] { + uri, VIDEO_STREAMING_MEDIA_TYPE + }, + null + ); + boolean exist = false; + if (cursor != null) { + exist = cursor.moveToFirst(); + cursor.close(); + } + if (LOG) { + Log.v(TAG, "exists(" + uri + ") return " + exist); + } + return exist; + } + + public Cursor query() { + final Cursor cursor = mCr.query(BOOKMARK_URI, + PROJECTION, + COLUMN_MEDIA_TYPE + "='" + VIDEO_STREAMING_MEDIA_TYPE + "' ", + null, + ORDER_COLUMN + ); + if (LOG) { + Log.v(TAG, "query() return cursor=" + (cursor == null ? -1 : cursor.getCount())); + } + return cursor; + } + + public int update(final long id, final String title, final String uri, final int position) { + final ContentValues values = new ContentValues(); + values.put(COLUMN_TITLE, title); + values.put(COLUMN_DATA, uri); + values.put(COLUMN_POSITION, position); + final Uri updateUri = ContentUris.withAppendedId(BOOKMARK_URI, id); + final int count = mCr.update(updateUri, values, null, null); + if (LOG) { + Log.v(TAG, "update(" + id + ", " + title + ", " + uri + ", " + position + ")" + + " return " + count); + } + return count; + } +} diff --git a/src/org/codeaurora/gallery3d/video/BookmarkHooker.java b/src/org/codeaurora/gallery3d/video/BookmarkHooker.java new file mode 100644 index 000000000..015fc3c41 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/BookmarkHooker.java @@ -0,0 +1,76 @@ +package org.codeaurora.gallery3d.video; + +import android.content.Intent; +import android.view.Menu; +import android.view.MenuItem; + +import com.android.gallery3d.R; +import org.codeaurora.gallery3d.ext.MovieUtils; + +public class BookmarkHooker extends MovieHooker { + private static final String TAG = "BookmarkHooker"; + private static final boolean LOG = false; + + private static final String ACTION_BOOKMARK = "org.codeaurora.bookmark.VIEW"; + private static final int MENU_BOOKMARK_ADD = 1; + private static final int MENU_BOOKMARK_DISPLAY = 2; + private MenuItem mMenuBookmarks; + private MenuItem mMenuBookmarkAdd; + + public static final String KEY_LOGO_BITMAP = "logo-bitmap"; + + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + super.onCreateOptionsMenu(menu); + mMenuBookmarkAdd = menu.add(0, getMenuActivityId(MENU_BOOKMARK_ADD), 0, + R.string.bookmark_add); + mMenuBookmarks = menu.add(0, getMenuActivityId(MENU_BOOKMARK_DISPLAY), 0, + R.string.bookmark_display); + return true; + } + + @Override + public boolean onPrepareOptionsMenu(final Menu menu) { + super.onPrepareOptionsMenu(menu); + if (MovieUtils.isLocalFile(getMovieItem().getUri(), getMovieItem().getMimeType())) { + if (mMenuBookmarkAdd != null) { + mMenuBookmarkAdd.setVisible(false); + } + if (mMenuBookmarks != null) { + mMenuBookmarks.setVisible(false); + } + } else { + if (mMenuBookmarkAdd != null) { + mMenuBookmarkAdd.setVisible(true); + } + if (mMenuBookmarks != null) { + mMenuBookmarks.setVisible(true); + } + } + return true; + } + + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + super.onOptionsItemSelected(item); + switch (getMenuOriginalId(item.getItemId())) { + case MENU_BOOKMARK_ADD: + getPlayer().addBookmark(); + return true; + case MENU_BOOKMARK_DISPLAY: + gotoBookmark(); + return true; + default: + return false; + } + } + + private void gotoBookmark() { + final Intent intent = new Intent(ACTION_BOOKMARK); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP + | Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); + intent.putExtra(KEY_LOGO_BITMAP, getIntent().getParcelableExtra(KEY_LOGO_BITMAP)); + getContext().startActivity(intent); + } +} diff --git a/src/org/codeaurora/gallery3d/video/CodeauroraVideoView.java b/src/org/codeaurora/gallery3d/video/CodeauroraVideoView.java new file mode 100755 index 000000000..ecc2ac94f --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/CodeauroraVideoView.java @@ -0,0 +1,1074 @@ +package org.codeaurora.gallery3d.video; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.res.Resources; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.media.MediaPlayer.OnBufferingUpdateListener; +import android.media.MediaPlayer.OnVideoSizeChangedListener; +import android.media.Metadata; +import android.media.MediaPlayer.OnCompletionListener; +import android.media.MediaPlayer.OnErrorListener; +import android.media.MediaPlayer.OnInfoListener; +import android.net.Uri; +import android.os.Handler; +import android.os.Message; +import android.util.AttributeSet; +import android.util.Log; +import android.view.KeyEvent; +import android.view.MotionEvent; +import android.view.SurfaceHolder; +import android.view.SurfaceView; +import android.view.View; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityNodeInfo; +import android.widget.MediaController; +import android.widget.MediaController.MediaPlayerControl; + +import org.codeaurora.gallery3d.video.ScreenModeManager.ScreenModeListener; + +import java.io.IOException; +import java.util.Map; + +/** + * Displays a video file. The VideoView class + * can load images from various sources (such as resources or content + * providers), takes care of computing its measurement from the video so that + * it can be used in any layout manager, and provides various display options + * such as scaling and tinting. + */ +public class CodeauroraVideoView extends SurfaceView implements MediaPlayerControl, ScreenModeListener{ + private static final boolean LOG = false; + private String TAG = "CodeauroraVideoView"; + // settable by the client + private Uri mUri; + private Map<String, String> mHeaders; + + // all possible internal states + private static final int STATE_ERROR = -1; + private static final int STATE_IDLE = 0; + private static final int STATE_PREPARING = 1; + private static final int STATE_PREPARED = 2; + private static final int STATE_PLAYING = 3; + private static final int STATE_PAUSED = 4; + private static final int STATE_PLAYBACK_COMPLETED = 5; + private static final int STATE_SUSPENDED = 6; + private static final int MSG_LAYOUT_READY = 1; + + // mCurrentState is a VideoView object's current state. + // mTargetState is the state that a method caller intends to reach. + // For instance, regardless the VideoView object's current state, + // calling pause() intends to bring the object to a target state + // of STATE_PAUSED. + private int mCurrentState = STATE_IDLE; + private int mTargetState = STATE_IDLE; + + // All the stuff we need for playing and showing a video + private SurfaceHolder mSurfaceHolder = null; + private MediaPlayer mMediaPlayer = null; + private int mAudioSession; + private int mVideoWidth; + private int mVideoHeight; + private int mSurfaceWidth; + private int mSurfaceHeight; + private int mDuration; + private MediaController mMediaController; + private OnCompletionListener mOnCompletionListener; + private MediaPlayer.OnPreparedListener mOnPreparedListener; + private MediaPlayer.OnBufferingUpdateListener mOnBufferingUpdateListener; + private MediaPlayer.OnVideoSizeChangedListener mVideoSizeListener; + private MediaPlayer.OnPreparedListener mPreparedListener; + private ScreenModeManager mScreenManager; + private int mCurrentBufferPercentage; + private OnErrorListener mOnErrorListener; + private OnInfoListener mOnInfoListener; + private int mSeekWhenPrepared; // recording the seek position while preparing + private boolean mCanPause; + private boolean mCanSeekBack; + private boolean mCanSeekForward; + private boolean mCanSeek; + private boolean mHasGotPreparedCallBack = false; + private boolean mNeedWaitLayout = false; + private boolean mHasGotMetaData = false; + private boolean mOnResumed; + private boolean mIsShowDialog = false; + + private final Handler mHandler = new Handler() { + public void handleMessage(final Message msg) { + if (LOG) { + Log.v(TAG, "handleMessage() to do prepare. msg=" + msg); + } + switch (msg.what) { + case MSG_LAYOUT_READY: + if (mMediaPlayer == null || mUri == null) { + Log.w(TAG, "Cannot prepare play! mMediaPlayer=" + mMediaPlayer + + ", mUri=" + mUri); + return; + } + doPreparedIfReady(mMediaPlayer); + break; + default: + Log.w(TAG, "Unhandled message " + msg); + break; + } + } + }; + + public CodeauroraVideoView(Context context) { + super(context); + initVideoView(); + initialize(); + } + + public CodeauroraVideoView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + initVideoView(); + initialize(); + } + + public CodeauroraVideoView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + initVideoView(); + initialize(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int width = 0; + int height = 0; + int screenMode = ScreenModeManager.SCREENMODE_BIGSCREEN; + if (mScreenManager != null) { + screenMode = mScreenManager.getScreenMode(); + } + switch (screenMode) { + case ScreenModeManager.SCREENMODE_BIGSCREEN: + width = getDefaultSize(mVideoWidth, widthMeasureSpec); + height = getDefaultSize(mVideoHeight, heightMeasureSpec); + if (mVideoWidth > 0 && mVideoHeight > 0) { + if (mVideoWidth * height > width * mVideoHeight) { + height = width * mVideoHeight / mVideoWidth; + } else if (mVideoWidth * height < width * mVideoHeight) { + width = height * mVideoWidth / mVideoHeight; + } + } + break; + case ScreenModeManager.SCREENMODE_FULLSCREEN: + width = getDefaultSize(mVideoWidth, widthMeasureSpec); + height = getDefaultSize(mVideoHeight, heightMeasureSpec); + break; + case ScreenModeManager.SCREENMODE_CROPSCREEN: + width = getDefaultSize(mVideoWidth, widthMeasureSpec); + height = getDefaultSize(mVideoHeight, heightMeasureSpec); + if (mVideoWidth > 0 && mVideoHeight > 0) { + if (mVideoWidth * height > width * mVideoHeight) { + width = height * mVideoWidth / mVideoHeight; + } else if (mVideoWidth * height < width * mVideoHeight) { + height = width * mVideoHeight / mVideoWidth; + } + } + break; + default: + Log.w(TAG, "wrong screen mode : " + screenMode); + break; + } + if (LOG) { + Log.v(TAG, "onMeasure() set size: " + width + 'x' + height); + Log.v(TAG, "onMeasure() video size: " + mVideoWidth + 'x' + mVideoHeight); + Log.v(TAG, "onMeasure() mNeedWaitLayout=" + mNeedWaitLayout); + } + setMeasuredDimension(width, height); + if (mNeedWaitLayout) { // when OnMeasure ok, start video. + mNeedWaitLayout = false; + mHandler.sendEmptyMessage(MSG_LAYOUT_READY); + } + } + + @Override + public void onInitializeAccessibilityEvent(AccessibilityEvent event) { + super.onInitializeAccessibilityEvent(event); + event.setClassName(CodeauroraVideoView.class.getName()); + } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName(CodeauroraVideoView.class.getName()); + } + + public int resolveAdjustedSize(int desiredSize, int measureSpec) { + return getDefaultSize(desiredSize, measureSpec); + } + + private void initVideoView() { + mVideoWidth = 0; + mVideoHeight = 0; + getHolder().addCallback(mSHCallback); + getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); + setFocusable(true); + setFocusableInTouchMode(true); + requestFocus(); + mCurrentState = STATE_IDLE; + mTargetState = STATE_IDLE; + } + + private void initialize() { + mPreparedListener = new MediaPlayer.OnPreparedListener() { + public void onPrepared(final MediaPlayer mp) { + if (LOG) { + Log.v(TAG, "mPreparedListener.onPrepared(" + mp + ")"); + } + //Here we can get meta data from mediaplayer. + // Get the capabilities of the player for this stream + final Metadata data = mp.getMetadata(MediaPlayer.METADATA_ALL, + MediaPlayer.BYPASS_METADATA_FILTER); + if (data != null) { + mCanPause = !data.has(Metadata.PAUSE_AVAILABLE) + || data.getBoolean(Metadata.PAUSE_AVAILABLE); + mCanSeekBack = !data.has(Metadata.SEEK_BACKWARD_AVAILABLE) + || data.getBoolean(Metadata.SEEK_BACKWARD_AVAILABLE); + mCanSeekForward = !data.has(Metadata.SEEK_FORWARD_AVAILABLE) + || data.getBoolean(Metadata.SEEK_FORWARD_AVAILABLE); + mCanSeek = !data.has(Metadata.SEEK_AVAILABLE) + || data.getBoolean(Metadata.SEEK_AVAILABLE); + } else { + mCanPause = true; + mCanSeekBack = true; + mCanSeekForward = true; + mCanSeek = true; + Log.w(TAG, "Metadata is null!"); + } + if (LOG) { + Log.v(TAG, "mPreparedListener.onPrepared() mCanPause=" + mCanPause); + } + mHasGotPreparedCallBack = true; + doPreparedIfReady(mMediaPlayer); + } + }; + + mErrorListener = new MediaPlayer.OnErrorListener() { + public boolean onError(final MediaPlayer mp, final int frameworkErr, final int implErr) { + Log.d(TAG, "Error: " + frameworkErr + "," + implErr); + //record error position and duration + //here disturb the original logic + mSeekWhenPrepared = getCurrentPosition(); + if (LOG) { + Log.v(TAG, "onError() mSeekWhenPrepared=" + mSeekWhenPrepared + ", mDuration=" + mDuration); + } + //for old version Streaming server, getduration is not valid. + mDuration = Math.abs(mDuration); + mCurrentState = STATE_ERROR; + mTargetState = STATE_ERROR; + if (mMediaController != null) { + mMediaController.hide(); + } + + /* If an error handler has been supplied, use it and finish. */ + if (mOnErrorListener != null) { + if (mOnErrorListener.onError(mMediaPlayer, frameworkErr, implErr)) { + return true; + } + } + + /* Otherwise, pop up an error dialog so the user knows that + * something bad has happened. Only try and pop up the dialog + * if we're attached to a window. When we're going away and no + * longer have a window, don't bother showing the user an error. + */ + if (getWindowToken() != null) { + final Resources r = mContext.getResources(); + int messageId; + + if (frameworkErr == MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK) { + messageId = com.android.internal.R.string.VideoView_error_text_invalid_progressive_playback; + } else { + messageId = com.android.internal.R.string.VideoView_error_text_unknown; + } + new AlertDialog.Builder(mContext) + .setMessage(messageId) + .setPositiveButton(com.android.internal.R.string.VideoView_error_button, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + /* If we get here, there is no onError listener, so + * at least inform them that the video is over. + */ + if (mOnCompletionListener != null) { + mOnCompletionListener.onCompletion(mMediaPlayer); + } + } + }) + .setCancelable(false) + .show(); + } + return true; + } + }; + + mBufferingUpdateListener = new MediaPlayer.OnBufferingUpdateListener() { + public void onBufferingUpdate(final MediaPlayer mp, final int percent) { + mCurrentBufferPercentage = percent; + if (mOnBufferingUpdateListener != null) { + mOnBufferingUpdateListener.onBufferingUpdate(mp, percent); + } + if (LOG) { + Log.v(TAG, "onBufferingUpdate() Buffering percent: " + percent); + Log.v(TAG, "onBufferingUpdate() mTargetState=" + mTargetState); + Log.v(TAG, "onBufferingUpdate() mCurrentState=" + mCurrentState); + } + } + }; + + mSizeChangedListener = new MediaPlayer.OnVideoSizeChangedListener() { + public void onVideoSizeChanged(final MediaPlayer mp, final int width, final int height) { + mVideoWidth = mp.getVideoWidth(); + mVideoHeight = mp.getVideoHeight(); + if (LOG) { + Log.v(TAG, "OnVideoSizeChagned(" + width + "," + height + ")"); + Log.v(TAG, "OnVideoSizeChagned(" + mVideoWidth + "," + mVideoHeight + ")"); + Log.v(TAG, "OnVideoSizeChagned() mCurrentState=" + mCurrentState); + } + if (mVideoWidth != 0 && mVideoHeight != 0) { + getHolder().setFixedSize(mVideoWidth, mVideoHeight); + if (mCurrentState == STATE_PREPARING) { + mNeedWaitLayout = true; + } + } + if (mVideoSizeListener != null) { + mVideoSizeListener.onVideoSizeChanged(mp, width, height); + } + CodeauroraVideoView.this.requestLayout(); + } + }; + + getHolder().removeCallback(mSHCallback); + mSHCallback = new SurfaceHolder.Callback() { + public void surfaceChanged(final SurfaceHolder holder, final int format, + final int w, final int h) { + if (LOG) { + Log.v(TAG, "surfaceChanged(" + holder + ", " + format + + ", " + w + ", " + h + ")"); + Log.v(TAG, "surfaceChanged() mMediaPlayer=" + mMediaPlayer + + ", mTargetState=" + mTargetState + + ", mVideoWidth=" + mVideoWidth + + ", mVideoHeight=" + mVideoHeight); + } + mSurfaceWidth = w; + mSurfaceHeight = h; + final boolean isValidState = (mTargetState == STATE_PLAYING); + final boolean hasValidSize = (mVideoWidth == w && mVideoHeight == h); + if (mMediaPlayer != null && isValidState && hasValidSize) { + if (mSeekWhenPrepared != 0) { + seekTo(mSeekWhenPrepared); + } + Log.v(TAG, "surfaceChanged() start()"); + start(); + } + } + + public void surfaceCreated(final SurfaceHolder holder) { + if (LOG) { + Log.v(TAG, "surfaceCreated(" + holder + ")"); + } + /* + if (mCurrentState == STATE_SUSPENDED) { + mSurfaceHolder = holder; + mMediaPlayer.setDisplay(mSurfaceHolder); + if (mMediaPlayer.resume()) { + mCurrentState = STATE_PREPARED; + if (mSeekWhenPrepared != 0) { + seekTo(mSeekWhenPrepared); + } + if (mTargetState == STATE_PLAYING) { + start(); + } + return; + } else { + release(false); + } + } + */ + if (mCurrentState == STATE_SUSPENDED) { + mSurfaceHolder = holder; + mMediaPlayer.setDisplay(mSurfaceHolder); + release(false); + } + mSurfaceHolder = holder; + openVideo(); + } + + public void surfaceDestroyed(final SurfaceHolder holder) { + // after we return from this we can't use the surface any more + if (LOG) { + Log.v(TAG, "surfaceDestroyed(" + holder + ")"); + } + mSurfaceHolder = null; + if (mMediaController != null) { + mMediaController.hide(); + } + if (isHTTPStreaming(mUri) && mCurrentState == STATE_SUSPENDED) { + // Don't call release() while run suspend operation + return; + } + release(true); + } + }; + getHolder().addCallback(mSHCallback); + } + + public void setVideoPath(String path) { + setVideoURI(Uri.parse(path)); + } + + public void setVideoURI(Uri uri) { + setVideoURI(uri, null); + } + + /** + * @hide + */ + public void setVideoURI(Uri uri, Map<String, String> headers) { + Log.d(TAG,"setVideoURI uri = " + uri); + mDuration = -1; + setResumed(true); + mUri = uri; + mHeaders = headers; + mSeekWhenPrepared = 0; + openVideo(); + requestLayout(); + invalidate(); + } + + public void stopPlayback() { + if (mMediaPlayer != null) { + mMediaPlayer.stop(); + mMediaPlayer.release(); + mMediaPlayer = null; + mCurrentState = STATE_IDLE; + mTargetState = STATE_IDLE; + } + } + + private void openVideo() { + clearVideoInfo(); + if (mUri == null || mSurfaceHolder == null) { + // not ready for playback just yet, will try again later + return; + } + + // we shouldn't clear the target state, because somebody might have + // called start() previously + release(false); + if ("".equalsIgnoreCase(String.valueOf(mUri))) { + Log.w(TAG, "Unable to open content: " + mUri); + mErrorListener.onError(mMediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0); + return; + } + try { + mMediaPlayer = new MediaPlayer(); + if (mAudioSession != 0) { + mMediaPlayer.setAudioSessionId(mAudioSession); + } else { + mAudioSession = mMediaPlayer.getAudioSessionId(); + } + mMediaPlayer.setOnPreparedListener(mPreparedListener); + mMediaPlayer.setOnVideoSizeChangedListener(mSizeChangedListener); + mMediaPlayer.setOnCompletionListener(mCompletionListener); + mMediaPlayer.setOnErrorListener(mErrorListener); + mMediaPlayer.setOnInfoListener(mOnInfoListener); + mMediaPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener); + mCurrentBufferPercentage = 0; + mMediaPlayer.setDataSource(mContext, mUri, mHeaders); + mMediaPlayer.setDisplay(mSurfaceHolder); + mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mMediaPlayer.setScreenOnWhilePlaying(true); + mMediaPlayer.prepareAsync(); + // we don't set the target state here either, but preserve the + // target state that was there before. + mCurrentState = STATE_PREPARING; + attachMediaController(); + } catch (IOException ex) { + Log.w(TAG, "Unable to open content: " + mUri, ex); + mCurrentState = STATE_ERROR; + mTargetState = STATE_ERROR; + mErrorListener.onError(mMediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0); + return; + } catch (IllegalArgumentException ex) { + Log.w(TAG, "Unable to open content: " + mUri, ex); + mCurrentState = STATE_ERROR; + mTargetState = STATE_ERROR; + mErrorListener.onError(mMediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0); + return; + } + } + + public void setMediaController(MediaController controller) { + if (mMediaController != null) { + mMediaController.hide(); + } + mMediaController = controller; + attachMediaController(); + } + + private void attachMediaController() { + if (mMediaPlayer != null && mMediaController != null) { + mMediaController.setMediaPlayer(this); + View anchorView = this.getParent() instanceof View ? + (View)this.getParent() : this; + mMediaController.setAnchorView(anchorView); + mMediaController.setEnabled(isInPlaybackState()); + } + } + + private boolean isHTTPStreaming(Uri mUri) { + if (mUri != null){ + String scheme = mUri.toString(); + if (scheme.startsWith("http://") || scheme.startsWith("https://")) { + if (scheme.endsWith(".m3u8") || scheme.endsWith(".m3u") + || scheme.contains("m3u8") || scheme.endsWith(".mpd")) { + // HLS or DASH streaming source + return false; + } + // HTTP streaming + return true; + } + } + return false; + } + + MediaPlayer.OnVideoSizeChangedListener mSizeChangedListener = + new MediaPlayer.OnVideoSizeChangedListener() { + public void onVideoSizeChanged(MediaPlayer mp, int width, int height) { + mVideoWidth = mp.getVideoWidth(); + mVideoHeight = mp.getVideoHeight(); + if (mVideoWidth != 0 && mVideoHeight != 0) { + getHolder().setFixedSize(mVideoWidth, mVideoHeight); + requestLayout(); + } + } + }; + + private MediaPlayer.OnCompletionListener mCompletionListener = + new MediaPlayer.OnCompletionListener() { + public void onCompletion(MediaPlayer mp) { + mCurrentState = STATE_PLAYBACK_COMPLETED; + mTargetState = STATE_PLAYBACK_COMPLETED; + if (mMediaController != null) { + mMediaController.hide(); + } + if (mOnCompletionListener != null) { + mOnCompletionListener.onCompletion(mMediaPlayer); + } + } + }; + + private MediaPlayer.OnErrorListener mErrorListener; + + private MediaPlayer.OnBufferingUpdateListener mBufferingUpdateListener = + new MediaPlayer.OnBufferingUpdateListener() { + public void onBufferingUpdate(MediaPlayer mp, int percent) { + mCurrentBufferPercentage = percent; + } + }; + + /** + * Register a callback to be invoked when the media file + * is loaded and ready to go. + * + * @param l The callback that will be run + */ + public void setOnPreparedListener(MediaPlayer.OnPreparedListener l) { + mOnPreparedListener = l; + } + + /** + * Register a callback to be invoked when the end of a media file + * has been reached during playback. + * + * @param l The callback that will be run + */ + public void setOnCompletionListener(OnCompletionListener l) { + mOnCompletionListener = l; + } + + /** + * Register a callback to be invoked when an error occurs + * during playback or setup. If no listener is specified, + * or if the listener returned false, VideoView will inform + * the user of any errors. + * + * @param l The callback that will be run + */ + public void setOnErrorListener(OnErrorListener l) { + mOnErrorListener = l; + } + + /** + * Register a callback to be invoked when an informational event + * occurs during playback or setup. + * + * @param l The callback that will be run + */ + public void setOnInfoListener(OnInfoListener l) { + mOnInfoListener = l; + } + + SurfaceHolder.Callback mSHCallback = new SurfaceHolder.Callback() { + public void surfaceChanged(SurfaceHolder holder, int format, + int w, int h) { + mSurfaceWidth = w; + mSurfaceHeight = h; + boolean isValidState = (mTargetState == STATE_PLAYING); + boolean hasValidSize = (mVideoWidth == w && mVideoHeight == h); + if (mMediaPlayer != null && isValidState && hasValidSize) { + if (mSeekWhenPrepared != 0) { + seekTo(mSeekWhenPrepared); + } + start(); + } + } + + public void surfaceCreated(SurfaceHolder holder) { + /* + if (mCurrentState == STATE_SUSPENDED) { + mSurfaceHolder = holder; + mMediaPlayer.setDisplay(mSurfaceHolder); + if (mMediaPlayer.resume()) { + mCurrentState = STATE_PREPARED; + if (mSeekWhenPrepared != 0) { + seekTo(mSeekWhenPrepared); + } + if (mTargetState == STATE_PLAYING) { + start(); + } + return; + } else { + release(false); + } + } + mSurfaceHolder = holder; + openVideo(); + */ + if (LOG) { + Log.v(TAG, "surfaceCreated(" + holder + ")"); + } + if (mCurrentState == STATE_SUSPENDED) { + mSurfaceHolder = holder; + mMediaPlayer.setDisplay(mSurfaceHolder); + release(false); + } + mSurfaceHolder = holder; + openVideo(); + } + + public void surfaceDestroyed(SurfaceHolder holder) { + // after we return from this we can't use the surface any more + mSurfaceHolder = null; + if (mMediaController != null) mMediaController.hide(); + if (isHTTPStreaming(mUri) && mCurrentState == STATE_SUSPENDED) { + // Don't call release() while run suspend operation + return; + } + release(true); + } + }; + + /* + * release the media player in any state + */ + private void release(boolean cleartargetstate) { + if (mMediaPlayer != null) { + mMediaPlayer.reset(); + mMediaPlayer.release(); + mMediaPlayer = null; + mCurrentState = STATE_IDLE; + if (cleartargetstate) { + mTargetState = STATE_IDLE; + } + } + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (isInPlaybackState() && mMediaController != null) { + toggleMediaControlsVisiblity(); + } + return false; + } + + @Override + public boolean onTrackballEvent(MotionEvent ev) { + if (isInPlaybackState() && mMediaController != null) { + toggleMediaControlsVisiblity(); + } + return false; + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + final boolean isKeyCodeSupported = keyCode != KeyEvent.KEYCODE_BACK && + keyCode != KeyEvent.KEYCODE_VOLUME_UP && + keyCode != KeyEvent.KEYCODE_VOLUME_DOWN && + keyCode != KeyEvent.KEYCODE_VOLUME_MUTE && + keyCode != KeyEvent.KEYCODE_MENU && + keyCode != KeyEvent.KEYCODE_CALL && + keyCode != KeyEvent.KEYCODE_ENDCALL && + keyCode != KeyEvent.KEYCODE_CAMERA; + if (isInPlaybackState() && isKeyCodeSupported && mMediaController != null) { + if (event.getRepeatCount() == 0 && (keyCode == KeyEvent.KEYCODE_HEADSETHOOK || + keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)) { + if (mMediaPlayer.isPlaying()) { + pause(); + mMediaController.show(); + } else { + start(); + mMediaController.hide(); + } + return true; + } else if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY) { + if (!mMediaPlayer.isPlaying()) { + start(); + mMediaController.hide(); + } + return true; + } else if (keyCode == KeyEvent.KEYCODE_MEDIA_STOP + || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) { + if (mMediaPlayer.isPlaying()) { + pause(); + mMediaController.show(); + } + return true; + } else if (keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD || + keyCode == KeyEvent.KEYCODE_MEDIA_NEXT || + keyCode == KeyEvent.KEYCODE_MEDIA_PREVIOUS || + keyCode == KeyEvent.KEYCODE_MEDIA_REWIND || + keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE || + keyCode == KeyEvent.KEYCODE_HEADSETHOOK) { + // consume media action, so if video view if front, + // other media player will not play any sounds. + return true; + } else { + toggleMediaControlsVisiblity(); + } + } + return super.onKeyDown(keyCode, event); + } + + private void toggleMediaControlsVisiblity() { + if (mMediaController.isShowing()) { + mMediaController.hide(); + } else { + mMediaController.show(); + } + } + + public void setDialogShowState(boolean isDialogShow) { + mIsShowDialog = isDialogShow; + } + + @Override + public void start() { + if (mIsShowDialog) return; + if (isInPlaybackState()) { + mMediaPlayer.start(); + mCurrentState = STATE_PLAYING; + } + mTargetState = STATE_PLAYING; + } + + @Override + public void pause() { + if (isInPlaybackState()) { + if (mMediaPlayer.isPlaying()) { + mMediaPlayer.pause(); + mCurrentState = STATE_PAUSED; + } + } + mTargetState = STATE_PAUSED; + } + + public void suspend() { + /* + // HTTP streaming will call mMediaPlayer->suspend(), others will call release() + if (isHTTPStreaming(mUri) && mCurrentState != STATE_PREPARING) { + if (mMediaPlayer != null) { + if (mMediaPlayer.suspend()) { + mTargetState = mCurrentState; + mCurrentState = STATE_SUSPENDED; + return; + } + } + }*/ + release(false); + } + + public void resume() { + /* + // HTTP streaming (with suspended status) will call mMediaPlayer->resume(), others will call openVideo() + if (mCurrentState == STATE_SUSPENDED) { + if (mSurfaceHolder != null) { + // The surface hasn't been destroyed + if (mMediaPlayer.resume()) { + mCurrentState = STATE_PREPARED; + if (mSeekWhenPrepared !=0) { + seekTo(mSeekWhenPrepared); + } + if (mTargetState == STATE_PLAYING) { + start(); + } + return; + } else { + // resume failed, so call release() before openVideo() + release(false); + } + } else { + // The surface has been destroyed, resume operation will be done after surface created + return; + } + }*/ + // HTTP streaming (with suspended status) will call mMediaPlayer->resume(), others will call openVideo() + if (mCurrentState == STATE_SUSPENDED) { + if (mSurfaceHolder != null) { + release(false); + } else { + // The surface has been destroyed, resume operation will be done after surface created + return; + } + } + openVideo(); + } + + @Override + public int getDuration() { + final boolean inPlaybackState = isInPlaybackState(); + if (LOG) { + Log.v(TAG, "getDuration() mDuration=" + mDuration + ", inPlaybackState=" + + inPlaybackState); + } + if (inPlaybackState) { + if (mDuration > 0) { + return mDuration; + } + // in case the duration is zero or smaller than zero for streaming + // video + int tempDuration = mMediaPlayer.getDuration(); + if (tempDuration <= 0) { + return mDuration; + } else { + mDuration = tempDuration; + } + + return mDuration; + } + return mDuration; + } + + @Override + public int getCurrentPosition() { + int position = 0; + if (mSeekWhenPrepared > 0) { + // if connecting error before seek, + // we should remember this position for retry + position = mSeekWhenPrepared; + // /M: if player not started, getCurrentPosition() will lead to NE. + } else if (isInPlaybackState()) { + position = mMediaPlayer.getCurrentPosition(); + } + if (LOG) { + Log.v(TAG, "getCurrentPosition() return " + position + + ", mSeekWhenPrepared=" + mSeekWhenPrepared); + } + return position; + } + + @Override + public void seekTo(int msec) { + if (isInPlaybackState()) { + mMediaPlayer.seekTo(msec); + mSeekWhenPrepared = 0; + } else { + mSeekWhenPrepared = msec; + } + } + + @Override + public boolean isPlaying() { + return isInPlaybackState() && mMediaPlayer.isPlaying(); + } + + @Override + public int getBufferPercentage() { + if (mMediaPlayer != null) { + return mCurrentBufferPercentage; + } + return 0; + } + + private boolean isInPlaybackState() { + return (mMediaPlayer != null && + mCurrentState != STATE_ERROR && + mCurrentState != STATE_IDLE && + mCurrentState != STATE_PREPARING && + mCurrentState != STATE_SUSPENDED); + } + + @Override + public boolean canPause() { + return mCanPause; + } + + @Override + public boolean canSeekBackward() { + return mCanSeekBack; + } + + @Override + public boolean canSeekForward() { + return mCanSeekForward; + } + + public boolean canSeek() { + return mCanSeek; + } + + @Override + public int getAudioSessionId() { + if (mAudioSession == 0) { + MediaPlayer foo = new MediaPlayer(); + mAudioSession = foo.getAudioSessionId(); + foo.release(); + } + return mAudioSession; + } + + // for duration displayed + public void setDuration(final int duration) { + if (LOG) { + Log.v(TAG, "setDuration(" + duration + ")"); + } + mDuration = (duration > 0 ? -duration : duration); + } + + public void setVideoURI(final Uri uri, final Map<String, String> headers, + final boolean hasGotMetaData) { + if (LOG) { + Log.v(TAG, "setVideoURI(" + uri + ", " + headers + ")"); + } + // clear the flags + mHasGotMetaData = hasGotMetaData; + setVideoURI(uri, headers); + } + + private void doPreparedIfReady(final MediaPlayer mp) { + if (LOG) { + Log.v(TAG, "doPreparedIfReady() mHasGotPreparedCallBack=" + mHasGotPreparedCallBack + + ", mHasGotMetaData=" + mHasGotMetaData + ", mNeedWaitLayout=" + + mNeedWaitLayout + + ", mCurrentState=" + mCurrentState); + } + if (mHasGotPreparedCallBack && mHasGotMetaData && !mNeedWaitLayout) { + doPrepared(mp); + } + } + + private void doPrepared(final MediaPlayer mp) { + if (LOG) { + Log.v(TAG, "doPrepared(" + mp + ") start"); + } + mCurrentState = STATE_PREPARED; + if (mOnPreparedListener != null) { + mOnPreparedListener.onPrepared(mMediaPlayer); + } + mVideoWidth = mp.getVideoWidth(); + mVideoHeight = mp.getVideoHeight(); + + // mSeekWhenPrepared may be changed after seekTo() + final int seekToPosition = mSeekWhenPrepared; + if (seekToPosition != 0) { + seekTo(seekToPosition); + } + if (mVideoWidth != 0 && mVideoHeight != 0) { + getHolder().setFixedSize(mVideoWidth, mVideoHeight); + } + + if (mTargetState == STATE_PLAYING) { + start(); + } + if (LOG) { + Log.v(TAG, "doPrepared() end video size: " + mVideoWidth + "," + mVideoHeight + + ", mTargetState=" + mTargetState + ", mCurrentState=" + mCurrentState); + } + } + + /** + * surfaceCreate will invoke openVideo after the activity stoped. Here set + * this flag to avoid openVideo after the activity stoped. + * + * @param resume + */ + public void setResumed(final boolean resume) { + if (LOG) { + Log.v(TAG, "setResumed(" + resume + ") mUri=" + mUri + ", mOnResumed=" + mOnResumed); + } + mOnResumed = resume; + } + + private void clearVideoInfo() { + if (LOG) { + Log.v(TAG, "clearVideoInfo()"); + } + mHasGotPreparedCallBack = false; + mNeedWaitLayout = false; + } + + public void clearSeek() { + if (LOG) { + Log.v(TAG, "clearSeek() mSeekWhenPrepared=" + mSeekWhenPrepared); + } + mSeekWhenPrepared = 0; + } + + public void clearDuration() { + if (LOG) { + Log.v(TAG, "clearDuration() mDuration=" + mDuration); + } + mDuration = -1; + } + + public boolean isTargetPlaying() { + if (LOG) { + Log.v(TAG, "isTargetPlaying() mTargetState=" + mTargetState); + } + return mTargetState == STATE_PLAYING; + } + + public void setScreenModeManager(final ScreenModeManager manager) { + mScreenManager = manager; + if (mScreenManager != null) { + mScreenManager.addListener(this); + } + if (LOG) { + Log.v(TAG, "setScreenModeManager(" + manager + ")"); + } + } + + @Override + public void onScreenModeChanged(final int newMode) { + this.requestLayout(); + } + + public void setOnVideoSizeChangedListener(final OnVideoSizeChangedListener l) { + mVideoSizeListener = l; + if (LOG) { + Log.i(TAG, "setOnVideoSizeChangedListener(" + l + ")"); + } + } + + public void setOnBufferingUpdateListener(final OnBufferingUpdateListener l) { + mOnBufferingUpdateListener = l; + if (LOG) { + Log.v(TAG, "setOnBufferingUpdateListener(" + l + ")"); + } + } +} diff --git a/src/org/codeaurora/gallery3d/video/DmReceiver.java b/src/org/codeaurora/gallery3d/video/DmReceiver.java new file mode 100644 index 000000000..616ce33d6 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/DmReceiver.java @@ -0,0 +1,65 @@ +package org.codeaurora.gallery3d.video; + +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.net.Uri; +import android.os.PowerManager; +import android.preference.PreferenceManager; +import android.provider.Settings.System; +import android.util.Log; + +public class DmReceiver extends BroadcastReceiver { + private static final String TAG = "DmReceiver"; + public static final String WRITE_SETTING_ACTION = "streaming.action.WRITE_SETTINGS"; + public static final String BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED"; + + private SharedPreferences mPref; + static final int STREAMING_CONNPROFILE_IO_HANDLER_TYPE = 1; + static final int STREAMING_MAX_UDP_PORT_IO_HANDLER_TYPE = 3; + static final int STREAMING_MIN_UDP_PORT_IO_HANDLER_TYPE = 4; + + @Override + public void onReceive(Context context, Intent intent) { + if (mPref == null) { + mPref = PreferenceManager.getDefaultSharedPreferences(context); + } + if (BOOT_COMPLETED.equals(intent.getAction())) { + String rtpMaxport = mPref.getString(SettingsActivity.PREFERENCE_RTP_MAXPORT, "65535"); + String rtpMinport = mPref.getString(SettingsActivity.PREFERENCE_RTP_MINPORT, "8192"); + String apn = mPref.getString(SettingsActivity.PREFERENCE_APN, "CMWAP"); + System.putString(context.getContentResolver(), + "streaming_max_udp_port", rtpMaxport); + System.putString(context.getContentResolver(), + "streaming_min_udp_port", rtpMinport); + System.putString(context.getContentResolver(), "apn", apn); + } else if (WRITE_SETTING_ACTION.equals(intent.getAction())) { + int valueType = intent.getIntExtra("type", 0); + String value = intent.getStringExtra("value"); + if (valueType == STREAMING_MAX_UDP_PORT_IO_HANDLER_TYPE) { + mPref.edit().putString(SettingsActivity.PREFERENCE_RTP_MAXPORT, + value).commit(); + System.putString(context.getContentResolver(), + "streaming_max_udp_port", value); + } else if (valueType == STREAMING_MIN_UDP_PORT_IO_HANDLER_TYPE) { + mPref.edit().putString(SettingsActivity.PREFERENCE_RTP_MINPORT, + value).commit(); + System.putString(context.getContentResolver(), + "streaming_min_udp_port", value); + } else if (valueType == STREAMING_CONNPROFILE_IO_HANDLER_TYPE) { + mPref.edit().putString(SettingsActivity.PREFERENCE_APN, + value).commit(); + System.putString(context.getContentResolver(), + "apn", value); + } + } + } +} diff --git a/src/org/codeaurora/gallery3d/video/ExtensionHelper.java b/src/org/codeaurora/gallery3d/video/ExtensionHelper.java new file mode 100755 index 000000000..b5156100b --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/ExtensionHelper.java @@ -0,0 +1,72 @@ +/* +Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +package org.codeaurora.gallery3d.video; + +import android.content.Context; + +import com.android.gallery3d.app.MovieActivity; +import com.android.gallery3d.R; + +import org.codeaurora.gallery3d.ext.ActivityHookerGroup; +import org.codeaurora.gallery3d.ext.IActivityHooker; + +import java.util.ArrayList; +import java.util.List; + +public class ExtensionHelper { + + public static IActivityHooker getHooker(final Context context) { + + final ActivityHookerGroup group = new ActivityHookerGroup(); + boolean loop = context.getResources().getBoolean(R.bool.loop); + boolean stereo = context.getResources().getBoolean(R.bool.stereo); + boolean streaming = context.getResources().getBoolean(R.bool.streaming); + boolean playlist = context.getResources().getBoolean(R.bool.playlist); + boolean speaker = context.getResources().getBoolean(R.bool.speaker); + + if (loop == true) { + group.addHooker(new LoopVideoHooker()); // add it for common feature. + } + if (stereo == true) { + group.addHooker(new StereoAudioHooker()); // add it for common feature. + } + if (streaming == true) { + group.addHooker(new StreamingHooker()); + group.addHooker(new BookmarkHooker()); + } + if (playlist == true) { + group.addHooker(new MovieListHooker()); // add it for common feature. + group.addHooker(new StepOptionSettingsHooker()); + } + if (speaker == true) { + group.addHooker(new SpeakerHooker()); + } + return group; + } +} diff --git a/src/org/codeaurora/gallery3d/video/IControllerRewindAndForward.java b/src/org/codeaurora/gallery3d/video/IControllerRewindAndForward.java new file mode 100644 index 000000000..1fc7f704d --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/IControllerRewindAndForward.java @@ -0,0 +1,35 @@ +/* + * 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 org.codeaurora.gallery3d.video; + +import com.android.gallery3d.app.ControllerOverlay; +import com.android.gallery3d.app.ControllerOverlay.Listener; + +///M: for CU rewind and forward +public interface IControllerRewindAndForward extends ControllerOverlay { + + interface IRewindAndForwardListener extends Listener { + void onStopVideo(); + void onRewind(); + void onForward(); + } + + boolean getPlayPauseEanbled(); + boolean getTimeBarEanbled(); + void setIListener(IRewindAndForwardListener listener); + void showControllerButtonsView(boolean canStop, boolean canRewind, boolean canForward); +} diff --git a/src/org/codeaurora/gallery3d/video/LoopVideoHooker.java b/src/org/codeaurora/gallery3d/video/LoopVideoHooker.java new file mode 100644 index 000000000..004254856 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/LoopVideoHooker.java @@ -0,0 +1,60 @@ +package org.codeaurora.gallery3d.video; + +import android.view.Menu; +import android.view.MenuItem; + +import com.android.gallery3d.R; +import org.codeaurora.gallery3d.ext.MovieUtils; + +public class LoopVideoHooker extends MovieHooker { + + private static final String TAG = "LoopVideoHooker"; + private static final boolean LOG = false; + private static final int MENU_LOOP = 1; + + private MenuItem mMenuLoopButton; + + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + super.onCreateOptionsMenu(menu); + mMenuLoopButton = menu.add(0, getMenuActivityId(MENU_LOOP), 0, R.string.loop); + return true; + } + + @Override + public boolean onPrepareOptionsMenu(final Menu menu) { + super.onPrepareOptionsMenu(menu); + updateLoop(); + return true; + } + + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + super.onOptionsItemSelected(item); + switch (getMenuOriginalId(item.getItemId())) { + case MENU_LOOP: + getPlayer().setLoop(!getPlayer().getLoop()); + return true; + default: + return false; + } + } + + private void updateLoop() { + if (mMenuLoopButton != null) { + if (MovieUtils.isLocalFile(getMovieItem().getUri(), getMovieItem().getMimeType())) { + mMenuLoopButton.setVisible(true); + } else { + mMenuLoopButton.setVisible(false); + } + final boolean newLoop = getPlayer().getLoop(); + if (newLoop) { + mMenuLoopButton.setTitle(R.string.single); + mMenuLoopButton.setIcon(R.drawable.ic_menu_unloop); + } else { + mMenuLoopButton.setTitle(R.string.loop); + mMenuLoopButton.setIcon(R.drawable.ic_menu_loop); + } + } + } +} diff --git a/src/org/codeaurora/gallery3d/video/MovieHooker.java b/src/org/codeaurora/gallery3d/video/MovieHooker.java new file mode 100644 index 000000000..a859d44a3 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/MovieHooker.java @@ -0,0 +1,44 @@ +package org.codeaurora.gallery3d.video; + +import android.util.Log; + +import org.codeaurora.gallery3d.ext.ActivityHooker; +import org.codeaurora.gallery3d.ext.IMovieItem; +import org.codeaurora.gallery3d.ext.IMoviePlayer; + +public class MovieHooker extends ActivityHooker { + + private static final String TAG = "MovieHooker"; + private static final boolean LOG = false; + private IMovieItem mMovieItem; + private IMoviePlayer mPlayer; + + @Override + public void setParameter(final String key, final Object value) { + super.setParameter(key, value); + if (LOG) { + Log.v(TAG, "setParameter(" + key + ", " + value + ")"); + } + if (value instanceof IMovieItem) { + mMovieItem = (IMovieItem) value; + onMovieItemChanged(mMovieItem); + } else if (value instanceof IMoviePlayer) { + mPlayer = (IMoviePlayer) value; + onMoviePlayerChanged(mPlayer); + } + } + + public IMovieItem getMovieItem() { + return mMovieItem; + } + + public IMoviePlayer getPlayer() { + return mPlayer; + } + + public void onMovieItemChanged(final IMovieItem item) { + } + + public void onMoviePlayerChanged(final IMoviePlayer player) { + } +} diff --git a/src/org/codeaurora/gallery3d/video/MovieListHooker.java b/src/org/codeaurora/gallery3d/video/MovieListHooker.java new file mode 100644 index 000000000..ee360ac78 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/MovieListHooker.java @@ -0,0 +1,116 @@ +package org.codeaurora.gallery3d.video; + +import android.os.Bundle; +import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; + +import com.android.gallery3d.R; +import org.codeaurora.gallery3d.ext.IMovieItem; +import org.codeaurora.gallery3d.ext.IMovieList; +import org.codeaurora.gallery3d.ext.IMovieListLoader; +import org.codeaurora.gallery3d.ext.IMovieListLoader.LoaderListener; +import org.codeaurora.gallery3d.ext.MovieListLoader; + +public class MovieListHooker extends MovieHooker implements LoaderListener { + private static final String TAG = "MovieListHooker"; + private static final boolean LOG = false; + + private static final int MENU_NEXT = 1; + private static final int MENU_PREVIOUS = 2; + + private MenuItem mMenuNext; + private MenuItem mMenuPrevious; + + private IMovieListLoader mMovieLoader; + private IMovieList mMovieList; + + @Override + public void onCreate(final Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mMovieLoader = new MovieListLoader(); + mMovieLoader.fillVideoList(getContext(), getIntent(), this, getMovieItem()); + } + @Override + public void onDestroy() { + super.onDestroy(); + mMovieLoader.cancelList(); + } + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + super.onCreateOptionsMenu(menu); + if (mMovieList != null) { //list should be filled + if (mMovieLoader != null && mMovieLoader.isEnabledVideoList(getIntent())) { + mMenuPrevious = menu.add(0, getMenuActivityId(MENU_PREVIOUS), 0, R.string.previous); + mMenuNext = menu.add(0, getMenuActivityId(MENU_NEXT), 0, R.string.next); + } + } + return true; + } + @Override + public boolean onPrepareOptionsMenu(final Menu menu) { + super.onPrepareOptionsMenu(menu); + updatePrevNext(); + return true; + } + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + super.onOptionsItemSelected(item); + switch(getMenuOriginalId(item.getItemId())) { + case MENU_PREVIOUS: + if (mMovieList == null) { + return false; + } + getPlayer().startNextVideo(mMovieList.getPrevious(getMovieItem())); + return true; + case MENU_NEXT: + if (mMovieList == null) { + return false; + } + getPlayer().startNextVideo(mMovieList.getNext(getMovieItem())); + return true; + default: + return false; + } + } + + @Override + public void onMovieItemChanged(final IMovieItem item) { + super.onMovieItemChanged(item); + updatePrevNext(); + } + + private void updatePrevNext() { + if (LOG) { + Log.v(TAG, "updatePrevNext()"); + } + if (mMovieList != null && mMenuPrevious != null && mMenuNext != null) { + if (mMovieList.isFirst(getMovieItem()) && mMovieList.isLast(getMovieItem())) { //only one movie + mMenuNext.setVisible(false); + mMenuPrevious.setVisible(false); + } else { + mMenuNext.setVisible(true); + mMenuPrevious.setVisible(true); + } + if (mMovieList.isFirst(getMovieItem())) { + mMenuPrevious.setEnabled(false); + } else { + mMenuPrevious.setEnabled(true); + } + if (mMovieList.isLast(getMovieItem())) { + mMenuNext.setEnabled(false); + } else { + mMenuNext.setEnabled(true); + } + } + } + + @Override + public void onListLoaded(final IMovieList movieList) { + mMovieList = movieList; + getContext().invalidateOptionsMenu(); + if (LOG) { + Log.v(TAG, "onListLoaded() " + (mMovieList != null ? mMovieList.size() : "null")); + } + } +} diff --git a/src/org/codeaurora/gallery3d/video/MovieTitleHelper.java b/src/org/codeaurora/gallery3d/video/MovieTitleHelper.java new file mode 100644 index 000000000..4f23e81b8 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/MovieTitleHelper.java @@ -0,0 +1,108 @@ +package org.codeaurora.gallery3d.video; + +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteException; +import android.net.Uri; +import android.provider.MediaStore; +import android.provider.OpenableColumns; +import android.util.Log; + + +import java.io.File; + +public class MovieTitleHelper { + private static final String TAG = "MovieTitleHelper"; + private static final boolean LOG = false; + + public static String getTitleFromMediaData(final Context context, final Uri uri) { + String title = null; + Cursor cursor = null; + try { + String data = Uri.decode(uri.toString()); + data = data.replaceAll("'", "''"); + final String where = "_data LIKE '%" + data.replaceFirst("file:///", "") + "'"; + cursor = context.getContentResolver().query( + MediaStore.Video.Media.EXTERNAL_CONTENT_URI, + new String[] { + OpenableColumns.DISPLAY_NAME + }, where, null, null); + if (LOG) { + Log.v( + TAG, + "setInfoFromMediaData() cursor=" + + (cursor == null ? "null" : cursor.getCount())); + } + if (cursor != null && cursor.moveToFirst()) { + title = cursor.getString(0); + } + } catch (final SQLiteException ex) { + ex.printStackTrace(); + } finally { + if (cursor != null) { + cursor.close(); + } + } + if (LOG) { + Log.v(TAG, "setInfoFromMediaData() return " + title); + } + return title; + } + + public static String getTitleFromDisplayName(final Context context, final Uri uri) { + String title = null; + Cursor cursor = null; + try { + cursor = context.getContentResolver().query(uri, + new String[] { + OpenableColumns.DISPLAY_NAME + }, null, null, null); + if (cursor != null && cursor.moveToFirst()) { + title = cursor.getString(0); + } + } catch (final SQLiteException ex) { + ex.printStackTrace(); + } finally { + if (cursor != null) { + cursor.close(); + } + } + if (LOG) { + Log.v(TAG, "getTitleFromDisplayName() return " + title); + } + return title; + } + + public static String getTitleFromUri(final Uri uri) { + final String title = Uri.decode(uri.getLastPathSegment()); + if (LOG) { + Log.v(TAG, "getTitleFromUri() return " + title); + } + return title; + } + + public static String getTitleFromData(final Context context, final Uri uri) { + String title = null; + Cursor cursor = null; + try { + cursor = context.getContentResolver().query(uri, + new String[] { + "_data" + }, null, null, null); + if (cursor != null && cursor.moveToFirst()) { + final File file = new File(cursor.getString(0)); + title = file.getName(); + } + } catch (final SQLiteException ex) { + ex.printStackTrace(); + } finally { + if (cursor != null) { + cursor.close(); + } + } + if (LOG) { + Log.v(TAG, "getTitleFromData() return " + title); + } + return title; + } +} diff --git a/src/org/codeaurora/gallery3d/video/ScreenModeManager.java b/src/org/codeaurora/gallery3d/video/ScreenModeManager.java new file mode 100644 index 000000000..a1c04c69f --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/ScreenModeManager.java @@ -0,0 +1,117 @@ +package org.codeaurora.gallery3d.video; + +import android.util.Log; + +import java.util.ArrayList; + +public class ScreenModeManager { + private static final String TAG = "ScreenModeManager"; + private static final boolean LOG = false; + //support screen mode. + public static final int SCREENMODE_BIGSCREEN = 1; + public static final int SCREENMODE_FULLSCREEN = 2; + public static final int SCREENMODE_CROPSCREEN = 4; + public static final int SCREENMODE_ALL = 7; + + private int mScreenMode = SCREENMODE_BIGSCREEN; + private int mScreenModes = SCREENMODE_ALL; + + /** + * Enable specified screen mode list. + * The screen mode's value determines the order of being shown. + * <br>you can enable three screen modes by setting screenModes = + * {@link #SCREENMODE_BIGSCREEN} | + * {@link #SCREENMODE_FULLSCREEN} | + * {@link #SCREENMODE_CROPSCREEN} or + * just enable two screen modes by setting screenModes = + * {@link #SCREENMODE_BIGSCREEN} | + * {@link #SCREENMODE_CROPSCREEN}. + * <br>If current screen mode is the last one of the ordered list, + * then the next screen mode will be the first one of the ordered list. + * @param screenModes enabled screen mode list. + */ + public void setScreenModes(final int screenModes) { + mScreenModes = (SCREENMODE_BIGSCREEN & screenModes) + | (SCREENMODE_FULLSCREEN & screenModes) + | (SCREENMODE_CROPSCREEN & screenModes); + if ((screenModes & SCREENMODE_ALL) == 0) { + mScreenModes = SCREENMODE_ALL; + Log.w(TAG, "wrong screenModes=" + screenModes + ". use default value " + SCREENMODE_ALL); + } + if (LOG) { + Log.v(TAG, "enableScreenMode(" + screenModes + ") mScreenModes=" + mScreenModes); + } + } + + /** + * Get the all screen modes of media controller. + * <br><b>Note:</b> it is not the video's current screen mode. + * @return the current screen modes. + */ + public int getScreenModes() { + return mScreenModes; + } + + public void setScreenMode(final int curScreenMode) { + if (LOG) { + Log.v(TAG, "setScreenMode(" + curScreenMode + ")"); + } + mScreenMode = curScreenMode; + for (final ScreenModeListener listener : mListeners) { + listener.onScreenModeChanged(curScreenMode); + } + } + + public int getScreenMode() { + if (LOG) { + Log.v(TAG, "getScreenMode() return " + mScreenMode); + } + return mScreenMode; + } + + public int getNextScreenMode() { + int mode = getScreenMode(); + mode <<= 1; + if ((mode & mScreenModes) == 0) { + //not exist, find the right one + if (mode > mScreenModes) { + mode = 1; + } + while ((mode & mScreenModes) == 0) { + mode <<= 1; + if (mode > mScreenModes) { + throw new RuntimeException("wrong screen mode = " + mScreenModes); + } + } + } + if (LOG) { + Log.v(TAG, "getNextScreenMode() = " + mode); + } + return mode; + } + + private final ArrayList<ScreenModeListener> mListeners = new ArrayList<ScreenModeListener>(); + public void addListener(final ScreenModeListener l) { + if (!mListeners.contains(l)) { + mListeners.add(l); + } + if (LOG) { + Log.v(TAG, "addListener(" + l + ")"); + } + } + + public void removeListener(final ScreenModeListener l) { + mListeners.remove(l); + if (LOG) { + Log.v(TAG, "removeListener(" + l + ")"); + } + } + + public void clear() { + mListeners.clear(); + } + + public interface ScreenModeListener { + void onScreenModeChanged(int newMode); + } +} diff --git a/src/org/codeaurora/gallery3d/video/SettingsActivity.java b/src/org/codeaurora/gallery3d/video/SettingsActivity.java new file mode 100755 index 000000000..3d7fac573 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/SettingsActivity.java @@ -0,0 +1,308 @@ +package org.codeaurora.gallery3d.video; + +import android.app.ActionBar; +import android.app.Activity; +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.os.SystemProperties; +import android.preference.CheckBoxPreference; +import android.preference.EditTextPreference; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceCategory; +import android.preference.RingtonePreference; +import android.preference.PreferenceScreen; +import android.provider.ContactsContract; +import android.provider.Settings; +import android.provider.Settings.System; +import android.provider.Telephony; +import android.telephony.TelephonyManager; +import android.text.method.DigitsKeyListener; +import android.util.Log; +import android.view.KeyEvent; +import android.view.MenuItem; +import com.android.gallery3d.R; + +import java.util.ArrayList; + +public class SettingsActivity extends PreferenceActivity { + + private static final String LOG_TAG = "SettingsActivity"; + + public static final String PREFERENCE_RTP_MINPORT = "rtp_min_port"; + public static final String PREFERENCE_RTP_MAXPORT = "rtp_max_port"; + private static final String PREFERENCE_KEEP_ALIVE_INTERVAL_SECOND = "keep_alive_interval_second"; + private static final String PREFERENCE_CACHE_MIN_SIZE = "cache_min_size"; + private static final String PREFERENCE_CACHE_MAX_SIZE = "cache_max_size"; + public static final String PREFERENCE_BUFFER_SIZE = "buffer_size"; + public static final String PREFERENCE_APN = "apn"; + private static final String PACKAGE_NAME = "com.android.settings"; + + private static final int DEFAULT_RTP_MINPORT = 8192; + private static final int DEFAULT_RTP_MAXPORT = 65535; + private static final int DEFAULT_CACHE_MIN_SIZE = 4 * 1024 * 1024; + private static final int DEFAULT_CACHE_MAX_SIZE = 20 * 1024 * 1024; + private static final int DEFAULT_KEEP_ALIVE_INTERVAL_SECOND = 15; + + private static final int RTP_MIN_PORT = 1; + private static final int RTP_MAX_PORT = 2; + private static final int BUFFER_SIZE = 3; + + private SharedPreferences mPref; + private EditTextPreference mRtpMinPort; + private EditTextPreference mRtpMaxPort; + private EditTextPreference mBufferSize; + private PreferenceScreen mApn; + + private static final int SELECT_APN = 1; + public static final String PREFERRED_APN_URI = "content://telephony/carriers/preferapn"; + private static final Uri PREFERAPN_URI = Uri.parse(PREFERRED_APN_URI); + private static final int COLUMN_ID_INDEX = 0; + private static final int NAME_INDEX = 1; + private static final String RTP_PORTS_PROPERTY_NAME = "persist.env.media.rtp-ports"; + private static final String CACHE_PROPERTY_NAME = "persist.env.media.cache-params"; + + private boolean mUseNvOperatorForEhrpd = SystemProperties.getBoolean( + "persist.radio.use_nv_for_ehrpd", false); + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.rtsp_settings_preferences); + + mPref = getPreferenceScreen().getSharedPreferences(); + mRtpMinPort = (EditTextPreference) findPreference(PREFERENCE_RTP_MINPORT); + mRtpMaxPort = (EditTextPreference) findPreference(PREFERENCE_RTP_MAXPORT); + mBufferSize = (EditTextPreference) findPreference(PREFERENCE_BUFFER_SIZE); + mApn = (PreferenceScreen) findPreference(PREFERENCE_APN); + + setPreferenceListener(RTP_MIN_PORT, mRtpMinPort); + setPreferenceListener(RTP_MAX_PORT, mRtpMaxPort); + setPreferenceListener(BUFFER_SIZE, mBufferSize); + setApnListener(); + + ActionBar ab = getActionBar(); + ab.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + ab.setDisplayHomeAsUpEnabled(true); + ab.setTitle(R.string.setting); + } + + private String getApnKey() { + // to find default key + String key = null; + Cursor cursor = getContentResolver().query(PREFERAPN_URI, new String[] { + "_id" + }, null, null, Telephony.Carriers.DEFAULT_SORT_ORDER); + if (cursor.getCount() > 0 && cursor.moveToFirst()) { + key = cursor.getString(COLUMN_ID_INDEX); + Log.v("settingActivty", "default apn key = " + key); + } + cursor.close(); + return key; + } + + private String getApnName(String key) { + String name = null; + // to find default proxy + String where = getOperatorNumericSelection(); + + Cursor cursor = getContentResolver().query(Telephony.Carriers.CONTENT_URI, new String[] { + "_id", "name", "apn", "type" + }, where, null, Telephony.Carriers.DEFAULT_SORT_ORDER); + + while (cursor != null && cursor.moveToNext()) { + String curKey = cursor.getString(cursor.getColumnIndex("_id")); + String curName = cursor.getString(cursor.getColumnIndex("name")); + if (curKey.equals(key)) { + Log.d("rtsp", "getDefaultApnName, find, key=" + curKey + ",curName=" + curName); + name = curName; + break; + } + } + + if (cursor != null) { + cursor.close(); + } + return name; + + } + + private String getDefaultApnName() { + return getApnName(getApnKey()); + } + + private String getSelectedApnKey() { + String key = null; + + Cursor cursor = getContentResolver().query(PREFERAPN_URI, new String[] { + "_id", "name" + }, null, null, null); + if (cursor.getCount() > 0) { + cursor.moveToFirst(); + key = cursor.getString(NAME_INDEX); + } + cursor.close(); + + Log.w("rtsp", "getSelectedApnKey key = " + key); + if (null == key) + return new String("null"); + return key; + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == SELECT_APN) { + setResult(resultCode); + finish(); + Log.w(LOG_TAG, "onActivityResult requestCode = " + requestCode); + } + + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // TODO Auto-generated method stub + if (item.getItemId() == android.R.id.home) { + finish(); + } + return true; + } + + private String getOperatorNumericSelection() { + String[] mccmncs = getOperatorNumeric(); + String where; + where = (mccmncs[0] != null) ? "numeric=\"" + mccmncs[0] + "\"" : ""; + where += (mccmncs[1] != null) ? " or numeric=\"" + mccmncs[1] + "\"" : ""; + Log.d(LOG_TAG, "getOperatorNumericSelection: " + where); + return where; + } + + private String[] getOperatorNumeric() { + ArrayList<String> result = new ArrayList<String>(); + String mccMncFromSim = null; + if (mUseNvOperatorForEhrpd) { + String mccMncForEhrpd = SystemProperties.get("ro.cdma.home.operator.numeric", null); + if (mccMncForEhrpd != null && mccMncForEhrpd.length() > 0) { + result.add(mccMncForEhrpd); + } + } + + mccMncFromSim = TelephonyManager.getDefault().getSimOperator(); + + if (mccMncFromSim != null && mccMncFromSim.length() > 0) { + result.add(mccMncFromSim); + } + return result.toArray(new String[2]); + } + + private void enableRtpPortSetting() { + final String rtpMinPortStr = mPref.getString(PREFERENCE_RTP_MINPORT, + Integer.toString(DEFAULT_RTP_MINPORT)); + final String rtpMaxPortStr = mPref.getString(PREFERENCE_RTP_MAXPORT, + Integer.toString(DEFAULT_RTP_MAXPORT)); + // System property format: "rtpMinPort/rtpMaxPort" + final String propertyValue = rtpMinPortStr + "/" + rtpMaxPortStr; + Log.v(LOG_TAG, "set system property " + RTP_PORTS_PROPERTY_NAME + " : " + propertyValue); + SystemProperties.set(RTP_PORTS_PROPERTY_NAME, propertyValue); + } + + private void enableBufferSetting() { + final String bufferSizeStr = mPref.getString(PREFERENCE_BUFFER_SIZE, + Integer.toString(DEFAULT_CACHE_MAX_SIZE)); + final int cacheMaxSize; + final String ACTION_NAME = "org.codeaurora.gallery3d.video.STREAMING_SETTINGS_ENABLER"; + try { + cacheMaxSize = Integer.valueOf(bufferSizeStr); + } catch (NumberFormatException e) { + Log.e(LOG_TAG, "Failed to parse cache max size"); + return; + } + // System property format: "minCacheSizeKB/maxCacheSizeKB/keepAliveIntervalSeconds" + final String propertyValue = (DEFAULT_CACHE_MIN_SIZE / 1024) + "/" + + (cacheMaxSize / 1024) + "/" + DEFAULT_KEEP_ALIVE_INTERVAL_SECOND; + Log.v(LOG_TAG, "set system property " + CACHE_PROPERTY_NAME + " : " + propertyValue); + SystemProperties.set(CACHE_PROPERTY_NAME, propertyValue); + } + + private void setPreferenceListener(final int which, final EditTextPreference etp) { + + final String DIGITS_ACCEPTABLE = "0123456789"; + String summaryStr = ""; + String preferStr = ""; + + switch (which) { + case RTP_MIN_PORT: + preferStr = mPref.getString(PREFERENCE_RTP_MINPORT, + Integer.toString(DEFAULT_RTP_MINPORT)); + summaryStr = "streaming_min_udp_port"; + break; + case RTP_MAX_PORT: + preferStr = mPref.getString(PREFERENCE_RTP_MAXPORT, + Integer.toString(DEFAULT_RTP_MAXPORT)); + summaryStr = "streaming_max_udp_port"; + break; + case BUFFER_SIZE: + preferStr = mPref.getString(PREFERENCE_BUFFER_SIZE, + Integer.toString(DEFAULT_CACHE_MAX_SIZE)); + break; + default: + return; + + } + + final String summaryString = summaryStr; + etp.getEditText().setKeyListener(DigitsKeyListener.getInstance(DIGITS_ACCEPTABLE)); + etp.setSummary(preferStr); + etp.setText(preferStr); + etp.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + public boolean onPreferenceChange(Preference preference, Object newValue) { + final String summary = newValue.toString(); + final int value; + try { + value = Integer.valueOf(summary); + } catch (NumberFormatException e) { + Log.e(LOG_TAG, "NumberFormatException"); + return false; + } + etp.setSummary(summary); + etp.setText(summary); + Log.d(LOG_TAG, "z66/z82 summary = " + summary); + if(which == RTP_MIN_PORT || which == RTP_MAX_PORT) { + System.putString(getContentResolver(), summaryString, summary); + enableRtpPortSetting(); + } else { + enableBufferSetting(); + } + return true; + } + }); + + } + + private void setApnListener() { + final String SUBSCRIPTION_KEY = "subscription"; + mApn.setSummary(getDefaultApnName()); + mApn.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + public boolean onPreferenceClick(Preference preference) { + Intent intent = new Intent(Settings.ACTION_APN_SETTINGS); + int subscription = 0; + try { + subscription = Settings.Global.getInt(SettingsActivity.this.getContentResolver(), + Settings.Global.MULTI_SIM_DATA_CALL_SUBSCRIPTION); + } catch (Exception e) { + Log.d("SettingActivity", "Can't get subscription for Exception: " + e); + } finally { + intent.putExtra(SUBSCRIPTION_KEY, subscription); + } + startActivityForResult(intent, SELECT_APN); + return true; + } + }); + } +} diff --git a/src/org/codeaurora/gallery3d/video/SpeakerHooker.java b/src/org/codeaurora/gallery3d/video/SpeakerHooker.java new file mode 100644 index 000000000..9bf534872 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/SpeakerHooker.java @@ -0,0 +1,210 @@ +/* +Copyright (c) 2014, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +package org.codeaurora.gallery3d.video; + +import android.view.Menu; +import android.view.MenuItem; +import android.widget.Toast; + +import android.bluetooth.BluetoothClass; +import android.bluetooth.BluetoothDevice; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.media.AudioManager; +import android.media.AudioSystem; +import android.os.Bundle; + +import com.android.gallery3d.R; + +public class SpeakerHooker extends MovieHooker { + + private static final int MENU_SPEAKER = 1; + + private AudioManager mAudioManager; + + private MenuItem mMenuSpeakerButton; + + private boolean mIsHeadsetOn = false; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + initAudioManager(); + } + + private void initAudioManager() { + if (mAudioManager == null) { + mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); + } + } + + @Override + public void onDestroy() { + turnSpeakerOff(); + super.onDestroy(); + } + + @Override + public void onResume() { + super.onResume(); + registerHeadSetReceiver(); + } + + private void registerHeadSetReceiver() { + final IntentFilter intentFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); + intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); + intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); + intentFilter.addAction(AudioManager.ACTION_AUDIO_BECOMING_NOISY); + getContext().registerReceiver(mHeadSetReceiver, intentFilter); + } + + @Override + public void onPause() { + unregisterHeadSetReceiver(); + super.onPause(); + } + + private void unregisterHeadSetReceiver() { + try { + getContext().unregisterReceiver(mHeadSetReceiver); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private final BroadcastReceiver mHeadSetReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + final String action = intent.getAction(); + if (mAudioManager == null) { + initAudioManager(); + } + if (action.equals(Intent.ACTION_HEADSET_PLUG)) { + mIsHeadsetOn = (intent.getIntExtra("state", 0) == 1) + || mAudioManager.isBluetoothA2dpOn(); + } else if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED) + || action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) { + final int deviceClass = ((BluetoothDevice) + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)) + .getBluetoothClass().getDeviceClass(); + if ((deviceClass == BluetoothClass.Device.AUDIO_VIDEO_HEADPHONES) + || (deviceClass == BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET)) { + mIsHeadsetOn = action.equals(BluetoothDevice.ACTION_ACL_CONNECTED) + || mAudioManager.isWiredHeadsetOn(); + } + } else if (action.equals(AudioManager.ACTION_AUDIO_BECOMING_NOISY)) { + mIsHeadsetOn = false; + } + updateSpeakerButton(); + if (!mIsHeadsetOn) { + turnSpeakerOff(); + } + } + }; + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + super.onCreateOptionsMenu(menu); + mMenuSpeakerButton = menu.add(0, getMenuActivityId(MENU_SPEAKER), 0, R.string.speaker_on); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + super.onOptionsItemSelected(item); + switch (getMenuOriginalId(item.getItemId())) { + case MENU_SPEAKER: + changeSpeakerState(); + return true; + default: + return false; + } + } + + private void changeSpeakerState() { + if (isSpeakerOn()) { + turnSpeakerOff(); + } else { + if (mIsHeadsetOn) { + turnSpeakerOn(); + } else { + Toast.makeText(getContext(), getContext().getString(R.string.speaker_need_headset), + Toast.LENGTH_SHORT).show(); + } + } + updateSpeakerButton(); + } + + private void turnSpeakerOn() { + if (mAudioManager == null) { + initAudioManager(); + } + mAudioManager.setSpeakerphoneOn(true); + AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, + AudioSystem.FORCE_SPEAKER); + } + + private void turnSpeakerOff() { + if (mAudioManager == null) { + initAudioManager(); + } + AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, + AudioSystem.FORCE_NONE); + mAudioManager.setSpeakerphoneOn(false); + } + + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + super.onPrepareOptionsMenu(menu); + updateSpeakerButton(); + return true; + } + + private void updateSpeakerButton() { + if (mMenuSpeakerButton != null) { + if (isSpeakerOn()) { + mMenuSpeakerButton.setTitle(R.string.speaker_off); + } else { + mMenuSpeakerButton.setTitle(R.string.speaker_on); + } + } + } + + private boolean isSpeakerOn() { + boolean isSpeakerOn = false; + if (mAudioManager == null) { + initAudioManager(); + } + isSpeakerOn = mAudioManager.isSpeakerphoneOn(); + return isSpeakerOn; + } + +} diff --git a/src/org/codeaurora/gallery3d/video/StepOptionDialogFragment.java b/src/org/codeaurora/gallery3d/video/StepOptionDialogFragment.java new file mode 100644 index 000000000..50bd8a669 --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/StepOptionDialogFragment.java @@ -0,0 +1,83 @@ +package org.codeaurora.gallery3d.video; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.DialogInterface; +import android.os.Bundle; + +/** M: use DialogFragment to show Dialog */ +public class StepOptionDialogFragment extends DialogFragment implements + DialogInterface.OnClickListener{ + + private static final String KEY_ITEM_ARRAY = "itemArray"; + private static final String KEY_TITLE = "title"; + private static final String KEY_DEFAULT_SELECT = "nowSelect"; + private DialogInterface.OnClickListener mClickListener = null; + + /** + * M: create a instance of SelectDialogFragment + * + * @param itemArrayID + * the resource id array of strings that show in list + * @param sufffixArray + * the suffix array at the right of list item + * @param titleID + * the resource id of title string + * @param nowSelect + * the current select item index + * @return the instance of SelectDialogFragment + */ + public static StepOptionDialogFragment newInstance(int[] itemArrayID, + int titleID, int nowSelect) { + StepOptionDialogFragment frag = new StepOptionDialogFragment(); + Bundle args = new Bundle(); + args.putIntArray(KEY_ITEM_ARRAY, itemArrayID); + args.putInt(KEY_TITLE, titleID); + args.putInt(KEY_DEFAULT_SELECT, nowSelect); + frag.setArguments(args); + return frag; + } + + @Override + /** + * M: create a select dialog + */ + public Dialog onCreateDialog(Bundle savedInstanceState) { + Bundle args = getArguments(); + final String title = getString(args.getInt(KEY_TITLE)); + final int[] itemArrayID = args.getIntArray(KEY_ITEM_ARRAY); + int arraySize = itemArrayID.length; + CharSequence[] itemArray = new CharSequence[arraySize]; + for (int i = 0; i < arraySize; i++) { + itemArray[i] = getString(itemArrayID[i]); + } + + AlertDialog.Builder builder = null; + int nowSelect = args.getInt(KEY_DEFAULT_SELECT); + builder = new AlertDialog.Builder(getActivity()); + builder.setTitle(title).setSingleChoiceItems(itemArray, nowSelect, this) + .setNegativeButton(getString(android.R.string.cancel), null); + return builder.create(); + } + + @Override + /** + * M: the process of select an item + */ + public void onClick(DialogInterface arg0, int arg1) { + if (null != mClickListener) { + mClickListener.onClick(arg0, arg1); + } + } + + /** + * M: set listener of click items + * + * @param listener + * the listener to be set + */ + public void setOnClickListener(DialogInterface.OnClickListener listener) { + mClickListener = listener; + } +}
\ No newline at end of file diff --git a/src/org/codeaurora/gallery3d/video/StepOptionSettingsHooker.java b/src/org/codeaurora/gallery3d/video/StepOptionSettingsHooker.java new file mode 100644 index 000000000..eff8057bd --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/StepOptionSettingsHooker.java @@ -0,0 +1,41 @@ +package org.codeaurora.gallery3d.video; + +import android.content.Intent; +import android.view.Menu; +import android.view.MenuItem; + +import com.android.gallery3d.R; +import com.android.gallery3d.app.MovieActivity; +import org.codeaurora.gallery3d.ext.ActivityHooker; +import org.codeaurora.gallery3d.video.VideoSettingsActivity; + +public class StepOptionSettingsHooker extends ActivityHooker { + private static final int MENU_STEP_OPTION_SETTING = 1; + private MenuItem mMenuStepOption; + + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + super.onCreateOptionsMenu(menu); + mMenuStepOption = menu.add(0, getMenuActivityId(MENU_STEP_OPTION_SETTING), 0, R.string.settings); + return true; + } + @Override + public boolean onPrepareOptionsMenu(final Menu menu) { + super.onPrepareOptionsMenu(menu); + return true; + } + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + super.onOptionsItemSelected(item); + switch(getMenuOriginalId(item.getItemId())) { + case MENU_STEP_OPTION_SETTING: + //start activity + Intent mIntent = new Intent(); + mIntent.setClass(getContext(), VideoSettingsActivity.class); + getContext().startActivity(mIntent); + return true; + default: + return false; + } + } +}
\ No newline at end of file diff --git a/src/org/codeaurora/gallery3d/video/StereoAudioHooker.java b/src/org/codeaurora/gallery3d/video/StereoAudioHooker.java new file mode 100755 index 000000000..cbf2f357a --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/StereoAudioHooker.java @@ -0,0 +1,118 @@ +package org.codeaurora.gallery3d.video; + +import android.content.Context; +import android.media.AudioManager; +import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; + +import com.android.gallery3d.R; + +public class StereoAudioHooker extends MovieHooker { + private static final String TAG = "StereoAudioHooker"; + private static final boolean LOG = false; + + private static final int MENU_STEREO_AUDIO = 1; + private MenuItem mMenuStereoAudio; + + private static final String KEY_STEREO = "EnableStereoOutput"; + private boolean mSystemStereoAudio; + private boolean mCurrentStereoAudio; + private boolean mIsInitedStereoAudio; + private AudioManager mAudioManager; + + @Override + public void onStart() { + super.onStart(); + enableStereoAudio(); + } + + @Override + public void onStop() { + super.onStop(); + restoreStereoAudio(); + } + + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + super.onCreateOptionsMenu(menu); + mMenuStereoAudio = menu.add(0, getMenuActivityId(MENU_STEREO_AUDIO), 0, + R.string.single_track); + return true; + } + + @Override + public boolean onPrepareOptionsMenu(final Menu menu) { + super.onPrepareOptionsMenu(menu); + updateStereoAudioIcon(); + return true; + } + + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + super.onOptionsItemSelected(item); + if(getMenuOriginalId(item.getItemId()) == MENU_STEREO_AUDIO) { + mCurrentStereoAudio = !mCurrentStereoAudio; + setStereoAudio(mCurrentStereoAudio); + return true; + } + return false; + } + + private boolean getStereoAudio() { + boolean isstereo = false; + if (mAudioManager == null) { + mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); + } + final String stereo = mAudioManager.getParameters(KEY_STEREO); + final String key = KEY_STEREO + "=1"; + if (stereo != null && stereo.indexOf(key) > -1) { + isstereo = true; + } else { + isstereo = false; + } + if (LOG) { + Log.v(TAG, "getStereoAudio() isstereo=" + isstereo + ", stereo=" + stereo + + ", key=" + key); + } + return isstereo; + } + + private void setStereoAudio(final boolean flag) { + final String value = KEY_STEREO + "=" + (flag ? "1" : "0"); + if (mAudioManager == null) { + mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); + } + mAudioManager.setParameters(value); + if (LOG) { + Log.v(TAG, "setStereoAudio(" + flag + ") value=" + value); + } + } + + private void updateStereoAudioIcon() { + if (mMenuStereoAudio != null) { + mMenuStereoAudio.setTitle(mCurrentStereoAudio?R.string.single_track:R.string.stereo); + mMenuStereoAudio.setIcon(mCurrentStereoAudio?R.drawable.ic_menu_single_track:R.drawable.ic_menu_stereo); + } + } + + private void enableStereoAudio() { + if (LOG) { + Log.v(TAG, "enableStereoAudio() mIsInitedStereoAudio=" + mIsInitedStereoAudio + + ", mCurrentStereoAudio=" + mCurrentStereoAudio); + } + mSystemStereoAudio = getStereoAudio(); + if (!mIsInitedStereoAudio) { + mCurrentStereoAudio = mSystemStereoAudio; + mIsInitedStereoAudio = true; + } else { + // restore old stereo type + setStereoAudio(mCurrentStereoAudio); + } + updateStereoAudioIcon(); + } + + private void restoreStereoAudio() { + setStereoAudio(mSystemStereoAudio); + } +} diff --git a/src/org/codeaurora/gallery3d/video/StreamingHooker.java b/src/org/codeaurora/gallery3d/video/StreamingHooker.java new file mode 100755 index 000000000..55735f44c --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/StreamingHooker.java @@ -0,0 +1,86 @@ +package org.codeaurora.gallery3d.video; + +import android.content.ActivityNotFoundException; +import android.content.Intent; +import android.net.Uri; +import android.provider.Browser; +import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import android.widget.Toast; + +import com.android.gallery3d.R; +import org.codeaurora.gallery3d.ext.MovieUtils; + +public class StreamingHooker extends MovieHooker { + private static final String TAG = "StreamingHooker"; + private static final boolean LOG = false; + + private static final String ACTION_STREAMING = "org.codeaurora.settings.streaming"; + private static final int MENU_INPUT_URL = 1; + private static final int MENU_SETTINGS = 2; + private static final int MENU_DETAIL = 3; + + public static final String KEY_LOGO_BITMAP = "logo-bitmap"; + + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + super.onCreateOptionsMenu(menu); + // when in rtsp streaming type, generally it only has one uri. + menu.add(0, getMenuActivityId(MENU_INPUT_URL), 0, R.string.input_url); + menu.add(0, getMenuActivityId(MENU_SETTINGS), 0, R.string.streaming_settings); + return true; + } + + @Override + public boolean onPrepareOptionsMenu(final Menu menu) { + super.onPrepareOptionsMenu(menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + super.onOptionsItemSelected(item); + switch (getMenuOriginalId(item.getItemId())) { + case MENU_INPUT_URL: + gotoInputUrl(); + return true; + case MENU_SETTINGS: + gotoSettings(); + return true; + default: + return false; + } + } + + private void gotoInputUrl() { + final String APN_NAME = getClass().getName(); + final String URI_STR = "about:blank"; + final String EXTRA_NAME = "inputUrl"; + + final Intent intent = new Intent(); + intent.setAction(Intent.ACTION_VIEW); + intent.setData(Uri.parse(URI_STR)); + intent.putExtra(EXTRA_NAME, true); + intent.putExtra(Browser.EXTRA_APPLICATION_ID, APN_NAME); + + try { + getContext().startActivity(intent); + } catch (ActivityNotFoundException e) { + Toast.makeText(getContext(), + R.string.fail_to_load, Toast.LENGTH_LONG).show(); + } + + if (LOG) { + Log.v(TAG, "gotoInputUrl() appName=" + APN_NAME); + } + } + + private void gotoSettings() { + final Intent intent = new Intent(ACTION_STREAMING); + getContext().startActivity(intent); + if (LOG) { + Log.v(TAG, "gotoInputUrl()"); + } + } +} diff --git a/src/org/codeaurora/gallery3d/video/VideoSettingsActivity.java b/src/org/codeaurora/gallery3d/video/VideoSettingsActivity.java new file mode 100644 index 000000000..32ccfe70f --- /dev/null +++ b/src/org/codeaurora/gallery3d/video/VideoSettingsActivity.java @@ -0,0 +1,182 @@ +package org.codeaurora.gallery3d.video; + +import android.app.ListActivity; + +import android.app.ActionBar; +import android.app.Activity; +import android.app.DialogFragment; +import android.app.Fragment; +import android.app.FragmentManager; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceScreen; +import android.text.TextUtils; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.ArrayAdapter; +import android.widget.ListView; +import android.widget.SimpleAdapter; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import com.android.gallery3d.R; + +public class VideoSettingsActivity extends ListActivity { + private String OPTION_NAME = "option_name"; + private String OPTION_DESC = "option_desc"; + private String DIALOG_TAG_SELECT_STEP_OPTION = "step_option_dialog"; + private static int[] sStepOptionArray = null; + private static final int STEP_OPTION_THREE_SECOND = 0; + private static final int STEP_OPTION_SIX_SECOND = 1; + private static final String SELECTED_STEP_OPTION = "selected_step_option"; + private static final String VIDEO_PLAYER_DATA = "video_player_data"; + private int mSelectedStepOption = -1; + private SharedPreferences mPrefs = null; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ActionBar actionBar = getActionBar(); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setTitle(getResources().getString(R.string.settings)); + setContentView(R.layout.setting_list); + ArrayList<HashMap<String, Object>> arrlist = new ArrayList<HashMap<String, Object>>(1); + HashMap<String, Object> map = new HashMap<String, Object>(); + map.put(OPTION_NAME, getString(R.string.setp_option_name)); + map.put(OPTION_DESC, getString(R.string.step_option_desc)); + arrlist.add(map); + SimpleAdapter adapter = new SimpleAdapter(this, arrlist, android.R.layout.simple_expandable_list_item_2, + new String[] { OPTION_NAME, OPTION_DESC }, new int[] { + android.R.id.text1, android.R.id.text2}); + setListAdapter(adapter); + restoreStepOptionSettings(); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + storeStepOptionSettings(); + super.onSaveInstanceState(outState); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + restoreDialogFragment(); + restoreStepOptionSettings(); + } + + + + @Override + protected void onDestroy() { + // TODO Auto-generated method stub + storeStepOptionSettings(); + super.onDestroy(); + } + + @Override + protected void onListItemClick(ListView arg0, View arg1, int arg2, long arg3) { + switch (arg2) { + case 0: + DialogFragment newFragment = null; + FragmentManager fragmentManager = getFragmentManager(); + removeOldFragmentByTag(DIALOG_TAG_SELECT_STEP_OPTION); + newFragment = StepOptionDialogFragment.newInstance(getStepOptionIDArray(), + R.string.setp_option_name, mSelectedStepOption); + ((StepOptionDialogFragment) newFragment).setOnClickListener(mStepOptionSelectedListener); + newFragment.show(fragmentManager, DIALOG_TAG_SELECT_STEP_OPTION); + break; + default: + break; + } + } + + private int[] getStepOptionIDArray() { + int[] stepOptionIDArray = new int[2]; + stepOptionIDArray[STEP_OPTION_THREE_SECOND] = R.string.setp_option_three_second; + stepOptionIDArray[STEP_OPTION_SIX_SECOND] = R.string.setp_option_six_second; + sStepOptionArray = new int[2]; + sStepOptionArray[0] = STEP_OPTION_THREE_SECOND; + sStepOptionArray[1] = STEP_OPTION_SIX_SECOND; + return stepOptionIDArray; + } + + private DialogInterface.OnClickListener mStepOptionSelectedListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int whichItemSelect) { + setSelectedStepOption(whichItemSelect); + dialog.dismiss(); + } + }; + + public void setSelectedStepOption(int which) { + mSelectedStepOption = getSelectedStepOption(which); + } + + static int getSelectedStepOption(int which) { + return sStepOptionArray[which]; + } + + /** + * remove old DialogFragment + * + * @param tag + * the tag of DialogFragment to be removed + */ + private void removeOldFragmentByTag(String tag) { + FragmentManager fragmentManager = getFragmentManager(); + DialogFragment oldFragment = (DialogFragment) fragmentManager.findFragmentByTag(tag); + if (null != oldFragment) { + oldFragment.dismissAllowingStateLoss(); + } + } + + private void restoreDialogFragment() { + FragmentManager fragmentManager = getFragmentManager(); + Fragment fragment = fragmentManager.findFragmentByTag(DIALOG_TAG_SELECT_STEP_OPTION); + if (null != fragment) { + ((StepOptionDialogFragment) fragment).setOnClickListener(mStepOptionSelectedListener); + } + } + + private void storeStepOptionSettings() { + if (null == mPrefs) { + mPrefs = getSharedPreferences(VIDEO_PLAYER_DATA, 0); + } + SharedPreferences.Editor ed = mPrefs.edit(); + ed.clear(); + ed.putInt(SELECTED_STEP_OPTION, mSelectedStepOption); + ed.commit(); + } + + private void restoreStepOptionSettings() { + if (null == mPrefs) { + mPrefs = getSharedPreferences(VIDEO_PLAYER_DATA, 0); + } + mSelectedStepOption = mPrefs.getInt(SELECTED_STEP_OPTION, STEP_OPTION_THREE_SECOND); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + // The user clicked on the Messaging icon in the action bar. Take them back from + // wherever they came from + finish(); + return true; + } + return false; + } +} |