From: tobiasKaminsky Date: Fri, 21 Nov 2014 16:59:51 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/develop' into fileCount X-Git-Tag: oc-android-1.7.0_signed~91^2~2 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/ae6b686775ea4a16a1d756bcacec393dcd76d1da?hp=13758253ca8f1acd8974e7bd0d25c9cf1f338060 Merge remote-tracking branch 'upstream/develop' into fileCount --- diff --git a/owncloud-android-library b/owncloud-android-library index 5bd0d738..2799b3e8 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 5bd0d7387712ce3f53869294761ac4d8537841cd +Subproject commit 2799b3e853c79e8ebb37051c92dfcc43f8d63788 diff --git a/res/layout/list_item.xml b/res/layout/list_item.xml index a4113de7..c6c7b92f 100644 --- a/res/layout/list_item.xml +++ b/res/layout/list_item.xml @@ -32,16 +32,16 @@ diff --git a/res/layout/video_layout.xml b/res/layout/video_layout.xml index dfa29f7d..8063ab4d 100644 --- a/res/layout/video_layout.xml +++ b/res/layout/video_layout.xml @@ -3,9 +3,10 @@ android:layout_width="match_parent" android:layout_height="match_parent" > - + \ No newline at end of file diff --git a/res/values-af-rZA/strings.xml b/res/values-af-rZA/strings.xml index 6ea41913..4b024b71 100644 --- a/res/values-af-rZA/strings.xml +++ b/res/values-af-rZA/strings.xml @@ -1,9 +1,12 @@ Instellings + Hulp Gebruikersnaam Wagwoord + sekondes gelede OK Kanseleer diff --git a/res/values-ak/strings.xml b/res/values-ak/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-ak/strings.xml +++ b/res/values-ak/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-am-rET/strings.xml b/res/values-am-rET/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-am-rET/strings.xml +++ b/res/values-am-rET/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 4d89b576..276af9b7 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -11,6 +11,8 @@ إعدادات تفاصيل أرسل + عام المزيد حسابات @@ -48,6 +50,7 @@ لم يتم استلام أي محتوى. لا شيء للرفع. %1$s غير مسموح له بالوصول للمحتوى المشارك يتم الرفع + منذ ثواني لا يوجد شيء هنا. إرفع بعض الملفات! جاري التحميل ... اضغظ على الملف ليتم عرض خيارات أكثر diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index b037311c..d3a9060b 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -11,6 +11,8 @@ Quraşdırmalar Detallar Göndər + Ümumi Daha da Hesablar diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 42e20789..c0dd55b6 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -1,6 +1,9 @@ Налады + + Секунд таму Так Не Добра diff --git a/res/values-bg-rBG/strings.xml b/res/values-bg-rBG/strings.xml index 47d243cf..ff47c31f 100644 --- a/res/values-bg-rBG/strings.xml +++ b/res/values-bg-rBG/strings.xml @@ -11,6 +11,14 @@ Настройки Детайли Изпращане + Сортиране + Сортирай по + + А-Я + Нови - Стари + + Общи Още Профили @@ -30,6 +38,8 @@ Препоръчай на приятел Обратна Връзка Imprint + Запомни мястото за споделяне + Запомни мястото на последната споделена папка Опитай %1$s на смартфона си! Бих желал да те поканя да ползваш %1$s на своя смартфон!\nИзтеглия я от тук:%2$s Проверка на сървъра @@ -49,6 +59,7 @@ Не беше получено съдържание. Няма какво да се качи. %1$s няма разрешен достъп до споделеното съдържание. Качване + преди секунди Тук няма нищо. Качете нещо! Зареждане... Няма файлове в тази папка. @@ -238,6 +249,7 @@ Преглед на изображението Изображението не може да бъде показано %1$s не може да бъде копиран в локалната папка %2$s + Местоположение на качване За съжаление споделянето не е включено на сървъра ви. Моля, свържете се с администратора. Неуспешен опит за споделяне. Моля, провери дали файла съществува. @@ -263,6 +275,7 @@ Файлът вече не се намира на този сървър Профили Добавяне на профил + Сигурна връзка е пренасочена по несигурен път. Доклади Изпрати История ownCloud Android доклади @@ -277,5 +290,6 @@ Файлът вече съществува в отдалечената папка. Настъпи грешка при опита за преместване на този файл или папка. за да преместиш този файл + Незабавно качване Сигурност diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml index cae19b70..f0f23000 100644 --- a/res/values-bn-rBD/strings.xml +++ b/res/values-bn-rBD/strings.xml @@ -11,6 +11,8 @@ নিয়ামকসমূহ বিস্তারিত পাঠাও + সাধারণ বেশী একাউন্ট @@ -48,6 +50,7 @@ কোন কনটেনট আসেনি৷ আপলোডের কনটেনট নেই এই যৌথ কনটেন্ট এ %1$s এর প্রবেশ অনুমোদিত নয় আপলোড করা হচ্ছে + সেকেন্ড পূর্বে এখানে কিছুই নেই। কিছু আপলোড করুন ! লোড হচ্ছে.... এই ফোলডারে কোন ফাইল নেই diff --git a/res/values-bn-rIN/strings.xml b/res/values-bn-rIN/strings.xml index a49555a8..3b69168f 100644 --- a/res/values-bn-rIN/strings.xml +++ b/res/values-bn-rIN/strings.xml @@ -5,6 +5,8 @@ ফাইলস নতুন ফোল্ডার সেটিংস + অঙ্কিত করা ইউজারনেম ফাইলস diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 30f5ce22..4c2f8692 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -1,5 +1,7 @@ Nova fascikla + diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index d0b98a1d..19085087 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -11,6 +11,8 @@ Configuració Detalls Envia + General Més Comptes @@ -48,6 +50,7 @@ No s\'ha rebut cap contingut. Res per pujar %1$s no pot accedir al contingut compartit S\'està pujant + segons enrere Res per aquí. Pugeu alguna cosa! Carregant... No hi ha arxius a aquesta carpeta diff --git a/res/values-cs-rCZ/strings.xml b/res/values-cs-rCZ/strings.xml index 6b8b96c6..08f37b60 100644 --- a/res/values-cs-rCZ/strings.xml +++ b/res/values-cs-rCZ/strings.xml @@ -11,6 +11,14 @@ Nastavení Podrobnosti Odeslat + Seřadit + Seřadit podle + + A-Z + Nejnovější - nejstarší + + Obecné Více Účty @@ -30,6 +38,8 @@ Doporučit přátelům Odezva Imprint + Zapamatovat umístění sdílení + Zapamatovat poslední umístění pro nahrání sdílených souborů Zkuste %1$s na vašem smartphonu! Chtěl bych vás pozvat k používání %1$s na vašem chytrém telefonu!\nKe stažení zde: %2$s Zkontrolovat server @@ -49,6 +59,7 @@ Neobdržen žádný obsah. Nic k odeslání. %1$s nemá právo přistupovat ke sdílenému obsahu Odesílání + před pár sekundami Žádný obsah. Nahrajte něco! Načítám... V tomto adresáři nejsou žádné soubory. @@ -169,7 +180,7 @@ Připojuji se k přihlašovacímu serveru... Server nepodporuje tuto přihlašovací metodu %1$s nepodporuje více účtů - Váš server nevrací správné přihlašovací ID, kontaktujte vašeho administrátora + Váš server nevrací správné přihlašovací ID, kontaktujte prosím svého správce systému Není možné provést ověření Udržovat soubor aktuální Přejmenovat @@ -239,7 +250,7 @@ %1$s nelze zkopírovat do místního adresáře %2$s Cesta pro nahrání Je nám líto, ale sdílení není na vašem serveru povoleno. Kontaktujte svého -administrátora. +správce systému. Nelze sdílet. Zkontrolujte prosím že soubor existuje Při pokusu o sdílení tohoto souboru či složky nastala chyba Nelze ukončit sdílení. Zkontrolujte prosím že soubor existuje diff --git a/res/values-cy-rGB/strings.xml b/res/values-cy-rGB/strings.xml index daace9cd..97ef0670 100644 --- a/res/values-cy-rGB/strings.xml +++ b/res/values-cy-rGB/strings.xml @@ -5,6 +5,8 @@ Ffeiliau Gosodiadau Anfon + Cyffredinol Cyfrifon Rheoli Cyfrifon @@ -25,6 +27,7 @@ Heb dderbyn cynnwys. Dim cynnwys i lwytho i fyny Does dim mynediad gan %1$s i gynnwys a rennir Yn llwytho i fyny + eiliad yn ôl Does dim byd fan hyn. Llwythwch rhywbeth i fyny! Tapiwch ffeil i ddangos gwybodaeth ychwanegol Maint: diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 54449009..df31bdc2 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -11,6 +11,14 @@ Indstillinger Detaljer Send + Sortér + Sortér efter + + A-Å + Nyeste - ældste + + Generel Mere Konti @@ -30,6 +38,8 @@ Anbefal til en ven Feedback Imprint + Husk delt placering + Husk seneste delte placering for overførsel Prøv %1$s på din smartphone! Jeg ønsker at invitere dig til at bruge %1$s på din smartphone!\nHent den her: %2$s Tjek server @@ -49,6 +59,7 @@ Intet indhold blev modtaget. Intet at uploade. %1$s er ikke tilladt adgang til delt indhold Uploader + sekunder siden Her er tomt. Upload noget! Indlæser... Der er ingen filer i denne mappe. diff --git a/res/values-de-rAT/strings.xml b/res/values-de-rAT/strings.xml index f2c13bf6..8a65cc16 100644 --- a/res/values-de-rAT/strings.xml +++ b/res/values-de-rAT/strings.xml @@ -2,6 +2,8 @@ Dateien Einstellungen + Allgemein Hilfe Passwort diff --git a/res/values-de-rCH/strings.xml b/res/values-de-rCH/strings.xml index 7a5b9e91..20392974 100644 --- a/res/values-de-rCH/strings.xml +++ b/res/values-de-rCH/strings.xml @@ -11,6 +11,8 @@ Einstellungen Details Senden + Allgemein Mehr Konten diff --git a/res/values-de-rDE/strings.xml b/res/values-de-rDE/strings.xml index 70bd98fa..26691309 100644 --- a/res/values-de-rDE/strings.xml +++ b/res/values-de-rDE/strings.xml @@ -11,27 +11,37 @@ Einstellungen Details Senden + Sortieren + Sortieren nach + + A-Z + Neueste - Älteste + + Allgemein Mehr Konten Konten verwalten App-PIN Schützen Sie Ihren Client - Sofortiges Bilderhochladen + Sofortiger Bilderupload Fotos von der Kamera sofort hochladen - Sofortiges Videohochladen + Sofortiger Videoupload Videos von der Kamera sofort hochladen Protokollierung aktivieren - Dieses wird zur Protokollierung von Problemen benutzt - Protokollierungsverlauf - Dieses zeigt die gespeicherten Protokollierungen + Dies wird zur Protokollierung von Problemen benutzt + Protokollverlauf + Dies zeigt die gespeicherten Protokolle Verlauf löschen Hilfe - Dieses einem Freund empfehlen + Dies einem Freund empfehlen Rückmeldungen Impressum + Geteilten Speicherort merken + Geteilten Upload-Speicherort merken %1$s auf Ihrem Smartphone ausprobieren! - Ich möchte Sie zum Benutzen von %1$s auf Ihrem Smartphone einladen!\nHier herunterladen: %2$s + Ich möchte Sie einladen, %1$s auf Ihrem Smartphone zu verwenden!\nHier herunterladen: %2$s Server überprüfen Server-Adresse https://… Benutzername @@ -40,7 +50,7 @@ Dateien Verbinden Hochladen - Zielordner auswählen: + Uploadordner auswählen: Kein Konto gefunden Es sind keine %1$s-Konten auf Ihrem Gerät eingerichtet. Bitte richten Sie zuerst ein Konto ein. Einrichten @@ -49,6 +59,7 @@ Es wurden keine Inhalte empfangen. Es gibt nichts zum Hochladen. %1$s darf den freigegebenen Inhalt nicht nutzen. Lade hoch + Gerade eben Alles leer. Laden Sie etwas hoch! Ladevorgang … Es befinden sich keine Dateien in diesem Ordner. @@ -84,7 +95,7 @@ %1$s wurde(n) erfolgreich hochgeladen Hochladen fehlgeschlagen Hochladen von %1$s konnte nicht abgeschlossen werden - Hochladen fehlgeschlagen, Sie müssen sich nochmals anmelden + Hochladen fehlgeschlagen, Sie müssen sich neu anmelden Herunterladen... %1$d%% Herunterladen %2$s Herunterladen erfolgreich @@ -92,7 +103,7 @@ Herunterladen fehlgeschlagen Herunterladen von %1$s konnte nicht abgeschlossen werden Noch nicht heruntergeladen - Herunterladen fehlgeschlagen, Sie müssen sich nochmals anmelden + Herunterladen fehlgeschlagen, Sie müssen sich neu anmelden Konto auswählen Synchronisation fehlgeschlagen Synchronisation fehlgeschlagen, Sie müssen sich neu anmelden @@ -111,7 +122,7 @@ Einige Dateien konnten nicht verschoben werden Lokal: %1$s Remote: %1$s - Es steht nicht genügend Speicherplatz zur Verfügung um die ausgewählten Dateien in den %1$s Ordner zu kopieren. Möchten Sie diese stattdessen verschieben? + Es steht nicht genügend Speicherplatz zur Verfügung um die ausgewählten Dateien in den Ordner %1$s zu kopieren. Möchten Sie diese stattdessen verschieben? Bitte geben Sie Ihre App-PIN ein Bitte geben Sie Ihre App-PIN ein PIN-Abfrage erfolgt nach Starten der App. @@ -166,9 +177,9 @@ Ihre Legitimierung ist abgelaufen. Bitte Legitimierung nochmals durchführen Bitte geben Sie Ihr aktuelles Passwort ein Ihre Sitzung ist abgelaufen. Bitte Anmeldung nochmals durchführen - Zum Legitimierungsserver wird verbunden … + Zum Legitimierungsserver verbinden… Der Server unterstützt diese Legitimierungsmethode nicht - %1$s unterstützt nicht mehrere Benutzerkonten + %1$s unterstützt mehrere Benutzerkonten nicht Ihr Server gibt keine richtige Benutzerkennung zurück, bitte kontaktieren Sie einen Administrator ⇥ Die Legitimierung gegenüber dem Server konnte nicht durchgeführt werden @@ -238,20 +249,20 @@ Bildvorschau Dieses Bild kann nicht angezeigt werden %1$s konnte nicht in den lokalen %2$s Ordner kopiert werden - Pfad hochladen + Upload Pfad Entschuldigung, Freigaben sind auf Ihrem Server nicht aktiviert. Bitte kontaktieren Sie Ihren ⇥⇥Administrator. - Teilen nicht möglich. Prüfen Sie, dass die Datei existiert + Teilen nicht möglich. Prüfen Sie, ob die Datei existiert Es ist ein Fehler beim Freigeben der Datei oder des Ordners aufgetreten. - Entfernen der Freigabe nicht möglich. Prüfen Sie, dass die Datei existiert + Entfernen der Freigabe nicht möglich. Prüfen Sie, ob die Datei existiert Es ist ein Fehler beim Entfernen der Freigabe für diese Datei oder den Ordner aufgetreten. Senden Link kopieren In die Zwischenablage kopiert Kritischer Fehler: Operationen können nicht ausgeführt werden - Es ist ein Fehler beim Verbinden mit dem Server aufgetreten. - Es ist ein Fehler beim Warten auf den Server aufgetreten, die Operation kann nicht ausgeführt werden - Es ist ein Fehler beim Warten auf den Server aufgetreten, die Operation kann nicht ausgeführt werden + Es ist ein Fehler bei der Verbindung mit dem Server aufgetreten. + Es ist ein Fehler während des Wartens auf den Server aufgetreten, die Operation kann nicht ausgeführt werden + Es ist ein Fehler während des Wartens auf den Server aufgetreten, die Operation kann nicht ausgeführt werden Die Operation kann nicht abgeschlossen werden, der Server ist nicht erreichbar Sie haben keine Berechtigung %s diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 028b6bc6..45f078d7 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -11,6 +11,14 @@ Einstellungen Details Senden + Sortieren + Sortieren nach + + A-Z + Neueste - Älteste + + Allgemein Mehr Konten @@ -30,6 +38,8 @@ Empfehle dies einem Freund Rückmeldungen Impressum + Geteilten Speicherort merken + Geteilten Upload-Speicherort merken Probiere %1$s auf Deinem Smartphone! Ich möchte Dich zum Benutzen von %1$s auf Deinem Smartphone einladen!\nLade es hier herunter: %2$s Überprüfe den Server @@ -49,6 +59,7 @@ Es wurden keine Inhalte empfangen. Es gibt nichts zum Hochladen. %1$s darf den freigegebenen Inhalt nicht nutzen. Lade hoch + Gerade eben Alles leer. Lade etwas hoch! Ladevorgang … Es befinden sich keine Dateien in diesem Ordner. diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 94e35a6b..6a304ca1 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -11,6 +11,12 @@ Ρυθμίσεις Λεπτομέρειες Αποστολή + + A-Z + Νεότερο - Παλαιότερο + + Γενικά Περισσότερα Λογαριασμοί @@ -49,6 +55,7 @@ Δεν ελήφθη περιεχόμενο. Δεν υπάρχει τίποτα να μεταφορτώσετε. Ο %1$s δεν επιτρέπεται να έχει πρόσβαση στο κοινόχρηστο περιεχόμενο Μεταφόρτωση + δευτερόλεπτα πριν Δεν υπάρχει τίποτα εδώ. Ανεβάστε κάτι! Φόρτωση ... Δεν υπάρχουν αρχεία σε αυτό τον φάκελο. diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 320d1e67..94bf042d 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -11,6 +11,14 @@ Settings Details Send + Sort + Sort by + + A-Z + Newest - Oldest + + General More Accounts @@ -30,6 +38,8 @@ Recommend to a friend Feedback Imprint + Remember share location + Remember last share upload location Try %1$s on your smartphone! I want to invite you to use %1$s on your smartphone!\nDownload here: %2$s Check Server @@ -49,6 +59,7 @@ No content was received. Nothing to upload. %1$s is not allowed to access the shared content Uploading + seconds ago Nothing in here. Upload something! Loading... There are no files in this folder. diff --git a/res/values-en-rNZ/strings.xml b/res/values-en-rNZ/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-en-rNZ/strings.xml +++ b/res/values-en-rNZ/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml index 2b4413ce..6b15f108 100644 --- a/res/values-eo/strings.xml +++ b/res/values-eo/strings.xml @@ -10,6 +10,8 @@ Agordo Detaloj Sendi + Ĝeneralo Pli Kontoj @@ -34,6 +36,7 @@ Neniu enhavo riceviĝis. Nenio alŝutota. $1%s ne estas permesata aliri la kunhavigitan enhavon Alŝutante + sekundoj antaŭe Nenio estas ĉi tie. Alŝutu ion! Grando: Tipo: diff --git a/res/values-es-rAR/strings.xml b/res/values-es-rAR/strings.xml index 780a6043..eeb51c32 100644 --- a/res/values-es-rAR/strings.xml +++ b/res/values-es-rAR/strings.xml @@ -11,6 +11,8 @@ Configuración Detalles Mandar + General Más Cuentas @@ -48,6 +50,7 @@ No se recibió ningún contenido. No hay nada para subir. %1$s no está autorizado para acceder al contenido compartido Subiendo + segundos atrás No hay nada. ¡Subí contenido! Cargando... No existen archivos en esta carpeta. diff --git a/res/values-es-rBO/strings.xml b/res/values-es-rBO/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-es-rBO/strings.xml +++ b/res/values-es-rBO/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-es-rCL/strings.xml b/res/values-es-rCL/strings.xml index c9510725..8f2457d8 100644 --- a/res/values-es-rCL/strings.xml +++ b/res/values-es-rCL/strings.xml @@ -7,6 +7,8 @@ Nuevo directorio Configuración detalles + General Cuentas Administrar Cuentas @@ -31,6 +33,7 @@ No se ha recibido ningún contenido. No hay nada para subir. %1$s no esta autorizado para acceder al contenido compartido Subiendo + segundos antes Seleccione un archivo para desplegar información adicional. Tamaño: Tipo: diff --git a/res/values-es-rCO/strings.xml b/res/values-es-rCO/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-es-rCO/strings.xml +++ b/res/values-es-rCO/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-es-rCR/strings.xml b/res/values-es-rCR/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-es-rCR/strings.xml +++ b/res/values-es-rCR/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-es-rEC/strings.xml b/res/values-es-rEC/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-es-rEC/strings.xml +++ b/res/values-es-rEC/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-es-rMX/strings.xml b/res/values-es-rMX/strings.xml index ef91bc63..36060254 100644 --- a/res/values-es-rMX/strings.xml +++ b/res/values-es-rMX/strings.xml @@ -11,6 +11,8 @@ Ajustes Detalles Enviar + General Más Cuentas @@ -43,6 +45,7 @@ Ningún contenido ha sido recibido. No hay nada que subir. %1$s no está autorizado para acceder al contenido compartido Enviando + hace segundos No hay nada aquí. ¡Suba algo! Pulsa sobre un archivo para mostrar información adicional. Tamaño: diff --git a/res/values-es-rPE/strings.xml b/res/values-es-rPE/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-es-rPE/strings.xml +++ b/res/values-es-rPE/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-es-rPY/strings.xml b/res/values-es-rPY/strings.xml index 56fe6665..26dde5f1 100644 --- a/res/values-es-rPY/strings.xml +++ b/res/values-es-rPY/strings.xml @@ -1,6 +1,8 @@ Archivos + Archivos diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-es-rUY/strings.xml b/res/values-es-rUY/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-es-rUY/strings.xml +++ b/res/values-es-rUY/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 7f661730..93e83c28 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -11,6 +11,14 @@ Configuración Detalles Enviar + Ordenar + Ordenar por + + A-Z + Más nuevo - Más viejo + + General Más Cuentas @@ -30,6 +38,8 @@ Recomendar a un amigo Mensajes de retroalimentación pie de imprenta + Recordar la ubicación de los archivos compartidos + Recordar la ubicación de los últimos archivos compartidos subidos Prueba %1$s en tu smarthphone! ¡Quiero invitarle a usar %1$s en su smartphone!\nDescárguelo aquí: %2$s Compruebe el servidor. @@ -49,6 +59,7 @@ Ningún contenido ha sido recibido. No hay nada que subir. %1$s no está autorizado para acceder al contenido compartido Subiendo... + hace segundos No hay nada aquí. ¡Suba algo! Cargando... No hay archivos en esta carpeta. diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml index daba47f4..75f28a7a 100644 --- a/res/values-et-rEE/strings.xml +++ b/res/values-et-rEE/strings.xml @@ -11,6 +11,14 @@ Seaded Üksikasjad Saada + Sorteeri + Sorteeri + + A-Z + Uuem - vanem + + Üldine Rohkem Kontod @@ -30,6 +38,8 @@ Soovita sõbrale Tagasiside Impressum + Jäta meelde jagamise asukoht + Jäta meelde viimase jagamise üleslaadimise asukoht Proovi oma nutitelefonil rakendust %1$s! Kutsun sind kasutama oma nutitelefonis rakendust %1$s!\nLaadi see alla siit: %2$s Kontrolli serverit @@ -49,6 +59,7 @@ Sisu ei saadud. Pole midagi üles laadida. %1$sile pole lubatud ligipääs jagatud sisule Üleslaadimine + sekundit tagasi Siin pole midagi. Lae midagi üles! Laen ... Kaustas pole faile. diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml index a9461fc0..4afe2756 100644 --- a/res/values-eu-rES/strings.xml +++ b/res/values-eu-rES/strings.xml @@ -1,5 +1,7 @@ + Deskargatu Ezeztatu diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index fec7404d..7480e323 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -11,6 +11,13 @@ Ezarpenak Xehetasunak Bidali + Ordenatu + + A-Z + Berrienak - Zaharrenak + + Orokorra Gehiago Kontuak @@ -48,6 +55,7 @@ Ez da edukirik jaso. Ez dago ezer igotzeko. %1$s-(e)k ez du baimenik elkarbanatutako edukian sartzeko Igotzen + segundu Ez dago ezer. Igo zerbait! Kargatzen... Ez dago fitxategirik karpeta honetan. @@ -236,6 +244,7 @@ Mesedez, baimendu berriz Irudi aurreikuspena Ezin da irudi hau erakutsi %1$s ezin da %2$s karpeta lokalera kopiatu + Igotzetarako Bidea Sentitzen dut, partekatzea ez dago zure zerbitzarian gaituta. Mesedez jarri harremanetan zure administratzailearekin. Errore bat egon da fitxategaia edo karpeta partekatzerakoan Errore bat egon da fitxategaia edo karpeta partekatzeari uzterakoan @@ -258,8 +267,12 @@ Mesedez, baimendu berriz Fitxategia jadanik ez dago eskuragarri zerbitzarian Kontuak Gehitu kontua + ownCloud Android programaren egunerokoak + Datuak kargatzen... Autentikazioa beharrezkoa Pasahitz okerra + Mugitu Aukeratu + Berehalako Igoerak Segurtasuna diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 6a22f893..d11e513b 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -11,6 +11,8 @@ تنظیمات جزئیات ارسال + عمومی بیش‌تر حساب‌ها @@ -44,6 +46,7 @@ هیچ مطلبی دریافت نشده است. هیچ‌‌چیزی بارگزاری نشده. %1$s اجازه ی دسترسی به محتوای مشترک را نمی دهد در حال بارگزاری + ثانیه‌ها پیش اینجا هیچ چیز نیست. درحال بارگذاری... هیچ فایلی در این پوشه نیست. diff --git a/res/values-fi-rFI/strings.xml b/res/values-fi-rFI/strings.xml index 6f02e4bc..3d77e6b9 100644 --- a/res/values-fi-rFI/strings.xml +++ b/res/values-fi-rFI/strings.xml @@ -11,6 +11,14 @@ Asetukset Tiedot Lähetä + Lajittele + Lajittelujärjestys + + A-Ö + Uusimmasta vanhimpaan + + Yleiset Enemmän Tilit @@ -29,6 +37,8 @@ Ohje Suosittele kaverille Palaute + Muista jaon sijainti + Muista viimeisin jaon lähetyssijainti Kokeile %1$sia älypuhelimellasi! Kutsun sinut käyttämään %1$sia älypuhelimellasi!\nLataa se tästä: %2$s Tarkista palvelin @@ -48,6 +58,7 @@ Sisältöä ei saatu. Ei lähetettävää palvelimelle. %1$silla ei ole oikeuksia jaettuun sisältöön Lähetetään + sekuntia sitten Täällä ei ole mitään. Lähetä tänne jotakin! Ladataan... Tässä kansiossa ei ole tiedostoja @@ -241,6 +252,7 @@ Tämä tiedosto ei ole enää palvelimella käytettävissä Tilit Lisää tili + Salattu yhteys on ohjattu uudelleen salaamatonta reittiä pitkin. Lokit Lähetä historia ownCloudin Android-sovelluksen lokit diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 17da4a97..90c7ba74 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -4,13 +4,21 @@ version %1$s Actualiser le compte Téléverser - Contenu d\'une autre application + Contenu d\'autres applications Fichiers Ouvrir avec Nouveau dossier Paramètres Détails Envoyer + Trier + Trier par + + A-Z + Plus récent - Plus ancien + + Général Plus Comptes @@ -30,14 +38,16 @@ Recommander à un ami Commentaires Empreinte - Essayez %1$s sur votre smartphone ! + Mémoriser l\'emplacement de partage + Mémoriser le dernier emplacement d\'upload + Essayez %1$s sur votre smartphone&nbsp;! J\'aimerais vous inviter à utiliser %1$s sur votre smartphone ! Téléchargez-le ici : %2$s Vérifier le serveur - Adresse du serveur https://... + Adresse du serveur https://… Nom d\'utilisateur Mot de passe - Nouveau dans %1$s ? + Nouveau dans %1$s&nbsp;? Fichiers Connecter Téléverser @@ -50,6 +60,7 @@ Téléchargez-le ici : %2$s Aucun contenu reçu. Rien à envoyer. %1$s n\'est pas autorisé à accéder au contenu partagé Téléversement + il y a quelques secondes Il n\'y a rien ici ! Envoyez donc quelque chose :) Chargement… Aucun fichier n\'est présent dans ce dossier. @@ -71,8 +82,8 @@ Téléchargez-le ici : %2$s Annuler Sauvegarder & Quitter Erreur - Chargement ... - Erreur Inconnue + Chargement… + Erreur inconnue À propos de Changer de mot de passe Effacer ce compte @@ -80,7 +91,7 @@ Téléchargez-le ici : %2$s Téléverser un fichier depuis… Nom du dossier Téléversement… - Envoi du fichier %2$s en cours, %1$d%% effectués + Envoi du fichier %2$s : %1$d%% effectués Téléversement réussi Le fichier %1$s a été envoyé avec succès Échec de l\'envoi @@ -102,7 +113,7 @@ Téléchargez-le ici : %2$s Des conflits ont été trouvés %1$d fichiers à garder synchronisés n\'ont put être synchronisé La synchronisation des fichiers a échoué - Le contenu de %1$d fichiers n\'a put être synchronisé (%2$d conflits) + Le contenu de %1$d fichiers n\'a pu être synchronisé (%2$d conflits) Certains fichiers locaux ont été oubliés %1$d fichiers du dossier %2$s n\'ont pas pu être copiés dans Depuis la version 1.3.16, les fichiers envoyé depuis ce périphérique sont copiés dans le dossier local %1$s pour éviter une perte de données lorsqu\'un même fichier est synchronisé avec plusieurs comptes. @@ -114,8 +125,8 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Tout déplacer Tous les fichiers ont été déplacés Certains fichiers n\'ont pu être déplacés - Local: %1$s - Distant: %1$s + Local&nbsp;: %1$s + Distant : %1$s Il n\'y a pas assez de place disponible pour copier les fichiers sélectionnés dans le dossier %1$s. Voulez-vous quand même les déplacer ? Veuillez saisir votre code de sécurité Veuillez saisir votre code de sécurité @@ -133,20 +144,20 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Fichier média introuvable Aucun compte n\'a été trouvé Le fichier n\'est pas dans un compte valide - Le codec de ce média n\'est pas supporté + Le codec de ce média n\'est pas pris en charge Le fichier média ne peut pas être lu Le fichier média n\'est pas correctement encodé Délai dépassé pour la lecture du morceau. Le fichier média ne peut pas être diffusé - Fichier média ne peut être joué avec le stock de media player - taux %1$s erreurs de sécurité essayant de jouer - Taux %1$s d\'erreurs de saisie essayant de jouer - Taux %1$s d\'erreurs inattendues essayant de jouer - Bouton de rem-bobinage - Bouton de Lecture ou de Pause + Le fichier média ne peut être joué avec le lecteur standard + Erreur de sécurité à la lecture de %1$s + Erreur de lecture de fichier à la lecture de %1$s + Erreur inattendue à la lecture de %1$s + Bouton de rembobinage + Bouton de lecture ou de pause Bouton d\'avance rapide - Demande d\'autorisation... - Tentative de connexion … + Demande d\'autorisation… + Tentative de connexion… Pas de connexion réseau Connexion sécurisée non disponible Connexion établie @@ -160,28 +171,28 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Le serveur met trop longtemps à répondre Adresse invalide Échec de l\'initialisation SSL - Impossible de vérifier l\'identité du serveur SSL. + Impossible de vérifier l\'identité du serveur SSL La version du serveur n\'est pas reconnue Impossible d\'établir la connexion Connexion sécurisée établie Nom d\'utilisateur ou mot de passe incorrect - Echec d\'autorisation + Échec d\'autorisation Accès refusé par le serveur d\'autorisation État inattendu ; veuillez entrer à nouveau l\'URL du serveur Votre autorisation a expiré. Merci de vous authentifier à nouveau Veuillez saisir le mot de passe courant Votre session a expiré. Merci de vous reconnecter - Connexion au serveur d\'authentification... - Le serveur ne supporte pas cette méthode d\'authentification - %1$s ne supporte pas les comptes multiples + Connexion au serveur d\'authentification… + Le serveur ne prend pas en charge pas cette méthode d\'authentification + %1$s ne prend pas en charge les comptes multiples Votre serveur a retourné un identifiant d\'utilisateur incorrect. Veuillez prendre contact avec votre administrateur Impossible de s\'authentifier sur ce serveur Maintenir le fichier à jour Renommer Supprimer - Voulez-vous vraiment supprimer %1$s ? - Voulez-vous vraiment supprimer %1$s et son contenu ? + Voulez-vous vraiment supprimer %1$s&nbsp;? + Voulez-vous vraiment supprimer %1$s et son contenu&nbsp;? Local seulement Le contenu local uniquement Effacer du serveur @@ -194,36 +205,36 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Le fichier distant n\'a pu être vérifié Le contenu des fichiers est déjà synchronisé Le dossier n\'a pas pu être créé - Caractères interdits : / \\ < > : \" | ? * + Caractères interdits&nbsp;: / \\ &lt; &gt; : " | ? * Le nom du fichier ne peut pas être vide Veuillez patienter - Problème inattendu ; veuillez essayer une autre app pour la sélection du fichier + Problème inattendu. Veuillez essayer une autre application pour la sélection du fichier Aucun fichier sélectionné Envoyer un lien à… - Connexion avec aAuth2. - Connexion au serveur aAuth2... + Connexion avec oAuth2 + Connexion au serveur oAuth2… L\'identité du site ne peut être vérifiée - Le certificat du serveur n\'est pas sûr - Le certificat du serveur a expiré - Le certificat du serveur n\'est pas encore valide - L\'URL ne correspond pas au nom d\'hôte du certificat - Voulez-vous tout de même faire confiance à ce certificat ? + Voulez-vous tout de même faire confiance à ce certificat&nbsp;? Impossible de sauvegarder le certificat Détails Masquer - Délivré à : - Délivré par : + Délivré à&nbsp;: + Délivré par&nbsp;: Nom d\'usage : - Organisation : - Unité organisationnelle : - Pays : - Région : - Localisation : - Validité : - De : - À : - Signature : - Algorithme : + Organisation&nbsp;: + Unité organisationnelle&nbsp;: + Pays&nbsp;: + Région&nbsp;: + Localisation&nbsp;: + Validité&nbsp;: + De&nbsp;: + À&nbsp;: + Signature&nbsp;: + Algorithme&nbsp;: Impossible d\'afficher le certificat. - Aucune information sur l\'erreur Ceci est un espace réservé @@ -243,7 +254,8 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Prévisualisation de l\'image Cette image ne peut pas être affichée %1$s n\'a pas pu être copié dans le dossier local %2$s - Désolé, le partage n\'est pas disponible sur votre serveur. Contactez votre administrateur, s\'il vous plait. + Chemin d\'accès pour le téléversement + Désolé, le partage n\'est pas disponible sur votre serveur. Veuillez contacter votre administrateur. Impossible de partager. Vérifiez que le fichier est bien présent Une erreur est survenue lors de la tentative de partage de ce fichier ou répertoire Impossible de supprimer le partage. Vérifiez que le fichier est bien présent @@ -251,7 +263,7 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Envoyer Copier le lien Copié dans le presse-papiers - Erreur critique : impossible de réaliser des opérations + Erreur critique&nbsp;: impossible de réaliser des opérations Une erreur s\'est produite pendant la connection au serveur Une erreur est survenue pendant l\'attente du serveur. L\'opération n\'a pas pu être effectuée. Une erreur est survenue pendant l\'attente du serveur. L\'opération n\'a pas pu être effectuée. @@ -267,6 +279,7 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Ce fichier n’est plus disponible sur le serveur Comptes Ajouter un compte + La connexion sécurisée est redirigée via une route non-sécurisée. Journaux Envoyer l\'historique Journaux de l\'application Android ownCloud @@ -281,5 +294,6 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Le fichier existe déjà dans le dossier de destination Une erreur est survenue lors de la tentative de déplacement de ce fichier ou dossier de déplacer ce fichier + Téléchargements instantanés Sécurité diff --git a/res/values-fy-rNL/strings.xml b/res/values-fy-rNL/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-fy-rNL/strings.xml +++ b/res/values-fy-rNL/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index c169179c..d2783327 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -11,6 +11,8 @@ Preferencias Detalles Enviar + Xeral Máis Contas @@ -48,6 +50,7 @@ Non se recibiu contido. Non hai nada para enviar. %1$s non ten permiso para acceder ao contido compartido Enviando + segundos atrás Aquí non hai nada. Envíe algo! Cargando... Non hai ficheiros neste cartafol. diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-he/strings.xml b/res/values-he/strings.xml index 4ae0072d..4599f2fa 100644 --- a/res/values-he/strings.xml +++ b/res/values-he/strings.xml @@ -11,6 +11,8 @@ הגדרות פרטים שליחה + כללי יותר חשבונות @@ -48,6 +50,7 @@ לא התקבל תוכן. אין מה להעלות. ל־%1$s אין הרשאה לגשת לתוכן המשותף שלך בהעלאה + שניות אין כאן שום דבר. אולי ברצונך להעלות משהו? בטעינה... אין קבצים בתיקייה זו: diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 6d0355c7..06c5d2b9 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -11,6 +11,8 @@ सेटिंग्स विवरण भेजें + सामान्य और अधिक खाते diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index b8dcfc5b..c9bf237a 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -5,6 +5,8 @@ Nova mapa Postavke Pošaljite + Općenito više Korisnićki računi @@ -15,6 +17,7 @@ Poveži Učitaj Izlaz + prije par sekundi Nema ničega u ovoj mapi. Pošalji nešto! Preuzimanje Podijelite vezu diff --git a/res/values-hu-rHU/strings.xml b/res/values-hu-rHU/strings.xml index f5900060..0e646831 100644 --- a/res/values-hu-rHU/strings.xml +++ b/res/values-hu-rHU/strings.xml @@ -11,6 +11,8 @@ Beállítások Részletek Küldjük el + Általános Több Fiókok @@ -48,6 +50,7 @@ Nem jött tartalom. Nincs mit feltölteni. %1$s nem jogosult a megosztott tartalom elérésére Feltöltés + pár másodperce Itt nincs semmi. Töltsön fel valamit! Betöltés... Nincs fájl ebben a mappában. diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index eeb78fe8..7994bf47 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -1,5 +1,7 @@ + Բեռնել diff --git a/res/values-ia/strings.xml b/res/values-ia/strings.xml index 0d79fbde..598d99a9 100644 --- a/res/values-ia/strings.xml +++ b/res/values-ia/strings.xml @@ -5,6 +5,8 @@ Nove dossier Configurationes Invia + General Plus Adjuta @@ -13,6 +15,7 @@ Files Connecte Incargar + secundas passate Nihil hic. Incarga alcun cosa! Discargar Compartir ligamine diff --git a/res/values-id/strings.xml b/res/values-id/strings.xml index be93270a..1434642b 100644 --- a/res/values-id/strings.xml +++ b/res/values-id/strings.xml @@ -11,6 +11,14 @@ Pengaturan Rincian Kirim + Urutkan + Urutan + + A-Z + Terbaru - Terlawas + + Umum Lainnya Akun @@ -30,8 +38,10 @@ Rekomendasikan ke teman Umpan balik Jejak + Ingat lokasi berbagi + Ingat lokasi unggahan berbagi terakhir Cobalah %1$s pada ponsel cerdas Anda! - Saya ingin mengajak Anda untuk menggunakan %1$s di ponsel cerdas Anda!\nUnduh gratis disini: %2$s + Saya mengajak Anda untuk menggunakan %1$s di ponsel cerdas Anda!\nUnduh gratis disini: %2$s Periksa Server Alamat server https://… Nama Pengguna @@ -49,6 +59,7 @@ Tidak ada konten yang diterima. Tidak ada yang diunggah %1$s tidak diizinkan mengakses konten berbagi Mengunggah + beberapa detik yang lalu Tidak ada apa-apa di sini. Unggah sesuatu! Memuat... Tidak ada satupun berkas dalam folder ini. @@ -84,6 +95,7 @@ %1$s berhasil diunggah Gagal mengunggah Unggah %1$s tidak selesai + Unggah gagal, Anda perlu masuk ulang Mengunduh... %1$d%% Mengunduh %2$s Berhasil mengunduh @@ -103,7 +115,7 @@ Konten berkas %1$d tidak dapat disinkronasikan (%2$d konflik) Beberapa berkas lokal terlupakan %1$d berkas diluar folder %2$s tidak dapat disalin kedalamnya - Sejak versi 1.3.16, berkas-berkas yang diunggah dari piranti ini akan disalin kedalam folder %1$s lokal untuk mencagah kehilangan data ketika berkas tunggal disinkronkan dengan akun lebih dari satu.\n\nAkibat perubahan ini, semua berkas yang diunggah di versi aplikasi sebelumnya disalin kedalam folder %2$s. Namun, sebuah kesalahan mencegah penyelesaian operasi ini saat sinkronisasi berlangsung akun. Anda boleh meninggalkan berkas seperti ini dan menghapus tautan ke %3$s atau memindahkan berkas kedalam folder %1$s dan membiarkan tautan ke %4$s.\n\nYang tampak dibawah adalah berkas lokal, dan berkas remote didalam %5$s yang dihubungkan dengannya. + Sejak versi 1.3.16, berkas-berkas yang diunggah dari piranti ini akan disalin kedalam folder %1$s lokal untuk mencagah kehilangan data saat berkas tunggal disinkronkan dengan akun lebih dari satu.\n\nAkibat perubahan ini, semua berkas yang diunggah di versi aplikasi sebelumnya disalin kedalam folder %2$s. Namun, sebuah kesalahan mencegah penyelesaian operasi ini saat sinkronisasi akun. Anda boleh meninggalkan berkas seperti ini dan menghapus tautan ke %3$s atau memindahkan berkas kedalam folder %1$s dan membiarkan tautan ke %4$s.\n\nYang tampak dibawah adalah berkas lokal, dan berkas remote didalam %5$s yang dihubungkan dengannya. Folder %1$s tidak ada lagi Pindahkan semua Semua berkas sudah dipindahkan @@ -168,6 +180,8 @@ Menyambungkan ke server otentikasi... Server tidak mendukung medote otentikasi ini %1$s tidak mendukung banyak akun + Server Anda tidak membalas id pengguna dengan banar, Sialakn hubungi Administrator + Tidak dapat mengotentikasi pada server ini Biarkan berkas tetap terbaru Ubah nama @@ -217,7 +231,7 @@ Tanda tangan: Algoritma: Sertifikat tidak dapat ditampilkan. - - Tidak ada informasi tantang terror + - Tidak ada informasi tantang error Ini adalah placeholder placeholder.txt Gambar PNG @@ -234,12 +248,48 @@ Jangan mengunggah Pratilik gambar Gambar ini tidak dapat ditampilkan + %1$s tidak dapat disalin ke folder lokal %2$s + Jalur Lokasi Unggah + Maaf, berbagi tidak diaktifkan pada server Anda. Silakan hubungi + administrator Anda. + Tidak dapat berbagi. Mohon periksa apakah berkas ada + Terjadi kesalahan saat mencoba membagikan berkas atau folder ini + Tidak dapat menghapus berbagi. Mohon periksa apakah berkas ada + Terjadi kesalahan saat mencoba menghapus berbagi berkas dan folder ini Kirim + Salin tautan Disalin ke papan klip + Kesalahan fatal: tidak dapat melakukan operasi + Terjadi kesalahan saat menghubungkan dengan server. + Terjadi kesalahan saat menunggu balasan server, operasi tidak dapat diselesaikan + Terjadi kesalahan saat menunggu balasan server, operasi tidak dapat diselesaikan + Operasi tidak dapat diselesaikan, server tidak tersedia + Anda tidak memiliki izin %s + untuk mengubah nama berkas ini + untuk menghapus berkas ini + untuk membagikan berkas ini + untuk batal membagikan berkas ini + untuk membuat berkas + untuk mengunggah kedalam folder ini + Berkas tidak lagi tersedia pada server Akun + Tambah akun + Sambungan aman dialihkan ke rute yang tidak aman. + Log + Kirim Riwayat + Log apl ownCloud Android + Memuat data... Diperlukan otentikasi Sandi salah + Pindah + Tdak ada apapun disini. Anda dapat menambahkan sebuah folder! Pilih + Tidak dapat memindahkan. Silakan periksa apakah berkas ada + Tidak mungkin untuk memindahkan folder kedalam turunannya + Berkas sudah ada didalam folder tujuan + Terjadi kesalahan saat mencoba memindahkan berkas atau folder ini + untuk memindahkan berkas ini + Unggah Cepat Keamanan diff --git a/res/values-io/strings.xml b/res/values-io/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-io/strings.xml +++ b/res/values-io/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index d6eaedad..1e14885b 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -4,12 +4,15 @@ Skrár Stillingar Senda + Meira Hjálp Notendanafn Lykilorð Skrár Senda inn + sek. Ekkert hér. Settu eitthvað inn! Niðurhal Já diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index ffa01f31..5bb79824 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -11,6 +11,14 @@ Impostazioni Dettagli Invia + Ordina + Ordina per + + A-Z + Più recente - Più datato + + Generale Altro Account @@ -30,6 +38,8 @@ Consiglia ad un amico Segnalazioni Imprint + Ricorda la posizione della condivisione + Ricorda l\'ultima posizione di caricamento della condivisione Prova %1$s sul tuo smartphone! Vorrei invitarti a usare %1$s sul tuo smartphone!\nScarica qui: %2$s Verifica server @@ -49,6 +59,7 @@ Non è stato ricevuto alcun contenuto. Niente da caricare. %1$s non è abilitato ad accedere al contenuto condiviso Caricamento in corso + secondi fa Non c\'è niente qui. Carica qualcosa! Caricamento in corso... Non ci sono file in questa cartella. @@ -66,7 +77,7 @@ No OK Annulla lo scaricamento - Annulla invio + Annulla caricamento Annulla Salva ed esci Errore @@ -234,7 +245,7 @@ Il file remoto %s non è sincronizzato con il file locale. Se continui, il contenuto del file sarà sostituito sul server. Mantieni entrambi Sovrascrivi - Non inviare + Non caricare Anteprima dell\'immagine Questa immagine non può essere mostrata %1$s non può essere copiato nella cartella locale %2$s diff --git a/res/values-ja-rJP/strings.xml b/res/values-ja-rJP/strings.xml index b6d8ffb4..f6e43e2a 100644 --- a/res/values-ja-rJP/strings.xml +++ b/res/values-ja-rJP/strings.xml @@ -11,6 +11,14 @@ 設定 詳細 送信 + ソート + ソート: + + A-Z + 最新 - 最古 + + 一般 もっと見る アカウント @@ -30,6 +38,8 @@ 友達に推薦 フィードバック インプリント + 共有場所を記憶する + 最後に共有アップロードした場所を記憶する スマートフォンで %1$s を試してください! スマートフォンで %1$s を利用してみませんか! ここからダウンロードしてください: %2$s @@ -50,6 +60,7 @@ コンテンツを受信しませんでした。アップロードするものはありません。 %1$sで共有コンテンツへのアクセスが許可されていません。 アップロード中 + 数秒前 ここには何もありません。何かアップロードしてください。 読込中 ... このフォルダーにはファイルがありません。 @@ -239,6 +250,7 @@ イメージプレビュー この画像は表示できません %1$s は、ローカルフォルダー %2$s にコピーできませんでした。 + アップロードパス 申し訳ございません。共有がサーバー上で有効になっていません。 管理者に ご連絡ください。 共有できません。ファイルがあるか確認してください。 @@ -264,6 +276,7 @@ ファイルはサーバー上で利用できません アカウント アカウントを追加 + 暗号化接続は非暗号化接続にリダイレクトされました。 ログ ログを送信 ownCloud Android アプリログ @@ -278,5 +291,6 @@ そのファイルは、宛先フォルダに既に存在しています。 このファイルまたはフォルダーを移動する際にエラーが発生しました このファイルを移動 + 自動アップロード セキュリティ diff --git a/res/values-jv/strings.xml b/res/values-jv/strings.xml index 084a4e3e..0eaa7454 100644 --- a/res/values-jv/strings.xml +++ b/res/values-jv/strings.xml @@ -1,5 +1,7 @@ + Njipuk diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml index 43b1a456..f0efc92c 100644 --- a/res/values-ka-rGE/strings.xml +++ b/res/values-ka-rGE/strings.xml @@ -6,6 +6,8 @@ ახალი ფოლდერი პარამეტრები გაგზავნა + ზოგადი უფრო მეტი ანგარიში @@ -28,6 +30,7 @@ კონტენტი არ იქნა მიღებული. არაფერია ასატვირთად. %1$s–ი არ დაიშვება გაზიარებული კონტენტის სანახავად მიმდინარეობს ატვირთვა + წამის წინ აქ არაფერი არ არის. ატვირთე რამე! დააჭირეთ ფაილს დამატებითი ინფორმაციის გამოსაჩენად. ზომა: diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 752985c3..75c68d75 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -6,6 +6,8 @@ ការកំណត់ ព័ត៌មាន​លម្អិត ផ្ញើ + ទូទៅ ច្រើន​ទៀត គណនី @@ -21,6 +23,7 @@ ដំឡើង ចាក់ចេញ កំពុង​ផ្ទុក​ឡើង + វិនាទី​មុន គ្មាន​អ្វី​នៅ​ទីនេះ​ទេ។ ផ្ទុក​ឡើង​អ្វី​មួយ! ចុចមួយ​លើឯកសារ ដើម្បី​បង្ហាញ​ព័ត៌មាន​បន្ថែម។ ទំហំ៖ diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 4a0df83f..a298ff5a 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -11,6 +11,8 @@ 설정 세부내용 보내기 + 일반 더 중요함 계정 @@ -43,6 +45,7 @@ 받은 콘텐츠가 없습니다. 업로드할 항목이 없습니다. %1$s에서 공유된 콘텐츠에 접근할 수 없습니다 업로드 중 + 초 전 내용이 없습니다. 업로드할 수 있습니다! 파일을 누르면 추가 정보가 표시됩니다. 크기: diff --git a/res/values-ku-rIQ/strings.xml b/res/values-ku-rIQ/strings.xml index 2e843f2d..c342c643 100644 --- a/res/values-ku-rIQ/strings.xml +++ b/res/values-ku-rIQ/strings.xml @@ -3,6 +3,8 @@ بارکردن په‌ڕگەکان ده‌ستكاری + گشتی هەژمارەکان یارمەتی diff --git a/res/values-lb/strings.xml b/res/values-lb/strings.xml index 19b003ec..545c8427 100644 --- a/res/values-lb/strings.xml +++ b/res/values-lb/strings.xml @@ -7,6 +7,8 @@ Astellungen Detailer Schécken + Allgemeng Méi Accounten @@ -22,6 +24,7 @@ Setup Erausgoen Eroplueden + Sekonnen hir Hei ass näischt. Lued eppes rop! Gréisst: Typ: diff --git a/res/values-lt-rLT/strings.xml b/res/values-lt-rLT/strings.xml index 70bc85d5..2f45be19 100644 --- a/res/values-lt-rLT/strings.xml +++ b/res/values-lt-rLT/strings.xml @@ -11,6 +11,8 @@ Nustatymai Informacija Siųsti + Bendras Daugiau Paskyros @@ -48,6 +50,7 @@ nebuvo gauta turinio. Nėra įkeltino turinio %1$s neleidžiama prieiti prie turinio, kuriuo dalijamasi Išsiunčiama + prieš sekundę Čia tuščia. Įkelkite ką nors! Įkeliama ... Šiame aplanke nėra failų. diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 88df8292..39ea5bf0 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -6,6 +6,8 @@ Jauna mape Iestatījumi Sūtīt + Vispārīgi Vairāk Konti @@ -26,6 +28,7 @@ Nav saņemts nekāds saturs. Nav ko augšupielādēt. %1$s nedrīkst piekļūt koplietotajam saturam Augšupielādē + sekundes atpakaļ Te vēl nekas nav. Rīkojies, sāc augšupielādēt! Uzsitiet uz datnes, lai redzētu papildinformāciju. Izmērs: diff --git a/res/values-mg/strings.xml b/res/values-mg/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-mg/strings.xml +++ b/res/values-mg/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index e7b4906e..5333aae4 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -7,6 +7,8 @@ Параметри Детали: Прати + Општо Повеќе Сметки @@ -26,6 +28,7 @@ Не е пронајдена сметка Нагодување Прекини + пред секунди Тука нема ништо. Снимете нешто! Големина: Тип: diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml index 75c6f22f..3ee64f03 100644 --- a/res/values-ml-rIN/strings.xml +++ b/res/values-ml-rIN/strings.xml @@ -1,6 +1,8 @@ ഫയലുകൾ + ഫയലുകൾ diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml index af534d2e..808ab65d 100644 --- a/res/values-ms-rMY/strings.xml +++ b/res/values-ms-rMY/strings.xml @@ -3,6 +3,8 @@ Muat naik Fail-fail Set + Umum Lanjutan Akaun diff --git a/res/values-mt-rMT/strings.xml b/res/values-mt-rMT/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-mt-rMT/strings.xml +++ b/res/values-mt-rMT/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 7f998bf3..7ec90056 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -1,10 +1,13 @@ ဖိုင်များ + အကူအညီ သုံးစွဲသူအမည် စကားဝှက် ဖိုင်များ + စက္ကန့်အနည်းငယ်က ဒေါင်းလုတ် ဟုတ် မဟုတ်ဘူး diff --git a/res/values-nb-rNO/strings.xml b/res/values-nb-rNO/strings.xml index 55e2bb4c..11326516 100644 --- a/res/values-nb-rNO/strings.xml +++ b/res/values-nb-rNO/strings.xml @@ -11,6 +11,8 @@ Innstillinger Detaljer Send + Generelt Mer Kontoer @@ -49,6 +51,7 @@ Intet innhold ble mottatt. Intet å laste opp. %1$s har ikke tilgang til det delte innholdet Laster opp + for få sekunder siden Ingenting her. Last opp noe! Laster... Det er ingen filer i denne mappen. diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index f79d9331..e0bcaa41 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -11,6 +11,14 @@ Instellingen Details Versturen + Sorteren + Sorteer op + + A-Z + Nieuwste - Oudste + + Algemeen Meer Accounts @@ -30,6 +38,8 @@ Aanbevelen bij een vriend Feedback afdruk + Onthoud de share locatie + Onthoud de laatste upload locatie Probeer %1$s op uw smartphone! Uitnodiging om %1$s op uw smartphone uit te proberen! Download hier: %2$s @@ -50,6 +60,7 @@ Download hier: %2$s Er werd geen inhoud ontvangen. Niets om te uploaden. %1$s is niet toegestaan om toegang te hebben tot de publieke inhoud Uploaden + seconden geleden Er bevindt zich hier niets. Upload een bestand! Laden ... Er staan geen bestanden in deze map. @@ -60,7 +71,7 @@ Download hier: %2$s Aangepast: Download Bestand verversen - Bestand was hernoemt naar %1$s tijdens het uploaden + Bestand is tijdens het uploaden hernoemd naar %1$s Deel link Link niet meer delen Ja @@ -109,7 +120,7 @@ Download hier: %2$s Door deze aanpassing werden alle bestanden die met een eerdere versie zijn ge-uploaded gekopieerd naar de %2$s map. Maar een fout voorkwam het succesvol afronden van deze actie tijdens het synchroniseren. U kunt de/het bestand(en) laten staan zoals ze nu zijn en de link naar %3$s verwijderen, of u kunt de bestanden verplaatsen naar de %1$s map en de link naar %4$s laten staan. Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar verwezen. Map %1$s bestaat niet meer - Alle verplaatsen + Alles verplaatsen Alle bestanden zijn verplaatst Een paar bestanden konden niet worden verplaatst Lokaal: %1$s diff --git a/res/values-nn-rNO/strings.xml b/res/values-nn-rNO/strings.xml index 528bff4f..9cf7ac6e 100644 --- a/res/values-nn-rNO/strings.xml +++ b/res/values-nn-rNO/strings.xml @@ -11,6 +11,8 @@ Innstillingar Detaljar Send + Generelt Meir Kontoar @@ -44,6 +46,7 @@ Inga innhald å lasta opp Mottok ikkje noko innhald. Ingenting å lasta opp. Lastar opp + sekund sidan Ingenting her. Last noko opp! Trykk på ei fil for å visa meir informasjon. Storleik: diff --git a/res/values-oc/strings.xml b/res/values-oc/strings.xml index 84ca4981..e6a7eae9 100644 --- a/res/values-oc/strings.xml +++ b/res/values-oc/strings.xml @@ -3,6 +3,8 @@ Amontcarga Fichièrs Configuracion + General Mai d\'aquò Comptes @@ -17,6 +19,7 @@ Configuracion Quita Al amontcargar + segonda a Pas res dedins. Amontcarga qualquaren Talha : Tipe : diff --git a/res/values-or-rIN/strings.xml b/res/values-or-rIN/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-or-rIN/strings.xml +++ b/res/values-or-rIN/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index dc0b9e78..bf5abd69 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -10,6 +10,8 @@ ਸੈਟਿੰਗ ਵੇਰਵ ਭੇਜੋ + ਆਮ ਅਕਾਊਂਟ ਲਾਗ ਰੱਖਣਾ ਚਾਲੂ @@ -27,6 +29,7 @@ ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਕੋਈ ਸਮੱਗਰੀ ਨਹੀਂ ਕੋਈ ਸਮੱਗਰੀ ਨਹੀਂ ਮਿਲੀ। ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਕੁਝ ਨਹੀਂ ਹੈ। ਅੱਪਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ + ਸਕਿੰਟ ਪਹਿਲਾਂ ਹੋਰ ਜਾਣਕਾਰੀ ਵੇਖਣ ਲਈ ਫਾਇਲ ਉੱਤੇ ਛੂਹੋ ਆਕਾਰ: ਕਿਸਮ: diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 8c0a9878..a5a7b7b9 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -11,6 +11,14 @@ Ustawienia Szczegóły Wyślij + Sortuj + Sortuj według + + A-Z + Nowsze - Starsze + + Ogólne Więcej Konta @@ -49,6 +57,7 @@ Nie otrzymano danych. Nie ma nic do wysłania. %1$s nie ma dostępu do udostępnionych treści Wysyłanie + sekund temu Pusto. Wyślij coś! Ładowanie... Nie ma plików w tym folderze. @@ -238,6 +247,7 @@ Podgląd Ten obrazek nie może zostać wyświetlony %1$s nie może zostać skopiowany do lokalnego folderu %2$s + Katalog wysyłania Przepraszamy, ale współdzielenie nie jest włączone na Twoim serwerze. Proszę skontaktuj się z administratorem. Nie można udostępnić. Proszę sprawdzić, czy plik istnieje @@ -263,8 +273,10 @@ Ten plik nie jest już dostępny na serwerze Konta Dodaj konto + Bezpieczne połączenie jest przekierowywane przez niezabezpieczone trasy. Logi Wyślij historię + Logi aplikacji ownCloud Android Ładuję dane... Wymagana autoryzacja Złe hasło @@ -276,5 +288,6 @@ Plik istnieje już w folderze docelowym Pojawił się błąd podczas próby przeniesienia tego pliku lub folderu aby przenieść ten plik + Automatyczne wysyłanie Bezpieczeństwo diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 3ffb84b8..512cfe56 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -11,6 +11,14 @@ Configurações Detalhes Enviar + Classificar + Classificar por + + A-Z + Mais Recente - Mais Antigo + + Geral Mais Contas @@ -30,6 +38,8 @@ Recomendar a um amigo Feedback Imprint + Lembre-se do local de compartilhamento + Lembrar do último local de envio de compartilhamento Tentar %1$s em seu smartfone! Gostaria de convida-lo a usar %1$s em seu smartphone!\nBaixe aqui: %2$s Verificar Servidor @@ -49,6 +59,7 @@ Nenhum conteúdo foi recebido. Nada para enviar. %1$s não é permitido acessar o conteúdo compartilhado Enviando + segundos atrás Nada aqui. Envie alguma coisa! Carregando... Não existe nenhum arquivo nesta pasta. diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 6c4aab17..072a0850 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -1,35 +1,45 @@ - %1$s Aplicação(ões) Android + %1$s App(s) Android versão %1$s - Actualizar + Atualizar conta Enviar - Conteúdo das outras apps + Conteúdo de outras apps Ficheiros Abrir com Nova Pasta Definições Detalhes Enviar + Ordenar + Ordenar por + + A-Z + Mais Recente - Mais Antigo + + Geral Mais Contas - Gerir contas - App PIN + Gerir Contas + PIN da App Proteja o seu cliente - Transferência instantânea de imagens - Transferência instantânea de imagens tiradas com câmara + Envios instantâneos de imagens + Envio instantâneo de imagens tiradas com a câmara Envios instantâneos dos vídeos - Carregamento instantâneo de vídeos registados com a camera - Ativar Rastreio - Isto é usado para registar problemas - Historico do rastreio + Envio instantâneo de vídeos gravados com a câmara + Ativar Registo de Eventos + Isto é utilizado para registar problemas + Histórico dos Registos Isto mostra os registos guardados - Eliminar Histórico + Apagar Histórico Ajuda Recomendar a um amigo - Resposta + Feedback Imprint + Lembrar localização de partilha + Lembrar da última localização de envio de partilha Experimente %1$s no seu smartphone! Quero convidar-te a usares %1$s no teu smartphone!\nFaz download aqui: %2$s Verificar Servidor @@ -41,51 +51,52 @@ Ligar Enviar Escolha a pasta de envio: - Nenhuma conta encontrada - Não tem nenhuma conta %1$s no seu dispositivo. Configure uma conta. + A conta não foi encontrada + Não tem nenhuma conta %1$s no seu dispositivo. Por favor, configure primeiro uma conta. Configurar Sair - Sem conteúdo para carregar + Sem conteúdo para enviar Não foi recebido nenhum conteúdo. Nada para enviar. O %1$s não está autorizado a aceder aos ficheiro partilhados. A enviar + segundos atrás Vazio. Envie alguma coisa! - A carregar... + A carregar ... Não existem ficheiros nesta pasta. Clique no ficheiro para visualizar informação adicional. Tamanho: Tipo: Criado: Modificado: - Descarregar + Transferir Atualizar ficheiro O nome do ficheiro foi alterado para %1$s durante o envio. - Partilhar o link + Partilhar a hiperligação Deixar de partilhar a ligação Sim Não OK Cancelar a transferência - Cancelar envio + Cancelar o envio Cancelar Guardar & Sair Erro - A carregar... + A carregar ... Erro Desconhecido Sobre - Alterar palavra-chave + Alterar senha Apagar conta Criar conta - Carregar de... + Enviar de ... Nome da pasta - A carregar... + A enviar ... A enviar %1$d%% , %2$s completo. Carregado com sucesso %1$s foi carregado com sucesso Carregamento falhou O envio do ficheiro %1$s não foi concluído. Falha no carregamento, é necessário fazer novo login - A descarregar... + A transferir ... %1$d%% A decarregar %2$s Descarga com sucesso %1$s foi descarregado com sucesso @@ -97,7 +108,7 @@ Falhou a sincronização Falhou a sincronização, necessita fazer um novo login Não foi possível sincronizar %1$s - Password inválida para %1$s + Senha inválida para %1$s Foram encontrados conflitos Não foi possível sincronizar o ficheiro %1$d Falhou a operação de manter os ficheiros sincronizados @@ -204,12 +215,12 @@ Quer confiar neste certificado de qualquer maneira? O certificado não pôde ser guardado Detalhes - Esconder + Ocultar Emitido para: Emitido por: Nome comum. Organização: - Unidade organizaconal. + Unidade organizacional. País: Estado: Localização: @@ -218,33 +229,33 @@ Para: Assinatura: Algoritmo - O certificado não pôde ser mostrado. - - Nenhuma informação acerca do erro + Não foi possível mostrar o certificado. + - Nenhuma informação sobre o erro Isto é uma variável. placeholder.txt Imagem PNG 389 KB - 2012/05/18 12:23 PM + 2012/05/18 12:23 12:23:45 - Enviar fotografias apenas via WiFi - Enviar videos apenas por WiFi - /Upload-Instantâneo - Conflito na actualização + Só enviar as fotografias via wi-fi + Só enviar os vídeos por wi-fi + /Envio Instantâneo + Conflito na atualização O ficheiro remoto %s não está sincronizado com o ficheiro local. Se continuar ira substituir o ficheiro no servidor. - Manter os dois - Sobrepor + Manter ambos + Substituir Não enviar. - Pré-Visualização da imagem + Pré-Visualizar imagem Esta imagem não pode ser mostrada Não foi possível copiar %1$s para a pasta local %2$s - Caminho de Upload + Caminho de \'A Enviar\' Lamentamos mas não é possível partilhar através do seu servidor. Por favor contacte o seu administrador. Não é possivel partilhar. Por favor verifique se o ficheiro existe Ocorreu um erro enquanto tentava partilhar este ficheiro ou pasta Não é possível retirar a partilha. Verifique se o ficheiro existe Ocorreu um erro enquanto retirava a partilha deste ficheiro ou pasta Enviar - Copiar ligação + Copiar hiperligação Copiado para a área de transferência Erro crítico: não é possível executar as operações Ocorreu um erro durante a ligação ao servidos. @@ -252,31 +263,31 @@ Ocorreu um erro durante a ligação ao servidor, não foi possível realizar a operação. A operação não foi concluída, o servidor está inacessível. - Você não tem permissão %s + Não tem permissão %s para renomear este ficheiro - para eliminar este ficheiro + para apagar este ficheiro para partilhar este ficheiro - para eliminar a partilha deste ficheiro + para cancelar a partilha deste ficheiro para criar o ficheiro - para carregar dentro desta pasta + para enviar nesta pasta O ficheiro não está mais disponível no servidor Contas Adicionar conta Ligação segura é redireccionada para um caminho inseguro. - Logs + Registos de Alterações Enviar Histórico - Logs da app ownCloud Android - A carregar os dados... + Registos das alterações da app ownCloud Android + A carregar os dados ... Autenticação necessária - Password errada + Palavra-passe errada Mover Não está aqui nada. Pode adicionar uma pasta! - Escolha - Não é possível mover. Verifique se o ficheiro existe + Escolher + Não é possível mover. Por favor, verifique se o ficheiro existe Não é possível mover esta pasta deste modo O ficheiro já existe na pasta de destino - Um erro ocorreu ao tentar mover este ficheiro ou pasta + Ocorreu um ocorreu quando tentava mover este ficheiro ou pasta para mover este ficheiro - Uploads Instantâneos + Envios Instantâneos Segurança diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index b3ea7256..5df31b3e 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -11,6 +11,10 @@ Setări Detalii Expediază + Sortare + Sortare după + General Mai mult Conturi @@ -48,6 +52,7 @@ Nu a fost primit nici un conţinut .Nu exista nimic de încărcat . %1$s nu este permis sa acceseze conținutul shared Încărcare + secunde în urmă Nimic aici. Încarcă ceva! Se incarca In acest folder nu sunt fisiere. @@ -257,7 +262,13 @@ pentru a încărca în acest folder Fișierul nu mai este disponibil pe server Conturi + Adaugă cont + Se încarcă datele... + Autentificare necesară Parolă greșită + Mutare + Nu este nimic aici. Poți adăuga un director! Alege + pentru a muta acest fișier Securitate diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 66ad7ad0..1f773f96 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -11,6 +11,14 @@ Настройки Подробно Отправить + Упорядочить + Упорядочить по + + А-Я + Новые - Старые + + Основные Больше Учётные записи @@ -50,6 +58,7 @@ Содержимое не получено. Нечего загружать. %1$s не имеет доступа к опубликованным данным Загрузка + только что Здесь ничего нет. Загрузите что-нибудь! Загрузка... В данной папке нет файлов. @@ -239,6 +248,7 @@ Предпросмотр Это изображение не может быть отображено %1$s не возможно скопировать в локальною папку %2$s + Путь для загрузки К сожалению, на вашем сервере отключен совместный доступ. Пожалуйста, свяжитесь с вашим администратором. Невозможно добавить в общий доступ. Пожалуйста, проверьте, существует ли файл Ошибка предоставления общего доступа к этому файлу или каталогу @@ -263,6 +273,7 @@ Этот файл больше недоступен на сервере Учётные записи Добавить учетную запись + Защищённое соединение перенаправлено по незащищённому маршруту Журналы История Отправлений Журналы Андроид-приложения ownCloud @@ -277,5 +288,6 @@ Файл уже существует в папке назначения Произошла ошибка при попытке перемещения этого файла или папки переместить этот файл + Мгновенные загрузки Безопасность diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml index e64f5775..d413c8f9 100644 --- a/res/values-si-rLK/strings.xml +++ b/res/values-si-rLK/strings.xml @@ -3,6 +3,8 @@ උඩුගත කිරීම ගොනු සිටුවම් + සාමාන්‍යයෙන් වැඩි ගිණුම් @@ -19,6 +21,7 @@ ස්ථාපනය නික්මෙන්න උඩුගතවේ + තත්පරයන්ට පෙර මෙහි කිසිවක් නොමැත. යමක් උඩුගත කරන්න වැඩි විස්තර සඳහා ගොනුවක් ස්පර්ෂ කරන්න විශාලත්වය: diff --git a/res/values-sk-rSK/strings.xml b/res/values-sk-rSK/strings.xml index 76860435..8616f683 100644 --- a/res/values-sk-rSK/strings.xml +++ b/res/values-sk-rSK/strings.xml @@ -11,6 +11,8 @@ Nastavenia Podrobnosti Odoslať + Všeobecné Viac Účty @@ -48,6 +50,7 @@ Nedodaný žiaden obsah. Nič na odoslanie. %1$s nemá práva pre prístup k zdieľanému obsahu Nahrávanie + pred sekundami Žiadny súbor. Nahrajte niečo! Nahráva sa... V tomto priečinku nie sú žiadne súbory. diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index dcdf6038..f0c1ee2a 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -11,6 +11,14 @@ Nastavitve Podrobnosti Pošlji + Razvrsti + Razvrsti po + + Naraščajoče A – Z + Novejše – Starejše + + Splošno Več Računi @@ -30,6 +38,8 @@ Priporoči prijateljem Odziv Natis + Zapomni si mesto souporabe + Zapomni si zadnje mesto za pošiljanje v oblak Preizkusi %1$s na pametnem telefonu! Želim ti predstaviti %1$s na pametnem telefonu!\nPrejmeš ga lahko na: %2$s Preveri strežnik @@ -49,6 +59,7 @@ Ni prejete vsebine. Ni datotek za pošiljanje. Oblak %1$s nima nastavljenih dovoljenj za dostop do vsebine v souporabi Pošiljanje + pred nekaj sekundami Tukaj še ni ničesar. Najprej je treba datoteke poslati v oblak! Poteka nalaganje ... V tej mapi ni datotek. @@ -238,6 +249,7 @@ Predogled slike Te slike ni mogoče prikazati Datoteke %1$s ni mogoče kopirati v krajevno mapo %2$s + Pot za pošiljanje Souporaba je na strežniku onemogočena. Možnost lahko spreminjajo le uporabniki s skrbniškimi dovoljenji. Souporaba ni mogoča. Preverite, ali datoteka obstaja. @@ -263,6 +275,7 @@ Datoteka na strežniku ni več na voljo. Računi Dodaj račun + Varna povezava je preusmerjena preko ne-varne poti. Dnevnik Pošlji zgodovino Dnevnik programa ownCloud @@ -277,5 +290,6 @@ Datoteka v ciljni mapi že obstaja. Prišlo je do napake med premikanjem datoteke v mapo med premikanjem datoteke + Takojšnje pošiljanje v oblak Varnost diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index adeb3e99..a794c6d9 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -5,6 +5,8 @@ Dosje e\'re Parametrat Dërgo + Përgjithshme Më tepër Llogarit @@ -22,6 +24,7 @@ Ndërto Dil Ngarko + sekonda më parë Këtu nuk ka asgje. Ngarko dicka Trokitje e lehtë në një dokument për të shfaqur informacion shtesë. Dimensioni: diff --git a/res/values-sr-rSP/strings.xml b/res/values-sr-rSP/strings.xml index 973a5489..64e2de07 100644 --- a/res/values-sr-rSP/strings.xml +++ b/res/values-sr-rSP/strings.xml @@ -5,6 +5,8 @@ Podešavanja Detaljnije Pošalji + Opšte Nalozi Upravljaj nalozima @@ -15,6 +17,7 @@ Pošalji Nalog nije nađen Šalje se + Pre par sekundi Ovde nema ničeg. Pošaljite nešto! Veličina: Tip: diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 2ef13736..ea8c40ef 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -5,6 +5,8 @@ Датотеке Поставке Пошаљи + Опште Више Налози @@ -20,6 +22,7 @@ Нема садржаја за отпремање Садржај није примљен. Нема ништа да се отпреми. Отпремање + пре неколико секунди Овде нема ничег. Отпремите нешто! Додирните датотеку ради приказа додатних информација. Величина: diff --git a/res/values-su/strings.xml b/res/values-su/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-su/strings.xml +++ b/res/values-su/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index c077786f..0a01a65f 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -11,6 +11,8 @@ Inställningar Detaljer Skicka + Allmänt Mer Konton @@ -49,6 +51,7 @@ Inget innehåll mottaget. Inget att ladda upp. %1$s har inte rättighet till det delade innehållet Laddar upp + sekunder sedan Ingenting här. Ladda upp något! Laddar... Det finns inga filer i den här mappen. diff --git a/res/values-sw-rKE/strings.xml b/res/values-sw-rKE/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-sw-rKE/strings.xml +++ b/res/values-sw-rKE/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml index 9cce7aeb..5a27ffd0 100644 --- a/res/values-ta-rIN/strings.xml +++ b/res/values-ta-rIN/strings.xml @@ -11,6 +11,8 @@ அமைப்புகள் விவரங்கள் அனுப்பவும் + பொது மேலும் கணக்குகள் diff --git a/res/values-ta-rLK/strings.xml b/res/values-ta-rLK/strings.xml index 8dd0c780..f317edf8 100644 --- a/res/values-ta-rLK/strings.xml +++ b/res/values-ta-rLK/strings.xml @@ -5,6 +5,8 @@ கோப்புகள் அமைப்புகள் விவரங்கள் + பொதுவான மேலதிக கணக்குகள் @@ -25,6 +27,7 @@ ஒரு உள்ளடக்கமும் பெறப்படவில்லை. பதிவேற்றுவதற்கு ஒன்றும் இல்லை பகிரப்பட்ட உள்ளடக்ககங்களை அணுகுவதற்கு %1$s அனுமதிக்கமாட்டாது பதிவேற்றல் + செக்கன்களுக்கு முன் இங்கு ஒன்றும் இல்லை. ஏதாவது பதிவேற்றுக! மேலதிக தகவல்களை காட்சிப்படுத்துவதற்கு கோப்பின் மேல் தட்டுக. அளவு: diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index ac049826..fdebfa74 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -3,10 +3,13 @@ కొత్త సంచయం అమరికలు పంపించు + మరిన్ని సహాయం వాడుకరి పేరు సంకేతపదం + క్షణాల క్రితం అవును కాదు సరే diff --git a/res/values-tg-rTJ/strings.xml b/res/values-tg-rTJ/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-tg-rTJ/strings.xml +++ b/res/values-tg-rTJ/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-th-rTH/strings.xml b/res/values-th-rTH/strings.xml index 0b141a18..f10ec0f6 100644 --- a/res/values-th-rTH/strings.xml +++ b/res/values-th-rTH/strings.xml @@ -7,6 +7,8 @@ ตั้งค่า รายละเอียด ส่ง + ทั่วไป มาก บัญชี @@ -27,6 +29,7 @@ ยังไม่ได้รับเนื้อหา ไม่มีอะไรให้ต้องอัพโหลด %1$s ไม่อนุญาตให้เข้าถึงเนื้อหาที่ถูกแชร์ไว้ กำลังอัพโหลด + วินาที ก่อนหน้านี้ ยังไม่มีไฟล์ใดๆอยู่ที่นี่ กรุณาอัพโหลดไฟล์! แตะที่ไฟล์ เพื่อแสดงข้อมูลเพิ่มเติม ขนาด: diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index e5bfe93d..2a34fcf5 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -11,6 +11,14 @@ Ayarlar Ayrıntılar Gönder + Sırala + Şuna göre sırala + + A-Z + Yeniden - Eskiye + + Genel Daha fazla Hesaplar @@ -30,6 +38,8 @@ Bir arkadaşa öner Geribildirim İzlenim + Konum paylaşmayı hatırla + Son paylaşma yükleme konumunu hatırla %1$s uygulamasını akıllı telefonunda dene! Seni, akıllı telefonunda %1$s kullanmaya davet ediyorum!\nBuradan indirebilirsin: %2$s Sunucuyu Denetle @@ -49,6 +59,7 @@ Hiç içerik alınmadı. Yüklenecek hiçbir şey yok. %1$s için paylaşılan içeriğe erişim izni yok Yükleniyor + saniyeler önce Burada hiçbir şey yok. Bir şeyler yükleyin! Yükleniyor... Bu klasörde dosya yok. diff --git a/res/values-ug/strings.xml b/res/values-ug/strings.xml index e1140f87..12a54928 100644 --- a/res/values-ug/strings.xml +++ b/res/values-ug/strings.xml @@ -5,6 +5,8 @@ يېڭى قىسقۇچ تەڭشەكلەر يوللا + ئادەتتىكى تېخىمۇ كۆپ ھېساباتلار diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index d927e39f..597150b8 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -11,6 +11,14 @@ Налаштування Деталі Надіслати + Сортувати + Сортувати за + + А-Я + Новіші-Старіші + + Основне Більше Облікові записи @@ -49,6 +57,7 @@ Не отримано даних. Нічого завантажувати. %1$s не може отримати доступ до спільного контенту Завантаження + секунди тому Тут нічого немає. Відвантажте що-небудь! Завантаження... В цій теці немає файлів. diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml index 1532b7ac..229bdaca 100644 --- a/res/values-ur-rPK/strings.xml +++ b/res/values-ur-rPK/strings.xml @@ -2,11 +2,14 @@ سیٹینگز بھجیں + مزید مدد یوزر نیم پاسورڈ منسلک + سیکنڈز پہلے ڈاؤن لوڈ، اشتراک لنک ہاں diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 56e55a1d..69623e19 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -1,4 +1,6 @@ + diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 122092d1..52e3c563 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -11,6 +11,8 @@ Cài đặt Chi tiết Gởi + Tổng hợp hơn Tài khoản @@ -43,6 +45,7 @@ Không có nội dung được nhận. Không có gì để tải lên. %1$s không cho phép truy cập vào các nội dung chia sẻ Đang tải lên + vài giây trước Không có gì ở đây .Hãy tải lên một cái gì đó ! Tap vào một tập tin để hiển thị thêm thông tin Kích thước: diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 79255f8d..8c647c45 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -11,6 +11,8 @@ 设置 详细信息 发送 + 常规 更多 账号 @@ -50,6 +52,7 @@ 没有接收到内容,无可上传。 %1$s未被允许访问共享内容。 上传 + 秒前 这里还什么都没有。上传些东西吧! 载入中.... 在该文件夹中不存在文件。 diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index bd5f2e13..b2731798 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -7,6 +7,8 @@ 新資料夾 設定 傳送 + 一般 更多 帳號 @@ -23,6 +25,7 @@ 設定 退出 正在上戴 + 秒前 按一下文件顯示更多資料。 大小: 類別: diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 91041380..8dc73b02 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -11,6 +11,14 @@ 設定 詳細資料 寄出 + 排序 + 排序依照 + + A-Z + 最新 - 最舊 + + 一般 更多 帳號 @@ -30,6 +38,8 @@ 推薦給朋友 反饋 法律聲明 + 記住分享位置 + 記住上次分享上傳位置 在您的手機中試用%1$s! 我想邀請您在您的手機上使用 %1$s ! 可以由這兒下載: %2$s 檢查伺服器 @@ -49,6 +59,7 @@ 沒接到任何內容。沒有什麼可上載。 %1$s 並沒有被允許存取分享的內容 上傳中 + 幾秒前 這裡還沒有東西,上傳一些吧! 載入中… 這個目錄中沒有任何檔案. diff --git a/res/values/dims.xml b/res/values/dims.xml new file mode 100644 index 00000000..d433cba3 --- /dev/null +++ b/res/values/dims.xml @@ -0,0 +1,21 @@ + + + + 32dp + diff --git a/res/values/strings.xml b/res/values/strings.xml index dc7ec2a4..de88a5b3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -39,7 +39,9 @@ Recommend to a friend Feedback Imprint - + Remember share location + Remember last share upload location + "Try %1$s on your smartphone!" "I want to invite you to use %1$s on your smartphone!\nDownload here: %2$s" @@ -60,6 +62,7 @@ No content was received. Nothing to upload. %1$s is not allowed to access the shared content Uploading + seconds ago Nothing in here. Upload something! Loading... There are no files in this folder. @@ -283,6 +286,7 @@ An error occurred while waiting for the server, the operation couldn\'t have been done An error occurred while waiting for the server, the operation couldn\'t have been done The operation couldn\'t be completed, server is unavailable + You do not have permission %s @@ -317,5 +321,4 @@ Instant Uploads Security - diff --git a/src/com/owncloud/android/MainApp.java b/src/com/owncloud/android/MainApp.java index e04239df..c2a4c68b 100644 --- a/src/com/owncloud/android/MainApp.java +++ b/src/com/owncloud/android/MainApp.java @@ -55,7 +55,7 @@ public class MainApp extends Application { } else { OwnCloudClientManagerFactory.setDefaultPolicy(Policy.ALWAYS_NEW_CLIENT); } - + // initialise thumbnails cache on background thread new ThumbnailsCacheManager.InitDiskCacheTask().execute(); diff --git a/src/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/com/owncloud/android/authentication/AuthenticatorActivity.java index 97dcfde8..0f7892ee 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -85,6 +85,7 @@ import com.owncloud.android.ui.dialog.IndeterminateProgressDialog; import com.owncloud.android.ui.dialog.SamlWebViewDialog; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener; +import com.owncloud.android.utils.DisplayUtils; /** * This Activity is used to add an ownCloud account to the App @@ -356,7 +357,8 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { /// step 2 - set properties of UI elements (text, visibility, enabled...) mHostUrlInput = (EditText) findViewById(R.id.hostUrlInput); - mHostUrlInput.setText(mServerInfo.mBaseUrl); + // Convert IDN to Unicode + mHostUrlInput.setText(DisplayUtils.convertIdn(mServerInfo.mBaseUrl, false)); if (mAction != ACTION_CREATE) { /// lock things that should not change mHostUrlInput.setEnabled(false); @@ -737,6 +739,8 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { showRefreshButton(false); if (uri.length() != 0) { + // Handle internationalized domain names + uri = DisplayUtils.convertIdn(uri, true); mServerStatusText = R.string.auth_testing_connection; mServerStatusIcon = R.drawable.progress_small; showServerStatus(); diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index 5b1bef1b..41a51063 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -300,6 +300,7 @@ public class FileDataStorageManager { cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink()); cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions()); cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId()); + cv.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL, file.needsUpdateThumbnail()); boolean existsByPath = fileExists(file.getRemotePath()); if (existsByPath || fileExists(file.getFileId())) { diff --git a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index e75404ef..1d2cda8c 100644 --- a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -20,19 +20,30 @@ package com.owncloud.android.datamodel; import java.io.File; import java.lang.ref.WeakReference; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.GetMethod; + +import android.accounts.Account; +import android.accounts.AccountManager; import android.content.res.Resources; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Bitmap.CompressFormat; +import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.ThumbnailUtils; +import android.net.Uri; import android.os.AsyncTask; -import android.util.TypedValue; import android.widget.ImageView; import com.owncloud.android.MainApp; +import com.owncloud.android.R; +import com.owncloud.android.lib.common.OwnCloudAccount; +import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; +import com.owncloud.android.lib.common.accounts.AccountUtils.Constants; import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.ui.adapter.DiskLruImageCache; import com.owncloud.android.utils.BitmapUtils; import com.owncloud.android.utils.DisplayUtils; @@ -47,7 +58,8 @@ public class ThumbnailsCacheManager { private static final String TAG = ThumbnailsCacheManager.class.getSimpleName(); - private static final String CACHE_FOLDER = "thumbnailCache"; + private static final String CACHE_FOLDER = "thumbnailCache"; + private static final String MINOR_SERVER_VERSION_FOR_THUMBS = "7.8.0"; private static final Object mThumbnailsDiskCacheLock = new Object(); private static DiskLruImageCache mThumbnailCache = null; @@ -56,7 +68,9 @@ public class ThumbnailsCacheManager { private static final int DISK_CACHE_SIZE = 1024 * 1024 * 10; // 10MB private static final CompressFormat mCompressFormat = CompressFormat.JPEG; private static final int mCompressQuality = 70; - + private static OwnCloudClient mClient = null; + private static String mServerVersion = null; + public static Bitmap mDefaultImg = BitmapFactory.decodeResource( MainApp.getAppContext().getResources(), @@ -65,10 +79,12 @@ public class ThumbnailsCacheManager { public static class InitDiskCacheTask extends AsyncTask { + @Override protected Void doInBackground(File... params) { synchronized (mThumbnailsDiskCacheLock) { mThumbnailCacheStarting = true; + if (mThumbnailCache == null) { try { // Check if media is mounted or storage is built-in, if so, @@ -153,15 +169,17 @@ public class ThumbnailsCacheManager { public static class ThumbnailGenerationTask extends AsyncTask { private final WeakReference mImageViewReference; + private static Account mAccount; private OCFile mFile; private FileDataStorageManager mStorageManager; - public ThumbnailGenerationTask(ImageView imageView, FileDataStorageManager storageManager) { + public ThumbnailGenerationTask(ImageView imageView, FileDataStorageManager storageManager, Account account) { // Use a WeakReference to ensure the ImageView can be garbage collected mImageViewReference = new WeakReference(imageView); if (storageManager == null) throw new IllegalArgumentException("storageManager must not be NULL"); mStorageManager = storageManager; + mAccount = account; } // Decode image in background. @@ -170,6 +188,15 @@ public class ThumbnailsCacheManager { Bitmap thumbnail = null; try { + if (mAccount != null) { + AccountManager accountMgr = AccountManager.get(MainApp.getAppContext()); + + mServerVersion = accountMgr.getUserData(mAccount, Constants.KEY_OC_VERSION); + OwnCloudAccount ocAccount = new OwnCloudAccount(mAccount, MainApp.getAppContext()); + mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). + getClientFor(ocAccount, MainApp.getAppContext()); + } + mFile = params[0]; final String imageKey = String.valueOf(mFile.getRemoteId()); @@ -180,9 +207,8 @@ public class ThumbnailsCacheManager { if (thumbnail == null || mFile.needsUpdateThumbnail()) { // Converts dp to pixel Resources r = MainApp.getAppContext().getResources(); - int px = (int) Math.round(TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, 150, r.getDisplayMetrics() - )); + + int px = (int) Math.round(r.getDimension(R.dimen.file_icon_size)); if (mFile.isDown()){ Bitmap bitmap = BitmapUtils.decodeSampledBitmapFromFile( @@ -198,6 +224,36 @@ public class ThumbnailsCacheManager { mStorageManager.saveFile(mFile); } + } else { + // Download thumbnail from server + if (mClient != null && mServerVersion != null) { + OwnCloudVersion serverOCVersion = new OwnCloudVersion(mServerVersion); + if (serverOCVersion.compareTo(new OwnCloudVersion(MINOR_SERVER_VERSION_FOR_THUMBS)) >= 0) { + try { + int status = -1; + + String uri = mClient.getBaseUri() + "/index.php/apps/files/api/v1/thumbnail/" + + px + "/" + px + Uri.encode(mFile.getRemotePath(), "/"); + Log_OC.d("Thumbnail", "URI: " + uri); + GetMethod get = new GetMethod(uri); + status = mClient.executeMethod(get); + if (status == HttpStatus.SC_OK) { + byte[] bytes = get.getResponseBody(); + Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + thumbnail = ThumbnailUtils.extractThumbnail(bitmap, px, px); + + // Add thumbnail to cache + if (thumbnail != null) { + addBitmapToCache(imageKey, thumbnail); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } else { + Log_OC.d(TAG, "Server too old"); + } + } } } diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index ad2a2cbe..04804402 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -73,6 +73,7 @@ import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; import com.owncloud.android.utils.ErrorMessageAdapter; +import com.owncloud.android.utils.UriUtils; @@ -120,6 +121,9 @@ public class FileUploader extends Service implements OnDatatransferProgressListe private NotificationCompat.Builder mNotificationBuilder; private int mLastPercent; + private static final String MIME_TYPE_PDF = "application/pdf"; + private static final String FILE_EXTENSION_PDF = ".pdf"; + public static String getUploadFinishMessage() { return FileUploader.class.getName().toString() + UPLOAD_FINISH_MESSAGE; @@ -646,18 +650,6 @@ public class FileUploader extends Service implements OnDatatransferProgressListe private OCFile obtainNewOCFileToUpload(String remotePath, String localPath, String mimeType, FileDataStorageManager storageManager) { - OCFile newFile = new OCFile(remotePath); - newFile.setStoragePath(localPath); - newFile.setLastSyncDateForProperties(0); - newFile.setLastSyncDateForData(0); - - // size - if (localPath != null && localPath.length() > 0) { - File localFile = new File(localPath); - newFile.setFileLength(localFile.length()); - newFile.setLastSyncDateForData(localFile.lastModified()); - } // don't worry about not assigning size, the problems with localPath - // are checked when the UploadFileOperation instance is created // MIME type if (mimeType == null || mimeType.length() <= 0) { @@ -671,6 +663,25 @@ public class FileUploader extends Service implements OnDatatransferProgressListe if (mimeType == null) { mimeType = "application/octet-stream"; } + + if (isPdfFileFromContentProviderWithoutExtension(localPath, mimeType)){ + remotePath += FILE_EXTENSION_PDF; + } + + OCFile newFile = new OCFile(remotePath); + newFile.setStoragePath(localPath); + newFile.setLastSyncDateForProperties(0); + newFile.setLastSyncDateForData(0); + + // size + if (localPath != null && localPath.length() > 0) { + File localFile = new File(localPath); + newFile.setFileLength(localFile.length()); + newFile.setLastSyncDateForData(localFile.lastModified()); + } // don't worry about not assigning size, the problems with localPath + // are checked when the UploadFileOperation instance is created + + newFile.setMimetype(mimeType); return newFile; @@ -856,4 +867,17 @@ public class FileUploader extends Service implements OnDatatransferProgressListe sendStickyBroadcast(end); } + /** + * Checks if content provider, using the content:// scheme, returns a file with mime-type + * 'application/pdf' but file has not extension + * @param localPath + * @param mimeType + * @return true if is needed to add the pdf file extension to the file + */ + private boolean isPdfFileFromContentProviderWithoutExtension(String localPath, String mimeType) { + return localPath.startsWith(UriUtils.URI_CONTENT_SCHEME) && + mimeType.equals(MIME_TYPE_PDF) && + !localPath.endsWith(FILE_EXTENSION_PDF); + } + } diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index cdf12823..d61e6784 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -33,6 +33,7 @@ import org.apache.http.HttpStatus; import android.accounts.Account; import android.content.Context; import android.content.Intent; +import android.util.Log; //import android.support.v4.content.LocalBroadcastManager; import com.owncloud.android.datamodel.FileDataStorageManager; @@ -325,7 +326,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { private void synchronizeData(ArrayList folderAndFiles, OwnCloudClient client) { // get 'fresh data' from the database mLocalFolder = mStorageManager.getFileByPath(mLocalFolder.getRemotePath()); - + // parse data from remote folder OCFile remoteFolder = fillOCFile((RemoteFile)folderAndFiles.get(0)); remoteFolder.setParentId(mLocalFolder.getParentId()); @@ -372,6 +373,10 @@ public class SynchronizeFolderOperation extends RemoteOperation { if (remoteFile.isFolder()) { remoteFile.setFileLength(localFile.getFileLength()); // TODO move operations about size of folders to FileContentProvider + } else if (mRemoteFolderChanged && remoteFile.isImage() && + remoteFile.getModificationTimestamp() != localFile.getModificationTimestamp()) { + remoteFile.setNeedsUpdateThumbnail(true); + Log.d(TAG, "Image " + remoteFile.getFileName() + " updated on the server"); } remoteFile.setPublicLink(localFile.getPublicLink()); remoteFile.setShareByLink(localFile.isShareByLink()); diff --git a/src/com/owncloud/android/operations/UploadFileOperation.java b/src/com/owncloud/android/operations/UploadFileOperation.java index 43fcaa55..1536a604 100644 --- a/src/com/owncloud/android/operations/UploadFileOperation.java +++ b/src/com/owncloud/android/operations/UploadFileOperation.java @@ -31,11 +31,16 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.httpclient.methods.PutMethod; import org.apache.commons.httpclient.methods.RequestEntity; +import android.accounts.Account; +import android.content.Context; +import android.net.Uri; + +import com.owncloud.android.MainApp; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileUploader; -import com.owncloud.android.lib.common.network.ProgressiveDataTransferer; -import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; +import com.owncloud.android.lib.common.network.ProgressiveDataTransferer; import com.owncloud.android.lib.common.operations.OperationCancelledException; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; @@ -45,9 +50,7 @@ import com.owncloud.android.lib.resources.files.ChunkedUploadRemoteFileOperation import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; import com.owncloud.android.lib.resources.files.UploadRemoteFileOperation; import com.owncloud.android.utils.FileStorageUtils; - -import android.accounts.Account; -import android.content.Context; +import com.owncloud.android.utils.UriUtils; /** @@ -92,10 +95,9 @@ public class UploadFileOperation extends RemoteOperation { throw new IllegalArgumentException("Illegal NULL account in UploadFileOperation creation"); if (file == null) throw new IllegalArgumentException("Illegal NULL file in UploadFileOperation creation"); - if (file.getStoragePath() == null || file.getStoragePath().length() <= 0 - || !(new File(file.getStoragePath()).exists())) { + if (file.getStoragePath() == null || file.getStoragePath().length() <= 0) { throw new IllegalArgumentException( - "Illegal file in UploadFileOperation; storage path invalid or file not found: " + "Illegal file in UploadFileOperation; storage path invalid: " + file.getStoragePath()); } @@ -218,52 +220,77 @@ public class UploadFileOperation extends RemoteOperation { // copied } else { + String temporalPath = FileStorageUtils.getTemporalPath(mAccount.name) + mFile.getRemotePath(); mFile.setStoragePath(temporalPath); temporalFile = new File(temporalPath); - if (!mOriginalStoragePath.equals(temporalPath)) { // preventing - // weird - // but - // possible - // situation - InputStream in = null; - OutputStream out = null; - try { - File temporalParent = temporalFile.getParentFile(); - temporalParent.mkdirs(); - if (!temporalParent.isDirectory()) { - throw new IOException("Unexpected error: parent directory could not be created"); - } - temporalFile.createNewFile(); - if (!temporalFile.isFile()) { - throw new IOException("Unexpected error: target file could not be created"); - } - in = new FileInputStream(originalFile); + + File temporalParent = temporalFile.getParentFile(); + temporalParent.mkdirs(); + if (!temporalParent.isDirectory()) { + throw new IOException("Unexpected error: parent directory could not be created"); + } + temporalFile.createNewFile(); + if (!temporalFile.isFile()) { + throw new IOException("Unexpected error: target file could not be created"); + } + + InputStream in = null; + OutputStream out = null; + + try { + + // In case document provider schema as 'content://' + if (mOriginalStoragePath.startsWith(UriUtils.URI_CONTENT_SCHEME)) { + + Uri uri = Uri.parse(mOriginalStoragePath); + + in = MainApp.getAppContext().getContentResolver().openInputStream(uri); out = new FileOutputStream(temporalFile); - byte[] buf = new byte[1024]; - int len; - while ((len = in.read(buf)) > 0) { - out.write(buf, 0, len); - } - } catch (Exception e) { - result = new RemoteOperationResult(ResultCode.LOCAL_STORAGE_NOT_COPIED); - return result; - - } finally { - try { - if (in != null) - in.close(); - } catch (Exception e) { - Log_OC.d(TAG, "Weird exception while closing input stream for " + mOriginalStoragePath + " (ignoring)", e); + int nRead; + byte[] data = new byte[16384]; + + while ((nRead = in.read(data, 0, data.length)) != -1) { + out.write(data, 0, nRead); } - try { - if (out != null) - out.close(); - } catch (Exception e) { - Log_OC.d(TAG, "Weird exception while closing output stream for " + expectedPath + " (ignoring)", e); + + out.flush(); + + } else { + if (!mOriginalStoragePath.equals(temporalPath)) { // preventing + // weird + // but + // possible + // situation + + in = new FileInputStream(originalFile); + out = new FileOutputStream(temporalFile); + byte[] buf = new byte[1024]; + int len; + while ((len = in.read(buf)) > 0) { + out.write(buf, 0, len); + } } } + + } catch (Exception e) { + result = new RemoteOperationResult(ResultCode.LOCAL_STORAGE_NOT_COPIED); + return result; + + } finally { + try { + if (in != null) + in.close(); + } catch (Exception e) { + Log_OC.d(TAG, "Weird exception while closing input stream for " + mOriginalStoragePath + " (ignoring)", e); + } + try { + if (out != null) + out.close(); + } catch (Exception e) { + Log_OC.d(TAG, "Weird exception while closing output stream for " + expectedPath + " (ignoring)", e); + } } } } @@ -417,5 +444,4 @@ public class UploadFileOperation extends RemoteOperation { public void cancel() { mUploadOperation.cancel(); } - } diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index b5d543a4..49259e9f 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -31,6 +31,7 @@ import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; +import android.content.ContentUris; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -41,13 +42,18 @@ import android.content.SyncRequest; import android.content.res.Resources.NotFoundException; import android.database.Cursor; import android.net.Uri; +import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.os.IBinder; import android.preference.PreferenceManager; +import android.provider.DocumentsContract; import android.provider.MediaStore; +import android.provider.OpenableColumns; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; @@ -101,6 +107,7 @@ import com.owncloud.android.ui.preview.PreviewMediaFragment; import com.owncloud.android.ui.preview.PreviewVideoActivity; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ErrorMessageAdapter; +import com.owncloud.android.utils.UriUtils; /** @@ -151,7 +158,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private String DIALOG_UNTRUSTED_CERT; private OCFile mWaitingToSend; - + @Override protected void onCreate(Bundle savedInstanceState) { Log_OC.d(TAG, "onCreate() start"); @@ -563,6 +570,11 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { builder.setExpedited(true); builder.setManual(true); builder.syncOnce(); + + // Fix bug in Android Lollipop when you click on refresh the whole account + Bundle extras = new Bundle(); + builder.setExtras(extras); + SyncRequest request = builder.build(); ContentResolver.requestSync(request); } @@ -654,8 +666,12 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private void requestSimpleUpload(Intent data, int resultCode) { String filepath = null; + String mimeType = null; + + Uri selectedImageUri = data.getData(); + try { - Uri selectedImageUri = data.getData(); + mimeType = getContentResolver().getType(selectedImageUri); String filemanagerstring = selectedImageUri.getPath(); String selectedImagePath = getPath(selectedImageUri); @@ -687,10 +703,34 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } if (!remotepath.endsWith(OCFile.PATH_SEPARATOR)) remotepath += OCFile.PATH_SEPARATOR; - remotepath += new File(filepath).getName(); + + if (filepath.startsWith(UriUtils.URI_CONTENT_SCHEME)) { + + Cursor cursor = MainApp.getAppContext().getContentResolver() + .query(Uri.parse(filepath), null, null, null, null, null); + + try { + if (cursor != null && cursor.moveToFirst()) { + String displayName = cursor.getString( + cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); + Log.i(TAG, "Display Name: " + displayName + "; mimeType: " + mimeType); + + displayName.replace(File.separatorChar, '_'); + displayName.replace(File.pathSeparatorChar, '_'); + remotepath += displayName + DisplayUtils.getComposedFileExtension(filepath); + + } + } finally { + cursor.close(); + } + + } else { + remotepath += new File(filepath).getName(); + } i.putExtra(FileUploader.KEY_LOCAL_FILE, filepath); i.putExtra(FileUploader.KEY_REMOTE_FILE, remotepath); + i.putExtra(FileUploader.KEY_MIME_TYPE, mimeType); i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE); if (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE) i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE); @@ -866,22 +906,74 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { return dialog; } - /** - * Translates a content URI of an image to a physical path - * on the disk + * Translates a content URI of an content to a physical path on the disk + * * @param uri The URI to resolve - * @return The path to the image or null if it could not be found + * @return The path to the content or null if it could not be found */ public String getPath(Uri uri) { - String[] projection = { MediaStore.Images.Media.DATA }; - Cursor cursor = managedQuery(uri, projection, null, null, null); - if (cursor != null) { - int column_index = cursor - .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); - cursor.moveToFirst(); - return cursor.getString(column_index); - } + final boolean isKitKatOrLater = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; + + // DocumentProvider + if (isKitKatOrLater && DocumentsContract.isDocumentUri(getApplicationContext(), uri)) { + // ExternalStorageProvider + if (UriUtils.isExternalStorageDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + if ("primary".equalsIgnoreCase(type)) { + return Environment.getExternalStorageDirectory() + "/" + split[1]; + } + } + // DownloadsProvider + else if (UriUtils.isDownloadsDocument(uri)) { + + final String id = DocumentsContract.getDocumentId(uri); + final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), + Long.valueOf(id)); + + return UriUtils.getDataColumn(getApplicationContext(), contentUri, null, null); + } + // MediaProvider + else if (UriUtils.isMediaDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + Uri contentUri = null; + if ("image".equals(type)) { + contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + } else if ("video".equals(type)) { + contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; + } else if ("audio".equals(type)) { + contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; + } + + final String selection = "_id=?"; + final String[] selectionArgs = new String[] { split[1] }; + + return UriUtils.getDataColumn(getApplicationContext(), contentUri, selection, selectionArgs); + } + // Documents providers returned as content://... + else if (UriUtils.isContentDocument(uri)) { + return uri.toString(); + } + } + // MediaStore (and general) + else if ("content".equalsIgnoreCase(uri.getScheme())) { + + // Return the remote address + if (UriUtils.isGooglePhotosUri(uri)) + return uri.getLastPathSegment(); + + return UriUtils.getDataColumn(getApplicationContext(), uri, null, null); + } + // File + else if ("file".equalsIgnoreCase(uri.getScheme())) { + return uri.getPath(); + } return null; } diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index d078b1e2..20330931 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -104,7 +104,7 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa if (obj != null && obj instanceof LongClickableCheckBoxPreference) { mShowContextMenu = true; - mAccountName = obj.toString(); + mAccountName = ((LongClickableCheckBoxPreference) obj).getKey(); Preferences.this.openContextMenu(listView); @@ -406,7 +406,8 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa for (Account a : accounts) { LongClickableCheckBoxPreference accountPreference = new LongClickableCheckBoxPreference(this); accountPreference.setKey(a.name); - accountPreference.setTitle(a.name); + // Handle internationalized domain names + accountPreference.setTitle(DisplayUtils.convertIdn(a.name, false)); mAccountsPrefCategory.addPreference(accountPreference); // Check the current account that is being used diff --git a/src/com/owncloud/android/ui/activity/Uploader.java b/src/com/owncloud/android/ui/activity/Uploader.java index 62ad44a4..6c8a1320 100644 --- a/src/com/owncloud/android/ui/activity/Uploader.java +++ b/src/com/owncloud/android/ui/activity/Uploader.java @@ -39,22 +39,22 @@ import android.accounts.AccountManager; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.Dialog; -import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.DialogInterface.OnClickListener; import android.content.Intent; +import android.content.SharedPreferences; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.Parcelable; +import android.preference.PreferenceManager; import android.provider.MediaStore.Audio; import android.provider.MediaStore.Images; import android.provider.MediaStore.Video; import android.view.View; -import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; @@ -62,6 +62,10 @@ import android.widget.EditText; import android.widget.SimpleAdapter; import android.widget.Toast; +import com.actionbarsherlock.app.ActionBar; +import com.actionbarsherlock.app.SherlockListActivity; +import com.actionbarsherlock.view.MenuItem; +import com.owncloud.android.utils.DisplayUtils; /** * This can be used to upload things to an ownCloud instance. @@ -69,7 +73,7 @@ import android.widget.Toast; * @author Bartek Przybylski * */ -public class Uploader extends ListActivity implements OnItemClickListener, android.view.View.OnClickListener { +public class Uploader extends SherlockListActivity implements OnItemClickListener, android.view.View.OnClickListener { private static final String TAG = "ownCloudUploader"; private Account mAccount; @@ -91,9 +95,11 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - getWindow().requestFeature(Window.FEATURE_NO_TITLE); mParents = new Stack(); - mParents.add(""); + + ActionBar actionBar = getSupportActionBar(); + actionBar.setIcon(DisplayUtils.getSeasonalIconId()); + if (prepareStreamsToUpload()) { mAccountManager = (AccountManager) getSystemService(Context.ACCOUNT_SERVICE); Account[] accounts = mAccountManager.getAccountsByType(MainApp.getAccountType()); @@ -106,8 +112,11 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro } else { mAccount = accounts[0]; mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); + initTargetFolder(); populateDirectoryList(); + } + } else { showDialog(DIALOG_NO_STREAM); } @@ -161,7 +170,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro case DIALOG_MULTIPLE_ACCOUNT: CharSequence ac[] = new CharSequence[mAccountManager.getAccountsByType(MainApp.getAccountType()).length]; for (int i = 0; i < ac.length; ++i) { - ac[i] = mAccountManager.getAccountsByType(MainApp.getAccountType())[i].name; + ac[i] = DisplayUtils.convertIdn(mAccountManager.getAccountsByType(MainApp.getAccountType())[i].name, false); } builder.setTitle(R.string.common_choose_account); builder.setItems(ac, new OnClickListener() { @@ -169,6 +178,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro public void onClick(DialogInterface dialog, int which) { mAccount = mAccountManager.getAccountsByType(MainApp.getAccountType())[which]; mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); + initTargetFolder(); populateDirectoryList(); } }); @@ -288,12 +298,22 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro private void populateDirectoryList() { setContentView(R.layout.uploader_layout); - String full_path = ""; - for (String a : mParents) - full_path += a + "/"; + String current_dir = mParents.peek(); + if(current_dir.equals("")){ + getSupportActionBar().setTitle(getString(R.string.default_display_name_for_root_folder)); + } + else{ + getSupportActionBar().setTitle(current_dir); + } + boolean notRoot = (mParents.size() > 1); + ActionBar actionBar = getSupportActionBar(); + actionBar.setDisplayHomeAsUpEnabled(notRoot); + actionBar.setHomeButtonEnabled(notRoot); + + String full_path = generatePath(mParents); Log_OC.d(TAG, "Populating view with content of : " + full_path); - + mFile = mStorageManager.getFileByPath(full_path); if (mFile != null) { Vector files = mStorageManager.getFolderContent(mFile); @@ -317,6 +337,14 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro } } + private String generatePath(Stack dirs) { + String full_path = ""; + + for (String a : dirs) + full_path += a + "/"; + return full_path; + } + private boolean prepareStreamsToUpload() { if (getIntent().getAction().equals(Intent.ACTION_SEND)) { mStreamsToUpload = new ArrayList(); @@ -408,6 +436,13 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro intent.putExtra(FileUploader.KEY_REMOTE_FILE, remote.toArray(new String[remote.size()])); intent.putExtra(FileUploader.KEY_ACCOUNT, mAccount); startService(intent); + + //Save the path to shared preferences + SharedPreferences.Editor appPrefs = PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()).edit(); + appPrefs.putString("last_upload_path", mUploadPath); + appPrefs.apply(); + finish(); } @@ -416,5 +451,52 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } } + + /** + * Loads the target folder initialize shown to the user. + * + * The target account has to be chosen before this method is called. + */ + private void initTargetFolder() { + if (mStorageManager == null) { + throw new IllegalStateException("Do not call this method before initializing mStorageManager"); + } + + SharedPreferences appPreferences = PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()); + + String last_path = appPreferences.getString("last_upload_path", ""); + // "/" equals root-directory + if(last_path.equals("/")) { + mParents.add(""); + } + else{ + String[] dir_names = last_path.split("/"); + for (String dir : dir_names) + mParents.add(dir); + } + //Make sure that path still exists, if it doesn't pop the stack and try the previous path + while(!mStorageManager.fileExists(generatePath(mParents)) && mParents.size() > 1){ + mParents.pop(); + } + } + + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + boolean retval = true; + switch (item.getItemId()) { + case android.R.id.home: { + if((mParents.size() > 1)) { + onBackPressed(); + } + break; + } + default: + retval = super.onOptionsItemSelected(item); + } + return retval; + } + } diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index 9a2a0d3a..10356320 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -29,6 +29,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.preference.PreferenceManager; +import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -46,6 +47,7 @@ import com.owncloud.android.datamodel.ThumbnailsCacheManager; import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncDrawable; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; +import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.activity.ComponentsGetter; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.FileStorageUtils; @@ -82,10 +84,11 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { Context context, ComponentsGetter transferServiceGetter ) { - + mJustFolders = justFolders; mContext = context; mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); + mTransferServiceGetter = transferServiceGetter; mAppPreferences = PreferenceManager @@ -98,6 +101,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { // initialise thumbnails cache on background thread new ThumbnailsCacheManager.InitDiskCacheTask().execute(); + } @Override @@ -181,9 +185,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { fileSizeV.setVisibility(View.VISIBLE); fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength())); lastModV.setVisibility(View.VISIBLE); - lastModV.setText( - DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()) - ); + lastModV.setText(showRelativeTimestamp(file)); // this if-else is needed even thoe fav icon is visible by default // because android reuses views in listview if (!file.keepInSync()) { @@ -217,7 +219,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) { final ThumbnailsCacheManager.ThumbnailGenerationTask task = new ThumbnailsCacheManager.ThumbnailGenerationTask( - fileIcon, mStorageManager + fileIcon, mStorageManager, mAccount ); if (thumbnail == null) { thumbnail = ThumbnailsCacheManager.mDefaultImg; @@ -251,9 +253,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { // } lastModV.setVisibility(View.VISIBLE); - lastModV.setText( - DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()) - ); + lastModV.setText(showRelativeTimestamp(file)); checkBoxV.setVisibility(View.GONE); view.findViewById(R.id.imageView3).setVisibility(View.GONE); @@ -515,5 +515,10 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { mSortAscending = ascending; sortDirectory(); - } + } + + private CharSequence showRelativeTimestamp(OCFile file){ + return DisplayUtils.getRelativeDateTimeString(mContext, file.getModificationTimestamp(), + DateUtils.SECOND_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0); + } } diff --git a/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java b/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java index a9b6ad2c..c9408b1e 100644 --- a/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/LocalFileListFragment.java @@ -18,6 +18,7 @@ package com.owncloud.android.ui.fragment; import java.io.File; +import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; @@ -209,16 +210,18 @@ public class LocalFileListFragment extends ExtendedListFragment { * @return File paths to the files checked by the user. */ public String[] getCheckedFilePaths() { - String [] result = null; + ArrayList result = new ArrayList(); SparseBooleanArray positions = mList.getCheckedItemPositions(); if (positions.size() > 0) { - Log_OC.d(TAG, "Returning " + positions.size() + " selected files"); - result = new String[positions.size()]; - for (int i=0; i= 354) { + if (Calendar.getInstance().get(Calendar.DAY_OF_YEAR) >= 354 && + MainApp.getAppContext().getString(R.string.app_name).equals(OWNCLOUD_APP_NAME)) { return R.drawable.winter_holidays_icon; } else { return R.drawable.icon; } } + + /** + * Converts an internationalized domain name (IDN) in an URL to and from ASCII/Unicode. + * @param url the URL where the domain name should be converted + * @param toASCII if true converts from Unicode to ASCII, if false converts from ASCII to Unicode + * @return the URL containing the converted domain name + */ + @TargetApi(Build.VERSION_CODES.GINGERBREAD) + public static String convertIdn(String url, boolean toASCII) { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { + // Find host name after '//' or '@' + int hostStart = 0; + if (url.indexOf("//") != -1) { + hostStart = url.indexOf("//") + "//".length(); + } else if (url.indexOf("@") != -1) { + hostStart = url.indexOf("@") + "@".length(); + } + + int hostEnd = url.substring(hostStart).indexOf("/"); + // Handle URL which doesn't have a path (path is implicitly '/') + hostEnd = (hostEnd == -1 ? url.length() : hostStart + hostEnd); + + String host = url.substring(hostStart, hostEnd); + host = (toASCII ? IDN.toASCII(host) : IDN.toUnicode(host)); + + return url.substring(0, hostStart) + host + url.substring(hostEnd); + } else { + return url; + } + } + + /** + * Get the file extension if it is on path as type "content://.../DocInfo.doc" + * @param filepath: Content Uri converted to string format + * @return String: fileExtension (type '.pdf'). Empty if no extension + */ + public static String getComposedFileExtension(String filepath) { + String fileExtension = ""; + String fileNameInContentUri = filepath.substring(filepath.lastIndexOf("/")); + + // Check if extension is included in uri + int pos = fileNameInContentUri.lastIndexOf('.'); + if (pos >= 0) { + fileExtension = fileNameInContentUri.substring(pos); + } + return fileExtension; + } + + public static CharSequence getRelativeDateTimeString(Context c, long time, long minResolution, long transitionResolution, int flags){ + CharSequence dateString = ""; + + // in Future + if (time > System.currentTimeMillis()){ + return DisplayUtils.unixTimeToHumanReadable(time); + } + // < 60 seconds -> seconds ago + else if ((System.currentTimeMillis() - time) < 60 * 1000) { + return c.getString(R.string.file_list_seconds_ago); + } else { + // Workaround 2.x bug (see https://github.com/owncloud/android/issues/716) + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB && (System.currentTimeMillis() - time) > 24 * 60 * 60 * 1000){ + Date date = new Date(time); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + dateString = DateUtils.getRelativeDateTimeString(c, date.getTime(), minResolution, transitionResolution, flags); + } else { + dateString = DateUtils.getRelativeDateTimeString(c, time, minResolution, transitionResolution, flags); + } + } + + return dateString.toString().split(",")[0]; + } } diff --git a/src/com/owncloud/android/utils/UriUtils.java b/src/com/owncloud/android/utils/UriUtils.java new file mode 100644 index 00000000..e66d2c9f --- /dev/null +++ b/src/com/owncloud/android/utils/UriUtils.java @@ -0,0 +1,103 @@ +/* ownCloud Android client application + * Copyright (C) 2012-2014 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package com.owncloud.android.utils; + +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; + + +/** + * A helper class for some Uri operations. + */ +public class UriUtils { + + public static final String URI_CONTENT_SCHEME = "content://"; + + + /** + * Get the value of the data column for this Uri. This is useful for + * MediaStore Uris, and other file-based ContentProviders. + * + * @param context The context. + * @param uri The Uri to query. + * @param selection (Optional) Filter used in the query. + * @param selectionArgs (Optional) Selection arguments used in the query. + * @return The value of the _data column, which is typically a file path. + */ + public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { + + Cursor cursor = null; + final String column = "_data"; + final String[] projection = { column }; + + try { + cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); + if (cursor != null && cursor.moveToFirst()) { + + final int column_index = cursor.getColumnIndexOrThrow(column); + return cursor.getString(column_index); + } + } finally { + if (cursor != null) + cursor.close(); + } + return null; + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is ExternalStorageProvider. + */ + public static boolean isExternalStorageDocument(Uri uri) { + return "com.android.externalstorage.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is DownloadsProvider. + */ + public static boolean isDownloadsDocument(Uri uri) { + return "com.android.providers.downloads.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is MediaProvider. + */ + public static boolean isMediaDocument(Uri uri) { + return "com.android.providers.media.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is Google Photos. + */ + public static boolean isGooglePhotosUri(Uri uri) { + return "com.google.android.apps.photos.content".equals(uri.getAuthority()); + } + + /** + * + * @param uri The Uri to check. + * @return Whether the Uri is from a content provider as kind "content://..." + */ + public static boolean isContentDocument(Uri uri) { + return uri.toString().startsWith(URI_CONTENT_SCHEME); + } +}