Browse Source

Merge branch 'master' of https://github.com/owncloud/android into notification_coloring

Andy Scherzinger 9 years ago
parent
commit
5db8c47b8a
35 changed files with 614 additions and 102 deletions
  1. 2 2
      AndroidManifest.xml
  2. 18 0
      CHANGELOG.md
  3. 2 2
      oc_jb_workaround/AndroidManifest.xml
  4. 1 1
      owncloud-android-library
  5. 17 13
      res/layout-land/account_setup.xml
  6. 2 0
      res/layout/account_setup.xml
  7. 8 0
      res/values-de/strings.xml
  8. 10 0
      res/values-en-rUS/strings.xml
  9. 2 0
      res/values-eo/strings.xml
  10. 10 0
      res/values-es-rES/strings.xml
  11. 1 0
      res/values-es-rMX/strings.xml
  12. 3 3
      res/values-es/strings.xml
  13. 76 0
      res/values-fa/strings.xml
  14. 1 0
      res/values-fi-rFI/strings.xml
  15. 1 0
      res/values-fr/strings.xml
  16. 6 0
      res/values-hi-rIN/strings.xml
  17. 12 0
      res/values-hy/strings.xml
  18. 1 0
      res/values-it/strings.xml
  19. 14 2
      res/values-ko/strings.xml
  20. 303 34
      res/values-oc/strings.xml
  21. 1 0
      res/values-pt-rBR/strings.xml
  22. 10 0
      res/values-rm/strings.xml
  23. 8 0
      res/values-ru/strings.xml
  24. 5 1
      res/values-tr/strings.xml
  25. 20 1
      res/values-uk/strings.xml
  26. 1 0
      res/values/strings.xml
  27. 1 0
      src/com/owncloud/android/authentication/AuthenticatorActivity.java
  28. 1 4
      src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java
  29. 36 5
      src/com/owncloud/android/files/FileOperationsHelper.java
  30. 1 0
      src/com/owncloud/android/files/services/FileUploader.java
  31. 7 5
      src/com/owncloud/android/providers/FileContentProvider.java
  32. 14 3
      src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java
  33. 1 1
      src/com/owncloud/android/ui/preview/PreviewImageFragment.java
  34. 4 4
      src/com/owncloud/android/utils/FileStorageUtils.java
  35. 14 21
      src/third_parties/daveKoeller/AlphanumComparator.java

+ 2 - 2
AndroidManifest.xml

@@ -17,8 +17,8 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  -->
 <manifest package="com.owncloud.android"
-    android:versionCode="10700200"
-    android:versionName="1.7.2" xmlns:android="http://schemas.android.com/apk/res/android">
+    android:versionCode="10800000"
+    android:versionName="1.8.0" xmlns:android="http://schemas.android.com/apk/res/android">
 
     <uses-permission android:name="android.permission.GET_ACCOUNTS" />
     <uses-permission android:name="android.permission.USE_CREDENTIALS" />

+ 18 - 0
CHANGELOG.md

@@ -1,3 +1,21 @@
+## 1.8.0 (September 2015)
+- New MATERIAL DESIGN theme
+- Updated FILE TYPE ICONS
+- Preview TXT files within the app
+- COPY files & folders
+- Preview the full file/folder name from the long press menu
+- Set a file as FAVORITE (kept-in-sync) from the CONTEXT MENU
+- Updated CONFLICT RESOLUTION dialog (wording)
+- Updated background for images with TRANSPARENCY in GALLERY
+- Hidden files will not enforce list view instead of GRID VIEW (folders from Picasa & others)
+- Security:
+  + Updated network stack with security fixes (Jackrabbit 2.10.1)
+- Bugs fixed:
+  + Fixed crash when ETag is lost
+  + Passcode creation not restarted on device rotation
+  + Recovered share icon shown on folders 'shared with me'
+  + User name added to subject when sending a share link through e-mail (fixed on SAMLed apps)
+
 ## 1.7.2 (July 2015)
 - New navigation drawer
 - Improved Passcode

+ 2 - 2
oc_jb_workaround/AndroidManifest.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.owncloud.android.workaround.accounts"
-    android:versionCode="0100024"
-    android:versionName="1.0.24" >
+    android:versionCode="0100025"
+    android:versionName="1.0.25" >
 
     <uses-sdk
         android:minSdkVersion="16"

+ 1 - 1
owncloud-android-library

@@ -1 +1 @@
-Subproject commit ecc3415e3e3c13fa8f73fdd51a88c1ab7087b199
+Subproject commit 5985ba9a9fd9a208b2a09ee7809949874e0c3a97

+ 17 - 13
res/layout-land/account_setup.xml

@@ -57,16 +57,18 @@
 			    android:gravity="center"
 			    android:orientation="vertical"
 			    android:padding="8dp" >
-			    
-				<Button
-				    android:id="@+id/centeredRefreshButton"
-				    android:layout_width="wrap_content"
-				    android:layout_height="wrap_content"
-				    android:layout_gravity="center_horizontal"
+
+				<android.support.v7.widget.AppCompatButton
+					android:id="@+id/centeredRefreshButton"
+					style="@style/ownCloud.Button"
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+					android:layout_gravity="center_horizontal"
 					android:layout_marginBottom="10dp"
-				    android:text="@string/auth_check_server"
-				    android:visibility="gone"
-                    android:contentDescription="@string/auth_check_server"/>
+					android:text="@string/auth_check_server"
+					android:visibility="gone"
+					android:contentDescription="@string/auth_check_server"/>
+
 				<TextView
 				    android:id="@+id/instructions_message"
 				    android:layout_width="wrap_content"
@@ -82,7 +84,7 @@
 	        		android:id="@+id/hostUrlFrame"
 					android:layout_width="match_parent"
 					android:layout_height="wrap_content"
-					android:layout_marginBottom="10dp"
+					android:layout_marginBottom="0dp"
 			        >
 					<EditText
 						android:id="@+id/hostUrlInput"
@@ -101,13 +103,13 @@
 					</EditText>
 					<ImageButton
 					    android:id="@+id/embeddedRefreshButton"
-					    android:layout_width="48dp"
-					    android:layout_height="48dp"
+					    android:layout_width="wrap_content"
+					    android:layout_height="wrap_content"
 					    android:layout_gravity="center_vertical|right"
 					    android:layout_marginRight="5dp"
 					    android:padding="0dp"
 					    android:scaleType="fitCenter"
-					    android:src="@drawable/ic_action_refresh_black"
+					    android:src="@drawable/ic_action_refresh_grey"
             			android:onClick="onRefreshClick"
 					    android:visibility="gone"
 						android:background="@android:color/transparent"
@@ -126,6 +128,7 @@
 					android:textColor="@color/login_text_color"
 					android:textColorHint="@color/login_text_hint_color"
 					android:text="@string/auth_testing_connection"
+					android:minHeight="32dp"
                     android:contentDescription="@string/auth_testing_connection"/>
 		             
 				<CheckBox
@@ -223,6 +226,7 @@
 		<android.support.v7.widget.AppCompatButton
 		    android:id="@+id/buttonOK"
 			android:theme="@style/Button.Primary"
+			style="@style/Button.Primary"
 		    android:layout_width="match_parent"
 		    android:layout_height="wrap_content"
 		    android:layout_gravity="center_horizontal"

+ 2 - 0
res/layout/account_setup.xml

@@ -40,6 +40,7 @@
             android:layout_height="wrap_content"
             android:layout_marginBottom="20dp"
             android:layout_marginTop="10dp"
+            android:background="@color/login_logo_background_color"
             android:src="@drawable/logo"
             android:contentDescription="@string/app_name"/>
 
@@ -114,6 +115,7 @@
             android:textColor="@color/login_text_color"
             android:textColorHint="@color/login_text_hint_color"
             android:text="@string/auth_testing_connection"
+            android:minHeight="32dp"
             android:contentDescription="@string/auth_testing_connection"/>
 
         <CheckBox

+ 8 - 0
res/values-de/strings.xml

@@ -202,6 +202,8 @@
   <string name="confirmation_remove_folder_alert">Möchtest Du wirklich %1$s und dessen Inhalte entfernen?</string>
   <string name="confirmation_remove_local">Nur lokal</string>
   <string name="confirmation_remove_folder_local">Nur lokal</string>
+  <string name="confirmation_remove_remote">Vom Server</string>
+  <string name="confirmation_remove_remote_and_local">Remote &amp; lokal</string>
   <string name="remove_success_msg">Erfolgreich gelöscht</string>
   <string name="remove_fail_msg">Der Löschvorgang konnte nicht beendet werden</string>
   <string name="rename_dialog_title">Gib einen neuen Namen ein</string>
@@ -256,6 +258,8 @@
   <string name="conflict_title">Dateikonfilikt</string>
   <string name="conflict_message">Welche Datei möchtest du behalten? Wenn du beide Versionen auswählst, wird der lokalen Datei eine Zahl am Ende Ihres Dateiname angehangen.</string>
   <string name="conflict_keep_both">Beide behalten</string>
+  <string name="conflict_use_local_version">Lokale Version</string>
+  <string name="conflict_use_server_version">Serverversion</string>
   <string name="preview_image_description">Bildvorschau</string>
   <string name="preview_image_error_unknown_format">Dieses Bild kann nicht angezeigt werden</string>
   <string name="error__upload__local_file_not_copied">%1$s konnte nicht in den lokalen %2$s Ordner kopiert werden</string>
@@ -303,7 +307,11 @@
   <string name="move_file_invalid_overwrite">Die Datei ist bereits im Zielordner vorhanden</string>
   <string name="move_file_error">Es ist ein Fehler beim Verschieben der Datei oder des Ordners aufgetreten.</string>
   <string name="forbidden_permissions_move">um diese Datei zu verschieben</string>
+  <string name="copy_file_not_found">Kopieren nicht möglich. Prüfe, dass die Datei existiert</string>
+  <string name="copy_file_invalid_into_descendent">Es ist nicht möglich, einen Ordner in einen seiner Unterordner zu kopieren</string>
   <string name="copy_file_invalid_overwrite">Die Datei existiert bereits im Zielverzeichnis</string>
+  <string name="copy_file_error">Es ist ein Fehler beim Kopieren der Datei oder des Ordners aufgetreten.</string>
+  <string name="forbidden_permissions_copy">diese Datei zu kopieren</string>
   <string name="prefs_category_instant_uploading">Sofortiges Hochladen</string>
   <string name="prefs_category_security">Sicherheit</string>
   <string name="prefs_instant_video_upload_path_title">Verzeichnis zum Hochladen der Videos</string>

+ 10 - 0
res/values-en-rUS/strings.xml

@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <!--TODO re-enable when server-side folder size calculation is available   
+    	<item>Biggest - Smallest</item>-->
+  <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
+  <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <!--TODO re-enable when "On Device" is available
+    <string name="drawer_item_on_device">On device</string>-->
+  <string name="empty"></string>
+</resources>

+ 2 - 0
res/values-eo/strings.xml

@@ -186,4 +186,6 @@
   <string name="copy_file_invalid_overwrite">La dosiero jam ekzistas en la cela dosierujo</string>
   <string name="prefs_category_security">Sekuro</string>
   <string name="auth_host_address">Servila adreso</string>
+  <string name="file_list__footer__file">1 dosiero</string>
+  <string name="file_list__footer__files">%1$d dosieroj</string>
 </resources>

+ 10 - 0
res/values-es-rES/strings.xml

@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <!--TODO re-enable when server-side folder size calculation is available   
+    	<item>Biggest - Smallest</item>-->
+  <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
+  <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <!--TODO re-enable when "On Device" is available
+    <string name="drawer_item_on_device">On device</string>-->
+  <string name="empty"></string>
+</resources>

+ 1 - 0
res/values-es-rMX/strings.xml

@@ -17,6 +17,7 @@
   <!--<string name="drawer_item_accounts">Accounts</string>-->
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
+  <string name="drawer_item_settings">Ajustes</string>
   <string name="drawer_open">Abrir</string>
   <string name="prefs_category_general">General</string>
   <string name="prefs_category_more">Más</string>

+ 3 - 3
res/values-es/strings.xml

@@ -138,9 +138,9 @@
   <string name="pass_code_configure_your_pass_code_explanation">La contraseña será requerida cada vez que la aplicación sea iniciada</string>
   <string name="pass_code_reenter_your_pass_code">Reintroduzca la contraseña, por favor.</string>
   <string name="pass_code_remove_your_pass_code">Borre su contraseña</string>
-  <string name="pass_code_mismatch">Las contraseñas no son identicas</string>
-  <string name="pass_code_wrong">Contraseña incorrecta</string>
-  <string name="pass_code_removed">Contraseña borrada</string>
+  <string name="pass_code_mismatch">Los códigos de acceso no son idénticos</string>
+  <string name="pass_code_wrong">Código de acceso incorrecto</string>
+  <string name="pass_code_removed">Código de acceso borrado</string>
   <string name="pass_code_stored">Contraseña almacenada</string>
   <string name="media_notif_ticker">Reproductor de música %1$s</string>
   <string name="media_state_playing">%1$s (reproduciendo)</string>

+ 76 - 0
res/values-fa/strings.xml

@@ -11,17 +11,27 @@
   <string name="actionbar_settings">تنظیمات</string>
   <string name="actionbar_see_details">جزئیات</string>
   <string name="actionbar_send_file">ارسال</string>
+  <string name="actionbar_sort">مرتب‌سازی</string>
+  <string name="actionbar_sort_title">مرتب‌سازی بر اساس</string>
   <!--TODO re-enable when server-side folder size calculation is available   
     	<item>Biggest - Smallest</item>-->
   <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
   <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <string name="drawer_item_all_files">تمامی فایل‌ها</string>
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
+  <string name="drawer_item_settings">تنظیمات</string>
+  <string name="drawer_item_logs">لاگ‌ها</string>
+  <string name="drawer_close">بستن</string>
   <string name="drawer_open">باز کردن</string>
   <string name="prefs_category_general">عمومی</string>
   <string name="prefs_category_more">بیش‌تر</string>
   <string name="prefs_accounts">حساب‌ها</string>
   <string name="prefs_manage_accounts">مدیریت حسابها</string>
+  <string name="prefs_instant_upload">آپلودهای فوری تصاویر</string>
+  <string name="prefs_instant_upload_summary">آپلود فوری تصاویر گرفته شده توسط دوربین</string>
+  <string name="prefs_instant_video_upload">آپلودهای فوری ویدئو‌</string>
+  <string name="prefs_instant_video_upload_summary">آپلود فوری ویدئو‌های گرفته شده توسط دوربین</string>
   <string name="prefs_log_title">فعال کردن ورود</string>
   <string name="prefs_log_summary">این برای مشکلات ورود استفاده شده است.</string>
   <string name="prefs_log_title_history">تاریخچه ورود</string>
@@ -52,6 +62,7 @@
   <string name="uploader_info_uploading">در حال بارگزاری</string>
   <string name="file_list_seconds_ago">ثانیه‌ها پیش</string>
   <string name="file_list_empty">اینجا هیچ چیز نیست.</string>
+  <string name="file_list_loading">بارگذاری ...</string>
   <string name="local_file_list_empty">هیچ فایلی در این پوشه نیست.</string>
   <string name="filedetails_select_file">روی هر فایل کلیک کنید تا اطلاعات اضافی نمایش داده شود.</string>
   <string name="filedetails_size">اندازه</string>
@@ -85,6 +96,7 @@
   <string name="uploader_upload_succeeded_content_single">%1$s با موفقیت بار گذاری شد</string>
   <string name="uploader_upload_failed_ticker">بارگزاری ناموفق بود</string>
   <string name="uploader_upload_failed_content_single">بارگزاری %1$s نتوانست به طور کامل انجام شود</string>
+  <string name="uploader_upload_failed_credentials_error">آپلود ناموفق، لازم است دوباره وارد شوید</string>
   <string name="downloader_download_in_progress_ticker">در حال بارگیری ...</string>
   <string name="downloader_download_in_progress_content">%1$d%% در حال دانلود %2$s</string>
   <string name="downloader_download_succeeded_ticker">بارگیری موفقیت‌آمیز بود</string>
@@ -92,8 +104,10 @@
   <string name="downloader_download_failed_ticker">بارگیری ناموفق بود</string>
   <string name="downloader_download_failed_content">دانلود %1$s نمی توانست به طور کامل انجام شود.</string>
   <string name="downloader_not_downloaded_yet">دانلود هنوز به پایان نرسیده است.</string>
+  <string name="downloader_download_failed_credentials_error">دانلود ناموفق، لازم است دوباره وارد شوید</string>
   <string name="common_choose_account">حساب کاربری را انتخاب کنید</string>
   <string name="sync_fail_ticker">همگام سازی ناموفق</string>
+  <string name="sync_fail_ticker_unauthorized">همگام‌سازی ناموفق، لازم است دوباره وارد شوید</string>
   <string name="sync_fail_content">همگام سازی %1$s نتوانست به طور کامل انجام شود</string>
   <string name="sync_fail_content_unauthorized">رمز عبور نامعتبر برای %1$s</string>
   <string name="sync_conflicts_in_favourites_ticker">ناسازگاری ها یافت شدند</string>
@@ -101,12 +115,21 @@
   <string name="sync_fail_in_favourites_ticker">همگام سازی پرونده ها ناموفق بود.</string>
   <string name="sync_fail_in_favourites_content">محتوای %1$d فایل ها نمی توانند همگام باشند(%2$d ناسازگاری)</string>
   <string name="sync_foreign_files_forgotten_ticker">بعضی از فایلهای محلی فراموش شده اند</string>
+  <string name="sync_foreign_files_forgotten_content">%1$d fفایل از %2$s پوشه نتوانستند کپی شوند در</string>
   <string name="sync_current_folder_was_removed">پوشه %1$s دیگر وجود ندارد</string>
   <string name="foreign_files_move">انتقال همه</string>
   <string name="foreign_files_success">همه ی فایل ها جا به جا شدند</string>
   <string name="foreign_files_fail">بعضی از فایل ها نمی توانند انتقال یابند</string>
   <string name="foreign_files_local_text">محلی: %1$s</string>
   <string name="foreign_files_remote_text">دور از دسترس:  %1$s</string>
+  <string name="pass_code_enter_pass_code">لطفا رمز خود را وارد کنید</string>
+  <string name="pass_code_configure_your_pass_code">رمز خود را وارد کنید</string>
+  <string name="pass_code_reenter_your_pass_code">رمز خود را مجددا وارد کنید</string>
+  <string name="pass_code_remove_your_pass_code">رمز خود را حذف کنید</string>
+  <string name="pass_code_mismatch">رمزهای وارد شده یکسان نیستند</string>
+  <string name="pass_code_wrong">رمز نادرست</string>
+  <string name="pass_code_removed">رمز حذف شد</string>
+  <string name="pass_code_stored">رمز ذخیره شد</string>
   <string name="media_notif_ticker">%1$s پخش کننده موسیقی</string>
   <string name="media_state_playing">%1$s ( در حال پخش موسیقی )</string>
   <string name="media_state_loading">%1$s (درحال بارگذاری)</string>
@@ -130,6 +153,7 @@
   <string name="auth_no_net_conn_title">هیچ ارتباطی به شبکه موجود نیست</string>
   <string name="auth_nossl_plain_ok_title">اتصال امن در دسترس نیست</string>
   <string name="auth_connection_established">اتصال برقرار شد</string>
+  <string name="auth_testing_connection">اجرای تست ارتباط</string>
   <string name="auth_not_configured_title">پیکربندی سرور ناقص است</string>
   <string name="auth_account_not_new">یک اکانت با همین نام کاربری و سرور بر روی این دستگاه موجود می‌باشد.</string>
   <string name="auth_account_not_the_same">نام کاربری وارد شده با نام کاربری این اکانت مطابقت ندارد</string>
@@ -152,10 +176,14 @@
   <string name="auth_connecting_auth_server">اتصال به سرور احراز هویت...</string>
   <string name="auth_unsupported_auth_method">سرور این نوع احراز هویت را پشتیبانی نمی‌کند</string>
   <string name="auth_unsupported_multiaccount">%1$s چند اکانته بودن را پشتیبانی نمی‌کند</string>
+  <string name="favorite">برگزیده</string>
   <string name="common_rename">تغییرنام</string>
   <string name="common_remove">حذف</string>
+  <string name="confirmation_remove_alert">آیا واقعا می‌خواهید %1$s حذف شود ؟</string>
+  <string name="confirmation_remove_folder_alert">آیا واقعا می‌خواهید %1$s و محتوای درون آن حذف شود ؟</string>
   <string name="confirmation_remove_local">فقط محلی</string>
   <string name="confirmation_remove_folder_local">فقط محلی</string>
+  <string name="confirmation_remove_remote">از سرور</string>
   <string name="remove_success_msg">حذف با موفقیت انجام شد</string>
   <string name="remove_fail_msg">حذف نا موفق بود</string>
   <string name="rename_dialog_title">نام جدید وارد کنید</string>
@@ -163,11 +191,15 @@
   <string name="rename_server_fail_msg">نامگذاری نمی تواند به طور کامل انجام شود</string>
   <string name="sync_file_fail_msg">پرونده های دور از دسترس نمی توانند بررسی شوند.</string>
   <string name="sync_file_nothing_to_do_msg">محتوای فایل قبلا همگام شده</string>
+  <string name="create_dir_fail_msg">پوشه نتوانست ایجاد شود</string>
   <string name="filename_forbidden_characters">کاراکترهای ممنوع: / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">نام فایل دارای حداقل یک کاراکتر نامعتبر است</string>
+  <string name="filename_empty">نام فایل نمی تواند خالی باشد</string>
   <string name="wait_a_moment">لحظه‌ای صبر کنید</string>
   <string name="filedisplay_unexpected_bad_get_content">مشکل غیر متقربه، لطفا پرونده را از یک برنامه متفاوت انتخاب کنید.</string>
   <string name="filedisplay_no_file_selected">هیچ پرونده‌ای انتخاب نشده است</string>
   <string name="activity_chooser_title">ارسال لینک به ...</string>
+  <string name="wait_for_tmp_copy_from_private_storage">کپی کردن فایل از حافظه خصوصی</string>
   <string name="oauth_check_onoff">ورود با oAuth2   </string>
   <string name="oauth_login_connection">اتصال به سرور oAuth2 ...</string>
   <string name="ssl_validator_header">هویت این سایت نمی تواند تایید شود</string>
@@ -203,24 +235,68 @@
   <string name="instant_upload_on_wifi">تصاویر را فقط از طریق wifi بارگذاری کن</string>
   <string name="instant_video_upload_on_wifi">آپلود ویدیو فقط از طریق WiFi</string>
   <string name="instant_upload_path">آپلود فوری</string>
+  <string name="conflict_title">تضاد در فایل</string>
+  <string name="conflict_message">کدام فایل را می‌خواهید نگه دارید ؟ اگر هردو نسخه را میخواهید، یک عدد به اول نام فایل محلی اضافه خواهد شد.</string>
   <string name="conflict_keep_both">نگهداشتن هر دو</string>
+  <string name="conflict_use_local_version">نسخه‌ی محلی</string>
+  <string name="conflict_use_server_version">نسخه سرور</string>
   <string name="preview_image_description">پیش نمایش تصویر</string>
   <string name="preview_image_error_unknown_format">نمایش این عکس امکانپذیر نمی باشد</string>
+  <string name="error__upload__local_file_not_copied">کپی %1$s به پوشه محلی %2$s امکان پذیر نیست</string>
+  <string name="prefs_instant_upload_path_title">مسیر آپلود</string>
   <string name="share_link_file_error">در حین اشتراک گذاری این فایل یا پوشه خطایی رخ داده است</string>
   <string name="unshare_link_file_error">در حین حذف اشتراک گذاری این فایل یا پوشه خطایی رخ داده است</string>
+  <string name="share_link_password_title">یک رمزعبور را وارد کنید</string>
+  <string name="share_link_empty_password">شما باید یک رمزعبور را وارد کنید</string>
   <string name="activity_chooser_send_file_title">ارسال</string>
+  <string name="copy_link">کپی کردن لینک</string>
   <string name="clipboard_text_copied">کپی به کلیپ بورد</string>
   <string name="network_host_not_available">تکمیل عملیات امکانپذیر نمی باشد، سرور در دسترس نمی باشد</string>
   <string name="empty"></string>
+  <string name="forbidden_permissions">شما دسترسی %s را ندارید</string>
   <string name="forbidden_permissions_rename">برای تغییر نام این فایل</string>
   <string name="forbidden_permissions_delete">برای حذف این فایل</string>
+  <string name="share_link_forbidden_permissions">اشتراک‌گذاری این فایل</string>
+  <string name="unshare_link_forbidden_permissions">حذف اشتراک‌گذاری این فایل</string>
   <string name="forbidden_permissions_create">برای ایجاد این فایل</string>
   <string name="uploader_upload_forbidden_permissions">برای آپلود در این پوشه</string>
   <string name="downloader_download_file_not_found">این فایل دیگر روی سرور وجود ندارد</string>
   <string name="prefs_category_accounts">حساب‌ها</string>
+  <string name="prefs_add_account">ایحاد حساب کاربری</string>
+  <string name="actionbar_logger">لاگ‌ها</string>
+  <string name="log_send_history_button">تاریخچه‌ی ارسال</string>
+  <string name="log_progress_dialog_text">بارگذاری داده...</string>
   <string name="saml_authentication_required_text">احراز هویت مورد نیاز است</string>
   <string name="saml_authentication_wrong_pass">رمز عبور اشتباه است</string>
+  <string name="actionbar_move">انتقال</string>
+  <string name="file_list_empty_moving">اینجا هیچی نیست، میتوانید پوشه اضافه کنید</string>
   <string name="folder_picker_choose_button_text">انتخاب کردن</string>
+  <string name="move_file_not_found">امکان انتقال وجود ندارد، لطفا وجود فایل را بررسی کنید</string>
+  <string name="move_file_invalid_overwrite">این فایل هم‌اکنون در پوشه‌‎ی مقصد وجود دارد</string>
+  <string name="move_file_error">خطایی در زمان تلاش برای انتقال این فایل یا پوشه رخ داده است</string>
+  <string name="forbidden_permissions_move">انتقال این فایل</string>
+  <string name="copy_file_not_found">امکان کپی وجود ندارد، لطفا وجود فایل را بررسی کنید</string>
+  <string name="copy_file_invalid_overwrite">این فایل هم‌اکنون در پوشه‌‎ی مقصد وجود دارد</string>
+  <string name="copy_file_error">یک خطا در زمان تلاش برای کپی این فایل یا شاخه رخ داد</string>
+  <string name="forbidden_permissions_copy">کپی این فایل</string>
+  <string name="prefs_category_instant_uploading">آپلودهای فوری</string>
   <string name="prefs_category_security">امنیت</string>
+  <string name="prefs_instant_video_upload_path_title">مسیر آپلود ویدئو</string>
+  <string name="download_folder_failed_content">امکان تکمیل دانلود پوشه  %1$s وجود ندارد</string>
+  <string name="shared_subject_header">به اشتراک گذاشته شد</string>
+  <string name="with_you_subject_header">با تو</string>
+  <string name="subject_token">\"%2$s\" توسط %1$s با شما به اشتراک گذاشته شد</string>
+  <string name="saml_subject_token">\"%1$s\" با شما به اشتراک گذاشته شد</string>
+  <string name="auth_refresh_button">بروزرسانی ارتباط</string>
   <string name="auth_host_address">آدرس سرور</string>
+  <string name="common_error_out_memory">حافظه کافی وجود ندارد</string>
+  <string name="username">نام کاربری</string>
+  <string name="file_list__footer__folder">1 پوشه</string>
+  <string name="file_list__footer__folders">%1$d پوشه</string>
+  <string name="file_list__footer__file">1 فایل</string>
+  <string name="file_list__footer__file_and_folder">1 فایل، 1 پوشه</string>
+  <string name="file_list__footer__file_and_folders">1 فایل، %1$d پوشه</string>
+  <string name="file_list__footer__files">%1$d  فایل</string>
+  <string name="file_list__footer__files_and_folder">%1$d فایل، 1 پوشه</string>
+  <string name="file_list__footer__files_and_folders">%1$d فایل, %2$d پوشه</string>
 </resources>

+ 1 - 0
res/values-fi-rFI/strings.xml

@@ -71,6 +71,7 @@
   <string name="file_list_seconds_ago">sekuntia sitten</string>
   <string name="file_list_empty">Täällä ei ole mitään. Lähetä tänne jotakin!</string>
   <string name="file_list_loading">Ladataan…</string>
+  <string name="file_list_no_app_for_file_type">Tälle tiedostotyypille ei löytynyt sovellusta!</string>
   <string name="local_file_list_empty">Tässä kansiossa ei ole tiedostoja</string>
   <string name="filedetails_select_file">Napauta tiedostoa nähdäksesi lisätietoja.</string>
   <string name="filedetails_size">Koko:</string>

+ 1 - 0
res/values-fr/strings.xml

@@ -72,6 +72,7 @@ Téléchargez-le ici : %2$s</string>
   <string name="file_list_seconds_ago">il y a quelques secondes</string>
   <string name="file_list_empty">Il n\'y a rien ici ! Envoyez donc quelque chose :)</string>
   <string name="file_list_loading">Chargement...</string>
+  <string name="file_list_no_app_for_file_type">Aucune App trouvé pour ce type de fichier!</string>
   <string name="local_file_list_empty">Aucun fichier n\'est présent dans ce dossier.</string>
   <string name="filedetails_select_file">Appuyez sur un fichier pour afficher les informations supplémentaires</string>
   <string name="filedetails_size">Taille :</string>

+ 6 - 0
res/values-hi-rIN/strings.xml

@@ -1,4 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <!--TODO re-enable when server-side folder size calculation is available   
+    	<item>Biggest - Smallest</item>-->
+  <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
+  <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <!--TODO re-enable when "On Device" is available
+    <string name="drawer_item_on_device">On device</string>-->
   <string name="empty"></string>
 </resources>

+ 12 - 0
res/values-hy/strings.xml

@@ -1,11 +1,23 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="actionbar_upload_files">Ֆայլեր</string>
+  <string name="actionbar_mkdir">Նոր պանակ</string>
+  <string name="actionbar_send_file">Ուղարկել</string>
   <!--TODO re-enable when server-side folder size calculation is available   
     	<item>Biggest - Smallest</item>-->
   <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
   <!--<string name="drawer_item_accounts">Accounts</string>-->
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
+  <string name="drawer_open">Բացել</string>
+  <string name="auth_password">Գաղտնաբառ</string>
+  <string name="sync_string_files">Ֆայլեր</string>
+  <string name="uploader_btn_new_folder_text">Նոր պանակ</string>
   <string name="filedetails_download">Բեռնել</string>
+  <string name="action_share_file">Կիսվել հղմամբ</string>
+  <string name="common_cancel">Չեղարկել</string>
+  <string name="common_rename">Վերանվանել</string>
+  <string name="ssl_validator_label_C">Երկիր.</string>
+  <string name="activity_chooser_send_file_title">Ուղարկել</string>
   <string name="empty"></string>
 </resources>

+ 1 - 0
res/values-it/strings.xml

@@ -71,6 +71,7 @@
   <string name="file_list_seconds_ago">secondi fa</string>
   <string name="file_list_empty">Non c\'è niente qui. Carica qualcosa!</string>
   <string name="file_list_loading">Caricamento in corso...</string>
+  <string name="file_list_no_app_for_file_type">Nessuna applicazione trovata per il tipo di file.</string>
   <string name="local_file_list_empty">Non ci sono file in questa cartella.</string>
   <string name="filedetails_select_file">Tocca un file per visualizzare informazioni aggiuntive.</string>
   <string name="filedetails_size">Dimensione:</string>

+ 14 - 2
res/values-ko/strings.xml

@@ -202,6 +202,8 @@
   <string name="confirmation_remove_folder_alert">%1$s 및 포함된 내용을 삭제하시겠습니까?</string>
   <string name="confirmation_remove_local">로컬만</string>
   <string name="confirmation_remove_folder_local">로컬만</string>
+  <string name="confirmation_remove_remote">서버만</string>
+  <string name="confirmation_remove_remote_and_local">서버와 로컬 모두</string>
   <string name="remove_success_msg">성공적으로 삭제함</string>
   <string name="remove_fail_msg">삭제할 수 없음</string>
   <string name="rename_dialog_title">새 이름 입력</string>
@@ -247,13 +249,17 @@
   <string name="placeholder_sentence">이것은 자리 비움자입니다</string>
   <string name="placeholder_filename">placeholder.txt</string>
   <string name="placeholder_filetype">PNG 그림</string>
-  <string name="placeholder_filesize">389 KB</string>
-  <string name="placeholder_timestamp">2012/05/18 12:23 PM</string>
+  <string name="placeholder_filesize">389KB</string>
+  <string name="placeholder_timestamp">2012년 05월 18일 오후 12:23</string>
   <string name="placeholder_media_time">12:23:45</string>
   <string name="instant_upload_on_wifi">Wi-Fi 사용 중일때만 사진 업로드</string>
   <string name="instant_video_upload_on_wifi">Wi-Fi 사용 중일때만 동영상 업로드</string>
   <string name="instant_upload_path">/InstantUpload</string>
+  <string name="conflict_title">파일 충돌</string>
+  <string name="conflict_message">어떤 파일을 유지하시겠습니까? 두 버전을 모두 선택하면 로컬 파일 이름 뒤에 번호가 추가됩니다.</string>
   <string name="conflict_keep_both">모두 저장</string>
+  <string name="conflict_use_local_version">로컬 버전</string>
+  <string name="conflict_use_server_version">서버 버전</string>
   <string name="preview_image_description">사진 미리 보기</string>
   <string name="preview_image_error_unknown_format">이 사진을 미리 볼 수 없습니다</string>
   <string name="error__upload__local_file_not_copied">%1$s을(를) 로컬 폴더 %2$s(으)로 복사할 수 없습니다</string>
@@ -284,6 +290,7 @@
   <string name="downloader_download_file_not_found">이 파일을 서버에서 더 이상 사용할 수 없습니다</string>
   <string name="prefs_category_accounts">계정</string>
   <string name="prefs_add_account">계정 추가</string>
+  <string name="auth_redirect_non_secure_connection_title">보안 연결이 보안되지 않는 연결로 전환되었습니다.</string>
   <string name="actionbar_logger">로그</string>
   <string name="log_send_history_button">과거 기록 보내기</string>
   <string name="log_send_no_mail_app">로그를 보낼 앱이 없습니다. 메일 앱을 설치하십시오!</string>
@@ -299,7 +306,11 @@
   <string name="move_file_invalid_overwrite">파일이 이미 대상 폴더에 존재합니다</string>
   <string name="move_file_error">이 파일이나 폴더를 이동하는 중 오류가 발생하였습니다</string>
   <string name="forbidden_permissions_move">이 파일을 이동할</string>
+  <string name="copy_file_not_found">복사할 수 없습니다. 파일이 존재하는 지 확인하십시오</string>
+  <string name="copy_file_invalid_into_descendent">폴더를 하위 폴더 아래로 복사할 수 없습니다</string>
   <string name="copy_file_invalid_overwrite">파일이 이미 대상 폴더에 존재합니다</string>
+  <string name="copy_file_error">이 파일이나 폴더를 복사할 수 없습니다.</string>
+  <string name="forbidden_permissions_copy">이 파일을 복사할</string>
   <string name="prefs_category_instant_uploading">즉시 업로드</string>
   <string name="prefs_category_security">보안</string>
   <string name="prefs_instant_video_upload_path_title">동영상 업로드 경로</string>
@@ -307,6 +318,7 @@
   <string name="shared_subject_header">공유됨</string>
   <string name="with_you_subject_header">여러분과</string>
   <string name="subject_token">%1$s 님이 \"%2$s\" 항목을 여러분과 공유하였습니다</string>
+  <string name="saml_subject_token">\"%1$s\"을(를) 여러분과 공유하였습니다</string>
   <string name="auth_refresh_button">연결 새로 고침</string>
   <string name="auth_host_address">서버 주소</string>
   <string name="common_error_out_memory">메모리 부족</string>

+ 303 - 34
res/values-oc/strings.xml

@@ -1,70 +1,339 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s Android App</string>
   <string name="about_version">version %1$s</string>
-  <string name="actionbar_upload">Amontcarga</string>
+  <string name="actionbar_sync">Actualizar lo compte</string>
+  <string name="actionbar_upload">Mandar</string>
+  <string name="actionbar_upload_from_apps">Contengut d\'autras aplicacions</string>
   <string name="actionbar_upload_files">Fichièrs</string>
-  <string name="actionbar_mkdir">Novèl dorsièr</string>
-  <string name="actionbar_settings">Configuracion</string>
+  <string name="actionbar_open_with">Dobrir amb</string>
+  <string name="actionbar_mkdir">Dorsièr novèl</string>
+  <string name="actionbar_settings">Paramètres</string>
+  <string name="actionbar_see_details">Detalhs</string>
   <string name="actionbar_send_file">Mandar</string>
+  <string name="actionbar_sort">Triar</string>
+  <string name="actionbar_sort_title">Triar</string>
+  <string-array name="actionbar_sortby">
+    <item>per òrdre alfabetic</item>
+    <item>del mai recent al pus ancian</item>
+  </string-array>
   <!--TODO re-enable when server-side folder size calculation is available   
     	<item>Biggest - Smallest</item>-->
   <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
   <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <string name="drawer_item_all_files">Totes los fichièrs</string>
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
   <string name="drawer_item_settings">Paramètres</string>
-  <string name="drawer_open">Dubrís</string>
+  <string name="drawer_item_logs">Logs</string>
+  <string name="drawer_close">Tampar</string>
+  <string name="drawer_open">Dobrir</string>
   <string name="prefs_category_general">General</string>
-  <string name="prefs_category_more">Mai d\'aquò</string>
+  <string name="prefs_category_more">Mai</string>
   <string name="prefs_accounts">Comptes</string>
-  <string name="prefs_manage_accounts">Maneja comptes</string>
+  <string name="prefs_manage_accounts">Gestion dels comptes</string>
+  <string name="prefs_passcode">Còde de seguretat</string>
+  <string name="prefs_instant_upload">Mandadís immediat de las fòtos</string>
+  <string name="prefs_instant_upload_summary">Mandar immediatament las fòtos presas per la camèra</string>
+  <string name="prefs_instant_video_upload">Mandadís immediat de las vidèos</string>
+  <string name="prefs_instant_video_upload_summary">Mandar immediatament las vidèos presas per la camèra</string>
+  <string name="prefs_log_title">Activar los logs</string>
+  <string name="prefs_log_summary">Utilizat per enregistrar los problèmas dins los logs</string>
+  <string name="prefs_log_title_history">Istoric dels logs</string>
+  <string name="prefs_log_summary_history">Aquò aficha los logs enregistrats</string>
+  <string name="prefs_log_delete_history_button">Suprimir l\'istoric</string>
   <string name="prefs_help">Ajuda</string>
-  <string name="prefs_imprint">Mencions legalas</string>
-  <string name="auth_username">Nom d\'usancièr</string>
+  <string name="prefs_recommend">Recomandar a un amis</string>
+  <string name="prefs_feedback">Comentaris</string>
+  <string name="prefs_imprint">Mencions</string>
+  <string name="prefs_remember_last_share_location">Memorizar l\'emplaçament de partiment</string>
+  <string name="prefs_remember_last_upload_location_summary">Memorizar lo darrièr emplaçament de mandadís</string>
+  <string name="recommend_subject">Ensajatz %1$s sus vòstre smartphone !</string>
+  <string name="recommend_text">M\'agradariá de vos convidar a utilizar %1$s sus vòstre smartphone !
+Telecargatz-lo aicí : %2$s</string>
+  <string name="auth_check_server">Verificar lo servidor</string>
+  <string name="auth_host_url">Adreça del servidor https://…</string>
+  <string name="auth_username">Nom d\'utilizaire</string>
   <string name="auth_password">Senhal</string>
+  <string name="auth_register">Novèl dins %1$s ?</string>
   <string name="sync_string_files">Fichièrs</string>
-  <string name="setup_btn_connect">Connecta</string>
-  <string name="uploader_btn_upload_text">Amontcarga</string>
-  <string name="uploader_btn_new_folder_text">Novèl dorsièr</string>
-  <string name="uploader_wrn_no_account_title">Cap de compte trobat</string>
+  <string name="setup_btn_connect">Connectar</string>
+  <string name="uploader_btn_upload_text">Mandar</string>
+  <string name="uploader_btn_new_folder_text">Dorsièr novèl</string>
+  <string name="uploader_top_message">Seleccionar lo dorsièr de mandadís :</string>
+  <string name="uploader_wrn_no_account_title">Cap de compte es pas estat trobat</string>
+  <string name="uploader_wrn_no_account_text">Cap de compte %1$s es pas estat trobat. Començar per ne configurar un.</string>
   <string name="uploader_wrn_no_account_setup_btn_text">Configuracion</string>
-  <string name="uploader_wrn_no_account_quit_btn_text">Quita</string>
-  <string name="uploader_info_uploading">Al amontcargar</string>
-  <string name="file_list_seconds_ago">segonda a</string>
-  <string name="file_list_empty">Pas res dedins. Amontcarga qualquaren</string>
+  <string name="uploader_wrn_no_account_quit_btn_text">Quitar</string>
+  <string name="uploader_wrn_no_content_title">Pas res a mandar</string>
+  <string name="uploader_wrn_no_content_text">Cap de contengut pas recebut. Pas res a mandar.</string>
+  <string name="uploader_error_forbidden_content">%1$s es pas autorizat a accedir al contengut partejat</string>
+  <string name="uploader_info_uploading">Mandadís...</string>
+  <string name="file_list_seconds_ago">i a qualques segondas</string>
+  <string name="file_list_empty">I a pas res aicí ! Mandatz doncas quicòm :)</string>
+  <string name="file_list_loading">Cargament...</string>
+  <string name="local_file_list_empty">Cap de fichièr es pas present dins aqueste dorsièr.</string>
+  <string name="filedetails_select_file">Quichatz sus un fichièr per afichar las informacions suplementàrias</string>
   <string name="filedetails_size">Talha :</string>
   <string name="filedetails_type">Tipe :</string>
-  <string name="filedetails_created">Creat :</string>
-  <string name="filedetails_modified">Modificat :</string>
-  <string name="filedetails_download">Avalcarga</string>
-  <string name="action_share_file">Partiment per ligam</string>
+  <string name="filedetails_created">Creat lo :</string>
+  <string name="filedetails_modified">Modificat lo :</string>
+  <string name="filedetails_download">Telecargar</string>
+  <string name="filedetails_sync_file">Actualizar lo fichièr</string>
+  <string name="filedetails_renamed_in_upload_msg">Lo fichièr es estat renomenat en %s pendent lo mandadís</string>
+  <string name="list_layout">Afichatge en lista</string>
+  <string name="action_share_file">Partejar lo ligam</string>
+  <string name="action_unshare_file">Partejar pas mai aqueste ligam</string>
   <string name="common_yes">Òc</string>
   <string name="common_no">Non</string>
-  <string name="common_ok">D\'accòrdi</string>
-  <string name="common_cancel_upload"> Anulla l\'amontcargar</string>
-  <string name="common_cancel">Annula</string>
+  <string name="common_ok">D\'acòrdi</string>
+  <string name="common_cancel_download">Anullar lo telecargament</string>
+  <string name="common_cancel_upload">Anullar lo mandadís</string>
+  <string name="common_cancel">Anullar</string>
+  <string name="common_save_exit">Salvar &amp; Quitar</string>
   <string name="common_error">Error</string>
-  <string name="common_error_unknown">Error Desconeguda </string>
-  <string name="about_title">A prepaus</string>
-  <string name="change_password">Cambia lo senhal</string>
-  <string name="delete_account">Escafa lo compte</string>
-  <string name="create_account">Crea un compte</string>
-  <string name="upload_chooser_title">Avalcarga dempuèi ...</string>
+  <string name="common_loading">Cargament…</string>
+  <string name="common_error_unknown">Error desconeguda </string>
+  <string name="about_title">A prepaus de</string>
+  <string name="change_password">Cambiar de senhal</string>
+  <string name="delete_account">Suprimir aqueste compte</string>
+  <string name="create_account">Crear un compte</string>
+  <string name="upload_chooser_title">Mandar un fichièr dempuèi…</string>
   <string name="uploader_info_dirname">Nom del dorsièr</string>
-  <string name="uploader_upload_in_progress_ticker">Al avalcargar ...</string>
-  <string name="uploader_upload_succeeded_ticker">Capitada d\'avalcargar</string>
-  <string name="common_choose_account">Causís lo compte</string>
+  <string name="uploader_upload_in_progress_ticker">Mandadís…</string>
+  <string name="uploader_upload_in_progress_content">Mandadís del fichièr %2$s : %1$d%% efectuats</string>
+  <string name="uploader_upload_succeeded_ticker">Mandadís capitat</string>
+  <string name="uploader_upload_succeeded_content_single">Lo fichièr %1$s es estat mandat amb succès</string>
+  <string name="uploader_upload_failed_ticker">Fracàs del mandadís</string>
+  <string name="uploader_upload_failed_content_single">Lo mandadís de %1$s a fracassat</string>
+  <string name="uploader_upload_failed_credentials_error">Lo mandadís a fracassat, vos cal vos connectar tornamai</string>
+  <string name="downloader_download_in_progress_ticker">Telecargament en cors…</string>
+  <string name="downloader_download_in_progress_content">Telecargament en cors de %2$s, %1$d%% efectuats</string>
+  <string name="downloader_download_succeeded_ticker">Telecargament capitat</string>
+  <string name="downloader_download_succeeded_content">%1$s es estat telecargat amb succès</string>
+  <string name="downloader_download_failed_ticker">Lo telecargament a fracassat</string>
+  <string name="downloader_download_failed_content">Lo telecargament de %1$s a fracassat</string>
+  <string name="downloader_not_downloaded_yet">Pas encara telecargat</string>
+  <string name="downloader_download_failed_credentials_error">Lo telecargament a fracassat, vos cal vos connectar tornamai</string>
+  <string name="common_choose_account">Causissètz un compte</string>
+  <string name="sync_fail_ticker">La sincronizacion a fracassat</string>
+  <string name="sync_fail_ticker_unauthorized">Fracàs de la sincronizacion, vos cal vos reconnectar</string>
+  <string name="sync_fail_content">La sincronizacion de %1$s a pas pogut èsser acabada</string>
+  <string name="sync_fail_content_unauthorized">Senhal invalid per %1$s</string>
+  <string name="sync_conflicts_in_favourites_ticker">De conflictes son estats trobats</string>
+  <string name="sync_conflicts_in_favourites_content">%1$d fichièrs de gardar sincronizats an pas pogut èsser sincronizats</string>
+  <string name="sync_fail_in_favourites_ticker">La sincronizacion dels fichièrs a fracassat</string>
+  <string name="sync_fail_in_favourites_content">Lo contengut de %1$d fichièrs a pas pogut èsser sincronizat (%2$d conflictes)</string>
+  <string name="sync_foreign_files_forgotten_ticker">Certans fichièrs locals son estats doblidats</string>
+  <string name="sync_foreign_files_forgotten_content">%1$d fichièrs del dorsièr %2$s an pas pogut èsser copiats dins</string>
+  <string name="sync_foreign_files_forgotten_explanation">Dempuèi la version 1.3.16, los fichièrs mandats dempuèi aqueste aparelh son copiats dins lo dorsièr local %1$s per evitar una pèrda de donadas quand un meteis fichièr es sincronizat amb mantun compte.
+
+En rason d\'aquesta modificacion, totes los fichièrs mandats amb de versions anterioras d\'aquesta aplicacion son estats copiats dins lo dorsièr %2$s. Pasmens, una error a empachat l\'acabament d\'aquesta operacion pendent la sincronizacion del compte. Podètz siá daissar los fichièrs tals coma son e suprimir lo ligam cap a %3$s, siá desplaçar los fichièrs dins lo dorsièr %1$s e gardar lo ligam cap a %4$s.
+
+Çaijós la lista dels fichièrs locals, e los fichièrs distants dins %5$s als quals èran ligats.</string>
+  <string name="sync_current_folder_was_removed">Lo dorsièr %1$s existís pas mai</string>
+  <string name="foreign_files_move">Desplaçar tot</string>
+  <string name="foreign_files_success">Totes los fichièrs son estats desplaçats</string>
+  <string name="foreign_files_fail">Certans fichièrs an pas pogut èsser desplaçats</string>
+  <string name="foreign_files_local_text">Local : %1$s</string>
+  <string name="foreign_files_remote_text">Distant : %1$s</string>
+  <string name="upload_query_move_foreign_files">I a pas pro de plaça disponibla per copiar los fichièrs seleccionats dins lo dorsièr %1$s. Volètz los desplaçar a la plaça ?</string>
+  <string name="pass_code_enter_pass_code">Sasissètz vòstre còde de seguretat</string>
+  <string name="pass_code_configure_your_pass_code">Sasissètz vòstre còde de seguretat</string>
+  <string name="pass_code_configure_your_pass_code_explanation">Lo còde de seguretat serà demandat a cada dobertura de l\'aplicacion</string>
+  <string name="pass_code_reenter_your_pass_code">Sasissètz tornamai vòstre còde de seguretat</string>
+  <string name="pass_code_remove_your_pass_code">Suprimir vòstre còde de seguretat</string>
+  <string name="pass_code_mismatch">Los còdes de seguretat son pas identics</string>
+  <string name="pass_code_wrong">Còde de seguretat incorrècte</string>
+  <string name="pass_code_removed">Còde de seguretat suprimit</string>
+  <string name="pass_code_stored">Còde de seguretat enregistrat</string>
+  <string name="media_notif_ticker">%1$s lector de musica</string>
+  <string name="media_state_playing">%1$s (lectura)</string>
+  <string name="media_state_loading">%1$s (cargament)</string>
+  <string name="media_event_done">Lectura de %1$s acabada</string>
+  <string name="media_err_nothing_to_play">Fichièr mèdia introbable </string>
+  <string name="media_err_no_account">Cap de compte es pas estat trobat</string>
+  <string name="media_err_not_in_owncloud">Lo fichièr es pas dins un compte valid</string>
+  <string name="media_err_unsupported">Lo codec d\'aqueste mèdia es pas pres en carga </string>
+  <string name="media_err_io">Lo fichièr mèdia pòt pas èsser legit</string>
+  <string name="media_err_malformed">Lo fichièr mèdia es pas corrèctament encodat</string>
+  <string name="media_err_timeout">Relambi depassat per la lectura del tròç</string>
+  <string name="media_err_invalid_progressive_playback">Lo fichièr mèdia pòt pas èsser difusat</string>
+  <string name="media_err_unknown">Lo fichièr mèdia pòt pas èsser jogat amb lo lector estandard</string>
+  <string name="media_err_security_ex">Error de seguretat a la lectura de %1$s</string>
+  <string name="media_err_io_ex">Error de lectura de fichièr a la lectura de %1$s</string>
+  <string name="media_err_unexpected">Error imprevista a la lectura de %1$s </string>
+  <string name="media_rewind_description">Boton de rembobinatge</string>
+  <string name="media_play_pause_description">Boton de lectura o de pausa</string>
+  <string name="media_forward_description">Boton d\'avança rapida</string>
+  <string name="auth_getting_authorization">Demanda d\'autorizacion…</string>
+  <string name="auth_trying_to_login">Temptativa de connexion…</string>
+  <string name="auth_no_net_conn_title">Pas de connexion ret</string>
+  <string name="auth_nossl_plain_ok_title">Connexion securizada pas disponibla</string>
+  <string name="auth_connection_established">Connexion establida</string>
+  <string name="auth_testing_connection">Tèst de connexion</string>
+  <string name="auth_not_configured_title">Configuracion del servidor erronèa</string>
+  <string name="auth_account_not_new">Un compte pels meteisses utilizaire e servidor existís ja sus aqueste aparelh</string>
+  <string name="auth_account_not_the_same">L\'utilizaire entrat correspond pas a l\'utilizaire d\'aqueste compte</string>
+  <string name="auth_unknown_error_title">Una error desconeguda s\'es produsida.</string>
+  <string name="auth_unknown_host_title">Impossible de trobar l\'òste</string>
+  <string name="auth_incorrect_path_title">Cap d\'instància del servidor es pas estada trobada</string>
+  <string name="auth_timeout_title">Lo servidor a pres tròp de temps a respondre</string>
+  <string name="auth_incorrect_address_title">Adreça invalida</string>
+  <string name="auth_ssl_general_error_title">Fracàs de l\'inicializacion SSL</string>
+  <string name="auth_ssl_unverified_server_title">Impossible de verificar l\'identitat del servidor SSL</string>
+  <string name="auth_bad_oc_version_title">La version del servidor es pas reconeguda</string>
+  <string name="auth_wrong_connection_title">Impossible d\'establir la connexion</string>
+  <string name="auth_secure_connection">Connexion securizada establida</string>
+  <string name="auth_unauthorized">Nom d\'utilizaire o senhal incorrècte</string>
+  <string name="auth_oauth_error">Fracàs d\'autorizacion</string>
+  <string name="auth_oauth_error_access_denied">Accès refusat pel servidor d\'autorizacion</string>
+  <string name="auth_wtf_reenter_URL">Estat imprevist ; sasissètz tornamai l\'URL del servidor</string>
+  <string name="auth_expired_oauth_token_toast">Vòstra autorizacion a expirat. Mercé de vos autentificar tornamai</string>
+  <string name="auth_expired_basic_auth_toast">Sasissètz lo senhal corrent</string>
+  <string name="auth_expired_saml_sso_token_toast">Vòstra session a expirat. Mercé de vos reconnectar</string>
+  <string name="auth_connecting_auth_server">Connexion al servidor d\'autentificacion…</string>
+  <string name="auth_unsupported_auth_method">Lo servidor pren pas en carga pas aqueste metòde d\'autentificacion</string>
+  <string name="auth_unsupported_multiaccount">%1$s pren pas en carga los comptes multiples</string>
+  <string name="auth_fail_get_user_name">Vòstre servidor a tornat un identificant d\'utilizaire incorrècte. Prenètz contacte amb vòstre administrator
+</string>
+  <string name="auth_can_not_auth_against_server">Impossible de s\'autentificar sus aqueste servidor</string>
+  <string name="auth_account_does_not_exist">Lo compte existís pas encara sus aqueste periferic</string>
   <string name="favorite">Apondre als favorits</string>
-  <string name="common_rename">Torna nomenar</string>
+  <string name="unfavorite">Suprimir dels favorits</string>
+  <string name="common_rename">Renomenar</string>
   <string name="common_remove">Suprimir</string>
+  <string name="confirmation_remove_alert">Sètz segur que volètz suprimir %1$s ?</string>
+  <string name="confirmation_remove_folder_alert">Sètz segur que volètz suprimir %1$s e son contengut ?</string>
+  <string name="confirmation_remove_local">Local solament</string>
+  <string name="confirmation_remove_folder_local">Local solament</string>
+  <string name="confirmation_remove_remote">Dempuèi lo servidor</string>
+  <string name="confirmation_remove_remote_and_local">Distant &amp; local</string>
+  <string name="remove_success_msg">Supression efectuada amb succès</string>
+  <string name="remove_fail_msg">Supression impossibla</string>
+  <string name="rename_dialog_title">Entratz un nom novèl</string>
+  <string name="rename_local_fail_msg">La version locala pòt pas èsser renomenada, reensajatz amb un nom diferent</string>
+  <string name="rename_server_fail_msg">Cambiament de nom impossible</string>
+  <string name="sync_file_fail_msg">Lo fichièr distant a pas pogut èsser verificat</string>
+  <string name="sync_file_nothing_to_do_msg">Lo contengut del fichièr es ja sincronizat</string>
+  <string name="create_dir_fail_msg">Lo dorsièr a pas pogut èsser creat</string>
+  <string name="filename_forbidden_characters">Caractèrs interdiches : / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">Lo nom de fichièr conten al mens un caractèr invalid</string>
+  <string name="filename_empty">Lo nom del fichièr pòt pas èsser void</string>
+  <string name="wait_a_moment">Pacientatz</string>
+  <string name="filedisplay_unexpected_bad_get_content">Problèma imprevist. Ensajatz una autra aplicacion per la seleccion del fichièr</string>
+  <string name="filedisplay_no_file_selected">Cap de fichièr pas seleccionat</string>
+  <string name="activity_chooser_title">Mandar lo ligam cap a…</string>
+  <string name="wait_for_tmp_copy_from_private_storage">Còpia del fichièr dempuèi l\'emmagazinatge privat</string>
+  <string name="oauth_check_onoff">Connexion amb oAuth2</string>
+  <string name="oauth_login_connection">Connexion al servidor oAuth2…</string>
+  <string name="ssl_validator_header">L\'identitat del site pòt pas èsser verificada</string>
+  <string name="ssl_validator_reason_cert_not_trusted">- Lo certificat del servidor es pas segur</string>
+  <string name="ssl_validator_reason_cert_expired">- Lo certificat del servidor a expirat</string>
+  <string name="ssl_validator_reason_cert_not_yet_valid">- Lo certificat del servidor es pas encara valid</string>
+  <string name="ssl_validator_reason_hostname_not_verified">- L\'URL correspond pas al nom d\'òste del certificat</string>
+  <string name="ssl_validator_question">Vos volètz fisaz d\'aqueste certificat malgrat tot ?</string>
+  <string name="ssl_validator_not_saved">Impossible de salvar lo certificat</string>
+  <string name="ssl_validator_btn_details_see">Detalhs</string>
+  <string name="ssl_validator_btn_details_hide">Amagar</string>
+  <string name="ssl_validator_label_subject">Desliurat a :</string>
+  <string name="ssl_validator_label_issuer">Desliurat per :</string>
+  <string name="ssl_validator_label_CN">Nom d\'usatge :</string>
+  <string name="ssl_validator_label_O">Organizacion :</string>
+  <string name="ssl_validator_label_OU">Unitat organizacionala :</string>
   <string name="ssl_validator_label_C">País :</string>
+  <string name="ssl_validator_label_ST">Region :</string>
+  <string name="ssl_validator_label_L">Localizacion :</string>
+  <string name="ssl_validator_label_validity">Validitat :</string>
+  <string name="ssl_validator_label_validity_from">Del :</string>
+  <string name="ssl_validator_label_validity_to">Al :</string>
+  <string name="ssl_validator_label_signature">Signatura :</string>
+  <string name="ssl_validator_label_signature_algorithm">Algoritme :</string>
+  <string name="ssl_validator_null_cert">Impossible d\'afichar lo certificat.</string>
+  <string name="ssl_validator_no_info_about_error">- Pas cap d\'informacion sus l\'error</string>
+  <string name="placeholder_sentence">Aquò es un espaci reservat</string>
+  <string name="placeholder_filename">placeholder.txt</string>
+  <string name="placeholder_filetype">Imatge PNG</string>
+  <string name="placeholder_filesize">389 Ko</string>
+  <string name="placeholder_timestamp">18/05/2012 12:23</string>
+  <string name="placeholder_media_time">12:23:45</string>
+  <string name="instant_upload_on_wifi">Mandar los imatges via una connexion WiFi unicament</string>
+  <string name="instant_video_upload_on_wifi">Mandar las vidèos via una connexion WiFi unicament</string>
+  <string name="instant_upload_path">/InstantUpload</string>
+  <string name="conflict_title">Conflicte de fichièrs</string>
+  <string name="conflict_message">Quin(s) fichièr(s) volètz gardar ? Se seleccionatz los dos, una chifra serà aponduda al nom del fichièr local.</string>
+  <string name="conflict_keep_both">Gardar las doas versions</string>
+  <string name="conflict_use_local_version">version locala</string>
+  <string name="conflict_use_server_version">version servidor</string>
+  <string name="preview_image_description">Previsualizacion de l\'imatge</string>
+  <string name="preview_image_error_unknown_format">Aqueste imatge pòt pas èsser afichada</string>
+  <string name="error__upload__local_file_not_copied">%1$s a pas pogut èsser copiat dins lo dorsièr local %2$s</string>
+  <string name="prefs_instant_upload_path_title">Repertòri de mandadís</string>
+  <string name="share_link_no_support_share_api">O planhèm, lo partiment es pas disponible sus vòstre servidor. Contactatz vòstre administrator.</string>
+  <string name="share_link_file_no_exist">Impossible de partejar. Verificatz que lo fichièr es plan present</string>
+  <string name="share_link_file_error">Una error s\'es produsida al moment de la tentative de partiment d\'aqueste fichièr o repertòri</string>
+  <string name="unshare_link_file_no_exist">Impossible de suprimir lo partiment. Verificatz que lo fichièr es ben present</string>
+  <string name="unshare_link_file_error">Una error s\'es produsida al moment de la temptativa d’anullacion del partiment d\'aqueste fichièr o repertòri</string>
+  <string name="share_link_password_title">Sasissètz un senhal</string>
+  <string name="share_link_empty_password">Vos cal sasir un senhal</string>
   <string name="activity_chooser_send_file_title">Mandar</string>
+  <string name="copy_link">Copiar lo ligam</string>
   <string name="clipboard_text_copied">Copiat dins lo quichapapièrs</string>
+  <string name="error_cant_bind_to_operations_service">Error critica : impossible de realizar d\'operacions</string>
+  <string name="network_error_socket_exception">Una error s\'es produsida pendent la connexion al servidor.</string>
+  <string name="network_error_socket_timeout_exception">Una error s\'es produsida pendent l\'espèra del servidor. L\'operacion a pas pogut èsser efectuada</string>
+  <string name="network_error_connect_timeout_exception">Una error s\'es produsida pendent l\'espèra del servidor. L\'operacion a pas pogut èsser efectuada</string>
+  <string name="network_host_not_available">L\'operacion a pas pogut èsser acabada, lo servidor es pas disponible</string>
   <string name="empty"></string>
+  <string name="forbidden_permissions">Avètz pas la permission %s</string>
+  <string name="forbidden_permissions_rename">de renomenar aqueste fichièr</string>
+  <string name="forbidden_permissions_delete">d’escafar aqueste fichièr</string>
+  <string name="share_link_forbidden_permissions">per fin de partejar aqueste fichièr</string>
+  <string name="unshare_link_forbidden_permissions">per fin de partejar pas mai aqueste fichièr</string>
+  <string name="forbidden_permissions_create">de crear aqueste fichièr</string>
+  <string name="uploader_upload_forbidden_permissions">per fin d’importar dins aqueste repertòri</string>
+  <string name="downloader_download_file_not_found">Aqueste fichièr es pas mai disponible sul servidor</string>
   <string name="prefs_category_accounts">Comptes</string>
+  <string name="prefs_add_account">Apondre un compte</string>
+  <string name="auth_redirect_non_secure_connection_title">La connexion securizada es redirigida cap a una rota non-securizada.</string>
+  <string name="actionbar_logger">Jornals</string>
+  <string name="log_send_history_button">Mandar l\'istoric</string>
+  <string name="log_send_no_mail_app">Cap d\'aplicacion pas trobada pel mandadís de jornals. Installar una aplicacion de corrièl !</string>
+  <string name="log_send_mail_subject">Jornals de l\'aplicacion Android %1$s</string>
+  <string name="log_progress_dialog_text">Cargament de las donadas…</string>
   <string name="saml_authentication_required_text">Autentificacion requesida</string>
   <string name="saml_authentication_wrong_pass">Senhal incorrècte</string>
-  <string name="folder_picker_choose_button_text">Causís</string>
+  <string name="actionbar_move">Desplaçar</string>
+  <string name="file_list_empty_moving">I a pas res aicí. Podètz apondre un dorsièr !</string>
+  <string name="folder_picker_choose_button_text">Causir</string>
+  <string name="move_file_not_found">Impossible de desplaçar. Verificatz que lo fichièr existís</string>
+  <string name="move_file_invalid_into_descendent">Es pas possible de desplaçar un dorsièr cap a un de sos descendents</string>
+  <string name="move_file_invalid_overwrite">Lo fichièr existís ja dins lo dorsièr de destinacion</string>
+  <string name="move_file_error">Una error s\'es produsida al moment de la temptativa de desplaçament d\'aqueste fichièr o dorsièr</string>
+  <string name="forbidden_permissions_move">de desplaçar aqueste fichièr</string>
+  <string name="copy_file_not_found">Impossible de copiar. Verificatz que lo fichièr existís</string>
+  <string name="copy_file_invalid_into_descendent">Es pas possible de copiar un dorsièr cap a un de sos descendents</string>
+  <string name="copy_file_invalid_overwrite">Fichièr ja existent dins lo dorsièr de destinacion</string>
+  <string name="copy_file_error">Una error s\'es produsida al moment de la còpia d\'aqueste fichièr o dorsièr</string>
+  <string name="forbidden_permissions_copy">de copiar aqueste fichièr</string>
+  <string name="prefs_category_instant_uploading">Mandadís immediat</string>
+  <string name="prefs_category_security">Seguretat</string>
+  <string name="prefs_instant_video_upload_path_title">Repertòri de mandadís de las vidèos</string>
+  <string name="download_folder_failed_content">Lo telecargament del dorsièr %1$s a pas pogut èsser acabat</string>
+  <string name="shared_subject_header">a partejat</string>
+  <string name="with_you_subject_header">amb vos</string>
+  <string name="subject_token">%1$s a partejat \"%2$s\" amb vos</string>
+  <string name="saml_subject_token">\"%1$s\" es estat partejat amb vos</string>
+  <string name="auth_refresh_button">Actualizar la connexion</string>
   <string name="auth_host_address">Adreça del servidor</string>
+  <string name="common_error_out_memory">Memòria insufisenta</string>
   <string name="username">Nom d\'utilizaire</string>
+  <string name="file_list__footer__folder">1 dorsièr</string>
+  <string name="file_list__footer__folders">%1$d dorsièrs</string>
+  <string name="file_list__footer__file">1 fichièr</string>
+  <string name="file_list__footer__file_and_folder">1 fichièr, 1 dorsièr</string>
+  <string name="file_list__footer__file_and_folders">1 fichièr, %1$d dorsièrs</string>
+  <string name="file_list__footer__files">%1$d fichièrs</string>
+  <string name="file_list__footer__files_and_folder">%1$d fichièrs, 1 dorsièr</string>
+  <string name="file_list__footer__files_and_folders">%1$d fichièrs, %2$d dorsièrs</string>
 </resources>

+ 1 - 0
res/values-pt-rBR/strings.xml

@@ -71,6 +71,7 @@
   <string name="file_list_seconds_ago">segundos atrás</string>
   <string name="file_list_empty">Nada aqui. Envie alguma coisa!</string>
   <string name="file_list_loading">Carregando...</string>
+  <string name="file_list_no_app_for_file_type">Nenhum aplicativo encontrado por tipo de arquivo!</string>
   <string name="local_file_list_empty">Não existe nenhum arquivo nesta pasta.</string>
   <string name="filedetails_select_file">Toque em um arquivo para mostrar informações adicionais.</string>
   <string name="filedetails_size">Tamanho:</string>

+ 10 - 0
res/values-rm/strings.xml

@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <!--TODO re-enable when server-side folder size calculation is available   
+    	<item>Biggest - Smallest</item>-->
+  <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
+  <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <!--TODO re-enable when "On Device" is available
+    <string name="drawer_item_on_device">On device</string>-->
+  <string name="empty"></string>
+</resources>

+ 8 - 0
res/values-ru/strings.xml

@@ -203,6 +203,8 @@
   <string name="confirmation_remove_folder_alert">Вы действительно хотите удалить %1$s и его содержимое?</string>
   <string name="confirmation_remove_local">Только локально</string>
   <string name="confirmation_remove_folder_local">Только локально</string>
+  <string name="confirmation_remove_remote">От сервера</string>
+  <string name="confirmation_remove_remote_and_local">Удаленно и локально</string>
   <string name="remove_success_msg">Удаление завершено</string>
   <string name="remove_fail_msg">Ошибка удаления</string>
   <string name="rename_dialog_title">Введите новое имя</string>
@@ -257,6 +259,8 @@
   <string name="conflict_title">Конфликт файлов</string>
   <string name="conflict_message">Какие файлы Вы хотите сохранить? При выборе обеих версий, к названию локального файла будет добавлена цифра</string>
   <string name="conflict_keep_both">Сохранить оба</string>
+  <string name="conflict_use_local_version">локальная версия</string>
+  <string name="conflict_use_server_version">удаленная версия</string>
   <string name="preview_image_description">Предпросмотр</string>
   <string name="preview_image_error_unknown_format">Это изображение не может быть отображено</string>
   <string name="error__upload__local_file_not_copied">%1$s невозможно скопировать в локальный каталог %2$s </string>
@@ -304,7 +308,11 @@
   <string name="move_file_invalid_overwrite">Файл уже существует в каталоге назначения</string>
   <string name="move_file_error">Произошла ошибка при попытке перемещения этого файла или каталога</string>
   <string name="forbidden_permissions_move">для перемещения этого файла</string>
+  <string name="copy_file_not_found">Не удалось произвести копирование. Пожалуйста проверьте существование файла</string>
+  <string name="copy_file_invalid_into_descendent">Нельзя произвести копирование папки в унаследованную папку</string>
   <string name="copy_file_invalid_overwrite">Файл уже существует в каталоге назначения</string>
+  <string name="copy_file_error">Произошла ошибка во время копирования этого файла или папки</string>
+  <string name="forbidden_permissions_copy">для копирования этого файла</string>
   <string name="prefs_category_instant_uploading">Мгновенные загрузки</string>
   <string name="prefs_category_security">Безопасность</string>
   <string name="prefs_instant_video_upload_path_title">Путь для загрузки Видео</string>

+ 5 - 1
res/values-tr/strings.xml

@@ -194,7 +194,7 @@
         </string>
   <string name="auth_can_not_auth_against_server">Bu sunucuya karşı kimlik doğrulama yapılamaz</string>
   <string name="auth_account_does_not_exist">Hesap henüz cihazda mevcut değil</string>
-  <string name="favorite">Sık kullanılan</string>
+  <string name="favorite">Favorilere ekle</string>
   <string name="unfavorite">Favoriden kaldır</string>
   <string name="common_rename">Yeniden adlandır</string>
   <string name="common_remove">Kaldır</string>
@@ -307,7 +307,11 @@
   <string name="move_file_invalid_overwrite">Dosya zaten hedef klasörde mevcut</string>
   <string name="move_file_error">Bu dosya veya klasörü taşımaya çalışılırken bir hata oluştu</string>
   <string name="forbidden_permissions_move">bu dosyayı taşımak için</string>
+  <string name="copy_file_not_found">Kopyalama başarısız. Lütfen dosyanın mevcut olup olmadığını denetleyin</string>
+  <string name="copy_file_invalid_into_descendent">Klasörü, kendi alt klasörüne kopyalamak mümkün değil</string>
   <string name="copy_file_invalid_overwrite">Dosya zaten hedef klasörde mevcut</string>
+  <string name="copy_file_error">Bu dosya veya klasörü kopyalamaya çalışılırken bir hata oluştu</string>
+  <string name="forbidden_permissions_copy">bu dosyayı kopyalamak için</string>
   <string name="prefs_category_instant_uploading">Anında Yüklemeler</string>
   <string name="prefs_category_security">Güvenlik</string>
   <string name="prefs_instant_video_upload_path_title">Video Yükleme Yolu</string>

+ 20 - 1
res/values-uk/strings.xml

@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
-  <string name="about_android">%1$s Android App</string>
+  <string name="about_android">%1$s Android Додаток</string>
   <string name="about_version">версія %1$s</string>
   <string name="actionbar_sync">Оновити account</string>
   <string name="actionbar_upload">Відвантажити</string>
@@ -32,6 +32,7 @@
   <string name="prefs_category_more">Більше</string>
   <string name="prefs_accounts">Облікові записи</string>
   <string name="prefs_manage_accounts">Управління обліковими записами</string>
+  <string name="prefs_passcode">Захистити паролем</string>
   <string name="prefs_instant_upload">Миттєві зображення</string>
   <string name="prefs_instant_upload_summary">Миттєві зображення з камери</string>
   <string name="prefs_instant_video_upload">Миттєві відео</string>
@@ -131,6 +132,15 @@
   <string name="foreign_files_local_text">Локально: %1$s</string>
   <string name="foreign_files_remote_text">Віддалено: %1$s</string>
   <string name="upload_query_move_foreign_files">Недостатньо місця для копіювання обраних файлів у теку %1$s. Чи бажаєте ви перемістити їх замість копіювання?</string>
+  <string name="pass_code_enter_pass_code">Будь ласка, введіть Ваш код доступу</string>
+  <string name="pass_code_configure_your_pass_code">Введіть Ваш код доступу</string>
+  <string name="pass_code_configure_your_pass_code_explanation">Код доступу буде запрошено кожного разу після завантаження додатку</string>
+  <string name="pass_code_reenter_your_pass_code">Будь ласка, введіть код доступу повторно</string>
+  <string name="pass_code_remove_your_pass_code">Видалити пароль</string>
+  <string name="pass_code_mismatch">Коди доступу не співпадають</string>
+  <string name="pass_code_wrong">Невірний код доступу</string>
+  <string name="pass_code_removed">Код доступу знято</string>
+  <string name="pass_code_stored">Код доступу збережено</string>
   <string name="media_notif_ticker">%1$s музичний плеєр</string>
   <string name="media_state_playing">%1$s (відтворення)</string>
   <string name="media_state_loading">%1$s (завантаження)</string>
@@ -190,6 +200,8 @@
   <string name="confirmation_remove_folder_alert">Ви дійсно бажаєте видалити %1$s та весь вміст?</string>
   <string name="confirmation_remove_local">Лише локально</string>
   <string name="confirmation_remove_folder_local">Лише локально</string>
+  <string name="confirmation_remove_remote">З серверу</string>
+  <string name="confirmation_remove_remote_and_local">Видалити &amp; локальний</string>
   <string name="remove_success_msg">Успішно видалено</string>
   <string name="remove_fail_msg">Видалення не вдалось</string>
   <string name="rename_dialog_title">Введіть нове ім\'я</string>
@@ -241,7 +253,11 @@
   <string name="instant_upload_on_wifi">Завантажувати зображення тільки через WiFi</string>
   <string name="instant_video_upload_on_wifi">Завантажувати відео тільки через WiFi</string>
   <string name="instant_upload_path">/InstantUpload</string>
+  <string name="conflict_title">Конфлікт файлу</string>
+  <string name="conflict_message">Які файли Ви хочете зберегти? Якщо Ви оберете обидві версії, локальний файл матиме номер, що додається до його імені.</string>
   <string name="conflict_keep_both">Залишити обидва</string>
+  <string name="conflict_use_local_version">Локальна версія</string>
+  <string name="conflict_use_server_version">Версія сервера</string>
   <string name="preview_image_description">Попередній перегляд зображення</string>
   <string name="preview_image_error_unknown_format">Не вдалося показати зображення</string>
   <string name="error__upload__local_file_not_copied">%1$s неможливо скопіювати до %2$s</string>
@@ -288,7 +304,10 @@
   <string name="move_file_invalid_overwrite">Файл вже існує в теці призначення</string>
   <string name="move_file_error">Виникла помилка при спробі перемістити файл або теку</string>
   <string name="forbidden_permissions_move">перемістити цей файл</string>
+  <string name="copy_file_not_found">Неможливо скопіювати. Будь ласка, перевірте, чи існує файл</string>
   <string name="copy_file_invalid_overwrite">Файл вже існує в теці призначення</string>
+  <string name="copy_file_error">Виникла помилка під час спроби скопіювати даний файл чи папку</string>
+  <string name="forbidden_permissions_copy">скопіювати даний файл</string>
   <string name="prefs_category_instant_uploading">Миттєво завантаження</string>
   <string name="prefs_category_security">Безпека</string>
   <string name="prefs_instant_video_upload_path_title">Шлях завантаження відео</string>

+ 1 - 0
res/values/strings.xml

@@ -74,6 +74,7 @@
     <string name="file_list_seconds_ago">seconds ago</string>
     <string name="file_list_empty">Nothing in here. Upload something!</string>
     <string name="file_list_loading">Loading&#8230;</string>
+    <string name="file_list_no_app_for_file_type">No App found for file type!</string>
     <string name="local_file_list_empty">There are no files in this folder.</string>
     <string name="filedetails_select_file">Tap on a file to display additional information.</string>
     <string name="filedetails_size">Size:</string>

+ 1 - 0
src/com/owncloud/android/authentication/AuthenticatorActivity.java

@@ -1373,6 +1373,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
     public void onAuthenticatorTaskCallback(RemoteOperationResult result) {
         mWaitingForOpId = Long.MAX_VALUE;
         dismissDialog(WAIT_DIALOG_TAG);
+        mAsyncTask = null;
 
         if (result.isSuccess()) {
             Log_OC.d(TAG, "Successful access - time to save the account");

+ 1 - 4
src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java

@@ -195,10 +195,6 @@ public class ThumbnailsCacheManager {
         }
 
         protected void onPostExecute(Bitmap bitmap){
-            if (isCancelled()) {
-                bitmap = null;
-            }
-
             if (bitmap != null) {
                 final ImageView imageView = mImageViewReference.get();
                 final ThumbnailGenerationTask bitmapWorkerTask = getBitmapWorkerTask(imageView);
@@ -365,6 +361,7 @@ public class ThumbnailsCacheManager {
             if (bitmapData == null || bitmapData != file) {
                 // Cancel previous task
                 bitmapWorkerTask.cancel(true);
+                Log_OC.v(TAG, "Cancelled generation of thumbnail for a reused imageView");
             } else {
                 // The same work is already in progress
                 return false;

+ 36 - 5
src/com/owncloud/android/files/FileOperationsHelper.java

@@ -22,7 +22,11 @@
 package com.owncloud.android.files;
 
 import android.accounts.Account;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
 import android.net.Uri;
 import android.support.v4.app.DialogFragment;
 import android.webkit.MimeTypeMap;
@@ -43,6 +47,8 @@ import com.owncloud.android.ui.dialog.ShareLinkToDialog;
 
 import org.apache.http.protocol.HTTP;
 
+import java.util.List;
+
 /**
  *
  */
@@ -86,21 +92,46 @@ public class FileOperationsHelper {
                     );
                 }
             }
-            
-            Intent chooserIntent;
+
+            Intent openFileWithIntent;
             if (intentForGuessedMimeType != null) {
-                chooserIntent = Intent.createChooser(intentForGuessedMimeType, mFileActivity.getString(R.string.actionbar_open_with));
+                openFileWithIntent = intentForGuessedMimeType;
             } else {
-                chooserIntent = Intent.createChooser(intentForSavedMimeType, mFileActivity.getString(R.string.actionbar_open_with));
+                openFileWithIntent = intentForSavedMimeType;
             }
 
-            mFileActivity.startActivity(chooserIntent);
+            List<ResolveInfo> launchables = mFileActivity.getPackageManager().
+                    queryIntentActivities(openFileWithIntent, PackageManager.GET_INTENT_FILTERS);
+
+            if(launchables != null && launchables.size() > 0) {
+                try {
+                    mFileActivity.startActivity(
+                            Intent.createChooser(
+                                    openFileWithIntent, mFileActivity.getString(R.string.actionbar_open_with)
+                            )
+                    );
+                } catch (ActivityNotFoundException anfe) {
+                    showNoAppForFileTypeToast(mFileActivity.getApplicationContext());
+                }
+            } else {
+                showNoAppForFileTypeToast(mFileActivity.getApplicationContext());
+            }
 
         } else {
             Log_OC.wtf(TAG, "Trying to open a NULL OCFile");
         }
     }
 
+    /**
+     * Displays a toast stating that no application could be found to open the file.
+     *
+     * @param context the context to be able to show a toast.
+     */
+    private void showNoAppForFileTypeToast(Context context) {
+        Toast.makeText(context,
+                R.string.file_list_no_app_for_file_type, Toast.LENGTH_SHORT)
+                .show();
+    }
 
     public void shareFileWithLink(OCFile file) {
 

+ 1 - 0
src/com/owncloud/android/files/services/FileUploader.java

@@ -725,6 +725,7 @@ public class FileUploader extends Service
         }
         file.setNeedsUpdateThumbnail(true);
         mStorageManager.saveFile(file);
+        mStorageManager.triggerMediaScan(file.getStoragePath());
     }
 
     private void updateOCFile(OCFile file, RemoteFile remoteFile) {

+ 7 - 5
src/com/owncloud/android/providers/FileContentProvider.java

@@ -178,6 +178,7 @@ public class FileContentProvider extends ContentProvider {
             if (c != null && c.moveToFirst()) {
                 remoteId = c.getString(c.getColumnIndex(ProviderTableMeta.FILE_REMOTE_ID));
                 //ThumbnailsCacheManager.removeFileFromCache(remoteId);
+                c.close();
             }
             Log_OC.d(TAG, "Removing FILE " + remoteId);
 
@@ -187,11 +188,6 @@ public class FileContentProvider extends ContentProvider {
                             + uri.getPathSegments().get(1)
                             + (!TextUtils.isEmpty(where) ? " AND (" + where
                                     + ")" : ""), whereArgs);
-            /* just for log
-            if (c!=null) {
-                c.close();
-            }
-            */
             break;
         case DIRECTORY:
             // deletion of folder is recursive
@@ -306,6 +302,9 @@ public class FileContentProvider extends ContentProvider {
             // ugly patch; serious refactorization is needed to reduce work in
             // FileDataStorageManager and bring it to FileContentProvider
             if (doubleCheck == null || !doubleCheck.moveToFirst()) {
+                if (doubleCheck != null) {
+                    doubleCheck.close();
+                }
                 long rowId = db.insert(ProviderTableMeta.FILE_TABLE_NAME, null, values);
                 if (rowId > 0) {
                     Uri insertedFileUri =
@@ -341,6 +340,9 @@ public class FileContentProvider extends ContentProvider {
             // ugly patch; serious refactorization is needed to reduce work in
             // FileDataStorageManager and bring it to FileContentProvider
             if (doubleCheckShare == null || !doubleCheckShare.moveToFirst()) {
+                if (doubleCheckShare != null) {
+                    doubleCheckShare.close();
+                }
                 long rowId = db.insert(ProviderTableMeta.OCSHARES_TABLE_NAME, null, values);
                 if (rowId >0) {
                     insertedShareUri =

+ 14 - 3
src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java

@@ -37,6 +37,7 @@ import android.widget.TextView;
 
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
+import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.utils.BitmapUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.MimetypeIconUtil;
@@ -46,7 +47,9 @@ import com.owncloud.android.utils.MimetypeIconUtil;
  * in a local directory
  */
 public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
-    
+
+    private static final String TAG = LocalFileListAdapter.class.getSimpleName();
+
     private Context mContext;
     private File mDirectory;
     private File[] mFiles = null;
@@ -104,6 +107,12 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
             fileName.setText(name);
             
             ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail);
+
+            /** Cancellation needs do be checked and done before changing the drawable in fileIcon, or
+             * {@link ThumbnailsCacheManager#cancelPotentialWork} will NEVER cancel any task.
+             **/
+            boolean allowedToCreateNewThumbnail = (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon));
+
             if (!file.isDirectory()) {
                 fileIcon.setImageResource(R.drawable.file);
             } else {
@@ -143,7 +152,7 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
                     } else {
 
                         // generate new Thumbnail
-                        if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) {
+                        if (allowedToCreateNewThumbnail) {
                             final ThumbnailsCacheManager.ThumbnailGenerationTask task =
                                     new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon);
                             if (thumbnail == null) {
@@ -157,7 +166,9 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
                 		        );
                             fileIcon.setImageDrawable(asyncDrawable);
                             task.execute(file);
-                        }
+                            Log_OC.v(TAG, "Executing task to generate a new thumbnail");
+
+                        } // else, already being generated, don't restart it
                     }
                 } else {
                     fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(null, file.getName()));

+ 1 - 1
src/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -476,7 +476,7 @@ public class PreviewImageFragment extends FileFragment {
 
         @Override
         protected void onCancelled(LoadImage result) {
-            if (result.bitmap != null) {
+            if (result != null && result.bitmap != null) {
                 result.bitmap.recycle();
             }
         }

+ 4 - 4
src/com/owncloud/android/utils/FileStorageUtils.java

@@ -46,12 +46,12 @@ import android.webkit.MimeTypeMap;
  * Static methods to help in access to local file system.
  */
 public class FileStorageUtils {
-    public static Integer mSortOrder;
-    public static Boolean mSortAscending;
     public static final Integer SORT_NAME = 0;
     public static final Integer SORT_DATE = 1;
     public static final Integer SORT_SIZE = 2;
-  
+    public static Integer mSortOrder = SORT_NAME;
+    public static Boolean mSortAscending = true;
+
     
     //private static final String LOG_TAG = "FileStorageUtils";
 
@@ -254,7 +254,7 @@ public class FileStorageUtils {
         Collections.sort(files, new Comparator<OCFile>() {
             public int compare(OCFile o1, OCFile o2) {
                 if (o1.isFolder() && o2.isFolder()) {
-                    return val * o1.getRemotePath().toLowerCase().compareTo(o2.getRemotePath().toLowerCase());
+                    return val * new AlphanumComparator().compare(o1, o2);
                 } else if (o1.isFolder()) {
                     return -1;
                 } else if (o2.isFolder()) {

+ 14 - 21
src/third_parties/daveKoeller/AlphanumComparator.java

@@ -23,6 +23,7 @@
  */
 
 package third_parties.daveKoeller;
+import java.text.Collator;
 import java.util.Comparator;
 
 import com.owncloud.android.datamodel.OCFile;
@@ -48,14 +49,12 @@ public class AlphanumComparator implements Comparator<OCFile>
     }
 
     /** Length of string is passed in for improved efficiency (only need to calculate it once) **/
-    private final String getChunk(String s, int slength, int marker)
-    {
+    private final String getChunk(String s, int slength, int marker){
         StringBuilder chunk = new StringBuilder();
         char c = s.charAt(marker);
         chunk.append(c);
         marker++;
-        if (isDigit(c))
-        {
+        if (isDigit(c)){
             while (marker < slength)
             {
                 c = s.charAt(marker);
@@ -64,8 +63,7 @@ public class AlphanumComparator implements Comparator<OCFile>
                 chunk.append(c);
                 marker++;
             }
-        } else
-        {
+        } else {
             while (marker < slength)
             {
                 c = s.charAt(marker);
@@ -78,8 +76,7 @@ public class AlphanumComparator implements Comparator<OCFile>
         return chunk.toString();
     }
 
-    public int compare(OCFile o1, OCFile o2)
-    {
+    public int compare(OCFile o1, OCFile o2){
         String s1 = (String)o1.getRemotePath().toLowerCase();
         String s2 = (String)o2.getRemotePath().toLowerCase();
 
@@ -88,8 +85,7 @@ public class AlphanumComparator implements Comparator<OCFile>
         int s1Length = s1.length();
         int s2Length = s2.length();
 
-        while (thisMarker < s1Length && thatMarker < s2Length)
-        {
+        while (thisMarker < s1Length && thatMarker < s2Length) {
             String thisChunk = getChunk(s1, s1Length, thisMarker);
             thisMarker += thisChunk.length();
 
@@ -98,26 +94,23 @@ public class AlphanumComparator implements Comparator<OCFile>
 
             // If both chunks contain numeric characters, sort them numerically
             int result = 0;
-            if (isDigit(thisChunk.charAt(0)) && isDigit(thatChunk.charAt(0)))
-            {
+            if (isDigit(thisChunk.charAt(0)) && isDigit(thatChunk.charAt(0))) {
                 // Simple chunk comparison by length.
                 int thisChunkLength = thisChunk.length();
                 result = thisChunkLength - thatChunk.length();
                 // If equal, the first different number counts
-                if (result == 0)
-                {
-                    for (int i = 0; i < thisChunkLength; i++)
-                    {
+                if (result == 0) {
+                    for (int i = 0; i < thisChunkLength; i++) {
                         result = thisChunk.charAt(i) - thatChunk.charAt(i);
-                        if (result != 0)
-                        {
+                        if (result != 0) {
                             return result;
                         }
                     }
                 }
-            } else
-            {
-                result = thisChunk.compareTo(thatChunk);
+            } else {
+                Collator collator = Collator.getInstance();
+                collator.setStrength(Collator.PRIMARY);
+                result = collator.compare(thisChunk, thatChunk);
             }
 
             if (result != 0)