');
+ var tbody = $('');
+ dragshadow.append(tbody);
+
+ var dir=$('#dir').val();
+
+ $(selectedFiles).each(function(i,elem){
+ var newtr = $('
'
+ +'
'+elem.name+'
'+humanFileSize(elem.size)+'
'
+ +'
');
+ tbody.append(newtr);
+ if (elem.type === 'dir') {
+ newtr.find('td.filename').attr('style','background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')');
+ } else {
+ getMimeIcon(elem.mime,function(path){
+ newtr.find('td.filename').attr('style','background-image:url('+path+')');
+ });
+ }
+ });
+
+ return dragshadow;
+}
+
+//options for file drag/drop
var dragOptions={
- distance: 20, revert: 'invalid', opacity: 0.7, helper: 'clone',
+ revert: 'invalid', revertDuration: 300,
+ opacity: 0.7, zIndex: 100, appendTo: 'body', cursorAt: { left: -5, top: -5 },
+ helper: createDragShadow, cursor: 'move',
stop: function(event, ui) {
$('#fileList tr td.filename').addClass('ui-draggable');
}
-};
+}
+
var folderDropOptions={
drop: function( event, ui ) {
- var file=ui.draggable.parent().data('file');
- var target=$(this).find('.nametext').text().trim();
- var dir=$('#dir').val();
- $.ajax({
- url: OC.filePath('files', 'ajax', 'move.php'),
- data: "dir="+encodeURIComponent(dir)+"&file="+encodeURIComponent(file)+'&target='+encodeURIComponent(dir)+'/'+encodeURIComponent(target),
- complete: function(data){boolOperationFinished(data, function(){
- var el = $('#fileList tr').filterAttr('data-file',file).find('td.filename');
- el.draggable('destroy');
- FileList.remove(file);
- });}
+ //don't allow moving a file into a selected folder
+ if ($(event.target).parents('tr').find('td input:first').prop('checked') === true) {
+ return false;
+ }
+
+ var target=$.trim($(this).find('.nametext').text());
+
+ var files = ui.helper.find('tr');
+ $(files).each(function(i,row){
+ var dir = $(row).data('dir');
+ var file = $(row).data('filename');
+ $.post(OC.filePath('files', 'ajax', 'move.php'), { dir: dir, file: file, target: dir+'/'+target }, function(result) {
+ if (result) {
+ if (result.status === 'success') {
+ //recalculate folder size
+ var oldSize = $('#fileList tr').filterAttr('data-file',target).data('size');
+ var newSize = oldSize + $('#fileList tr').filterAttr('data-file',file).data('size');
+ $('#fileList tr').filterAttr('data-file',target).data('size', newSize);
+ $('#fileList tr').filterAttr('data-file',target).find('td.filesize').text(humanFileSize(newSize));
+
+ FileList.remove(file);
+ procesSelection();
+ $('#notification').hide();
+ } else {
+ $('#notification').hide();
+ $('#notification').text(result.data.message);
+ $('#notification').fadeIn();
+ }
+ } else {
+ OC.dialogs.alert(t('Error moving file'));
+ }
+ });
});
- }
+ },
+ tolerance: 'pointer'
}
+
var crumbDropOptions={
drop: function( event, ui ) {
- var file=ui.draggable.parent().data('file');
var target=$(this).data('dir');
var dir=$('#dir').val();
while(dir.substr(0,1)=='/'){//remove extra leading /'s
@@ -849,12 +917,25 @@ var crumbDropOptions={
if(target==dir || target+'/'==dir){
return;
}
- $.ajax({
- url: OC.filePath('files', 'ajax', 'move.php'),
- data: "dir="+encodeURIComponent(dir)+"&file="+encodeURIComponent(file)+'&target='+encodeURIComponent(target),
- complete: function(data){boolOperationFinished(data, function(){
- FileList.remove(file);
- });}
+ var files = ui.helper.find('tr');
+ $(files).each(function(i,row){
+ var dir = $(row).data('dir');
+ var file = $(row).data('filename');
+ $.post(OC.filePath('files', 'ajax', 'move.php'), { dir: dir, file: file, target: target }, function(result) {
+ if (result) {
+ if (result.status === 'success') {
+ FileList.remove(file);
+ procesSelection();
+ $('#notification').hide();
+ } else {
+ $('#notification').hide();
+ $('#notification').text(result.data.message);
+ $('#notification').fadeIn();
+ }
+ } else {
+ OC.dialogs.alert(t('Error moving file'));
+ }
+ });
});
},
tolerance: 'pointer'
@@ -961,7 +1042,7 @@ function getUniqueName(name){
num=parseInt(numMatch[numMatch.length-1])+1;
base=base.split('(')
base.pop();
- base=base.join('(').trim();
+ base=$.trim(base.join('('));
}
name=base+' ('+num+')';
if (extension) {
diff --git a/apps/files/js/upgrade.js b/apps/files/js/upgrade.js
new file mode 100644
index 00000000000..02d57fc9e6c
--- /dev/null
+++ b/apps/files/js/upgrade.js
@@ -0,0 +1,17 @@
+$(document).ready(function () {
+ var eventSource, total, bar = $('#progressbar');
+ console.log('start');
+ bar.progressbar({value: 0});
+ eventSource = new OC.EventSource(OC.filePath('files', 'ajax', 'upgrade.php'));
+ eventSource.listen('total', function (count) {
+ total = count;
+ console.log(count + ' files needed to be migrated');
+ });
+ eventSource.listen('count', function (count) {
+ bar.progressbar({value: (count / total) * 100});
+ console.log(count);
+ });
+ eventSource.listen('done', function () {
+ document.location.reload();
+ });
+});
diff --git a/apps/files/js/upload.js b/apps/files/js/upload.js
new file mode 100644
index 00000000000..9d9f61f600e
--- /dev/null
+++ b/apps/files/js/upload.js
@@ -0,0 +1,8 @@
+function Upload(fileSelector) {
+ if ($.support.xhrFileUpload) {
+ return new XHRUpload(fileSelector.target.files);
+ } else {
+ return new FormUpload(fileSelector);
+ }
+}
+Upload.target = OC.filePath('files', 'ajax', 'upload.php');
diff --git a/apps/files/l10n/bn_BD.php b/apps/files/l10n/bn_BD.php
index d59463bb7a0..3d676810c7c 100644
--- a/apps/files/l10n/bn_BD.php
+++ b/apps/files/l10n/bn_BD.php
@@ -1,7 +1,4 @@
"%s কে স্থানান্তর করা সম্ভব হলো না - এই নামের ফাইল বিদ্যমান",
-"Could not move %s" => "%s কে স্থানান্তর করা সম্ভব হলো না",
-"Unable to rename file" => "ফাইলের নাম পরিবর্তন করা সম্ভব হলো না",
"No file was uploaded. Unknown error" => "কোন ফাইল আপলোড করা হয় নি। সমস্যা অজ্ঞাত।",
"There is no error, the file uploaded with success" => "কোন সমস্যা নেই, ফাইল আপলোড সুসম্পন্ন হয়েছে",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "আপলোড করা ফাইলটি php.ini তে বর্ণিত upload_max_filesize নির্দেশিত আয়তন অতিক্রম করছেঃ",
@@ -10,6 +7,7 @@
"No file was uploaded" => "কোন ফাইল আপলোড করা হয় নি",
"Missing a temporary folder" => "অস্থায়ী ফোল্ডার খোয়া গিয়েছে",
"Failed to write to disk" => "ডিস্কে লিখতে ব্যর্থ",
+"Not enough space available" => "যথেষ্ঠ পরিমাণ স্থান নেই",
"Invalid directory." => "ভুল ডিরেক্টরি",
"Files" => "ফাইল",
"Unshare" => "ভাগাভাগি বাতিল ",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "{new_name} প্রতিস্থাপন করা হয়েছে",
"undo" => "ক্রিয়া প্রত্যাহার",
"replaced {new_name} with {old_name}" => "{new_name} কে {old_name} নামে প্রতিস্থাপন করা হয়েছে",
-"unshared {files}" => "{files} ভাগাভাগি বাতিল কর",
-"deleted {files}" => "{files} মুছে ফেলা হয়েছে",
"'.' is an invalid file name." => "টি একটি অননুমোদিত নাম।",
"File name cannot be empty." => "ফাইলের নামটি ফাঁকা রাখা যাবে না।",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "নামটি সঠিক নয়, '\\', '/', '<', '>', ':', '\"', '|', '?' এবং '*' অনুমোদিত নয়।",
@@ -37,8 +33,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "ফাইল আপলোড চলমান। এই পৃষ্ঠা পরিত্যাগ করলে আপলোড বাতিল করা হবে।",
"URL cannot be empty." => "URL ফাঁকা রাখা যাবে না।",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "ফোল্ডারের নামটি সঠিক নয়। 'ভাগাভাগি করা' শুধুমাত্র Owncloud এর জন্য সংরক্ষিত।",
-"{count} files scanned" => "{count} টি ফাইল স্ক্যান করা হয়েছে",
-"error while scanning" => "স্ক্যান করার সময় সমস্যা দেখা দিয়েছে",
"Name" => "নাম",
"Size" => "আকার",
"Modified" => "পরিবর্তিত",
diff --git a/apps/files/l10n/ca.php b/apps/files/l10n/ca.php
index ceec0264788..eb98278bfb8 100644
--- a/apps/files/l10n/ca.php
+++ b/apps/files/l10n/ca.php
@@ -1,7 +1,4 @@
"No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom",
-"Could not move %s" => " No s'ha pogut moure %s",
-"Unable to rename file" => "No es pot canviar el nom del fitxer",
"No file was uploaded. Unknown error" => "No s'ha carregat cap fitxer. Error desconegut",
"There is no error, the file uploaded with success" => "El fitxer s'ha pujat correctament",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "L’arxiu que voleu carregar supera el màxim definit en la directiva upload_max_filesize del php.ini:",
@@ -10,7 +7,7 @@
"No file was uploaded" => "El fitxer no s'ha pujat",
"Missing a temporary folder" => "S'ha perdut un fitxer temporal",
"Failed to write to disk" => "Ha fallat en escriure al disc",
-"Not enough storage available" => "No hi ha prou espai disponible",
+"Not enough space available" => "No hi ha prou espai disponible",
"Invalid directory." => "Directori no vàlid.",
"Files" => "Fitxers",
"Unshare" => "Deixa de compartir",
@@ -23,8 +20,6 @@
"replaced {new_name}" => "s'ha substituït {new_name}",
"undo" => "desfés",
"replaced {new_name} with {old_name}" => "s'ha substituït {old_name} per {new_name}",
-"unshared {files}" => "no compartits {files}",
-"deleted {files}" => "eliminats {files}",
"'.' is an invalid file name." => "'.' és un nom no vàlid per un fitxer.",
"File name cannot be empty." => "El nom del fitxer no pot ser buit.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "El nóm no és vàlid, '\\', '/', '<', '>', ':', '\"', '|', '?' i '*' no estan permesos.",
@@ -41,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Hi ha una pujada en curs. Si abandoneu la pàgina la pujada es cancel·larà.",
"URL cannot be empty." => "La URL no pot ser buida",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nom de carpeta no vàlid. L'ús de 'Shared' està reservat per Owncloud",
-"{count} files scanned" => "{count} fitxers escannejats",
-"error while scanning" => "error durant l'escaneig",
"Name" => "Nom",
"Size" => "Mida",
"Modified" => "Modificat",
@@ -69,5 +62,6 @@
"Upload too large" => "La pujada és massa gran",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Els fitxers que esteu intentant pujar excedeixen la mida màxima de pujada del servidor",
"Files are being scanned, please wait." => "S'estan escanejant els fitxers, espereu",
-"Current scanning" => "Actualment escanejant"
+"Current scanning" => "Actualment escanejant",
+"Upgrading filesystem cache..." => "Actualitzant la memòria de cau del sistema de fitxers..."
);
diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php
index 7a93c502b58..76b3b82d72c 100644
--- a/apps/files/l10n/cs_CZ.php
+++ b/apps/files/l10n/cs_CZ.php
@@ -1,7 +1,4 @@
"Nelze přesunout %s - existuje soubor se stejným názvem",
-"Could not move %s" => "Nelze přesunout %s",
-"Unable to rename file" => "Nelze přejmenovat soubor",
"No file was uploaded. Unknown error" => "Soubor nebyl odeslán. Neznámá chyba",
"There is no error, the file uploaded with success" => "Soubor byl odeslán úspěšně",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Odesílaný soubor přesahuje velikost upload_max_filesize povolenou v php.ini:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Žádný soubor nebyl odeslán",
"Missing a temporary folder" => "Chybí adresář pro dočasné soubory",
"Failed to write to disk" => "Zápis na disk selhal",
+"Not enough space available" => "Nedostatek dostupného místa",
"Invalid directory." => "Neplatný adresář",
"Files" => "Soubory",
"Unshare" => "Zrušit sdílení",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "nahrazeno {new_name}",
"undo" => "zpět",
"replaced {new_name} with {old_name}" => "nahrazeno {new_name} s {old_name}",
-"unshared {files}" => "sdílení zrušeno pro {files}",
-"deleted {files}" => "smazáno {files}",
"'.' is an invalid file name." => "'.' je neplatným názvem souboru.",
"File name cannot be empty." => "Název souboru nemůže být prázdný řetězec.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neplatný název, znaky '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nejsou povoleny.",
+"Your storage is full, files can not be updated or synced anymore!" => "Vaše úložiště je plné, nelze aktualizovat ani synchronizovat soubory.",
+"Your storage is almost full ({usedSpacePercent}%)" => "Vaše úložiště je téměř plné ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Vaše soubory ke stažení se připravují. Pokud jsou velké může to chvíli trvat.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nelze odeslat Váš soubor, protože je to adresář nebo má velikost 0 bajtů",
"Upload Error" => "Chyba odesílání",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Probíhá odesílání souboru. Opuštění stránky vyústí ve zrušení nahrávání.",
"URL cannot be empty." => "URL nemůže být prázdná",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Neplatný název složky. Použití 'Shared' je rezervováno pro vnitřní potřeby Owncloud",
-"{count} files scanned" => "prozkoumáno {count} souborů",
-"error while scanning" => "chyba při prohledávání",
"Name" => "Název",
"Size" => "Velikost",
"Modified" => "Změněno",
@@ -66,5 +62,6 @@
"Upload too large" => "Odeslaný soubor je příliš velký",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Soubory, které se snažíte odeslat, překračují limit velikosti odesílání na tomto serveru.",
"Files are being scanned, please wait." => "Soubory se prohledávají, prosím čekejte.",
-"Current scanning" => "Aktuální prohledávání"
+"Current scanning" => "Aktuální prohledávání",
+"Upgrading filesystem cache..." => "Aktualizuji mezipaměť souborového systému..."
);
diff --git a/apps/files/l10n/da.php b/apps/files/l10n/da.php
index c5e3647a7f4..71a5a56de57 100644
--- a/apps/files/l10n/da.php
+++ b/apps/files/l10n/da.php
@@ -7,6 +7,7 @@
"No file was uploaded" => "Ingen fil blev uploadet",
"Missing a temporary folder" => "Mangler en midlertidig mappe",
"Failed to write to disk" => "Fejl ved skrivning til disk.",
+"Invalid directory." => "Ugyldig mappe.",
"Files" => "Filer",
"Unshare" => "Fjern deling",
"Delete" => "Slet",
@@ -18,9 +19,12 @@
"replaced {new_name}" => "erstattede {new_name}",
"undo" => "fortryd",
"replaced {new_name} with {old_name}" => "erstattede {new_name} med {old_name}",
-"unshared {files}" => "ikke delte {files}",
-"deleted {files}" => "slettede {files}",
+"'.' is an invalid file name." => "'.' er et ugyldigt filnavn.",
+"File name cannot be empty." => "Filnavnet kan ikke stå tomt.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ugyldigt navn, '\\', '/', '<', '>', ':' | '?', '\"', '', og '*' er ikke tilladt.",
+"Your storage is full, files can not be updated or synced anymore!" => "Din opbevaringsplads er fyldt op, filer kan ikke opdateres eller synkroniseres længere!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Din opbevaringsplads er næsten fyldt op ({usedSpacePercent}%)",
+"Your download is being prepared. This might take some time if the files are big." => "Dit download forberedes. Dette kan tage lidt tid ved større filer.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Kunne ikke uploade din fil, da det enten er en mappe eller er tom",
"Upload Error" => "Fejl ved upload",
"Close" => "Luk",
@@ -30,8 +34,7 @@
"Upload cancelled." => "Upload afbrudt.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret.",
"URL cannot be empty." => "URLen kan ikke være tom.",
-"{count} files scanned" => "{count} filer skannet",
-"error while scanning" => "fejl under scanning",
+"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ugyldigt mappenavn. Brug af \"Shared\" er forbeholdt Owncloud",
"Name" => "Navn",
"Size" => "Størrelse",
"Modified" => "Ændret",
diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php
index 84aed12b5c1..d42410fee30 100644
--- a/apps/files/l10n/de.php
+++ b/apps/files/l10n/de.php
@@ -1,7 +1,4 @@
"Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits.",
-"Could not move %s" => "Konnte %s nicht verschieben",
-"Unable to rename file" => "Konnte Datei nicht umbenennen",
"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler",
"There is no error, the file uploaded with success" => "Datei fehlerfrei hochgeladen.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Es wurde keine Datei hochgeladen.",
"Missing a temporary folder" => "Temporärer Ordner fehlt.",
"Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte",
+"Not enough space available" => "Nicht genug Speicherplatz verfügbar",
"Invalid directory." => "Ungültiges Verzeichnis",
"Files" => "Dateien",
"Unshare" => "Nicht mehr freigeben",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "{new_name} wurde ersetzt",
"undo" => "rückgängig machen",
"replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}",
-"unshared {files}" => "Freigabe von {files} aufgehoben",
-"deleted {files}" => "{files} gelöscht",
"'.' is an invalid file name." => "'.' ist kein gültiger Dateiname",
"File name cannot be empty." => "Der Dateiname darf nicht leer sein",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.",
+"Your storage is full, files can not be updated or synced anymore!" => "Ihr Speicherplatz ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Ihr Speicherplatz ist fast aufgebraucht ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Dein Download wird vorbereitet. Dies kann bei größeren Dateien etwas dauern.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.",
"Upload Error" => "Fehler beim Upload",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen.",
"URL cannot be empty." => "Die URL darf nicht leer sein",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten.",
-"{count} files scanned" => "{count} Dateien wurden gescannt",
-"error while scanning" => "Fehler beim Scannen",
"Name" => "Name",
"Size" => "Größe",
"Modified" => "Bearbeitet",
diff --git a/apps/files/l10n/de_DE.php b/apps/files/l10n/de_DE.php
index d9c95573992..0a67cd0fc5f 100644
--- a/apps/files/l10n/de_DE.php
+++ b/apps/files/l10n/de_DE.php
@@ -1,7 +1,4 @@
"Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits",
-"Could not move %s" => "Konnte %s nicht verschieben",
-"Unable to rename file" => "Konnte Datei nicht umbenennen",
"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler",
"There is no error, the file uploaded with success" => "Es sind keine Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Es wurde keine Datei hochgeladen.",
"Missing a temporary folder" => "Der temporäre Ordner fehlt.",
"Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte",
+"Not enough space available" => "Nicht genügend Speicherplatz verfügbar",
"Invalid directory." => "Ungültiges Verzeichnis.",
"Files" => "Dateien",
"Unshare" => "Nicht mehr freigeben",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "{new_name} wurde ersetzt",
"undo" => "rückgängig machen",
"replaced {new_name} with {old_name}" => "{old_name} wurde ersetzt durch {new_name}",
-"unshared {files}" => "Freigabe für {files} beendet",
-"deleted {files}" => "{files} gelöscht",
"'.' is an invalid file name." => "'.' ist kein gültiger Dateiname.",
"File name cannot be empty." => "Der Dateiname darf nicht leer sein.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.",
+"Your storage is full, files can not be updated or synced anymore!" => "Ihr Speicher ist voll. Daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Ihr Speicher ist fast voll ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Ihr Download wird vorbereitet. Dies kann bei größeren Dateien einen Moment dauern.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.",
"Upload Error" => "Fehler beim Upload",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Der Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
"URL cannot be empty." => "Die URL darf nicht leer sein.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten",
-"{count} files scanned" => "{count} Dateien wurden gescannt",
-"error while scanning" => "Fehler beim Scannen",
"Name" => "Name",
"Size" => "Größe",
"Modified" => "Bearbeitet",
diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php
index e3fbb892ff0..7b458bf35dd 100644
--- a/apps/files/l10n/el.php
+++ b/apps/files/l10n/el.php
@@ -1,7 +1,4 @@
"Αδυναμία μετακίνησης του %s - υπάρχει ήδη αρχείο με αυτό το όνομα",
-"Could not move %s" => "Αδυναμία μετακίνησης του %s",
-"Unable to rename file" => "Αδυναμία μετονομασίας αρχείου",
"No file was uploaded. Unknown error" => "Δεν ανέβηκε κάποιο αρχείο. Άγνωστο σφάλμα",
"There is no error, the file uploaded with success" => "Δεν υπάρχει σφάλμα, το αρχείο εστάλει επιτυχώς",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Το απεσταλμένο αρχείο ξεπερνά την οδηγία upload_max_filesize στο php.ini:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Κανένα αρχείο δεν στάλθηκε",
"Missing a temporary folder" => "Λείπει ο προσωρινός φάκελος",
"Failed to write to disk" => "Αποτυχία εγγραφής στο δίσκο",
+"Not enough space available" => "Δεν υπάρχει αρκετός διαθέσιμος χώρος",
"Invalid directory." => "Μη έγκυρος φάκελος.",
"Files" => "Αρχεία",
"Unshare" => "Διακοπή κοινής χρήσης",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "{new_name} αντικαταστάθηκε",
"undo" => "αναίρεση",
"replaced {new_name} with {old_name}" => "αντικαταστάθηκε το {new_name} με {old_name}",
-"unshared {files}" => "μη διαμοιρασμένα {files}",
-"deleted {files}" => "διαγραμμένα {files}",
"'.' is an invalid file name." => "'.' είναι μη έγκυρο όνομα αρχείου.",
"File name cannot be empty." => "Το όνομα αρχείου δεν πρέπει να είναι κενό.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Μη έγκυρο όνομα, '\\', '/', '<', '>', ':', '\"', '|', '?' και '*' δεν επιτρέπονται.",
+"Your storage is full, files can not be updated or synced anymore!" => "Ο αποθηκευτικός σας χώρος είναι γεμάτος, τα αρχεία δεν μπορούν να ενημερωθούν ή να συγχρονιστούν πια!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Ο αποθηκευτικός χώρος είναι σχεδόν γεμάτος ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Η λήψη προετοιμάζεται. Αυτό μπορεί να πάρει ώρα εάν τα αρχεία έχουν μεγάλο μέγεθος.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Αδυναμία στην αποστολή του αρχείου σας αφού είναι φάκελος ή έχει 0 bytes",
"Upload Error" => "Σφάλμα Αποστολής",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή.",
"URL cannot be empty." => "Η URL δεν πρέπει να είναι κενή.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Μη έγκυρο όνομα φακέλου. Η χρήση του 'Κοινόχρηστος' χρησιμοποιείται από ο Owncloud",
-"{count} files scanned" => "{count} αρχεία ανιχνεύτηκαν",
-"error while scanning" => "σφάλμα κατά την ανίχνευση",
"Name" => "Όνομα",
"Size" => "Μέγεθος",
"Modified" => "Τροποποιήθηκε",
diff --git a/apps/files/l10n/eo.php b/apps/files/l10n/eo.php
index fc4367c55a3..a510d47ad6c 100644
--- a/apps/files/l10n/eo.php
+++ b/apps/files/l10n/eo.php
@@ -1,7 +1,4 @@
"Ne eblis movi %s: dosiero kun ĉi tiu nomo jam ekzistas",
-"Could not move %s" => "Ne eblis movi %s",
-"Unable to rename file" => "Ne eblis alinomigi dosieron",
"No file was uploaded. Unknown error" => "Neniu dosiero alŝutiĝis. Nekonata eraro.",
"There is no error, the file uploaded with success" => "Ne estas eraro, la dosiero alŝutiĝis sukcese",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "La dosiero alŝutita superas la regulon upload_max_filesize el php.ini: ",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Neniu dosiero estas alŝutita",
"Missing a temporary folder" => "Mankas tempa dosierujo",
"Failed to write to disk" => "Malsukcesis skribo al disko",
+"Not enough space available" => "Ne haveblas sufiĉa spaco",
"Invalid directory." => "Nevalida dosierujo.",
"Files" => "Dosieroj",
"Unshare" => "Malkunhavigi",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "anstataŭiĝis {new_name}",
"undo" => "malfari",
"replaced {new_name} with {old_name}" => "anstataŭiĝis {new_name} per {old_name}",
-"unshared {files}" => "malkunhaviĝis {files}",
-"deleted {files}" => "foriĝis {files}",
"'.' is an invalid file name." => "'.' ne estas valida dosiernomo.",
"File name cannot be empty." => "Dosiernomo devas ne malpleni.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nevalida nomo: “\\”, “/”, “<”, “>”, “:”, “\"”, “|”, “?” kaj “*” ne permesatas.",
@@ -38,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Dosieralŝuto plenumiĝas. Lasi la paĝon nun nuligus la alŝuton.",
"URL cannot be empty." => "URL ne povas esti malplena.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nevalida dosierujnomo. Uzo de “Shared” rezervatas de Owncloud.",
-"{count} files scanned" => "{count} dosieroj skaniĝis",
-"error while scanning" => "eraro dum skano",
"Name" => "Nomo",
"Size" => "Grando",
"Modified" => "Modifita",
diff --git a/apps/files/l10n/es.php b/apps/files/l10n/es.php
index 1620208559f..bc5046767c6 100644
--- a/apps/files/l10n/es.php
+++ b/apps/files/l10n/es.php
@@ -1,7 +1,4 @@
"No se puede mover %s - Ya existe un archivo con ese nombre",
-"Could not move %s" => "No se puede mover %s",
-"Unable to rename file" => "No se puede renombrar el archivo",
"No file was uploaded. Unknown error" => "Fallo no se subió el fichero",
"There is no error, the file uploaded with success" => "No se ha producido ningún error, el archivo se ha subido con éxito",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini",
@@ -10,6 +7,7 @@
"No file was uploaded" => "No se ha subido ningún archivo",
"Missing a temporary folder" => "Falta un directorio temporal",
"Failed to write to disk" => "La escritura en disco ha fallado",
+"Not enough space available" => "No hay suficiente espacio disponible",
"Invalid directory." => "Directorio invalido.",
"Files" => "Archivos",
"Unshare" => "Dejar de compartir",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "reemplazado {new_name}",
"undo" => "deshacer",
"replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}",
-"unshared {files}" => "{files} descompartidos",
-"deleted {files}" => "{files} eliminados",
"'.' is an invalid file name." => "'.' es un nombre de archivo inválido.",
"File name cannot be empty." => "El nombre de archivo no puede estar vacío.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nombre Invalido, \"\\\", \"/\", \"<\", \">\", \":\", \"\", \"|\" \"?\" y \"*\" no están permitidos ",
@@ -38,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Salir de la página ahora cancelará la subida.",
"URL cannot be empty." => "La URL no puede estar vacía.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nombre de carpeta invalido. El uso de \"Shared\" esta reservado para Owncloud",
-"{count} files scanned" => "{count} archivos escaneados",
-"error while scanning" => "error escaneando",
"Name" => "Nombre",
"Size" => "Tamaño",
"Modified" => "Modificado",
diff --git a/apps/files/l10n/es_AR.php b/apps/files/l10n/es_AR.php
index cd8347a14ad..ea8352e3251 100644
--- a/apps/files/l10n/es_AR.php
+++ b/apps/files/l10n/es_AR.php
@@ -1,7 +1,4 @@
"No se pudo mover %s - Un archivo con este nombre ya existe",
-"Could not move %s" => "No se pudo mover %s ",
-"Unable to rename file" => "No fue posible cambiar el nombre al archivo",
"No file was uploaded. Unknown error" => "El archivo no fue subido. Error desconocido",
"There is no error, the file uploaded with success" => "No se han producido errores, el archivo se ha subido con éxito",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentás subir excede el tamaño definido por upload_max_filesize en el php.ini:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "El archivo no fue subido",
"Missing a temporary folder" => "Falta un directorio temporal",
"Failed to write to disk" => "Error al escribir en el disco",
+"Not enough space available" => "No hay suficiente espacio disponible",
"Invalid directory." => "Directorio invalido.",
"Files" => "Archivos",
"Unshare" => "Dejar de compartir",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "reemplazado {new_name}",
"undo" => "deshacer",
"replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}",
-"unshared {files}" => "{files} se dejaron de compartir",
-"deleted {files}" => "{files} borrados",
"'.' is an invalid file name." => "'.' es un nombre de archivo inválido.",
"File name cannot be empty." => "El nombre del archivo no puede quedar vacío.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nombre invalido, '\\', '/', '<', '>', ':', '\"', '|', '?' y '*' no están permitidos.",
+"Your storage is full, files can not be updated or synced anymore!" => "El almacenamiento está lleno, los archivos no se pueden seguir actualizando ni sincronizando",
+"Your storage is almost full ({usedSpacePercent}%)" => "El almacenamiento está casi lleno ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Tu descarga esta siendo preparada. Esto puede tardar algun tiempo si los archivos son muy grandes.",
"Unable to upload your file as it is a directory or has 0 bytes" => "No fue posible subir el archivo porque es un directorio o porque su tamaño es 0 bytes",
"Upload Error" => "Error al subir el archivo",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará.",
"URL cannot be empty." => "La URL no puede estar vacía",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nombre de carpeta inválido. El uso de 'Shared' está reservado por ownCloud",
-"{count} files scanned" => "{count} archivos escaneados",
-"error while scanning" => "error mientras se escaneaba",
"Name" => "Nombre",
"Size" => "Tamaño",
"Modified" => "Modificado",
diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php
index 1df237baa82..54dd7cfdc56 100644
--- a/apps/files/l10n/et_EE.php
+++ b/apps/files/l10n/et_EE.php
@@ -17,8 +17,6 @@
"replaced {new_name}" => "asendatud nimega {new_name}",
"undo" => "tagasi",
"replaced {new_name} with {old_name}" => "asendas nime {old_name} nimega {new_name}",
-"unshared {files}" => "jagamata {files}",
-"deleted {files}" => "kustutatud {files}",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Vigane nimi, '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' pole lubatud.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Sinu faili üleslaadimine ebaõnnestus, kuna see on kaust või selle suurus on 0 baiti",
"Upload Error" => "Üleslaadimise viga",
@@ -29,8 +27,6 @@
"Upload cancelled." => "Üleslaadimine tühistati.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise.",
"URL cannot be empty." => "URL ei saa olla tühi.",
-"{count} files scanned" => "{count} faili skännitud",
-"error while scanning" => "viga skännimisel",
"Name" => "Nimi",
"Size" => "Suurus",
"Modified" => "Muudetud",
diff --git a/apps/files/l10n/eu.php b/apps/files/l10n/eu.php
index 8b8f6d2bd17..6f4c55f4846 100644
--- a/apps/files/l10n/eu.php
+++ b/apps/files/l10n/eu.php
@@ -1,7 +1,4 @@
"Ezin da %s mugitu - Izen hau duen fitxategia dagoeneko existitzen da",
-"Could not move %s" => "Ezin dira fitxategiak mugitu %s",
-"Unable to rename file" => "Ezin izan da fitxategia berrizendatu",
"No file was uploaded. Unknown error" => "Ez da fitxategirik igo. Errore ezezaguna",
"There is no error, the file uploaded with success" => "Ez da arazorik izan, fitxategia ongi igo da",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Igotako fitxategiak php.ini fitxategian ezarritako upload_max_filesize muga gainditu du:",
@@ -10,7 +7,7 @@
"No file was uploaded" => "Ez da fitxategirik igo",
"Missing a temporary folder" => "Aldi baterako karpeta falta da",
"Failed to write to disk" => "Errore bat izan da diskoan idazterakoan",
-"Not enough storage available" => "Ez dago behar aina leku erabilgarri,",
+"Not enough space available" => "Ez dago leku nahikorik.",
"Invalid directory." => "Baliogabeko karpeta.",
"Files" => "Fitxategiak",
"Unshare" => "Ez elkarbanatu",
@@ -23,8 +20,6 @@
"replaced {new_name}" => "ordezkatua {new_name}",
"undo" => "desegin",
"replaced {new_name} with {old_name}" => " {new_name}-k {old_name} ordezkatu du",
-"unshared {files}" => "elkarbanaketa utzita {files}",
-"deleted {files}" => "ezabatuta {files}",
"'.' is an invalid file name." => "'.' ez da fitxategi izen baliogarria.",
"File name cannot be empty." => "Fitxategi izena ezin da hutsa izan.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "IZen aliogabea, '\\', '/', '<', '>', ':', '\"', '|', '?' eta '*' ez daude baimenduta.",
@@ -41,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Fitxategien igoera martxan da. Orria orain uzteak igoera ezeztatutko du.",
"URL cannot be empty." => "URLa ezin da hutsik egon.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Baliogabeako karpeta izena. 'Shared' izena Owncloudek erreserbatzen du",
-"{count} files scanned" => "{count} fitxategi eskaneatuta",
-"error while scanning" => "errore bat egon da eskaneatzen zen bitartean",
"Name" => "Izena",
"Size" => "Tamaina",
"Modified" => "Aldatuta",
diff --git a/apps/files/l10n/fa.php b/apps/files/l10n/fa.php
index 3d3bfad1f9b..a4181c6ff53 100644
--- a/apps/files/l10n/fa.php
+++ b/apps/files/l10n/fa.php
@@ -1,7 +1,4 @@
"%s نمی تواند حرکت کند - در حال حاضر پرونده با این نام وجود دارد. ",
-"Could not move %s" => "%s نمی تواند حرکت کند ",
-"Unable to rename file" => "قادر به تغییر نام پرونده نیست.",
"No file was uploaded. Unknown error" => "هیچ فایلی آپلود نشد.خطای ناشناس",
"There is no error, the file uploaded with success" => "هیچ خطایی وجود ندارد فایل با موفقیت بار گذاری شد",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "پرونده آپلود شده بیش ازدستور ماکزیمم_حجم فایل_برای آپلود در php.ini استفاده کرده است.",
@@ -10,6 +7,7 @@
"No file was uploaded" => "هیچ فایلی بارگذاری نشده",
"Missing a temporary folder" => "یک پوشه موقت گم شده است",
"Failed to write to disk" => "نوشتن بر روی دیسک سخت ناموفق بود",
+"Not enough space available" => "فضای کافی در دسترس نیست",
"Invalid directory." => "فهرست راهنما نامعتبر می باشد.",
"Files" => "فایل ها",
"Unshare" => "لغو اشتراک",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "{نام _جدید} جایگزین شد ",
"undo" => "بازگشت",
"replaced {new_name} with {old_name}" => "{نام_جدید} با { نام_قدیمی} جایگزین شد.",
-"unshared {files}" => "{ فایل های } قسمت نشده",
-"deleted {files}" => "{ فایل های } پاک شده",
"'.' is an invalid file name." => "'.' یک نام پرونده نامعتبر است.",
"File name cannot be empty." => "نام پرونده نمی تواند خالی باشد.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "نام نامعتبر ، '\\', '/', '<', '>', ':', '\"', '|', '?' و '*' مجاز نمی باشند.",
@@ -38,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "آپلودکردن پرونده در حال پیشرفت است. در صورت خروج از صفحه آپلود لغو میگردد. ",
"URL cannot be empty." => "URL نمی تواند خالی باشد.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "نام پوشه نامعتبر است. استفاده از \" به اشتراک گذاشته شده \" متعلق به سایت Owncloud است.",
-"{count} files scanned" => "{ شمار } فایل های اسکن شده",
-"error while scanning" => "خطا در حال انجام اسکن ",
"Name" => "نام",
"Size" => "اندازه",
"Modified" => "تغییر یافته",
diff --git a/apps/files/l10n/fi_FI.php b/apps/files/l10n/fi_FI.php
index ce236a30edb..8f07adcf6f3 100644
--- a/apps/files/l10n/fi_FI.php
+++ b/apps/files/l10n/fi_FI.php
@@ -1,7 +1,4 @@
"Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa",
-"Could not move %s" => "Kohteen %s siirto ei onnistunut",
-"Unable to rename file" => "Tiedoston nimeäminen uudelleen ei onnistunut",
"No file was uploaded. Unknown error" => "Tiedostoa ei lähetetty. Tuntematon virhe",
"There is no error, the file uploaded with success" => "Ei virheitä, tiedosto lähetettiin onnistuneesti",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Lähetetty tiedosto ylittää HTML-lomakkeessa määritetyn MAX_FILE_SIZE-arvon ylärajan",
@@ -9,6 +6,7 @@
"No file was uploaded" => "Yhtäkään tiedostoa ei lähetetty",
"Missing a temporary folder" => "Väliaikaiskansiota ei ole olemassa",
"Failed to write to disk" => "Levylle kirjoitus epäonnistui",
+"Not enough space available" => "Tilaa ei ole riittävästi",
"Invalid directory." => "Virheellinen kansio.",
"Files" => "Tiedostot",
"Unshare" => "Peru jakaminen",
@@ -22,6 +20,8 @@
"'.' is an invalid file name." => "'.' on virheellinen nimi tiedostolle.",
"File name cannot be empty." => "Tiedoston nimi ei voi olla tyhjä.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Virheellinen nimi, merkit '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' eivät ole sallittuja.",
+"Your storage is full, files can not be updated or synced anymore!" => "Tallennustila on loppu, tiedostoja ei voi enää päivittää tai synkronoida!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Tallennustila on melkein loppu ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Lataustasi valmistellaan. Tämä saattaa kestää hetken, jos tiedostot ovat suuria kooltaan.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Tiedoston lähetys epäonnistui, koska sen koko on 0 tavua tai kyseessä on kansio",
"Upload Error" => "Lähetysvirhe.",
diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php
index 6229b7e3a4d..42e146f5844 100644
--- a/apps/files/l10n/fr.php
+++ b/apps/files/l10n/fr.php
@@ -1,7 +1,4 @@
"Impossible de déplacer %s - Un fichier possédant ce nom existe déjà",
-"Could not move %s" => "Impossible de déplacer %s",
-"Unable to rename file" => "Impossible de renommer le fichier",
"No file was uploaded. Unknown error" => "Aucun fichier n'a été chargé. Erreur inconnue",
"There is no error, the file uploaded with success" => "Aucune erreur, le fichier a été téléversé avec succès",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Le fichier envoyé dépasse la valeur upload_max_filesize située dans le fichier php.ini:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Aucun fichier n'a été téléversé",
"Missing a temporary folder" => "Il manque un répertoire temporaire",
"Failed to write to disk" => "Erreur d'écriture sur le disque",
+"Not enough space available" => "Espace disponible insuffisant",
"Invalid directory." => "Dossier invalide.",
"Files" => "Fichiers",
"Unshare" => "Ne plus partager",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "{new_name} a été remplacé",
"undo" => "annuler",
"replaced {new_name} with {old_name}" => "{new_name} a été remplacé par {old_name}",
-"unshared {files}" => "Fichiers non partagés : {files}",
-"deleted {files}" => "Fichiers supprimés : {files}",
"'.' is an invalid file name." => "'.' n'est pas un nom de fichier valide.",
"File name cannot be empty." => "Le nom de fichier ne peut être vide.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nom invalide, les caractères '\\', '/', '<', '>', ':', '\"', '|', '?' et '*' ne sont pas autorisés.",
+"Your storage is full, files can not be updated or synced anymore!" => "Votre espage de stockage est plein, les fichiers ne peuvent plus être téléversés ou synchronisés !",
+"Your storage is almost full ({usedSpacePercent}%)" => "Votre espace de stockage est presque plein ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Votre téléchargement est cours de préparation. Ceci peut nécessiter un certain temps si les fichiers sont volumineux.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Impossible de charger vos fichiers car il s'agit d'un dossier ou le fichier fait 0 octet.",
"Upload Error" => "Erreur de chargement",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
"URL cannot be empty." => "L'URL ne peut-être vide",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nom de dossier invalide. L'utilisation du mot 'Shared' est réservée à Owncloud",
-"{count} files scanned" => "{count} fichiers indexés",
-"error while scanning" => "erreur lors de l'indexation",
"Name" => "Nom",
"Size" => "Taille",
"Modified" => "Modifié",
diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php
index 3bac12b351e..a1c0f0a5dd5 100644
--- a/apps/files/l10n/gl.php
+++ b/apps/files/l10n/gl.php
@@ -1,7 +1,4 @@
"Non se moveu %s - Xa existe un ficheiro con ese nome.",
-"Could not move %s" => "Non se puido mover %s",
-"Unable to rename file" => "Non se pode renomear o ficheiro",
"No file was uploaded. Unknown error" => "Non se subiu ningún ficheiro. Erro descoñecido.",
"There is no error, the file uploaded with success" => "Non hai erros. O ficheiro enviouse correctamente",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro subido excede a directiva indicada polo tamaño_máximo_de_subida de php.ini",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Non se enviou ningún ficheiro",
"Missing a temporary folder" => "Falta un cartafol temporal",
"Failed to write to disk" => "Erro ao escribir no disco",
+"Not enough space available" => "O espazo dispoñíbel é insuficiente",
"Invalid directory." => "O directorio é incorrecto.",
"Files" => "Ficheiros",
"Unshare" => "Deixar de compartir",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "substituír {new_name}",
"undo" => "desfacer",
"replaced {new_name} with {old_name}" => "substituír {new_name} polo {old_name}",
-"unshared {files}" => "{files} sen compartir",
-"deleted {files}" => "{files} eliminados",
"'.' is an invalid file name." => "'.' é un nonme de ficheiro non válido",
"File name cannot be empty." => "O nome de ficheiro non pode estar baldeiro",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non válido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten.",
@@ -37,8 +33,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "A subida do ficheiro está en curso. Saír agora da páxina cancelará a subida.",
"URL cannot be empty." => "URL non pode quedar baleiro.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de cartafol non válido. O uso de 'Shared' está reservado por Owncloud",
-"{count} files scanned" => "{count} ficheiros escaneados",
-"error while scanning" => "erro mentres analizaba",
"Name" => "Nome",
"Size" => "Tamaño",
"Modified" => "Modificado",
diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php
index 62b397e129e..94cddca0000 100644
--- a/apps/files/l10n/he.php
+++ b/apps/files/l10n/he.php
@@ -18,8 +18,6 @@
"replaced {new_name}" => "{new_name} הוחלף",
"undo" => "ביטול",
"replaced {new_name} with {old_name}" => "{new_name} הוחלף ב־{old_name}",
-"unshared {files}" => "בוטל שיתופם של {files}",
-"deleted {files}" => "{files} נמחקו",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "השם שגוי, אסור להשתמש בתווים '\\', '/', '<', '>', ':', '\"', '|', '?' ו־'*'.",
"Unable to upload your file as it is a directory or has 0 bytes" => "לא יכול להעלות את הקובץ מכיוון שזו תקיה או שמשקל הקובץ 0 בתים",
"Upload Error" => "שגיאת העלאה",
@@ -30,8 +28,6 @@
"Upload cancelled." => "ההעלאה בוטלה.",
"File upload is in progress. Leaving the page now will cancel the upload." => "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.",
"URL cannot be empty." => "קישור אינו יכול להיות ריק.",
-"{count} files scanned" => "{count} קבצים נסרקו",
-"error while scanning" => "אירעה שגיאה במהלך הסריקה",
"Name" => "שם",
"Size" => "גודל",
"Modified" => "זמן שינוי",
diff --git a/apps/files/l10n/hr.php b/apps/files/l10n/hr.php
index 7000caf0d17..4f4546aaf07 100644
--- a/apps/files/l10n/hr.php
+++ b/apps/files/l10n/hr.php
@@ -20,7 +20,6 @@
"1 file uploading" => "1 datoteka se učitava",
"Upload cancelled." => "Slanje poništeno.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Učitavanje datoteke. Napuštanjem stranice će prekinuti učitavanje.",
-"error while scanning" => "grečka prilikom skeniranja",
"Name" => "Naziv",
"Size" => "Veličina",
"Modified" => "Zadnja promjena",
diff --git a/apps/files/l10n/hu_HU.php b/apps/files/l10n/hu_HU.php
index 922b4f3097b..86fc0f223f9 100644
--- a/apps/files/l10n/hu_HU.php
+++ b/apps/files/l10n/hu_HU.php
@@ -1,7 +1,4 @@
"%s áthelyezése nem sikerült - már létezik másik fájl ezzel a névvel",
-"Could not move %s" => "Nem sikerült %s áthelyezése",
-"Unable to rename file" => "Nem lehet átnevezni a fájlt",
"No file was uploaded. Unknown error" => "Nem történt feltöltés. Ismeretlen hiba",
"There is no error, the file uploaded with success" => "A fájlt sikerült feltölteni",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "A feltöltött fájl mérete meghaladja a php.ini állományban megadott upload_max_filesize paraméter értékét.",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Nem töltődött fel semmi",
"Missing a temporary folder" => "Hiányzik egy ideiglenes mappa",
"Failed to write to disk" => "Nem sikerült a lemezre történő írás",
+"Not enough space available" => "Nincs elég szabad hely",
"Invalid directory." => "Érvénytelen mappa.",
"Files" => "Fájlok",
"Unshare" => "Megosztás visszavonása",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "a(z) {new_name} állományt kicseréltük",
"undo" => "visszavonás",
"replaced {new_name} with {old_name}" => "{new_name} fájlt kicseréltük ezzel: {old_name}",
-"unshared {files}" => "{files} fájl megosztása visszavonva",
-"deleted {files}" => "{files} fájl törölve",
"'.' is an invalid file name." => "'.' fájlnév érvénytelen.",
"File name cannot be empty." => "A fájlnév nem lehet semmi.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Érvénytelen elnevezés. Ezek a karakterek nem használhatók: '\\', '/', '<', '>', ':', '\"', '|', '?' és '*'",
+"Your storage is full, files can not be updated or synced anymore!" => "A tároló tele van, a fájlok nem frissíthetőek vagy szinkronizálhatóak a jövőben.",
+"Your storage is almost full ({usedSpacePercent}%)" => "A tároló majdnem tele van ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Készül a letöltendő állomány. Ez eltarthat egy ideig, ha nagyok a fájlok.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nem tölthető fel, mert mappa volt, vagy 0 byte méretű",
"Upload Error" => "Feltöltési hiba",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
"URL cannot be empty." => "Az URL nem lehet semmi.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Érvénytelen mappanév. A név használata csak a Owncloud számára lehetséges.",
-"{count} files scanned" => "{count} fájlt találtunk",
-"error while scanning" => "Hiba a fájllista-ellenőrzés során",
"Name" => "Név",
"Size" => "Méret",
"Modified" => "Módosítva",
diff --git a/apps/files/l10n/is.php b/apps/files/l10n/is.php
index 297853c8161..43c10ef236e 100644
--- a/apps/files/l10n/is.php
+++ b/apps/files/l10n/is.php
@@ -1,7 +1,4 @@
"Gat ekki fært %s - Skrá með þessu nafni er þegar til",
-"Could not move %s" => "Gat ekki fært %s",
-"Unable to rename file" => "Gat ekki endurskýrt skrá",
"No file was uploaded. Unknown error" => "Engin skrá var send inn. Óþekkt villa.",
"There is no error, the file uploaded with success" => "Engin villa, innsending heppnaðist",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Innsend skrá er stærri en upload_max stillingin í php.ini:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Engin skrá skilaði sér",
"Missing a temporary folder" => "Vantar bráðabirgðamöppu",
"Failed to write to disk" => "Tókst ekki að skrifa á disk",
+"Not enough space available" => "Ekki nægt pláss tiltækt",
"Invalid directory." => "Ógild mappa.",
"Files" => "Skrár",
"Unshare" => "Hætta deilingu",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "endurskýrði {new_name}",
"undo" => "afturkalla",
"replaced {new_name} with {old_name}" => "yfirskrifaði {new_name} með {old_name}",
-"unshared {files}" => "Hætti við deilingu á {files}",
-"deleted {files}" => "eyddi {files}",
"'.' is an invalid file name." => "'.' er ekki leyfilegt nafn.",
"File name cannot be empty." => "Nafn skráar má ekki vera tómt",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ógilt nafn, táknin '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' eru ekki leyfð.",
@@ -37,8 +33,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending misheppnast.",
"URL cannot be empty." => "Vefslóð má ekki vera tóm.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Óleyfilegt nafn á möppu. Nafnið 'Shared' er frátekið fyrir Owncloud",
-"{count} files scanned" => "{count} skrár skimaðar",
-"error while scanning" => "villa við skimun",
"Name" => "Nafn",
"Size" => "Stærð",
"Modified" => "Breytt",
diff --git a/apps/files/l10n/it.php b/apps/files/l10n/it.php
index 63bc71d6729..e6fc1e81a96 100644
--- a/apps/files/l10n/it.php
+++ b/apps/files/l10n/it.php
@@ -1,7 +1,4 @@
"Impossibile spostare %s - un file con questo nome esiste già",
-"Could not move %s" => "Impossibile spostare %s",
-"Unable to rename file" => "Impossibile rinominare il file",
"No file was uploaded. Unknown error" => "Nessun file è stato inviato. Errore sconosciuto",
"There is no error, the file uploaded with success" => "Non ci sono errori, file caricato con successo",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Il file caricato supera la direttiva upload_max_filesize in php.ini:",
@@ -10,7 +7,7 @@
"No file was uploaded" => "Nessun file è stato caricato",
"Missing a temporary folder" => "Cartella temporanea mancante",
"Failed to write to disk" => "Scrittura su disco non riuscita",
-"Not enough storage available" => "Spazio di archiviazione insufficiente",
+"Not enough space available" => "Spazio disponibile insufficiente",
"Invalid directory." => "Cartella non valida.",
"Files" => "File",
"Unshare" => "Rimuovi condivisione",
@@ -23,8 +20,6 @@
"replaced {new_name}" => "sostituito {new_name}",
"undo" => "annulla",
"replaced {new_name} with {old_name}" => "sostituito {new_name} con {old_name}",
-"unshared {files}" => "non condivisi {files}",
-"deleted {files}" => "eliminati {files}",
"'.' is an invalid file name." => "'.' non è un nome file valido.",
"File name cannot be empty." => "Il nome del file non può essere vuoto.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non valido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non sono consentiti.",
@@ -41,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.",
"URL cannot be empty." => "L'URL non può essere vuoto.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome della cartella non valido. L'uso di 'Shared' è riservato da ownCloud",
-"{count} files scanned" => "{count} file analizzati",
-"error while scanning" => "errore durante la scansione",
"Name" => "Nome",
"Size" => "Dimensione",
"Modified" => "Modificato",
@@ -69,5 +62,6 @@
"Upload too large" => "Il file caricato è troppo grande",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "I file che stai provando a caricare superano la dimensione massima consentita su questo server.",
"Files are being scanned, please wait." => "Scansione dei file in corso, attendi",
-"Current scanning" => "Scansione corrente"
+"Current scanning" => "Scansione corrente",
+"Upgrading filesystem cache..." => "Aggiornamento della cache del filesystem in corso..."
);
diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php
index 5d4bf93e5eb..792bf7cbf99 100644
--- a/apps/files/l10n/ja_JP.php
+++ b/apps/files/l10n/ja_JP.php
@@ -1,7 +1,4 @@
"%s を移動できませんでした ― この名前のファイルはすでに存在します",
-"Could not move %s" => "%s を移動できませんでした",
-"Unable to rename file" => "ファイル名の変更ができません",
"No file was uploaded. Unknown error" => "ファイルは何もアップロードされていません。不明なエラー",
"There is no error, the file uploaded with success" => "エラーはありません。ファイルのアップロードは成功しました",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "アップロードされたファイルはphp.ini の upload_max_filesize に設定されたサイズを超えています:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "ファイルはアップロードされませんでした",
"Missing a temporary folder" => "テンポラリフォルダが見つかりません",
"Failed to write to disk" => "ディスクへの書き込みに失敗しました",
+"Not enough space available" => "利用可能なスペースが十分にありません",
"Invalid directory." => "無効なディレクトリです。",
"Files" => "ファイル",
"Unshare" => "共有しない",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "{new_name} を置換",
"undo" => "元に戻す",
"replaced {new_name} with {old_name}" => "{old_name} を {new_name} に置換",
-"unshared {files}" => "未共有 {files}",
-"deleted {files}" => "削除 {files}",
"'.' is an invalid file name." => "'.' は無効なファイル名です。",
"File name cannot be empty." => "ファイル名を空にすることはできません。",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "無効な名前、'\\', '/', '<', '>', ':', '\"', '|', '?', '*' は使用できません。",
+"Your storage is full, files can not be updated or synced anymore!" => "あなたのストレージは一杯です。ファイルの更新と同期はもうできません!",
+"Your storage is almost full ({usedSpacePercent}%)" => "あなたのストレージはほぼ一杯です({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "ダウンロードの準備中です。ファイルサイズが大きい場合は少し時間がかかるかもしれません。",
"Unable to upload your file as it is a directory or has 0 bytes" => "ディレクトリもしくは0バイトのファイルはアップロードできません",
"Upload Error" => "アップロードエラー",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。",
"URL cannot be empty." => "URLは空にできません。",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "無効なフォルダ名です。'Shared' の利用は ownCloud が予約済みです。",
-"{count} files scanned" => "{count} ファイルをスキャン",
-"error while scanning" => "スキャン中のエラー",
"Name" => "名前",
"Size" => "サイズ",
"Modified" => "更新日時",
diff --git a/apps/files/l10n/ka_GE.php b/apps/files/l10n/ka_GE.php
index 08225c114d1..7ab6122c659 100644
--- a/apps/files/l10n/ka_GE.php
+++ b/apps/files/l10n/ka_GE.php
@@ -16,8 +16,6 @@
"replaced {new_name}" => "{new_name} შეცვლილია",
"undo" => "დაბრუნება",
"replaced {new_name} with {old_name}" => "{new_name} შეცვლილია {old_name}–ით",
-"unshared {files}" => "გაზიარება მოხსნილი {files}",
-"deleted {files}" => "წაშლილი {files}",
"Unable to upload your file as it is a directory or has 0 bytes" => "თქვენი ფაილის ატვირთვა ვერ მოხერხდა. ის არის საქაღალდე და შეიცავს 0 ბაიტს",
"Upload Error" => "შეცდომა ატვირთვისას",
"Close" => "დახურვა",
@@ -26,8 +24,6 @@
"{count} files uploading" => "{count} ფაილი იტვირთება",
"Upload cancelled." => "ატვირთვა შეჩერებულ იქნა.",
"File upload is in progress. Leaving the page now will cancel the upload." => "მიმდინარეობს ფაილის ატვირთვა. სხვა გვერდზე გადასვლა გამოიწვევს ატვირთვის შეჩერებას",
-"{count} files scanned" => "{count} ფაილი სკანირებულია",
-"error while scanning" => "შეცდომა სკანირებისას",
"Name" => "სახელი",
"Size" => "ზომა",
"Modified" => "შეცვლილია",
diff --git a/apps/files/l10n/ko.php b/apps/files/l10n/ko.php
index cd95d61e4dc..7774aeea31c 100644
--- a/apps/files/l10n/ko.php
+++ b/apps/files/l10n/ko.php
@@ -1,7 +1,4 @@
"%s 항목을 이동시키지 못하였음 - 파일 이름이 이미 존재함",
-"Could not move %s" => "%s 항목을 이딩시키지 못하였음",
-"Unable to rename file" => "파일 이름바꾸기 할 수 없음",
"No file was uploaded. Unknown error" => "파일이 업로드되지 않았습니다. 알 수 없는 오류입니다",
"There is no error, the file uploaded with success" => "업로드에 성공하였습니다.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "업로드한 파일이 php.ini의 upload_max_filesize보다 큽니다:",
@@ -10,7 +7,8 @@
"No file was uploaded" => "업로드된 파일 없음",
"Missing a temporary folder" => "임시 폴더가 사라짐",
"Failed to write to disk" => "디스크에 쓰지 못했습니다",
-"Invalid directory." => "올바르지 않은 디렉토리입니다.",
+"Not enough space available" => "여유 공간이 부족합니다",
+"Invalid directory." => "올바르지 않은 디렉터리입니다.",
"Files" => "파일",
"Unshare" => "공유 해제",
"Delete" => "삭제",
@@ -22,11 +20,12 @@
"replaced {new_name}" => "{new_name}을(를) 대체함",
"undo" => "실행 취소",
"replaced {new_name} with {old_name}" => "{old_name}이(가) {new_name}(으)로 대체됨",
-"unshared {files}" => "{files} 공유 해제됨",
-"deleted {files}" => "{files} 삭제됨",
"'.' is an invalid file name." => "'.' 는 올바르지 않은 파일 이름 입니다.",
-"File name cannot be empty." => "파일이름은 공란이 될 수 없습니다.",
+"File name cannot be empty." => "파일 이름이 비어 있을 수 없습니다.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "폴더 이름이 올바르지 않습니다. 이름에 문자 '\\', '/', '<', '>', ':', '\"', '|', '? ', '*'는 사용할 수 없습니다.",
+"Your storage is full, files can not be updated or synced anymore!" => "저장 공간이 가득 찼습니다. 파일을 업데이트하거나 동기화할 수 없습니다!",
+"Your storage is almost full ({usedSpacePercent}%)" => "저장 공간이 거의 가득 찼습니다 ({usedSpacePercent}%)",
+"Your download is being prepared. This might take some time if the files are big." => "다운로드가 준비 중입니다. 파일 크기가 크다면 시간이 오래 걸릴 수도 있습니다.",
"Unable to upload your file as it is a directory or has 0 bytes" => "이 파일은 디렉터리이거나 비어 있기 때문에 업로드할 수 없습니다",
"Upload Error" => "업로드 오류",
"Close" => "닫기",
@@ -37,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
"URL cannot be empty." => "URL을 입력해야 합니다.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "폴더 이름이 유효하지 않습니다. ",
-"{count} files scanned" => "파일 {count}개 검색됨",
-"error while scanning" => "검색 중 오류 발생",
"Name" => "이름",
"Size" => "크기",
"Modified" => "수정됨",
@@ -65,5 +62,6 @@
"Upload too large" => "업로드 용량 초과",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "이 파일이 서버에서 허용하는 최대 업로드 가능 용량보다 큽니다.",
"Files are being scanned, please wait." => "파일을 검색하고 있습니다. 기다려 주십시오.",
-"Current scanning" => "현재 검색"
+"Current scanning" => "현재 검색",
+"Upgrading filesystem cache..." => "파일 시스템 캐시 업그레이드 중..."
);
diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php
index da209619e2a..f4ad655f421 100644
--- a/apps/files/l10n/lt_LT.php
+++ b/apps/files/l10n/lt_LT.php
@@ -16,8 +16,6 @@
"replaced {new_name}" => "pakeiskite {new_name}",
"undo" => "anuliuoti",
"replaced {new_name} with {old_name}" => "pakeiskite {new_name} į {old_name}",
-"unshared {files}" => "nebesidalinti {files}",
-"deleted {files}" => "ištrinti {files}",
"Unable to upload your file as it is a directory or has 0 bytes" => "Neįmanoma įkelti failo - jo dydis gali būti 0 bitų arba tai katalogas",
"Upload Error" => "Įkėlimo klaida",
"Close" => "Užverti",
@@ -26,8 +24,6 @@
"{count} files uploading" => "{count} įkeliami failai",
"Upload cancelled." => "Įkėlimas atšauktas.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Failo įkėlimas pradėtas. Jei paliksite šį puslapį, įkėlimas nutrūks.",
-"{count} files scanned" => "{count} praskanuoti failai",
-"error while scanning" => "klaida skanuojant",
"Name" => "Pavadinimas",
"Size" => "Dydis",
"Modified" => "Pakeista",
diff --git a/apps/files/l10n/mk.php b/apps/files/l10n/mk.php
index 0ca08d6bc6a..2580d1e6a97 100644
--- a/apps/files/l10n/mk.php
+++ b/apps/files/l10n/mk.php
@@ -18,8 +18,6 @@
"replaced {new_name}" => "земенета {new_name}",
"undo" => "врати",
"replaced {new_name} with {old_name}" => "заменета {new_name} со {old_name}",
-"unshared {files}" => "без споделување {files}",
-"deleted {files}" => "избришани {files}",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Неправилно име. , '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не се дозволени.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Не може да се преземе вашата датотека бидејќи фолдерот во кој се наоѓа фајлот има големина од 0 бајти",
"Upload Error" => "Грешка при преземање",
@@ -30,8 +28,6 @@
"Upload cancelled." => "Преземањето е прекинато.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Подигање на датотека е во тек. Напуштење на страницата ќе го прекине.",
"URL cannot be empty." => "Адресата неможе да биде празна.",
-"{count} files scanned" => "{count} датотеки скенирани",
-"error while scanning" => "грешка при скенирање",
"Name" => "Име",
"Size" => "Големина",
"Modified" => "Променето",
diff --git a/apps/files/l10n/nb_NO.php b/apps/files/l10n/nb_NO.php
index 8bb7cfb2f9c..a6ba6e9c03f 100644
--- a/apps/files/l10n/nb_NO.php
+++ b/apps/files/l10n/nb_NO.php
@@ -17,7 +17,6 @@
"replaced {new_name}" => "erstatt {new_name}",
"undo" => "angre",
"replaced {new_name} with {old_name}" => "erstatt {new_name} med {old_name}",
-"deleted {files}" => "slettet {files}",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ugyldig navn, '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' er ikke tillatt.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes",
"Upload Error" => "Opplasting feilet",
@@ -28,8 +27,6 @@
"Upload cancelled." => "Opplasting avbrutt.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen.",
"URL cannot be empty." => "URL-en kan ikke være tom.",
-"{count} files scanned" => "{count} filer lest inn",
-"error while scanning" => "feil under skanning",
"Name" => "Navn",
"Size" => "Størrelse",
"Modified" => "Endret",
diff --git a/apps/files/l10n/nl.php b/apps/files/l10n/nl.php
index c78ac346d13..7f2e8ec2bf4 100644
--- a/apps/files/l10n/nl.php
+++ b/apps/files/l10n/nl.php
@@ -1,7 +1,4 @@
"Kon %s niet verplaatsen - Er bestaat al een bestand met deze naam",
-"Could not move %s" => "Kon %s niet verplaatsen",
-"Unable to rename file" => "Kan bestand niet hernoemen",
"No file was uploaded. Unknown error" => "Er was geen bestand geladen. Onbekende fout",
"There is no error, the file uploaded with success" => "Geen fout opgetreden, bestand successvol geupload.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Het geüploade bestand overscheidt de upload_max_filesize optie in php.ini:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Geen bestand geüpload",
"Missing a temporary folder" => "Een tijdelijke map mist",
"Failed to write to disk" => "Schrijven naar schijf mislukt",
+"Not enough space available" => "Niet genoeg ruimte beschikbaar",
"Invalid directory." => "Ongeldige directory.",
"Files" => "Bestanden",
"Unshare" => "Stop delen",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "verving {new_name}",
"undo" => "ongedaan maken",
"replaced {new_name} with {old_name}" => "verving {new_name} met {old_name}",
-"unshared {files}" => "delen gestopt {files}",
-"deleted {files}" => "verwijderde {files}",
"'.' is an invalid file name." => "'.' is een ongeldige bestandsnaam.",
"File name cannot be empty." => "Bestandsnaam kan niet leeg zijn.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Onjuiste naam; '\\', '/', '<', '>', ':', '\"', '|', '?' en '*' zijn niet toegestaan.",
@@ -38,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
"URL cannot be empty." => "URL kan niet leeg zijn.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ongeldige mapnaam. Gebruik van'Gedeeld' is voorbehouden aan Owncloud",
-"{count} files scanned" => "{count} bestanden gescanned",
-"error while scanning" => "Fout tijdens het scannen",
"Name" => "Naam",
"Size" => "Bestandsgrootte",
"Modified" => "Laatst aangepast",
diff --git a/apps/files/l10n/oc.php b/apps/files/l10n/oc.php
index 76c8d6b655a..78045b299ed 100644
--- a/apps/files/l10n/oc.php
+++ b/apps/files/l10n/oc.php
@@ -19,7 +19,6 @@
"1 file uploading" => "1 fichièr al amontcargar",
"Upload cancelled." => "Amontcargar anullat.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Un amontcargar es a se far. Daissar aquesta pagina ara tamparà lo cargament. ",
-"error while scanning" => "error pendant l'exploracion",
"Name" => "Nom",
"Size" => "Talha",
"Modified" => "Modificat",
diff --git a/apps/files/l10n/pl.php b/apps/files/l10n/pl.php
index 477e14491f7..6855850f0da 100644
--- a/apps/files/l10n/pl.php
+++ b/apps/files/l10n/pl.php
@@ -1,7 +1,4 @@
"Nie można było przenieść %s - Plik o takiej nazwie już istnieje",
-"Could not move %s" => "Nie można było przenieść %s",
-"Unable to rename file" => "Nie można zmienić nazwy pliku",
"No file was uploaded. Unknown error" => "Plik nie został załadowany. Nieznany błąd",
"There is no error, the file uploaded with success" => "Przesłano plik",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Wgrany plik przekracza wartość upload_max_filesize zdefiniowaną w php.ini: ",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Nie przesłano żadnego pliku",
"Missing a temporary folder" => "Brak katalogu tymczasowego",
"Failed to write to disk" => "Błąd zapisu na dysk",
+"Not enough space available" => "Za mało miejsca",
"Invalid directory." => "Zła ścieżka.",
"Files" => "Pliki",
"Unshare" => "Nie udostępniaj",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "zastąpiony {new_name}",
"undo" => "wróć",
"replaced {new_name} with {old_name}" => "zastąpiony {new_name} z {old_name}",
-"unshared {files}" => "Udostępniane wstrzymane {files}",
-"deleted {files}" => "usunięto {files}",
"'.' is an invalid file name." => "'.' jest nieprawidłową nazwą pliku.",
"File name cannot be empty." => "Nazwa pliku nie może być pusta.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Niepoprawna nazwa, Znaki '\\', '/', '<', '>', ':', '\"', '|', '?' oraz '*'są niedozwolone.",
@@ -37,8 +33,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Wysyłanie pliku jest w toku. Teraz opuszczając stronę wysyłanie zostanie anulowane.",
"URL cannot be empty." => "URL nie może być pusty.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nazwa folderu nieprawidłowa. Wykorzystanie \"Shared\" jest zarezerwowane przez Owncloud",
-"{count} files scanned" => "{count} pliki skanowane",
-"error while scanning" => "Wystąpił błąd podczas skanowania",
"Name" => "Nazwa",
"Size" => "Rozmiar",
"Modified" => "Czas modyfikacji",
diff --git a/apps/files/l10n/pt_BR.php b/apps/files/l10n/pt_BR.php
index 33014297ee5..361e81052b9 100644
--- a/apps/files/l10n/pt_BR.php
+++ b/apps/files/l10n/pt_BR.php
@@ -7,6 +7,7 @@
"No file was uploaded" => "Nenhum arquivo foi transferido",
"Missing a temporary folder" => "Pasta temporária não encontrada",
"Failed to write to disk" => "Falha ao escrever no disco",
+"Invalid directory." => "Diretório inválido.",
"Files" => "Arquivos",
"Unshare" => "Descompartilhar",
"Delete" => "Excluir",
@@ -18,9 +19,10 @@
"replaced {new_name}" => "substituído {new_name}",
"undo" => "desfazer",
"replaced {new_name} with {old_name}" => "Substituído {old_name} por {new_name} ",
-"unshared {files}" => "{files} não compartilhados",
-"deleted {files}" => "{files} apagados",
+"'.' is an invalid file name." => "'.' é um nome de arquivo inválido.",
+"File name cannot be empty." => "O nome do arquivo não pode estar vazio.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome inválido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos.",
+"Your download is being prepared. This might take some time if the files are big." => "Seu download está sendo preparado. Isto pode levar algum tempo se os arquivos forem grandes.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Impossível enviar seus arquivo como diretório ou ele tem 0 bytes.",
"Upload Error" => "Erro de envio",
"Close" => "Fechar",
@@ -30,8 +32,7 @@
"Upload cancelled." => "Envio cancelado.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Upload em andamento. Sair da página agora resultará no cancelamento do envio.",
"URL cannot be empty." => "URL não pode ficar em branco",
-"{count} files scanned" => "{count} arquivos scaneados",
-"error while scanning" => "erro durante verificação",
+"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de pasta inválido. O uso de 'Shared' é reservado para o Owncloud",
"Name" => "Nome",
"Size" => "Tamanho",
"Modified" => "Modificado",
diff --git a/apps/files/l10n/pt_PT.php b/apps/files/l10n/pt_PT.php
index 3ec34c449de..1415b71e7f5 100644
--- a/apps/files/l10n/pt_PT.php
+++ b/apps/files/l10n/pt_PT.php
@@ -1,7 +1,4 @@
"Não foi possível mover o ficheiro %s - Já existe um ficheiro com esse nome",
-"Could not move %s" => "Não foi possível move o ficheiro %s",
-"Unable to rename file" => "Não foi possível renomear o ficheiro",
"No file was uploaded. Unknown error" => "Nenhum ficheiro foi carregado. Erro desconhecido",
"There is no error, the file uploaded with success" => "Sem erro, ficheiro enviado com sucesso",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro enviado excede o limite permitido na directiva do php.ini upload_max_filesize",
@@ -10,7 +7,7 @@
"No file was uploaded" => "Não foi enviado nenhum ficheiro",
"Missing a temporary folder" => "Falta uma pasta temporária",
"Failed to write to disk" => "Falhou a escrita no disco",
-"Not enough storage available" => "Não há espaço suficiente em disco",
+"Not enough space available" => "Espaço em disco insuficiente!",
"Invalid directory." => "Directório Inválido",
"Files" => "Ficheiros",
"Unshare" => "Deixar de partilhar",
@@ -18,13 +15,11 @@
"Rename" => "Renomear",
"{new_name} already exists" => "O nome {new_name} já existe",
"replace" => "substituir",
-"suggest name" => "Sugira um nome",
+"suggest name" => "sugira um nome",
"cancel" => "cancelar",
"replaced {new_name}" => "{new_name} substituido",
"undo" => "desfazer",
"replaced {new_name} with {old_name}" => "substituido {new_name} por {old_name}",
-"unshared {files}" => "{files} não partilhado(s)",
-"deleted {files}" => "{files} eliminado(s)",
"'.' is an invalid file name." => "'.' não é um nome de ficheiro válido!",
"File name cannot be empty." => "O nome do ficheiro não pode estar vazio.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome Inválido, os caracteres '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos.",
@@ -37,12 +32,10 @@
"Pending" => "Pendente",
"1 file uploading" => "A enviar 1 ficheiro",
"{count} files uploading" => "A carregar {count} ficheiros",
-"Upload cancelled." => "O envio foi cancelado.",
+"Upload cancelled." => "Envio cancelado.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Envio de ficheiro em progresso. Irá cancelar o envio se sair da página agora.",
"URL cannot be empty." => "O URL não pode estar vazio.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de pasta inválido. O Uso de 'shared' é reservado para o ownCloud",
-"{count} files scanned" => "{count} ficheiros analisados",
-"error while scanning" => "erro ao analisar",
"Name" => "Nome",
"Size" => "Tamanho",
"Modified" => "Modificado",
@@ -69,5 +62,6 @@
"Upload too large" => "Envio muito grande",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiros que está a tentar enviar excedem o tamanho máximo de envio permitido neste servidor.",
"Files are being scanned, please wait." => "Os ficheiros estão a ser analisados, por favor aguarde.",
-"Current scanning" => "Análise actual"
+"Current scanning" => "Análise actual",
+"Upgrading filesystem cache..." => "Atualizar cache do sistema de ficheiros..."
);
diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php
index 424450e920f..7837b1f5b30 100644
--- a/apps/files/l10n/ro.php
+++ b/apps/files/l10n/ro.php
@@ -1,7 +1,4 @@
"Nu se poate de mutat %s - Fișier cu acest nume deja există",
-"Could not move %s" => "Nu s-a putut muta %s",
-"Unable to rename file" => "Nu s-a putut redenumi fișierul",
"No file was uploaded. Unknown error" => "Nici un fișier nu a fost încărcat. Eroare necunoscută",
"There is no error, the file uploaded with success" => "Nicio eroare, fișierul a fost încărcat cu succes",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Fisierul incarcat depaseste upload_max_filesize permisi in php.ini: ",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Niciun fișier încărcat",
"Missing a temporary folder" => "Lipsește un dosar temporar",
"Failed to write to disk" => "Eroare la scriere pe disc",
+"Not enough space available" => "Nu este suficient spațiu disponibil",
"Invalid directory." => "Director invalid.",
"Files" => "Fișiere",
"Unshare" => "Anulează partajarea",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "inlocuit {new_name}",
"undo" => "Anulează ultima acțiune",
"replaced {new_name} with {old_name}" => "{new_name} inlocuit cu {old_name}",
-"unshared {files}" => "nedistribuit {files}",
-"deleted {files}" => "Sterse {files}",
"'.' is an invalid file name." => "'.' este un nume invalid de fișier.",
"File name cannot be empty." => "Numele fișierului nu poate rămâne gol.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nume invalid, '\\', '/', '<', '>', ':', '\"', '|', '?' si '*' nu sunt permise.",
@@ -38,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Fișierul este în curs de încărcare. Părăsirea paginii va întrerupe încărcarea.",
"URL cannot be empty." => "Adresa URL nu poate fi goală.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Invalid folder name. Usage of 'Shared' is reserved by Ownclou",
-"{count} files scanned" => "{count} fisiere scanate",
-"error while scanning" => "eroare la scanarea",
"Name" => "Nume",
"Size" => "Dimensiune",
"Modified" => "Modificat",
diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php
index ae103a9e810..716afa5f29a 100644
--- a/apps/files/l10n/ru.php
+++ b/apps/files/l10n/ru.php
@@ -1,7 +1,4 @@
"Невозможно переместить %s - файл с таким именем уже существует",
-"Could not move %s" => "Невозможно переместить %s",
-"Unable to rename file" => "Невозможно переименовать файл",
"No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка",
"There is no error, the file uploaded with success" => "Файл успешно загружен",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Файл превышает размер установленный upload_max_filesize в php.ini:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Файл не был загружен",
"Missing a temporary folder" => "Невозможно найти временную папку",
"Failed to write to disk" => "Ошибка записи на диск",
+"Not enough space available" => "Недостаточно свободного места",
"Invalid directory." => "Неправильный каталог.",
"Files" => "Файлы",
"Unshare" => "Отменить публикацию",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "заменено {new_name}",
"undo" => "отмена",
"replaced {new_name} with {old_name}" => "заменено {new_name} на {old_name}",
-"unshared {files}" => "не опубликованные {files}",
-"deleted {files}" => "удаленные {files}",
"'.' is an invalid file name." => "'.' - неправильное имя файла.",
"File name cannot be empty." => "Имя файла не может быть пустым.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Неправильное имя, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' недопустимы.",
@@ -37,8 +33,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Файл в процессе загрузки. Покинув страницу вы прервёте загрузку.",
"URL cannot be empty." => "Ссылка не может быть пустой.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Неправильное имя каталога. Имя 'Shared' зарезервировано.",
-"{count} files scanned" => "{count} файлов просканировано",
-"error while scanning" => "ошибка во время санирования",
"Name" => "Название",
"Size" => "Размер",
"Modified" => "Изменён",
diff --git a/apps/files/l10n/ru_RU.php b/apps/files/l10n/ru_RU.php
index 60a7fd0f71e..e1952567d31 100644
--- a/apps/files/l10n/ru_RU.php
+++ b/apps/files/l10n/ru_RU.php
@@ -7,6 +7,8 @@
"No file was uploaded" => "Файл не был загружен",
"Missing a temporary folder" => "Отсутствует временная папка",
"Failed to write to disk" => "Не удалось записать на диск",
+"Not enough space available" => "Не достаточно свободного места",
+"Invalid directory." => "Неверный каталог.",
"Files" => "Файлы",
"Unshare" => "Скрыть",
"Delete" => "Удалить",
@@ -18,8 +20,8 @@
"replaced {new_name}" => "заменено {новое_имя}",
"undo" => "отменить действие",
"replaced {new_name} with {old_name}" => "заменено {новое_имя} с {старое_имя}",
-"unshared {files}" => "Cовместное использование прекращено {файлы}",
-"deleted {files}" => "удалено {файлы}",
+"'.' is an invalid file name." => "'.' является неверным именем файла.",
+"File name cannot be empty." => "Имя файла не может быть пустым.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Некорректное имя, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не допустимы.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Невозможно загрузить файл,\n так как он имеет нулевой размер или является директорией",
"Upload Error" => "Ошибка загрузки",
@@ -30,8 +32,7 @@
"Upload cancelled." => "Загрузка отменена",
"File upload is in progress. Leaving the page now will cancel the upload." => "Процесс загрузки файла. Если покинуть страницу сейчас, загрузка будет отменена.",
"URL cannot be empty." => "URL не должен быть пустым.",
-"{count} files scanned" => "{количество} файлов отсканировано",
-"error while scanning" => "ошибка при сканировании",
+"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Неверное имя папки. Использование наименования 'Опубликовано' зарезервировано Owncloud",
"Name" => "Имя",
"Size" => "Размер",
"Modified" => "Изменен",
@@ -58,5 +59,6 @@
"Upload too large" => "Загрузка слишком велика",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Размер файлов, которые Вы пытаетесь загрузить, превышает максимально допустимый размер для загрузки на данный сервер.",
"Files are being scanned, please wait." => "Файлы сканируются, пожалуйста, подождите.",
-"Current scanning" => "Текущее сканирование"
+"Current scanning" => "Текущее сканирование",
+"Upgrading filesystem cache..." => "Обновление кэша файловой системы... "
);
diff --git a/apps/files/l10n/si_LK.php b/apps/files/l10n/si_LK.php
index 133737cb57a..316470d8396 100644
--- a/apps/files/l10n/si_LK.php
+++ b/apps/files/l10n/si_LK.php
@@ -20,7 +20,6 @@
"Upload cancelled." => "උඩුගත කිරීම අත් හරින්න ලදී",
"File upload is in progress. Leaving the page now will cancel the upload." => "උඩුගතකිරීමක් සිදුවේ. පිටුව හැර යාමෙන් එය නැවතෙනු ඇත",
"URL cannot be empty." => "යොමුව හිස් විය නොහැක",
-"error while scanning" => "පරීක්ෂා කිරීමේදී දෝෂයක්",
"Name" => "නම",
"Size" => "ප්රමාණය",
"Modified" => "වෙනස් කළ",
diff --git a/apps/files/l10n/sk_SK.php b/apps/files/l10n/sk_SK.php
index bae5670d061..a94d96f6aee 100644
--- a/apps/files/l10n/sk_SK.php
+++ b/apps/files/l10n/sk_SK.php
@@ -1,7 +1,4 @@
"Nie je možné presunúť %s - súbor s týmto menom už existuje",
-"Could not move %s" => "Nie je možné presunúť %s",
-"Unable to rename file" => "Nemožno premenovať súbor",
"No file was uploaded. Unknown error" => "Žiaden súbor nebol odoslaný. Neznáma chyba",
"There is no error, the file uploaded with success" => "Nenastala žiadna chyba, súbor bol úspešne nahraný",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Nahraný súbor predčil konfiguračnú direktívu upload_max_filesize v súbore php.ini:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Žiaden súbor nebol nahraný",
"Missing a temporary folder" => "Chýbajúci dočasný priečinok",
"Failed to write to disk" => "Zápis na disk sa nepodaril",
+"Not enough space available" => "Nie je k dispozícii dostatok miesta",
"Invalid directory." => "Neplatný adresár",
"Files" => "Súbory",
"Unshare" => "Nezdielať",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "prepísaný {new_name}",
"undo" => "vrátiť",
"replaced {new_name} with {old_name}" => "prepísaný {new_name} súborom {old_name}",
-"unshared {files}" => "zdieľanie zrušené pre {files}",
-"deleted {files}" => "zmazané {files}",
"'.' is an invalid file name." => "'.' je neplatné meno súboru.",
"File name cannot be empty." => "Meno súboru nemôže byť prázdne",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nesprávne meno, '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nie sú povolené hodnoty.",
+"Your storage is full, files can not be updated or synced anymore!" => "Vaše úložisko je plné. Súbory nemožno aktualizovať ani synchronizovať!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Vaše úložisko je takmer plné ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Vaše sťahovanie sa pripravuje. Ak sú sťahované súbory veľké, môže to chvíľu trvať.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nemôžem nahrať súbor lebo je to priečinok alebo má 0 bajtov.",
"Upload Error" => "Chyba odosielania",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.",
"URL cannot be empty." => "URL nemôže byť prázdne",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Neplatné meno adresára. Používanie mena 'Shared' je vyhradené len pre Owncloud",
-"{count} files scanned" => "{count} súborov prehľadaných",
-"error while scanning" => "chyba počas kontroly",
"Name" => "Meno",
"Size" => "Veľkosť",
"Modified" => "Upravené",
diff --git a/apps/files/l10n/sl.php b/apps/files/l10n/sl.php
index fbc6ab83b8b..d55b4207d2b 100644
--- a/apps/files/l10n/sl.php
+++ b/apps/files/l10n/sl.php
@@ -18,8 +18,6 @@
"replaced {new_name}" => "zamenjano je ime {new_name}",
"undo" => "razveljavi",
"replaced {new_name} with {old_name}" => "zamenjano ime {new_name} z imenom {old_name}",
-"unshared {files}" => "odstranjeno iz souporabe {files}",
-"deleted {files}" => "izbrisano {files}",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neveljavno ime, znaki '\\', '/', '<', '>', ':', '\"', '|', '?' in '*' niso dovoljeni.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Pošiljanje ni mogoče, saj gre za mapo, ali pa je datoteka velikosti 0 bajtov.",
"Upload Error" => "Napaka med nalaganjem",
@@ -30,8 +28,6 @@
"Upload cancelled." => "Pošiljanje je preklicano.",
"File upload is in progress. Leaving the page now will cancel the upload." => "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.",
"URL cannot be empty." => "Naslov URL ne sme biti prazen.",
-"{count} files scanned" => "{count} files scanned",
-"error while scanning" => "napaka med pregledovanjem datotek",
"Name" => "Ime",
"Size" => "Velikost",
"Modified" => "Spremenjeno",
diff --git a/apps/files/l10n/sr.php b/apps/files/l10n/sr.php
index 71da2da4d14..188c8fc0da6 100644
--- a/apps/files/l10n/sr.php
+++ b/apps/files/l10n/sr.php
@@ -17,8 +17,6 @@
"replaced {new_name}" => "замењено {new_name}",
"undo" => "опозови",
"replaced {new_name} with {old_name}" => "замењено {new_name} са {old_name}",
-"unshared {files}" => "укинуто дељење {files}",
-"deleted {files}" => "обрисано {files}",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Неисправан назив. Следећи знакови нису дозвољени: \\, /, <, >, :, \", |, ? и *.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Не могу да отпремим датотеку као фасциклу или она има 0 бајтова",
"Upload Error" => "Грешка при отпремању",
@@ -28,8 +26,6 @@
"{count} files uploading" => "Отпремам {count} датотеке/а",
"Upload cancelled." => "Отпремање је прекинуто.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Отпремање датотеке је у току. Ако сада напустите страницу, прекинућете отпремање.",
-"{count} files scanned" => "Скенирано датотека: {count}",
-"error while scanning" => "грешка при скенирању",
"Name" => "Назив",
"Size" => "Величина",
"Modified" => "Измењено",
diff --git a/apps/files/l10n/sv.php b/apps/files/l10n/sv.php
index 5cb8d58e3a7..4b4785931f2 100644
--- a/apps/files/l10n/sv.php
+++ b/apps/files/l10n/sv.php
@@ -1,7 +1,4 @@
"Kunde inte flytta %s - Det finns redan en fil med detta namn",
-"Could not move %s" => "Kan inte flytta %s",
-"Unable to rename file" => "Kan inte byta namn på filen",
"No file was uploaded. Unknown error" => "Ingen fil uppladdad. Okänt fel",
"There is no error, the file uploaded with success" => "Inga fel uppstod. Filen laddades upp utan problem",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Den uppladdade filen överskrider upload_max_filesize direktivet php.ini:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Ingen fil blev uppladdad",
"Missing a temporary folder" => "Saknar en tillfällig mapp",
"Failed to write to disk" => "Misslyckades spara till disk",
+"Not enough space available" => "Inte tillräckligt med utrymme tillgängligt",
"Invalid directory." => "Felaktig mapp.",
"Files" => "Filer",
"Unshare" => "Sluta dela",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "ersatt {new_name}",
"undo" => "ångra",
"replaced {new_name} with {old_name}" => "ersatt {new_name} med {old_name}",
-"unshared {files}" => "stoppad delning {files}",
-"deleted {files}" => "raderade {files}",
"'.' is an invalid file name." => "'.' är ett ogiltigt filnamn.",
"File name cannot be empty." => "Filnamn kan inte vara tomt.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ogiltigt namn, '\\', '/', '<', '>', ':', '\"', '|', '?' och '*' är inte tillåtet.",
+"Your storage is full, files can not be updated or synced anymore!" => "Ditt lagringsutrymme är fullt, filer kan ej längre laddas upp eller synkas!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Din nedladdning förbereds. Det kan ta tid om det är stora filer.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Kunde inte ladda upp dina filer eftersom det antingen är en mapp eller har 0 bytes.",
"Upload Error" => "Uppladdningsfel",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
"URL cannot be empty." => "URL kan inte vara tom.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ogiltigt mappnamn. Användande av 'Shared' är reserverat av ownCloud",
-"{count} files scanned" => "{count} filer skannade",
-"error while scanning" => "fel vid skanning",
"Name" => "Namn",
"Size" => "Storlek",
"Modified" => "Ändrad",
@@ -66,5 +62,6 @@
"Upload too large" => "För stor uppladdning",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar på servern.",
"Files are being scanned, please wait." => "Filer skannas, var god vänta",
-"Current scanning" => "Aktuell skanning"
+"Current scanning" => "Aktuell skanning",
+"Upgrading filesystem cache..." => "Uppgraderar filsystemets cache..."
);
diff --git a/apps/files/l10n/ta_LK.php b/apps/files/l10n/ta_LK.php
index 52916fed774..383b4ef6f85 100644
--- a/apps/files/l10n/ta_LK.php
+++ b/apps/files/l10n/ta_LK.php
@@ -17,8 +17,6 @@
"replaced {new_name}" => "மாற்றப்பட்டது {new_name}",
"undo" => "முன் செயல் நீக்கம் ",
"replaced {new_name} with {old_name}" => "{new_name} ஆனது {old_name} இனால் மாற்றப்பட்டது",
-"unshared {files}" => "பகிரப்படாதது {கோப்புகள்}",
-"deleted {files}" => "நீக்கப்பட்டது {கோப்புகள்}",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "செல்லுபடியற்ற பெயர்,'\\', '/', '<', '>', ':', '\"', '|', '?' மற்றும் '*' ஆகியன அனுமதிக்கப்படமாட்டாது.",
"Unable to upload your file as it is a directory or has 0 bytes" => "அடைவு அல்லது 0 bytes ஐ கொண்டுள்ளதால் உங்களுடைய கோப்பை பதிவேற்ற முடியவில்லை",
"Upload Error" => "பதிவேற்றல் வழு",
@@ -29,8 +27,6 @@
"Upload cancelled." => "பதிவேற்றல் இரத்து செய்யப்பட்டுள்ளது",
"File upload is in progress. Leaving the page now will cancel the upload." => "கோப்பு பதிவேற்றம் செயல்பாட்டில் உள்ளது. இந்தப் பக்கத்திலிருந்து வெறியேறுவதானது பதிவேற்றலை இரத்து செய்யும்.",
"URL cannot be empty." => "URL வெறுமையாக இருக்கமுடியாது.",
-"{count} files scanned" => "{எண்ணிக்கை} கோப்புகள் வருடப்பட்டது",
-"error while scanning" => "வருடும் போதான வழு",
"Name" => "பெயர்",
"Size" => "அளவு",
"Modified" => "மாற்றப்பட்டது",
diff --git a/apps/files/l10n/th_TH.php b/apps/files/l10n/th_TH.php
index de5c7bec833..c141e4f7166 100644
--- a/apps/files/l10n/th_TH.php
+++ b/apps/files/l10n/th_TH.php
@@ -1,7 +1,4 @@
"ไม่สามารถย้าย %s ได้ - ไฟล์ที่ใช้ชื่อนี้มีอยู่แล้ว",
-"Could not move %s" => "ไม่สามารถย้าย %s ได้",
-"Unable to rename file" => "ไม่สามารถเปลี่ยนชื่อไฟล์ได้",
"No file was uploaded. Unknown error" => "ยังไม่มีไฟล์ใดที่ถูกอัพโหลด เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ",
"There is no error, the file uploaded with success" => "ไม่มีข้อผิดพลาดใดๆ ไฟล์ถูกอัพโหลดเรียบร้อยแล้ว",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "ขนาดไฟล์ที่อัพโหลดมีขนาดเกิน upload_max_filesize ที่ระบุไว้ใน php.ini",
@@ -10,6 +7,7 @@
"No file was uploaded" => "ยังไม่มีไฟล์ที่ถูกอัพโหลด",
"Missing a temporary folder" => "แฟ้มเอกสารชั่วคราวเกิดการสูญหาย",
"Failed to write to disk" => "เขียนข้อมูลลงแผ่นดิสก์ล้มเหลว",
+"Not enough space available" => "มีพื้นที่เหลือไม่เพียงพอ",
"Invalid directory." => "ไดเร็กทอรี่ไม่ถูกต้อง",
"Files" => "ไฟล์",
"Unshare" => "ยกเลิกการแชร์ข้อมูล",
@@ -22,11 +20,11 @@
"replaced {new_name}" => "แทนที่ {new_name} แล้ว",
"undo" => "เลิกทำ",
"replaced {new_name} with {old_name}" => "แทนที่ {new_name} ด้วย {old_name} แล้ว",
-"unshared {files}" => "ยกเลิกการแชร์แล้ว {files} ไฟล์",
-"deleted {files}" => "ลบไฟล์แล้ว {files} ไฟล์",
"'.' is an invalid file name." => "'.' เป็นชื่อไฟล์ที่ไม่ถูกต้อง",
"File name cannot be empty." => "ชื่อไฟล์ไม่สามารถเว้นว่างได้",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "ชื่อที่ใช้ไม่ถูกต้อง, '\\', '/', '<', '>', ':', '\"', '|', '?' และ '*' ไม่ได้รับอนุญาตให้ใช้งานได้",
+"Your storage is full, files can not be updated or synced anymore!" => "พื้นที่จัดเก็บข้อมูลของคุณเต็มแล้ว ไม่สามารถอัพเดทหรือผสานไฟล์ต่างๆได้อีกต่อไป",
+"Your storage is almost full ({usedSpacePercent}%)" => "พื้นที่จัดเก็บข้อมูลของคุณใกล้เต็มแล้ว ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "กำลังเตรียมดาวน์โหลดข้อมูล หากไฟล์มีขนาดใหญ่ อาจใช้เวลาสักครู่",
"Unable to upload your file as it is a directory or has 0 bytes" => "ไม่สามารถอัพโหลดไฟล์ของคุณได้ เนื่องจากไฟล์ดังกล่าวเป็นไดเร็กทอรี่หรือมีขนาด 0 ไบต์",
"Upload Error" => "เกิดข้อผิดพลาดในการอัพโหลด",
@@ -38,8 +36,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "การอัพโหลดไฟล์กำลังอยู่ในระหว่างดำเนินการ การออกจากหน้าเว็บนี้จะทำให้การอัพโหลดถูกยกเลิก",
"URL cannot be empty." => "URL ไม่สามารถเว้นว่างได้",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "ชื่อโฟลเดอร์ไม่ถูกต้อง การใช้งาน 'แชร์' สงวนไว้สำหรับ Owncloud เท่านั้น",
-"{count} files scanned" => "สแกนไฟล์แล้ว {count} ไฟล์",
-"error while scanning" => "พบข้อผิดพลาดในระหว่างการสแกนไฟล์",
"Name" => "ชื่อ",
"Size" => "ขนาด",
"Modified" => "ปรับปรุงล่าสุด",
diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php
index 2eba20fd0ae..3412d8ad448 100644
--- a/apps/files/l10n/tr.php
+++ b/apps/files/l10n/tr.php
@@ -1,7 +1,4 @@
"%s taşınamadı. Bu isimde dosya zaten var.",
-"Could not move %s" => "%s taşınamadı",
-"Unable to rename file" => "Dosya adı değiştirilemedi",
"No file was uploaded. Unknown error" => "Dosya yüklenmedi. Bilinmeyen hata",
"There is no error, the file uploaded with success" => "Bir hata yok, dosya başarıyla yüklendi",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "php.ini dosyasında upload_max_filesize ile belirtilen dosya yükleme sınırı aşıldı.",
@@ -10,6 +7,7 @@
"No file was uploaded" => "Hiç dosya yüklenmedi",
"Missing a temporary folder" => "Geçici bir klasör eksik",
"Failed to write to disk" => "Diske yazılamadı",
+"Not enough space available" => "Yeterli disk alanı yok",
"Invalid directory." => "Geçersiz dizin.",
"Files" => "Dosyalar",
"Unshare" => "Paylaşılmayan",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "değiştirilen {new_name}",
"undo" => "geri al",
"replaced {new_name} with {old_name}" => "{new_name} ismi {old_name} ile değiştirildi",
-"unshared {files}" => "paylaşılmamış {files}",
-"deleted {files}" => "silinen {files}",
"'.' is an invalid file name." => "'.' geçersiz dosya adı.",
"File name cannot be empty." => "Dosya adı boş olamaz.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Geçersiz isim, '\\', '/', '<', '>', ':', '\"', '|', '?' ve '*' karakterlerine izin verilmemektedir.",
@@ -38,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Dosya yükleme işlemi sürüyor. Şimdi sayfadan ayrılırsanız işleminiz iptal olur.",
"URL cannot be empty." => "URL boş olamaz.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Geçersiz dizin adı. Shared isminin kullanımı Owncloud tarafından rezerver edilmiştir.",
-"{count} files scanned" => "{count} dosya tarandı",
-"error while scanning" => "tararamada hata oluşdu",
"Name" => "Ad",
"Size" => "Boyut",
"Modified" => "Değiştirilme",
diff --git a/apps/files/l10n/uk.php b/apps/files/l10n/uk.php
index aafa035ea09..9831dfe0f8f 100644
--- a/apps/files/l10n/uk.php
+++ b/apps/files/l10n/uk.php
@@ -18,8 +18,6 @@
"replaced {new_name}" => "замінено {new_name}",
"undo" => "відмінити",
"replaced {new_name} with {old_name}" => "замінено {new_name} на {old_name}",
-"unshared {files}" => "неопубліковано {files}",
-"deleted {files}" => "видалено {files}",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Невірне ім'я, '\\', '/', '<', '>', ':', '\"', '|', '?' та '*' не дозволені.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Неможливо завантажити ваш файл тому, що він тека або файл розміром 0 байт",
"Upload Error" => "Помилка завантаження",
@@ -30,8 +28,6 @@
"Upload cancelled." => "Завантаження перервано.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Виконується завантаження файлу. Закриття цієї сторінки приведе до відміни завантаження.",
"URL cannot be empty." => "URL не може бути пустим.",
-"{count} files scanned" => "{count} файлів проскановано",
-"error while scanning" => "помилка при скануванні",
"Name" => "Ім'я",
"Size" => "Розмір",
"Modified" => "Змінено",
diff --git a/apps/files/l10n/vi.php b/apps/files/l10n/vi.php
index ce4f3a7973f..0daf580a2f5 100644
--- a/apps/files/l10n/vi.php
+++ b/apps/files/l10n/vi.php
@@ -17,8 +17,6 @@
"replaced {new_name}" => "đã thay thế {new_name}",
"undo" => "lùi lại",
"replaced {new_name} with {old_name}" => "đã thay thế {new_name} bằng {old_name}",
-"unshared {files}" => "hủy chia sẽ {files}",
-"deleted {files}" => "đã xóa {files}",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Tên không hợp lệ, '\\', '/', '<', '>', ':', '\"', '|', '?' và '*' thì không được phép dùng.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Không thể tải lên tập tin này do nó là một thư mục hoặc kích thước tập tin bằng 0 byte",
"Upload Error" => "Tải lên lỗi",
@@ -29,8 +27,6 @@
"Upload cancelled." => "Hủy tải lên",
"File upload is in progress. Leaving the page now will cancel the upload." => "Tập tin tải lên đang được xử lý. Nếu bạn rời khỏi trang bây giờ sẽ hủy quá trình này.",
"URL cannot be empty." => "URL không được để trống.",
-"{count} files scanned" => "{count} tập tin đã được quét",
-"error while scanning" => "lỗi trong khi quét",
"Name" => "Tên",
"Size" => "Kích cỡ",
"Modified" => "Thay đổi",
diff --git a/apps/files/l10n/zh_CN.GB2312.php b/apps/files/l10n/zh_CN.GB2312.php
index ae1b603369a..a38e2d3bc60 100644
--- a/apps/files/l10n/zh_CN.GB2312.php
+++ b/apps/files/l10n/zh_CN.GB2312.php
@@ -17,8 +17,6 @@
"replaced {new_name}" => "已替换 {new_name}",
"undo" => "撤销",
"replaced {new_name} with {old_name}" => "已用 {old_name} 替换 {new_name}",
-"unshared {files}" => "未分享的 {files}",
-"deleted {files}" => "已删除的 {files}",
"Unable to upload your file as it is a directory or has 0 bytes" => "不能上传你指定的文件,可能因为它是个文件夹或者大小为0",
"Upload Error" => "上传错误",
"Close" => "关闭",
@@ -28,8 +26,6 @@
"Upload cancelled." => "上传取消了",
"File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传。关闭页面会取消上传。",
"URL cannot be empty." => "网址不能为空。",
-"{count} files scanned" => "{count} 个文件已扫描",
-"error while scanning" => "扫描出错",
"Name" => "名字",
"Size" => "大小",
"Modified" => "修改日期",
diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php
index 2e0f938dcd8..2491d645340 100644
--- a/apps/files/l10n/zh_CN.php
+++ b/apps/files/l10n/zh_CN.php
@@ -1,7 +1,4 @@
"无法移动 %s - 同名文件已存在",
-"Could not move %s" => "无法移动 %s",
-"Unable to rename file" => "无法重命名文件",
"No file was uploaded. Unknown error" => "没有文件被上传。未知错误",
"There is no error, the file uploaded with success" => "没有发生错误,文件上传成功。",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "上传文件大小已超过php.ini中upload_max_filesize所规定的值",
@@ -10,6 +7,7 @@
"No file was uploaded" => "文件没有上传",
"Missing a temporary folder" => "缺少临时目录",
"Failed to write to disk" => "写入磁盘失败",
+"Not enough space available" => "没有足够可用空间",
"Invalid directory." => "无效文件夹。",
"Files" => "文件",
"Unshare" => "取消分享",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "替换 {new_name}",
"undo" => "撤销",
"replaced {new_name} with {old_name}" => "已将 {old_name}替换成 {new_name}",
-"unshared {files}" => "取消了共享 {files}",
-"deleted {files}" => "删除了 {files}",
"'.' is an invalid file name." => "'.' 是一个无效的文件名。",
"File name cannot be empty." => "文件名不能为空。",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "无效名称,'\\', '/', '<', '>', ':', '\"', '|', '?' 和 '*' 不被允许使用。",
@@ -38,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传中。现在离开此页会导致上传动作被取消。",
"URL cannot be empty." => "URL不能为空",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "无效文件夹名。'共享' 是 Owncloud 预留的文件夹名。",
-"{count} files scanned" => "{count} 个文件已扫描。",
-"error while scanning" => "扫描时出错",
"Name" => "名称",
"Size" => "大小",
"Modified" => "修改日期",
diff --git a/apps/files/l10n/zh_TW.php b/apps/files/l10n/zh_TW.php
index 8d41a927355..6d354ac1e95 100644
--- a/apps/files/l10n/zh_TW.php
+++ b/apps/files/l10n/zh_TW.php
@@ -1,7 +1,4 @@
"無法移動 %s - 同名的檔案已經存在",
-"Could not move %s" => "無法移動 %s",
-"Unable to rename file" => "無法重新命名檔案",
"No file was uploaded. Unknown error" => "沒有檔案被上傳。未知的錯誤。",
"There is no error, the file uploaded with success" => "無錯誤,檔案上傳成功",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "上傳的檔案大小超過 php.ini 當中 upload_max_filesize 參數的設定:",
@@ -10,6 +7,7 @@
"No file was uploaded" => "無已上傳檔案",
"Missing a temporary folder" => "遺失暫存資料夾",
"Failed to write to disk" => "寫入硬碟失敗",
+"Not enough space available" => "沒有足夠的可用空間",
"Invalid directory." => "無效的資料夾。",
"Files" => "檔案",
"Unshare" => "取消共享",
@@ -22,8 +20,6 @@
"replaced {new_name}" => "已取代 {new_name}",
"undo" => "復原",
"replaced {new_name} with {old_name}" => "使用 {new_name} 取代 {old_name}",
-"unshared {files}" => "已取消分享 {files}",
-"deleted {files}" => "已刪除 {files}",
"'.' is an invalid file name." => "'.' 是不合法的檔名。",
"File name cannot be empty." => "檔名不能為空。",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "檔名不合法,不允許 '\\', '/', '<', '>', ':', '\"', '|', '?' 和 '*' 。",
@@ -38,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "檔案上傳中。離開此頁面將會取消上傳。",
"URL cannot be empty." => "URL 不能為空白.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "無效的資料夾名稱,'Shared' 的使用被 Owncloud 保留",
-"{count} files scanned" => "{count} 個檔案已掃描",
-"error while scanning" => "掃描時發生錯誤",
"Name" => "名稱",
"Size" => "大小",
"Modified" => "修改",
diff --git a/apps/files/settings.php b/apps/files/settings.php
index ea730a5a727..8687f013137 100644
--- a/apps/files/settings.php
+++ b/apps/files/settings.php
@@ -32,7 +32,7 @@ OCP\Util::addscript( "files", "files" );
$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : '';
$files = array();
-foreach( OC_Files::getdirectorycontent( $dir ) as $i ) {
+foreach( \OC\Files\Filesystem::getDirectoryContent( $dir ) as $i ) {
$i["date"] = date( $CONFIG_DATEFORMAT, $i["mtime"] );
$files[] = $i;
}
diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php
index b66b523ae38..2d4ed9ab2d9 100644
--- a/apps/files/templates/index.php
+++ b/apps/files/templates/index.php
@@ -35,6 +35,11 @@
+
+
+Versions
AGPLFrank Karlitschek
- 4.9
+ 4.91trueVersioning of files
diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php
index 5fb9dc3c3c5..5cefc532895 100644
--- a/apps/files_versions/lib/hooks.php
+++ b/apps/files_versions/lib/hooks.php
@@ -21,9 +21,9 @@ class Hooks {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
- $versions = new Storage( new \OC_FilesystemView('') );
+ $versions = new Storage( new \OC\Files\View('') );
- $path = $params[\OC_Filesystem::signal_param_path];
+ $path = $params[\OC\Files\Filesystem::signal_param_path];
if($path<>'') $versions->store( $path );
@@ -39,15 +39,15 @@ class Hooks {
* cleanup the versions directory if the actual file gets deleted
*/
public static function remove_hook($params) {
- if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-
- $versions = new Storage( new \OC_FilesystemView('') );
-
- $path = $params[\OC_Filesystem::signal_param_path];
-
- if($path<>'') $versions->delete( $path );
-
- }
+ if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+
+ $versions = new Storage( new \OC_FilesystemView('') );
+
+ $path = $params[\OC\Files\Filesystem::signal_param_path];
+
+ if($path<>'') $versions->delete( $path );
+
+ }
}
/**
@@ -58,15 +58,15 @@ class Hooks {
* of the stored versions along the actual file
*/
public static function rename_hook($params) {
- if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-
- $versions = new Storage( new \OC_FilesystemView('') );
-
+ if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+
+ $versions = new Storage( new \OC_FilesystemView('') );
+
$oldpath = $params['oldpath'];
- $newpath = $params['newpath'];
-
- if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath );
-
+ $newpath = $params['newpath'];
+
+ if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath );
+
}
}
diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php
index 48be5e223ac..003d548d2b2 100644
--- a/apps/files_versions/lib/versions.php
+++ b/apps/files_versions/lib/versions.php
@@ -23,15 +23,15 @@ class Storage {
private static $max_versions_per_interval = array(
1 => array('intervalEndsAfter' => 10, //first 10sec, one version every 2sec
'step' => 2),
- 2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec
+ 2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec
'step' => 10),
3 => array('intervalEndsAfter' => 3600, //next hour, one version every minute
'step' => 60),
4 => array('intervalEndsAfter' => 86400, //next 24h, one version every hour
'step' => 3600),
- 5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day
+ 5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day
'step' => 86400),
- 6 => array('intervalEndsAfter' => -1, //until the end one version per week
+ 6 => array('intervalEndsAfter' => -1, //until the end one version per week
'step' => 604800),
);
@@ -58,8 +58,8 @@ class Storage {
public function store($filename) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename);
- $files_view = new \OC_FilesystemView('/'.$uid .'/files');
- $users_view = new \OC_FilesystemView('/'.$uid);
+ $files_view = new \OC\Files\View('/'.\OCP\User::getUser() .'/files');
+ $users_view = new \OC\Files\View('/'.\OCP\User::getUser());
//check if source file already exist as version to avoid recursions.
// todo does this check work?
@@ -86,8 +86,8 @@ class Storage {
// store a new version of a file
$result = $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
- if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
- $versionsSize = self::calculateSize($uid);
+ if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
+ $versionsSize = self::calculateSize($uid);
}
$versionsSize += $users_view->filesize('files'.$filename);
@@ -105,42 +105,42 @@ class Storage {
* Delete versions of a file
*/
public static function delete($filename) {
- list($uid, $filename) = self::getUidAndFilename($filename);
+ list($uid, $filename) = self::getUidAndFilename($filename);
$versions_fileview = new \OC_FilesystemView('/'.$uid .'/files_versions');
-
- $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
- if( ($versions = self::getVersions($filename)) ) {
- if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
- $versionsSize = self::calculateSize($uid);
- }
- foreach ($versions as $v) {
- unlink($abs_path . $v['version']);
- $versionsSize -= $v['size'];
- }
- \OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
+
+ $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
+ if( ($versions = self::getVersions($filename)) ) {
+ if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
+ $versionsSize = self::calculateSize($uid);
+ }
+ foreach ($versions as $v) {
+ unlink($abs_path . $v['version']);
+ $versionsSize -= $v['size'];
+ }
+ \OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
}
}
- /**
- * rename versions of a file
- */
- public static function rename($oldpath, $newpath) {
+ /**
+ * rename versions of a file
+ */
+ public static function rename($oldpath, $newpath) {
list($uid, $oldpath) = self::getUidAndFilename($oldpath);
- list($uidn, $newpath) = self::getUidAndFilename($newpath);
+ list($uidn, $newpath) = self::getUidAndFilename($newpath);
$versions_view = new \OC_FilesystemView('/'.$uid .'/files_versions');
$files_view = new \OC_FilesystemView('/'.$uid .'/files');
- $abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_view->getAbsolutePath('').$newpath;
-
+ $abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_view->getAbsolutePath('').$newpath;
+
if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) {
$versions_view->rename($oldpath, $newpath);
- } else if ( ($versions = Storage::getVersions($oldpath)) ) {
- $info=pathinfo($abs_newpath);
- if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
- $versions = Storage::getVersions($oldpath);
+ } else if ( ($versions = Storage::getVersions($oldpath)) ) {
+ $info=pathinfo($abs_newpath);
+ if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
+ $versions = Storage::getVersions($oldpath);
foreach ($versions as $v) {
- $versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
- }
- }
+ $versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
+ }
+ }
}
/**
@@ -150,7 +150,7 @@ class Storage {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename);
- $users_view = new \OC_FilesystemView('/'.$uid);
+ $users_view = new \OC\Files\View('/'.$uid);
$versionCreated = false;
//first create a new version
@@ -184,7 +184,7 @@ class Storage {
public static function getVersions( $filename, $count = 0 ) {
if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
list($uid, $filename) = self::getUidAndFilename($filename);
- $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
+ $versions_fileview = new \OC\Files\View('/' . \OCP\User::getUser() . '/files_versions');
$versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
$versions = array();
@@ -202,7 +202,7 @@ class Storage {
$key = $version.'#'.$filename;
$versions[$key]['cur'] = 0;
$versions[$key]['version'] = $version;
- $versions[$key]['path'] = $filename;
+ $versions[$key]['path'] = $filename;
$versions[$key]['size'] = $versions_fileview->filesize($filename.'.v'.$version);
// if file with modified date exists, flag it in array as currently enabled version
@@ -236,29 +236,29 @@ class Storage {
}
- /**
- * @brief get the size of all stored versions from a given user
- * @param $uid id from the user
- * @return size of vesions
- */
- private static function calculateSize($uid) {
- if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
- $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
- $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
-
- $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
-
+ /**
+ * @brief get the size of all stored versions from a given user
+ * @param $uid id from the user
+ * @return size of vesions
+ */
+ private static function calculateSize($uid) {
+ if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
+ $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
+ $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
+
+ $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
+
$size = 0;
-
- foreach ($iterator as $path) {
- if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
+
+ foreach ($iterator as $path) {
+ if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
$relpath = substr($path, strlen($versionsRoot)-1);
- $size += $versions_fileview->filesize($relpath);
- }
+ $size += $versions_fileview->filesize($relpath);
+ }
}
- return $size;
- }
+ return $size;
+ }
}
/**
@@ -267,11 +267,11 @@ class Storage {
* @return array with contains two arrays 'all' which contains all versions sorted by age and 'by_file' which contains all versions sorted by filename
*/
private static function getAllVersions($uid) {
- if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
+ if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
$versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
- $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
+ $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
$versions = array();
@@ -280,7 +280,7 @@ class Storage {
$relpath = substr($path, strlen($versionsRoot)-1);
$versions[$match[1].'#'.$relpath] = array('path' => $relpath, 'timestamp' => $match[1]);
}
- }
+ }
ksort($versions);
@@ -288,20 +288,20 @@ class Storage {
$result = array();
- foreach( $versions as $key => $value ) {
+ foreach( $versions as $key => $value ) {
$i++;
$size = $versions_fileview->filesize($value['path']);
$filename = substr($value['path'], 0, -strlen($value['timestamp'])-2);
-
+
$result['all'][$key]['version'] = $value['timestamp'];
- $result['all'][$key]['path'] = $filename;
+ $result['all'][$key]['path'] = $filename;
$result['all'][$key]['size'] = $size;
$filename = substr($value['path'], 0, -strlen($value['timestamp'])-2);
$result['by_file'][$filename][$key]['version'] = $value['timestamp'];
- $result['by_file'][$filename][$key]['path'] = $filename;
+ $result['by_file'][$filename][$key]['path'] = $filename;
$result['by_file'][$filename][$key]['size'] = $size;
-
+
}
return $result;
@@ -322,7 +322,7 @@ class Storage {
$quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota'));
}
if ( $quota == null ) {
- $quota = \OC_Filesystem::free_space('/');
+ $quota = \OC\Files\Filesystem::free_space('/');
}
// make sure that we have the current size of the version history
@@ -332,7 +332,7 @@ class Storage {
}
}
- // calculate available space for version history
+ // calculate available space for version history
$rootInfo = \OC_FileCache::get('', '/'. $uid . '/files');
$free = $quota-$rootInfo['size']; // remaining free space for user
if ( $free > 0 ) {
@@ -394,7 +394,7 @@ class Storage {
$nextVersion = $prevTimestamp - $step;
if ( Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1 ) {
$nextInterval = -1;
- } else {
+ } else {
$nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'];
}
$newInterval = true; // we changed the interval -> check same version with new interval
diff --git a/apps/user_ldap/ajax/deleteConfiguration.php b/apps/user_ldap/ajax/deleteConfiguration.php
new file mode 100644
index 00000000000..b7d633a049d
--- /dev/null
+++ b/apps/user_ldap/ajax/deleteConfiguration.php
@@ -0,0 +1,35 @@
+.
+ *
+ */
+
+// Check user and app status
+OCP\JSON::checkAdminUser();
+OCP\JSON::checkAppEnabled('user_ldap');
+OCP\JSON::callCheck();
+
+$prefix = $_POST['ldap_serverconfig_chooser'];
+if(\OCA\user_ldap\lib\Helper::deleteServerConfiguration($prefix)){
+ OCP\JSON::success();
+} else {
+ $l=OC_L10N::get('user_ldap');
+ OCP\JSON::error(array('message' => $l->t('Failed to delete the server configuration')));
+}
\ No newline at end of file
diff --git a/apps/user_ldap/ajax/getConfiguration.php b/apps/user_ldap/ajax/getConfiguration.php
new file mode 100644
index 00000000000..dfae68d2dc9
--- /dev/null
+++ b/apps/user_ldap/ajax/getConfiguration.php
@@ -0,0 +1,31 @@
+.
+ *
+ */
+
+// Check user and app status
+OCP\JSON::checkAdminUser();
+OCP\JSON::checkAppEnabled('user_ldap');
+OCP\JSON::callCheck();
+
+$prefix = $_POST['ldap_serverconfig_chooser'];
+$connection = new \OCA\user_ldap\lib\Connection($prefix);
+OCP\JSON::success(array('configuration' => $connection->getConfiguration()));
\ No newline at end of file
diff --git a/apps/user_ldap/ajax/getNewServerConfigPrefix.php b/apps/user_ldap/ajax/getNewServerConfigPrefix.php
new file mode 100644
index 00000000000..17e78f87072
--- /dev/null
+++ b/apps/user_ldap/ajax/getNewServerConfigPrefix.php
@@ -0,0 +1,34 @@
+.
+ *
+ */
+
+// Check user and app status
+OCP\JSON::checkAdminUser();
+OCP\JSON::checkAppEnabled('user_ldap');
+OCP\JSON::callCheck();
+
+$serverConnections = \OCA\user_ldap\lib\Helper::getServerConfigurationPrefixes();
+sort($serverConnections);
+$lk = array_pop($serverConnections);
+$ln = intval(str_replace('s', '', $lk));
+$nk = 's'.str_pad($ln+1, 2, '0', STR_PAD_LEFT);
+OCP\JSON::success(array('configPrefix' => $nk));
\ No newline at end of file
diff --git a/apps/user_ldap/ajax/setConfiguration.php b/apps/user_ldap/ajax/setConfiguration.php
new file mode 100644
index 00000000000..206487c7e0a
--- /dev/null
+++ b/apps/user_ldap/ajax/setConfiguration.php
@@ -0,0 +1,33 @@
+.
+ *
+ */
+
+// Check user and app status
+OCP\JSON::checkAdminUser();
+OCP\JSON::checkAppEnabled('user_ldap');
+OCP\JSON::callCheck();
+
+$prefix = $_POST['ldap_serverconfig_chooser'];
+$connection = new \OCA\user_ldap\lib\Connection($prefix);
+$connection->setConfiguration($_POST);
+$connection->saveConfiguration();
+OCP\JSON::success();
\ No newline at end of file
diff --git a/apps/user_ldap/ajax/testConfiguration.php b/apps/user_ldap/ajax/testConfiguration.php
index a82f7e4c17b..f8038e31469 100644
--- a/apps/user_ldap/ajax/testConfiguration.php
+++ b/apps/user_ldap/ajax/testConfiguration.php
@@ -4,7 +4,7 @@
* ownCloud - user_ldap
*
* @author Arthur Schiwon
- * @copyright 2012 Arthur Schiwon blizzz@owncloud.com
+ * @copyright 2012, 2013 Arthur Schiwon blizzz@owncloud.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
@@ -26,14 +26,16 @@ OCP\JSON::checkAdminUser();
OCP\JSON::checkAppEnabled('user_ldap');
OCP\JSON::callCheck();
-$connection = new \OCA\user_ldap\lib\Connection(null);
+$l=OC_L10N::get('user_ldap');
+
+$connection = new \OCA\user_ldap\lib\Connection('', null);
if($connection->setConfiguration($_POST)) {
//Configuration is okay
if($connection->bind()) {
- OCP\JSON::success(array('message' => 'The configuration is valid and the connection could be established!'));
+ OCP\JSON::success(array('message' => $l->t('The configuration is valid and the connection could be established!')));
} else {
- OCP\JSON::error(array('message' => 'The configuration is valid, but the Bind failed. Please check the server settings and credentials.'));
+ OCP\JSON::error(array('message' => $l->t('The configuration is valid, but the Bind failed. Please check the server settings and credentials.')));
}
} else {
- OCP\JSON::error(array('message' => 'The configuration is invalid. Please look in the ownCloud log for further details.'));
+ OCP\JSON::error(array('message' => $l->t('The configuration is invalid. Please look in the ownCloud log for further details.')));
}
diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php
index ce3079da0ba..dec87684c9e 100644
--- a/apps/user_ldap/appinfo/app.php
+++ b/apps/user_ldap/appinfo/app.php
@@ -23,15 +23,23 @@
OCP\App::registerAdmin('user_ldap', 'settings');
-$connector = new OCA\user_ldap\lib\Connection('user_ldap');
-$userBackend = new OCA\user_ldap\USER_LDAP();
-$userBackend->setConnector($connector);
-$groupBackend = new OCA\user_ldap\GROUP_LDAP();
-$groupBackend->setConnector($connector);
+$configPrefixes = OCA\user_ldap\lib\Helper::getServerConfigurationPrefixes(true);
+if(count($configPrefixes) == 1) {
+ $connector = new OCA\user_ldap\lib\Connection($configPrefixes[0]);
+ $userBackend = new OCA\user_ldap\USER_LDAP();
+ $userBackend->setConnector($connector);
+ $groupBackend = new OCA\user_ldap\GROUP_LDAP();
+ $groupBackend->setConnector($connector);
+} else {
+ $userBackend = new OCA\user_ldap\User_Proxy($configPrefixes);
+ $groupBackend = new OCA\user_ldap\Group_Proxy($configPrefixes);
+}
-// register user backend
-OC_User::useBackend($userBackend);
-OC_Group::useBackend($groupBackend);
+if(count($configPrefixes) > 0) {
+ // register user backend
+ OC_User::useBackend($userBackend);
+ OC_Group::useBackend($groupBackend);
+}
// add settings page to navigation
$entry = array(
diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml
index a7605775274..53269edfb34 100644
--- a/apps/user_ldap/appinfo/info.xml
+++ b/apps/user_ldap/appinfo/info.xml
@@ -7,7 +7,7 @@
This app is not compatible to the WebDAV user backend.
AGPLDominik Schmidt and Arthur Schiwon
- 4.9
+ 4.91true
diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php
index 9b54ba18b6c..f9681e38e68 100644
--- a/apps/user_ldap/appinfo/update.php
+++ b/apps/user_ldap/appinfo/update.php
@@ -5,7 +5,7 @@
//ATTENTION
//Upgrade from ownCloud 3 (LDAP backend 0.1) to ownCloud 4.5 (LDAP backend 0.3) is not supported!!
//You must do upgrade to ownCloud 4.0 first!
-//The upgrade stuff in the section from 0.1 to 0.2 is just to minimize the bad efffects.
+//The upgrade stuff in the section from 0.1 to 0.2 is just to minimize the bad effects.
//settings
$pw = OCP\Config::getAppValue('user_ldap', 'ldap_password');
@@ -22,12 +22,10 @@ if($state == 'unset') {
OCP\Config::setSystemValue('ldapIgnoreNamingRules', false);
}
-// ### SUPPORTED upgrade path starts here ###
-
//from version 0.2 to 0.3 (0.2.0.x dev version)
$objects = array('user', 'group');
-$connector = new \OCA\user_ldap\lib\Connection('user_ldap');
+$connector = new \OCA\user_ldap\lib\Connection();
$userBE = new \OCA\user_ldap\USER_LDAP();
$userBE->setConnector($connector);
$groupBE = new \OCA\user_ldap\GROUP_LDAP();
@@ -80,3 +78,13 @@ function escapeDN($dn) {
return $dn;
}
+
+
+// SUPPORTED UPGRADE FROM Version 0.3 (ownCloud 4.5) to 0.4 (ownCloud 5)
+
+if(!isset($connector)) {
+ $connector = new \OCA\user_ldap\lib\Connection();
+}
+//it is required, that connections do have ldap_configuration_active setting stored in the database
+$connector->getConfiguration();
+$connector->saveConfiguration();
\ No newline at end of file
diff --git a/apps/user_ldap/appinfo/version b/apps/user_ldap/appinfo/version
index b1a5f4781d1..705e30728e0 100644
--- a/apps/user_ldap/appinfo/version
+++ b/apps/user_ldap/appinfo/version
@@ -1 +1 @@
-0.3.0.1
\ No newline at end of file
+0.3.9.0
\ No newline at end of file
diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php
index 63437310088..02ceecaea0b 100644
--- a/apps/user_ldap/group_ldap.php
+++ b/apps/user_ldap/group_ldap.php
@@ -171,7 +171,6 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface {
return array();
}
- $search = empty($search) ? '*' : '*'.$search.'*';
$groupUsers = array();
$isMemberUid = (strtolower($this->connection->ldapGroupMemberAssocAttr) == 'memberuid');
foreach($members as $member) {
@@ -179,7 +178,7 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface {
//we got uids, need to get their DNs to 'tranlsate' them to usernames
$filter = $this->combineFilterWithAnd(array(
\OCP\Util::mb_str_replace('%uid', $member, $this->connection>ldapLoginFilter, 'UTF-8'),
- $this->connection->ldapUserDisplayName.'='.$search
+ $this->getFilterPartForUserSearch($search)
));
$ldap_users = $this->fetchListOfUsers($filter, 'dn');
if(count($ldap_users) < 1) {
@@ -188,8 +187,8 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface {
$groupUsers[] = $this->dn2username($ldap_users[0]);
} else {
//we got DNs, check if we need to filter by search or we can give back all of them
- if($search != '*') {
- if(!$this->readAttribute($member, $this->connection->ldapUserDisplayName, $this->connection->ldapUserDisplayName.'='.$search)) {
+ if(!empty($search)) {
+ if(!$this->readAttribute($member, $this->connection->ldapUserDisplayName, $this->getFilterPartForUserSearch($search))) {
continue;
}
}
@@ -230,10 +229,9 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface {
if($limit <= 0) {
$limit = null;
}
- $search = empty($search) ? '*' : '*'.$search.'*';
$filter = $this->combineFilterWithAnd(array(
$this->connection->ldapGroupFilter,
- $this->connection->ldapGroupDisplayName.'='.$search
+ $this->getFilterPartForGroupSearch($search)
));
\OCP\Util::writeLog('user_ldap', 'getGroups Filter '.$filter, \OCP\Util::DEBUG);
$ldap_groups = $this->fetchListOfGroups($filter, array($this->connection->ldapGroupDisplayName, 'dn'), $limit, $offset);
diff --git a/apps/user_ldap/group_proxy.php b/apps/user_ldap/group_proxy.php
new file mode 100644
index 00000000000..5aa1aef0e0e
--- /dev/null
+++ b/apps/user_ldap/group_proxy.php
@@ -0,0 +1,178 @@
+.
+ *
+ */
+
+namespace OCA\user_ldap;
+
+class Group_Proxy extends lib\Proxy implements \OCP\GroupInterface {
+ private $backends = array();
+ private $refBackend = null;
+
+ /**
+ * @brief Constructor
+ * @param $serverConfigPrefixes array containing the config Prefixes
+ */
+ public function __construct($serverConfigPrefixes) {
+ parent::__construct();
+ foreach($serverConfigPrefixes as $configPrefix) {
+ $this->backends[$configPrefix] = new \OCA\user_ldap\GROUP_LDAP();
+ $connector = $this->getConnector($configPrefix);
+ $this->backends[$configPrefix]->setConnector($connector);
+ if(is_null($this->refBackend)) {
+ $this->refBackend = &$this->backends[$configPrefix];
+ }
+ }
+ }
+
+ /**
+ * @brief Tries the backends one after the other until a positive result is returned from the specified method
+ * @param $gid string, the gid connected to the request
+ * @param $method string, the method of the group backend that shall be called
+ * @param $parameters an array of parameters to be passed
+ * @return mixed, the result of the method or false
+ */
+ protected function walkBackends($gid, $method, $parameters) {
+ $cacheKey = $this->getGroupCacheKey($gid);
+ foreach($this->backends as $configPrefix => $backend) {
+ if($result = call_user_func_array(array($backend, $method), $parameters)) {
+ $this->writeToCache($cacheKey, $configPrefix);
+ return $result;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * @brief Asks the backend connected to the server that supposely takes care of the gid from the request.
+ * @param $gid string, the gid connected to the request
+ * @param $method string, the method of the group backend that shall be called
+ * @param $parameters an array of parameters to be passed
+ * @return mixed, the result of the method or false
+ */
+ protected function callOnLastSeenOn($gid, $method, $parameters) {
+ $cacheKey = $this->getGroupCacheKey($gid);;
+ $prefix = $this->getFromCache($cacheKey);
+ //in case the uid has been found in the past, try this stored connection first
+ if(!is_null($prefix)) {
+ if(isset($this->backends[$prefix])) {
+ $result = call_user_func_array(array($this->backends[$prefix], $method), $parameters);
+ if(!$result) {
+ //not found here, reset cache to null
+ $this->writeToCache($cacheKey, null);
+ }
+ return $result;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * @brief is user in group?
+ * @param $uid uid of the user
+ * @param $gid gid of the group
+ * @returns true/false
+ *
+ * Checks whether the user is member of a group or not.
+ */
+ public function inGroup($uid, $gid) {
+ return $this->handleRequest($gid, 'inGroup', array($uid, $gid));
+ }
+
+ /**
+ * @brief Get all groups a user belongs to
+ * @param $uid Name of the user
+ * @returns array with group names
+ *
+ * This function fetches all groups a user belongs to. It does not check
+ * if the user exists at all.
+ */
+ public function getUserGroups($uid) {
+ $groups = array();
+
+ foreach($this->backends as $backend) {
+ $backendGroups = $backend->getUserGroups($uid);
+ if (is_array($backendGroups)) {
+ $groups = array_merge($groups, $backendGroups);
+ }
+ }
+
+ return $groups;
+ }
+
+ /**
+ * @brief get a list of all users in a group
+ * @returns array with user ids
+ */
+ public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) {
+ $users = array();
+
+ foreach($this->backends as $backend) {
+ $backendUsers = $backend->usersInGroup($gid, $search, $limit, $offset);
+ if (is_array($backendUsers)) {
+ $users = array_merge($users, $backendUsers);
+ }
+ }
+
+ return $users;
+ }
+
+ /**
+ * @brief get a list of all groups
+ * @returns array with group names
+ *
+ * Returns a list with all groups
+ */
+ public function getGroups($search = '', $limit = -1, $offset = 0) {
+ $groups = array();
+
+ foreach($this->backends as $backend) {
+ $backendGroups = $backend->getGroups($search, $limit, $offset);
+ if (is_array($backendGroups)) {
+ $groups = array_merge($groups, $backendGroups);
+ }
+ }
+
+ return $groups;
+ }
+
+ /**
+ * check if a group exists
+ * @param string $gid
+ * @return bool
+ */
+ public function groupExists($gid) {
+ return $this->handleRequest($gid, 'groupExists', array($gid));
+ }
+
+ /**
+ * @brief Check if backend implements actions
+ * @param $actions bitwise-or'ed actions
+ * @returns boolean
+ *
+ * Returns the supported actions as int to be
+ * compared with OC_USER_BACKEND_CREATE_USER etc.
+ */
+ public function implementsActions($actions) {
+ //it's the same across all our user backends obviously
+ return $this->refBackend->implementsActions($actions);
+ }
+}
\ No newline at end of file
diff --git a/apps/user_ldap/js/settings.js b/apps/user_ldap/js/settings.js
index 7063eead96a..166761bc1ff 100644
--- a/apps/user_ldap/js/settings.js
+++ b/apps/user_ldap/js/settings.js
@@ -1,6 +1,113 @@
+var LdapConfiguration = {
+ refreshConfig: function() {
+ if($('#ldap_serverconfig_chooser option').length < 2) {
+ LdapConfiguration.addConfiguration(true);
+ return;
+ }
+ $.post(
+ OC.filePath('user_ldap','ajax','getConfiguration.php'),
+ $('#ldap_serverconfig_chooser').serialize(),
+ function (result) {
+ if(result.status == 'success') {
+ $.each(result.configuration, function(configkey, configvalue) {
+ elementID = '#'+configkey;
+
+ //deal with Checkboxes
+ if($(elementID).is('input[type=checkbox]')) {
+ if(configvalue == 1) {
+ $(elementID).attr('checked', 'checked');
+ } else {
+ $(elementID).removeAttr('checked');
+ }
+ return;
+ }
+
+ //On Textareas, Multi-Line Settings come as array
+ if($(elementID).is('textarea') && $.isArray(configvalue)) {
+ configvalue = configvalue.join("\n");
+ }
+
+ // assign the value
+ $('#'+configkey).val(configvalue);
+ });
+ }
+ }
+ );
+ },
+
+ resetDefaults: function() {
+ $('#ldap').find('input[type=text], input[type=number], input[type=password], textarea, select').each(function() {
+ if($(this).attr('id') == 'ldap_serverconfig_chooser') {
+ return;
+ }
+ $(this).val($(this).attr('data-default'));
+ });
+ $('#ldap').find('input[type=checkbox]').each(function() {
+ if($(this).attr('data-default') == 1) {
+ $(this).attr('checked', 'checked');
+ } else {
+ $(this).removeAttr('checked');
+ }
+ });
+ },
+
+ deleteConfiguration: function() {
+ $.post(
+ OC.filePath('user_ldap','ajax','deleteConfiguration.php'),
+ $('#ldap_serverconfig_chooser').serialize(),
+ function (result) {
+ if(result.status == 'success') {
+ $('#ldap_serverconfig_chooser option:selected').remove();
+ $('#ldap_serverconfig_chooser option:first').select();
+ LdapConfiguration.refreshConfig();
+ } else {
+ OC.dialogs.alert(
+ result.message,
+ t('user_ldap', 'Deletion failed')
+ );
+ }
+ }
+ );
+ },
+
+ addConfiguration: function(doNotAsk) {
+ $.post(
+ OC.filePath('user_ldap','ajax','getNewServerConfigPrefix.php'),
+ function (result) {
+ if(result.status == 'success') {
+ if(doNotAsk) {
+ LdapConfiguration.resetDefaults();
+ } else {
+ OC.dialogs.confirm(
+ t('user_ldap', 'Take over settings from recent server configuration?'),
+ t('user_ldap', 'Keep settings?'),
+ function(keep) {
+ if(!keep) {
+ LdapConfiguration.resetDefaults();
+ }
+ }
+ );
+ }
+ $('#ldap_serverconfig_chooser option:selected').removeAttr('selected');
+ var html = '';
+ $('#ldap_serverconfig_chooser option:last').before(html);
+ } else {
+ OC.dialogs.alert(
+ result.message,
+ t('user_ldap', 'Cannot add server configuration')
+ );
+ }
+ }
+ );
+ }
+}
+
$(document).ready(function() {
$('#ldapSettings').tabs();
+ $('#ldap_submit').button();
$('#ldap_action_test_connection').button();
+ $('#ldap_action_delete_configuration').button();
+ LdapConfiguration.refreshConfig();
$('#ldap_action_test_connection').click(function(event){
event.preventDefault();
$.post(
@@ -10,15 +117,60 @@ $(document).ready(function() {
if (result.status == 'success') {
OC.dialogs.alert(
result.message,
- 'Connection test succeeded'
+ t('user_ldap', 'Connection test succeeded')
);
} else {
OC.dialogs.alert(
result.message,
- 'Connection test failed'
+ t('user_ldap', 'Connection test failed')
);
}
}
);
});
+
+ $('#ldap_action_delete_configuration').click(function(event) {
+ event.preventDefault();
+ OC.dialogs.confirm(
+ t('user_ldap', 'Do you really want to delete the current Server Configuration?'),
+ t('user_ldap', 'Confirm Deletion'),
+ function(deleteConfiguration) {
+ if(deleteConfiguration) {
+ LdapConfiguration.deleteConfiguration();
+ }
+ }
+ );
+ });
+
+ $('#ldap_submit').click(function(event) {
+ event.preventDefault();
+ $.post(
+ OC.filePath('user_ldap','ajax','setConfiguration.php'),
+ $('#ldap').serialize(),
+ function (result) {
+ bgcolor = $('#ldap_submit').css('background');
+ if (result.status == 'success') {
+ //the dealing with colors is a but ugly, but the jQuery version in use has issues with rgba colors
+ $('#ldap_submit').css('background', '#fff');
+ $('#ldap_submit').effect('highlight', {'color':'#A8FA87'}, 5000, function() {
+ $('#ldap_submit').css('background', bgcolor);
+ });
+ } else {
+ $('#ldap_submit').css('background', '#fff');
+ $('#ldap_submit').effect('highlight', {'color':'#E97'}, 5000, function() {
+ $('#ldap_submit').css('background', bgcolor);
+ });
+ }
+ }
+ );
+ });
+
+ $('#ldap_serverconfig_chooser').change(function(event) {
+ value = $('#ldap_serverconfig_chooser option:selected:first').attr('value');
+ if(value == 'NEW') {
+ LdapConfiguration.addConfiguration(false);
+ } else {
+ LdapConfiguration.refreshConfig();
+ }
+ });
});
\ No newline at end of file
diff --git a/apps/user_ldap/l10n/de.php b/apps/user_ldap/l10n/de.php
index 89bda8af97f..efc8a80f8c7 100644
--- a/apps/user_ldap/l10n/de.php
+++ b/apps/user_ldap/l10n/de.php
@@ -1,8 +1,10 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Warnung: Die Anwendungen user_ldap und user_webdavauth sind inkompatibel. Es kann demzufolge zu unerwarteten Verhalten kommen. Bitte Deinen Systemadministator eine der beiden Anwendungen zu deaktivieren.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Warnung: Da das PHP-Modul für LDAP ist nicht installiert, das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.",
"Host" => "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Du kannst das Protokoll auslassen, außer wenn Du SSL benötigst. Beginne dann mit ldaps://",
"Base DN" => "Basis-DN",
+"One Base DN per line" => "Ein Base DN pro Zeile",
"You can specify Base DN for users and groups in the Advanced tab" => "Du kannst Basis-DN für Benutzer und Gruppen in dem \"Erweitert\"-Reiter konfigurieren",
"User DN" => "Benutzer-DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "Der DN des Benutzers für LDAP-Bind, z.B.: uid=agent,dc=example,dc=com. Für anonymen Zugriff lasse DN und Passwort leer.",
@@ -19,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "ohne Platzhalter, z.B.: \"objectClass=posixGroup\"",
"Port" => "Port",
"Base User Tree" => "Basis-Benutzerbaum",
+"One User Base DN per line" => "Ein Benutzer Base DN pro Zeile",
"Base Group Tree" => "Basis-Gruppenbaum",
+"One Group Base DN per line" => "Ein Gruppen Base DN pro Zeile",
"Group-Member association" => "Assoziation zwischen Gruppe und Benutzer",
"Use TLS" => "Nutze TLS",
"Do not use it for SSL connections, it will fail." => "Verwende dies nicht für SSL-Verbindungen, es wird fehlschlagen.",
diff --git a/apps/user_ldap/l10n/de_DE.php b/apps/user_ldap/l10n/de_DE.php
index 1e816018386..843609f8b89 100644
--- a/apps/user_ldap/l10n/de_DE.php
+++ b/apps/user_ldap/l10n/de_DE.php
@@ -1,6 +1,6 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Warnung: Die Anwendungen user_ldap und user_webdavauth sind inkompatibel. Es kann demzufolge zu unerwarteten Verhalten kommen. Bitten Sie Ihren Systemadministator eine der beiden Anwendungen zu deaktivieren.",
-"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Warnung: Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Warnung: Da das PHP-Modul für LDAP ist nicht installiert, das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.",
"Host" => "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Sie können das Protokoll auslassen, außer wenn Sie SSL benötigen. Beginnen Sie dann mit ldaps://",
"Base DN" => "Basis-DN",
diff --git a/apps/user_ldap/l10n/es_AR.php b/apps/user_ldap/l10n/es_AR.php
index 331bf8699f4..5d42ea94437 100644
--- a/apps/user_ldap/l10n/es_AR.php
+++ b/apps/user_ldap/l10n/es_AR.php
@@ -1,8 +1,10 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Advertencia: Los Apps user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al administrador del sistema para desactivar uno de ellos.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Atención: El módulo PHP LDAP no está instalado, este elemento no va a funcionar. Por favor, pedile al administrador que lo instale.",
"Host" => "Servidor",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Podés omitir el protocolo, excepto si SSL es requerido. En ese caso, empezá con ldaps://",
"Base DN" => "DN base",
+"One Base DN per line" => "Una DN base por línea",
"You can specify Base DN for users and groups in the Advanced tab" => "Podés especificar el DN base para usuarios y grupos en la pestaña \"Avanzado\"",
"User DN" => "DN usuario",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "El DN del usuario cliente con el que se hará la asociación, p.ej. uid=agente,dc=ejemplo,dc=com. Para acceso anónimo, dejá DN y contraseña vacíos.",
@@ -19,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "Sin ninguna plantilla, p. ej.: \"objectClass=posixGroup\".",
"Port" => "Puerto",
"Base User Tree" => "Árbol base de usuario",
+"One User Base DN per line" => "Una DN base de usuario por línea",
"Base Group Tree" => "Árbol base de grupo",
+"One Group Base DN per line" => "Una DN base de grupo por línea",
"Group-Member association" => "Asociación Grupo-Miembro",
"Use TLS" => "Usar TLS",
"Do not use it for SSL connections, it will fail." => "No usarlo para SSL, dará error.",
diff --git a/apps/user_ldap/l10n/ko.php b/apps/user_ldap/l10n/ko.php
index c0d09b5c3c1..78745a0e01f 100644
--- a/apps/user_ldap/l10n/ko.php
+++ b/apps/user_ldap/l10n/ko.php
@@ -1,8 +1,10 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "경고user_ldap 앱과 user_webdavauth 앱은 호환되지 않습니다. 오동작을 일으킬 수 있으므로, 시스템 관리자에게 요청하여, 둘 중 하나를 비활성화 하시기 바랍니다.",
+"Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "경고: user_ldap 앱과 user_webdavauth 앱은 호환되지 않습니다. 오동작을 일으킬 수 있으므로, 시스템 관리자에게 요청하여 둘 중 하나만 사용하도록 하십시오.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "경고: PHP LDAP 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. 백엔드를 사용할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
"Host" => "호스트",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "SSL을 사용하는 경우가 아니라면 프로토콜을 입력하지 않아도 됩니다. SSL을 사용하려면 ldaps://를 입력하십시오.",
"Base DN" => "기본 DN",
+"One Base DN per line" => "기본 DN을 한 줄에 하나씩 입력하십시오",
"You can specify Base DN for users and groups in the Advanced tab" => "고급 탭에서 사용자 및 그룹에 대한 기본 DN을 지정할 수 있습니다.",
"User DN" => "사용자 DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "바인딩 작업을 수행할 클라이언트 사용자 DN입니다. 예를 들어서 uid=agent,dc=example,dc=com입니다. 익명 접근을 허용하려면 DN과 암호를 비워 두십시오.",
@@ -19,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "자리 비움자를 사용할 수 없습니다. 예제: \"objectClass=posixGroup\"",
"Port" => "포트",
"Base User Tree" => "기본 사용자 트리",
+"One User Base DN per line" => "사용자 DN을 한 줄에 하나씩 입력하십시오",
"Base Group Tree" => "기본 그룹 트리",
+"One Group Base DN per line" => "그룹 기본 DN을 한 줄에 하나씩 입력하십시오",
"Group-Member association" => "그룹-회원 연결",
"Use TLS" => "TLS 사용",
"Do not use it for SSL connections, it will fail." => "SSL 연결 시 사용하는 경우 연결되지 않습니다.",
diff --git a/apps/user_ldap/l10n/ru_RU.php b/apps/user_ldap/l10n/ru_RU.php
index 64ba1176f6e..03d83b80a43 100644
--- a/apps/user_ldap/l10n/ru_RU.php
+++ b/apps/user_ldap/l10n/ru_RU.php
@@ -1,8 +1,10 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Предупреждение: Приложения user_ldap и user_webdavauth несовместимы. Вы можете столкнуться с неожиданным поведением системы. Пожалуйста, обратитесь к системному администратору для отключения одного из них.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Предупреждение: Модуль PHP LDAP не установлен, бэкэнд не будет работать. Пожалуйста, обратитесь к Вашему системному администратору, чтобы установить его.",
"Host" => "Хост",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Вы можете пропустить протокол, если Вам не требуется SSL. Затем начните с ldaps://",
"Base DN" => "База DN",
+"One Base DN per line" => "Одно базовое DN на линию",
"You can specify Base DN for users and groups in the Advanced tab" => "Вы можете задать Base DN для пользователей и групп во вкладке «Дополнительно»",
"User DN" => "DN пользователя",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN клиентского пользователя, с которого должна осуществляться привязка, например, uid=agent,dc=example,dc=com. Для анонимного доступа оставьте поля DN и Пароль пустыми.",
@@ -19,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "без каких-либо заполнителей, например, \"objectClass=posixGroup\".",
"Port" => "Порт",
"Base User Tree" => "Базовое дерево пользователей",
+"One User Base DN per line" => "Одно пользовательское базовое DN на линию",
"Base Group Tree" => "Базовое дерево групп",
+"One Group Base DN per line" => "Одно групповое базовое DN на линию",
"Group-Member association" => "Связь член-группа",
"Use TLS" => "Использовать TLS",
"Do not use it for SSL connections, it will fail." => "Не используйте это SSL-соединений, это не будет выполнено.",
diff --git a/apps/user_ldap/l10n/sk_SK.php b/apps/user_ldap/l10n/sk_SK.php
index 2b340c8573d..9268c9f147e 100644
--- a/apps/user_ldap/l10n/sk_SK.php
+++ b/apps/user_ldap/l10n/sk_SK.php
@@ -1,7 +1,10 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Upozornenie: Aplikácie user_ldap a user_webdavauth nie sú kompatibilné. Môže nastávať neočakávané správanie. Požiadajte správcu systému aby jednu z nich zakázal.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Upozornenie: nie je nainštalovaný LDAP modul pre PHP, backend vrstva nebude fungovať. Požádejte správcu systému aby ho nainštaloval.",
"Host" => "Hostiteľ",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Môžete vynechať protokol, s výnimkou požadovania SSL. Vtedy začnite s ldaps://",
"Base DN" => "Základné DN",
+"One Base DN per line" => "Jedno základné DN na riadok",
"You can specify Base DN for users and groups in the Advanced tab" => "V rozšírenom nastavení môžete zadať základné DN pre používateľov a skupiny",
"User DN" => "Používateľské DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN klientského používateľa, ku ktorému tvoríte väzbu, napr. uid=agent,dc=example,dc=com. Pre anonymný prístup ponechajte údaje DN a Heslo prázdne.",
@@ -18,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "bez zástupných znakov, napr. \"objectClass=posixGroup\"",
"Port" => "Port",
"Base User Tree" => "Základný používateľský strom",
+"One User Base DN per line" => "Jedna používateľská základná DN na riadok",
"Base Group Tree" => "Základný skupinový strom",
+"One Group Base DN per line" => "Jedna skupinová základná DN na riadok",
"Group-Member association" => "Asociácia člena skupiny",
"Use TLS" => "Použi TLS",
"Do not use it for SSL connections, it will fail." => "Nepoužívajte pre pripojenie SSL, pripojenie zlyhá.",
diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php
index 422e43fc003..68cbe4a5e75 100644
--- a/apps/user_ldap/lib/access.php
+++ b/apps/user_ldap/lib/access.php
@@ -719,6 +719,50 @@ abstract class Access {
return $combinedFilter;
}
+ /**
+ * @brief creates a filter part for to perfrom search for users
+ * @param string $search the search term
+ * @return string the final filter part to use in LDAP searches
+ */
+ public function getFilterPartForUserSearch($search) {
+ return $this->getFilterPartForSearch($search, $this->connection->ldapAttributesForUserSearch, $this->connection->ldapUserDisplayName);
+ }
+
+ /**
+ * @brief creates a filter part for to perfrom search for groups
+ * @param string $search the search term
+ * @return string the final filter part to use in LDAP searches
+ */
+ public function getFilterPartForGroupSearch($search) {
+ return $this->getFilterPartForSearch($search, $this->connection->ldapAttributesForGroupSearch, $this->connection->ldapGroupDisplayName);
+ }
+
+ /**
+ * @brief creates a filter part for searches
+ * @param string $search the search term
+ * @param string $fallbackAttribute a fallback attribute in case the user
+ * did not define search attributes. Typically the display name attribute.
+ * @returns string the final filter part to use in LDAP searches
+ */
+ private function getFilterPartForSearch($search, $searchAttributes, $fallbackAttribute) {
+ $filter = array();
+ $search = empty($search) ? '*' : '*'.$search.'*';
+ if(!is_array($searchAttributes) || count($searchAttributes) == 0) {
+ if(empty($fallbackAttribute)) {
+ return '';
+ }
+ $filter[] = $fallbackAttribute . '=' . $search;
+ } else {
+ foreach($searchAttributes as $attribute) {
+ $filter[] = $attribute . '=' . $search;
+ }
+ }
+ if(count($filter) == 1) {
+ return '('.$filter[0].')';
+ }
+ return $this->combineFilterWithOr($filter);
+ }
+
public function areCredentialsValid($name, $password) {
$name = $this->DNasBaseParameter($name);
$testConnection = clone $this->connection;
@@ -912,7 +956,7 @@ abstract class Access {
$reOffset = ($offset - $limit) < 0 ? 0 : $offset - $limit;
//a bit recursive, $offset of 0 is the exit
\OCP\Util::writeLog('user_ldap', 'Looking for cookie L/O '.$limit.'/'.$reOffset, \OCP\Util::INFO);
- $this->search($filter, $base, $attr, $limit, $reOffset, true);
+ $this->search($filter, array($base), $attr, $limit, $reOffset, true);
$cookie = $this->getPagedResultCookie($base, $filter, $limit, $offset);
//still no cookie? obviously, the server does not like us. Let's skip paging efforts.
//TODO: remember this, probably does not change in the next request...
diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php
index 7046cbbfc78..acc33e047c6 100644
--- a/apps/user_ldap/lib/connection.php
+++ b/apps/user_ldap/lib/connection.php
@@ -4,7 +4,7 @@
* ownCloud – LDAP Access
*
* @author Arthur Schiwon
- * @copyright 2012 Arthur Schiwon blizzz@owncloud.com
+ * @copyright 2012, 2013 Arthur Schiwon blizzz@owncloud.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
@@ -25,6 +25,7 @@ namespace OCA\user_ldap\lib;
class Connection {
private $ldapConnectionRes = null;
+ private $configPrefix;
private $configID;
private $configured = false;
@@ -35,6 +36,8 @@ class Connection {
protected $config = array(
'ldapHost' => null,
'ldapPort' => null,
+ 'ldapBackupHost' => null,
+ 'ldapBackupPort' => null,
'ldapBase' => null,
'ldapBaseUsers' => null,
'ldapBaseGroups' => null,
@@ -48,6 +51,7 @@ class Connection {
'ldapUserFilter' => null,
'ldapGroupFilter' => null,
'ldapGroupDisplayName' => null,
+ 'ldapGroupMemberAssocAttr' => null,
'ldapLoginFilter' => null,
'ldapQuotaAttribute' => null,
'ldapQuotaDefault' => null,
@@ -55,15 +59,24 @@ class Connection {
'ldapCacheTTL' => null,
'ldapUuidAttribute' => null,
'ldapOverrideUuidAttribute' => null,
+ 'ldapOverrideMainServer' => false,
+ 'ldapConfigurationActive' => false,
+ 'ldapAttributesForUserSearch' => null,
+ 'ldapAttributesForGroupSearch' => null,
'homeFolderNamingRule' => null,
'hasPagedResultSupport' => false,
);
- public function __construct($configID = 'user_ldap') {
+ /**
+ * @brief Constructor
+ * @param $configPrefix a string with the prefix for the configkey column (appconfig table)
+ * @param $configID a string with the value for the appid column (appconfig table) or null for on-the-fly connections
+ */
+ public function __construct($configPrefix = '', $configID = 'user_ldap') {
+ $this->configPrefix = $configPrefix;
$this->configID = $configID;
$this->cache = \OC_Cache::getGlobalCache();
$this->config['hasPagedResultSupport'] = (function_exists('ldap_control_paged_result') && function_exists('ldap_control_paged_result_response'));
- \OCP\Util::writeLog('user_ldap', 'PHP supports paged results? '.print_r($this->config['hasPagedResultSupport'], true), \OCP\Util::INFO);
}
public function __destruct() {
@@ -84,12 +97,12 @@ class Connection {
public function __set($name, $value) {
$changed = false;
- //omly few options are writable
+ //only few options are writable
if($name == 'ldapUuidAttribute') {
\OCP\Util::writeLog('user_ldap', 'Set config ldapUuidAttribute to '.$value, \OCP\Util::DEBUG);
$this->config[$name] = $value;
if(!empty($this->configID)) {
- \OCP\Config::setAppValue($this->configID, 'ldap_uuid_attribute', $value);
+ \OCP\Config::setAppValue($this->configID, $this->configPrefix.'ldap_uuid_attribute', $value);
}
$changed = true;
}
@@ -126,7 +139,7 @@ class Connection {
}
private function getCacheKey($key) {
- $prefix = 'LDAP-'.$this->configID.'-';
+ $prefix = 'LDAP-'.$this->configID.'-'.$this->configPrefix.'-';
if(is_null($key)) {
return $prefix;
}
@@ -164,7 +177,8 @@ class Connection {
if(!$this->configured) {
$this->readConfiguration();
}
- if(!$this->config['ldapCacheTTL']) {
+ if(!$this->config['ldapCacheTTL']
+ || !$this->config['ldapConfigurationActive']) {
return null;
}
$key = $this->getCacheKey($key);
@@ -176,42 +190,96 @@ class Connection {
$this->cache->clear($this->getCacheKey(null));
}
+ private function getValue($varname) {
+ static $defaults;
+ if(is_null($defaults)){
+ $defaults = $this->getDefaults();
+ }
+ return \OCP\Config::getAppValue($this->configID,
+ $this->configPrefix.$varname,
+ $defaults[$varname]);
+ }
+
+ private function setValue($varname, $value) {
+ \OCP\Config::setAppValue($this->configID,
+ $this->configPrefix.$varname,
+ $value);
+ }
+
/**
* Caches the general LDAP configuration.
*/
private function readConfiguration($force = false) {
- \OCP\Util::writeLog('user_ldap', 'Checking conf state: isConfigured? '.print_r($this->configured, true).' isForce? '.print_r($force, true).' configID? '.print_r($this->configID, true), \OCP\Util::DEBUG);
if((!$this->configured || $force) && !is_null($this->configID)) {
- \OCP\Util::writeLog('user_ldap', 'Reading the configuration', \OCP\Util::DEBUG);
- $this->config['ldapHost'] = \OCP\Config::getAppValue($this->configID, 'ldap_host', '');
- $this->config['ldapPort'] = \OCP\Config::getAppValue($this->configID, 'ldap_port', 389);
- $this->config['ldapAgentName'] = \OCP\Config::getAppValue($this->configID, 'ldap_dn', '');
- $this->config['ldapAgentPassword'] = base64_decode(\OCP\Config::getAppValue($this->configID, 'ldap_agent_password', ''));
- $this->config['ldapBase'] = preg_split('/\r\n|\r|\n/', \OCP\Config::getAppValue($this->configID, 'ldap_base', ''));
- $this->config['ldapBaseUsers'] = preg_split('/\r\n|\r|\n/', \OCP\Config::getAppValue($this->configID, 'ldap_base_users', $this->config['ldapBase']));
- $this->config['ldapBaseGroups'] = preg_split('/\r\n|\r|\n/', \OCP\Config::getAppValue($this->configID, 'ldap_base_groups', $this->config['ldapBase']));
- $this->config['ldapTLS'] = \OCP\Config::getAppValue($this->configID, 'ldap_tls', 0);
- $this->config['ldapNoCase'] = \OCP\Config::getAppValue($this->configID, 'ldap_nocase', 0);
- $this->config['turnOffCertCheck'] = \OCP\Config::getAppValue($this->configID, 'ldap_turn_off_cert_check', 0);
- $this->config['ldapUserDisplayName'] = mb_strtolower(\OCP\Config::getAppValue($this->configID, 'ldap_display_name', 'uid'), 'UTF-8');
- $this->config['ldapUserFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_userlist_filter', 'objectClass=person');
- $this->config['ldapGroupFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_group_filter', '(objectClass=posixGroup)');
- $this->config['ldapLoginFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_login_filter', '(uid=%uid)');
- $this->config['ldapGroupDisplayName'] = mb_strtolower(\OCP\Config::getAppValue($this->configID, 'ldap_group_display_name', 'uid'), 'UTF-8');
- $this->config['ldapQuotaAttribute'] = \OCP\Config::getAppValue($this->configID, 'ldap_quota_attr', '');
- $this->config['ldapQuotaDefault'] = \OCP\Config::getAppValue($this->configID, 'ldap_quota_def', '');
- $this->config['ldapEmailAttribute'] = \OCP\Config::getAppValue($this->configID, 'ldap_email_attr', '');
- $this->config['ldapGroupMemberAssocAttr'] = \OCP\Config::getAppValue($this->configID, 'ldap_group_member_assoc_attribute', 'uniqueMember');
- $this->config['ldapIgnoreNamingRules'] = \OCP\Config::getSystemValue('ldapIgnoreNamingRules', false);
- $this->config['ldapCacheTTL'] = \OCP\Config::getAppValue($this->configID, 'ldap_cache_ttl', 10*60);
- $this->config['ldapUuidAttribute'] = \OCP\Config::getAppValue($this->configID, 'ldap_uuid_attribute', 'auto');
- $this->config['ldapOverrideUuidAttribute'] = \OCP\Config::getAppValue($this->configID, 'ldap_override_uuid_attribute', 0);
- $this->config['homeFolderNamingRule'] = \OCP\Config::getAppValue($this->configID, 'home_folder_naming_rule', 'opt:username');
+ $defaults = $this->getDefaults();
+ $v = 'getValue';
+ $this->config['ldapHost'] = $this->$v('ldap_host');
+ $this->config['ldapBackupHost'] = $this->$v('ldap_backup_host');
+ $this->config['ldapPort'] = $this->$v('ldap_port');
+ $this->config['ldapBackupPort'] = $this->$v('ldap_backup_port');
+ $this->config['ldapOverrideMainServer']
+ = $this->$v('ldap_override_main_server');
+ $this->config['ldapAgentName'] = $this->$v('ldap_dn');
+ $this->config['ldapAgentPassword']
+ = base64_decode($this->$v('ldap_agent_password'));
+ $rawLdapBase = $this->$v('ldap_base');
+ $this->config['ldapBase']
+ = preg_split('/\r\n|\r|\n/', $rawLdapBase);
+ $this->config['ldapBaseUsers']
+ = preg_split('/\r\n|\r|\n/', ($this->$v('ldap_base_users')));
+ $this->config['ldapBaseGroups']
+ = preg_split('/\r\n|\r|\n/', $this->$v('ldap_base_groups'));
+ unset($rawLdapBase);
+ $this->config['ldapTLS'] = $this->$v('ldap_tls');
+ $this->config['ldapNoCase'] = $this->$v('ldap_nocase');
+ $this->config['turnOffCertCheck']
+ = $this->$v('ldap_turn_off_cert_check');
+ $this->config['ldapUserDisplayName']
+ = mb_strtolower($this->$v('ldap_display_name'),'UTF-8');
+ $this->config['ldapUserFilter']
+ = $this->$v('ldap_userlist_filter');
+ $this->config['ldapGroupFilter'] = $this->$v('ldap_group_filter');
+ $this->config['ldapLoginFilter'] = $this->$v('ldap_login_filter');
+ $this->config['ldapGroupDisplayName']
+ = mb_strtolower($this->$v('ldap_group_display_name'), 'UTF-8');
+ $this->config['ldapQuotaAttribute']
+ = $this->$v('ldap_quota_attr');
+ $this->config['ldapQuotaDefault']
+ = $this->$v('ldap_quota_def');
+ $this->config['ldapEmailAttribute']
+ = $this->$v('ldap_email_attr');
+ $this->config['ldapGroupMemberAssocAttr']
+ = $this->$v('ldap_group_member_assoc_attribute');
+ $this->config['ldapIgnoreNamingRules']
+ = \OCP\Config::getSystemValue('ldapIgnoreNamingRules', false);
+ $this->config['ldapCacheTTL'] = $this->$v('ldap_cache_ttl');
+ $this->config['ldapUuidAttribute']
+ = $this->$v('ldap_uuid_attribute');
+ $this->config['ldapOverrideUuidAttribute']
+ = $this->$v('ldap_override_uuid_attribute');
+ $this->config['homeFolderNamingRule']
+ = $this->$v('home_folder_naming_rule');
+ $this->config['ldapConfigurationActive']
+ = $this->$v('ldap_configuration_active');
+ $this->config['ldapAttributesForUserSearch']
+ = preg_split('/\r\n|\r|\n/', $this->$v('ldap_attributes_for_user_search'));
+ $this->config['ldapAttributesForGroupSearch']
+ = preg_split('/\r\n|\r|\n/', $this->$v('ldap_attributes_for_group_search'));
$this->configured = $this->validateConfiguration();
}
}
+ /**
+ * @return returns an array that maps internal variable names to database fields
+ */
+ private function getConfigTranslationArray() {
+ static $array = array('ldap_host'=>'ldapHost', 'ldap_port'=>'ldapPort', 'ldap_backup_host'=>'ldapBackupHost', 'ldap_backup_port'=>'ldapBackupPort', 'ldap_override_main_server' => 'ldapOverrideMainServer', 'ldap_dn'=>'ldapAgentName', 'ldap_agent_password'=>'ldapAgentPassword', 'ldap_base'=>'ldapBase', 'ldap_base_users'=>'ldapBaseUsers', 'ldap_base_groups'=>'ldapBaseGroups', 'ldap_userlist_filter'=>'ldapUserFilter', 'ldap_login_filter'=>'ldapLoginFilter', 'ldap_group_filter'=>'ldapGroupFilter', 'ldap_display_name'=>'ldapUserDisplayName', 'ldap_group_display_name'=>'ldapGroupDisplayName',
+
+ 'ldap_tls'=>'ldapTLS', 'ldap_nocase'=>'ldapNoCase', 'ldap_quota_def'=>'ldapQuotaDefault', 'ldap_quota_attr'=>'ldapQuotaAttribute', 'ldap_email_attr'=>'ldapEmailAttribute', 'ldap_group_member_assoc_attribute'=>'ldapGroupMemberAssocAttr', 'ldap_cache_ttl'=>'ldapCacheTTL', 'home_folder_naming_rule' => 'homeFolderNamingRule', 'ldap_turn_off_cert_check' => 'turnOffCertCheck', 'ldap_configuration_active' => 'ldapConfigurationActive', 'ldap_attributes_for_user_search' => 'ldapAttributesForUserSearch', 'ldap_attributes_for_group_search' => 'ldapAttributesForGroupSearch');
+ return $array;
+ }
+
/**
* @brief set LDAP configuration with values delivered by an array, not read from configuration
* @param $config array that holds the config parameters in an associated array
@@ -223,9 +291,7 @@ class Connection {
return false;
}
- $params = array('ldap_host'=>'ldapHost', 'ldap_port'=>'ldapPort', 'ldap_dn'=>'ldapAgentName', 'ldap_agent_password'=>'ldapAgentPassword', 'ldap_base'=>'ldapBase', 'ldap_base_users'=>'ldapBaseUsers', 'ldap_base_groups'=>'ldapBaseGroups', 'ldap_userlist_filter'=>'ldapUserFilter', 'ldap_login_filter'=>'ldapLoginFilter', 'ldap_group_filter'=>'ldapGroupFilter', 'ldap_display_name'=>'ldapUserDisplayName', 'ldap_group_display_name'=>'ldapGroupDisplayName',
-
- 'ldap_tls'=>'ldapTLS', 'ldap_nocase'=>'ldapNoCase', 'ldap_quota_def'=>'ldapQuotaDefault', 'ldap_quota_attr'=>'ldapQuotaAttribute', 'ldap_email_attr'=>'ldapEmailAttribute', 'ldap_group_member_assoc_attribute'=>'ldapGroupMemberAssocAttr', 'ldap_cache_ttl'=>'ldapCacheTTL', 'home_folder_naming_rule' => 'homeFolderNamingRule');
+ $params = $this->getConfigTranslationArray();
foreach($config as $parameter => $value) {
if(isset($this->config[$parameter])) {
@@ -246,6 +312,71 @@ class Connection {
return $this->configured;
}
+ /**
+ * @brief saves the current Configuration in the database
+ */
+ public function saveConfiguration() {
+ $trans = array_flip($this->getConfigTranslationArray());
+ foreach($this->config as $key => $value) {
+ \OCP\Util::writeLog('user_ldap', 'LDAP: storing key '.$key.' value '.$value, \OCP\Util::DEBUG);
+ switch ($key) {
+ case 'ldapAgentPassword':
+ $value = base64_encode($value);
+ break;
+ case 'homeFolderNamingRule':
+ $value = empty($value) ? 'opt:username' : 'attr:'.$value;
+ break;
+ case 'ldapBase':
+ case 'ldapBaseUsers':
+ case 'ldapBaseGroups':
+ case 'ldapAttributesForUserSearch':
+ case 'ldapAttributesForGroupSearch':
+ if(is_array($value)){
+ $value = implode("\n", $value);
+ }
+ break;
+ case 'ldapIgnoreNamingRules':
+ case 'ldapOverrideUuidAttribute':
+ case 'ldapUuidAttribute':
+ case 'hasPagedResultSupport':
+ continue 2;
+ }
+ if(is_null($value)) {
+ $value = '';
+ }
+
+ $this->setValue($trans[$key], $value);
+ }
+ $this->clearCache();
+ }
+
+ /**
+ * @brief get the current LDAP configuration
+ * @return array
+ */
+ public function getConfiguration() {
+ $this->readConfiguration();
+ $trans = $this->getConfigTranslationArray();
+ $config = array();
+ foreach($trans as $dbKey => $classKey) {
+ if($classKey == 'homeFolderNamingRule') {
+ if(strpos($this->config[$classKey], 'opt') === 0) {
+ $config[$dbKey] = '';
+ } else {
+ $config[$dbKey] = substr($this->config[$classKey], 5);
+ }
+ continue;
+ } else if((strpos($classKey, 'ldapBase') !== false)
+ || (strpos($classKey, 'ldapAttributes') !== false)) {
+ $config[$dbKey] = implode("\n", $this->config[$classKey]);
+ continue;
+ }
+ $config[$dbKey] = $this->config[$classKey];
+ }
+
+ return $config;
+ }
+
/**
* @brief Validates the user specified configuration
* @returns true if configuration seems OK, false otherwise
@@ -264,9 +395,21 @@ class Connection {
\OCP\Util::writeLog('user_ldap', 'No group filter is specified, LDAP group feature will not be used.', \OCP\Util::INFO);
}
if(!in_array($this->config['ldapUuidAttribute'], array('auto', 'entryuuid', 'nsuniqueid', 'objectguid')) && (!is_null($this->configID))) {
- \OCP\Config::setAppValue($this->configID, 'ldap_uuid_attribute', 'auto');
+ \OCP\Config::setAppValue($this->configID, $this->configPrefix.'ldap_uuid_attribute', 'auto');
\OCP\Util::writeLog('user_ldap', 'Illegal value for the UUID Attribute, reset to autodetect.', \OCP\Util::INFO);
}
+ if(empty($this->config['ldapBackupPort'])) {
+ //force default
+ $this->config['ldapBackupPort'] = $this->config['ldapPort'];
+ }
+ foreach(array('ldapAttributesForUserSearch', 'ldapAttributesForGroupSearch') as $key) {
+ if(is_array($this->config[$key])
+ && count($this->config[$key]) == 1
+ && empty($this->config[$key][0])) {
+ $this->config[$key] = array();
+ }
+ }
+
//second step: critical checks. If left empty or filled wrong, set as unconfigured and give a warning.
@@ -310,10 +453,51 @@ class Connection {
return $configurationOK;
}
+ /**
+ * @returns an associative array with the default values. Keys are correspond
+ * to config-value entries in the database table
+ */
+ public function getDefaults() {
+ return array(
+ 'ldap_host' => '',
+ 'ldap_port' => '389',
+ 'ldap_backup_host' => '',
+ 'ldap_backup_port' => '',
+ 'ldap_override_main_server' => '',
+ 'ldap_dn' => '',
+ 'ldap_agent_password' => '',
+ 'ldap_base' => '',
+ 'ldap_base_users' => '',
+ 'ldap_base_groups' => '',
+ 'ldap_userlist_filter' => 'objectClass=person',
+ 'ldap_login_filter' => 'uid=%uid',
+ 'ldap_group_filter' => 'objectClass=posixGroup',
+ 'ldap_display_name' => 'cn',
+ 'ldap_group_display_name' => 'cn',
+ 'ldap_tls' => 1,
+ 'ldap_nocase' => 0,
+ 'ldap_quota_def' => '',
+ 'ldap_quota_attr' => '',
+ 'ldap_email_attr' => '',
+ 'ldap_group_member_assoc_attribute' => 'uniqueMember',
+ 'ldap_cache_ttl' => 600,
+ 'ldap_uuid_attribute' => 'auto',
+ 'ldap_override_uuid_attribute' => 0,
+ 'home_folder_naming_rule' => 'opt:username',
+ 'ldap_turn_off_cert_check' => 0,
+ 'ldap_configuration_active' => 1,
+ 'ldap_attributes_for_user_search' => '',
+ 'ldap_attributes_for_group_search' => '',
+ );
+ }
+
/**
* Connects and Binds to LDAP
*/
private function establishConnection() {
+ if(!$this->config['ldapConfigurationActive']) {
+ return null;
+ }
static $phpLDAPinstalled = true;
if(!$phpLDAPinstalled) {
return false;
@@ -336,16 +520,40 @@ class Connection {
\OCP\Util::writeLog('user_ldap', 'Could not turn off SSL certificate validation.', \OCP\Util::WARN);
}
}
- $this->ldapConnectionRes = ldap_connect($this->config['ldapHost'], $this->config['ldapPort']);
- if(ldap_set_option($this->ldapConnectionRes, LDAP_OPT_PROTOCOL_VERSION, 3)) {
- if(ldap_set_option($this->ldapConnectionRes, LDAP_OPT_REFERRALS, 0)) {
- if($this->config['ldapTLS']) {
- ldap_start_tls($this->ldapConnectionRes);
- }
- }
+ if(!$this->config['ldapOverrideMainServer'] && !$this->getFromCache('overrideMainServer')) {
+ $this->doConnect($this->config['ldapHost'], $this->config['ldapPort']);
+ $bindStatus = $this->bind();
+ $error = ldap_errno($this->ldapConnectionRes);
+ } else {
+ $bindStatus = false;
+ $error = null;
}
- return $this->bind();
+ $error = null;
+ //if LDAP server is not reachable, try the Backup (Replica!) Server
+ if((!$bindStatus && ($error == -1))
+ || $this->config['ldapOverrideMainServer']
+ || $this->getFromCache('overrideMainServer')) {
+ $this->doConnect($this->config['ldapBackupHost'], $this->config['ldapBackupPort']);
+ $bindStatus = $this->bind();
+ if($bindStatus && $error == -1) {
+ //when bind to backup server succeeded and failed to main server,
+ //skip contacting him until next cache refresh
+ $this->writeToCache('overrideMainServer', true);
+ }
+ }
+ return $bindStatus;
+ }
+ }
+
+ private function doConnect($host, $port) {
+ $this->ldapConnectionRes = ldap_connect($host, $port);
+ if(ldap_set_option($this->ldapConnectionRes, LDAP_OPT_PROTOCOL_VERSION, 3)) {
+ if(ldap_set_option($this->ldapConnectionRes, LDAP_OPT_REFERRALS, 0)) {
+ if($this->config['ldapTLS']) {
+ ldap_start_tls($this->ldapConnectionRes);
+ }
+ }
}
}
@@ -353,6 +561,9 @@ class Connection {
* Binds to LDAP
*/
public function bind() {
+ if(!$this->config['ldapConfigurationActive']) {
+ return false;
+ }
$ldapLogin = @ldap_bind($this->getConnectionResource(), $this->config['ldapAgentName'], $this->config['ldapAgentPassword']);
if(!$ldapLogin) {
\OCP\Util::writeLog('user_ldap', 'Bind failed: ' . ldap_errno($this->ldapConnectionRes) . ': ' . ldap_error($this->ldapConnectionRes), \OCP\Util::ERROR);
diff --git a/apps/user_ldap/lib/helper.php b/apps/user_ldap/lib/helper.php
new file mode 100644
index 00000000000..29ce998dae7
--- /dev/null
+++ b/apps/user_ldap/lib/helper.php
@@ -0,0 +1,105 @@
+.
+ *
+ */
+
+namespace OCA\user_ldap\lib;
+
+class Helper {
+
+ /**
+ * @brief returns prefixes for each saved LDAP/AD server configuration.
+ * @param bool optional, whether only active configuration shall be
+ * retrieved, defaults to false
+ * @return array with a list of the available prefixes
+ *
+ * Configuration prefixes are used to set up configurations for n LDAP or
+ * AD servers. Since configuration is stored in the database, table
+ * appconfig under appid user_ldap, the common identifiers in column
+ * 'configkey' have a prefix. The prefix for the very first server
+ * configuration is empty.
+ * Configkey Examples:
+ * Server 1: ldap_login_filter
+ * Server 2: s1_ldap_login_filter
+ * Server 3: s2_ldap_login_filter
+ *
+ * The prefix needs to be passed to the constructor of Connection class,
+ * except the default (first) server shall be connected to.
+ *
+ */
+ static public function getServerConfigurationPrefixes($activeConfigurations = false) {
+ $referenceConfigkey = 'ldap_configuration_active';
+
+ $query = '
+ SELECT DISTINCT `configkey`
+ FROM `*PREFIX*appconfig`
+ WHERE `configkey` LIKE ?
+ ';
+ if($activeConfigurations) {
+ $query .= ' AND `configvalue` = 1';
+ }
+ $query = \OCP\DB::prepare($query);
+
+ $serverConfigs = $query->execute(array('%'.$referenceConfigkey))->fetchAll();
+ $prefixes = array();
+
+ foreach($serverConfigs as $serverConfig) {
+ $len = strlen($serverConfig['configkey']) - strlen($referenceConfigkey);
+ $prefixes[] = substr($serverConfig['configkey'], 0, $len);
+ }
+
+ return $prefixes;
+ }
+
+ /**
+ * @brief deletes a given saved LDAP/AD server configuration.
+ * @param string the configuration prefix of the config to delete
+ * @return bool true on success, false otherwise
+ */
+ static public function deleteServerConfiguration($prefix) {
+ //just to be on the safe side
+ \OCP\User::checkAdminUser();
+
+ if(!in_array($prefix, self::getServerConfigurationPrefixes())) {
+ return false;
+ }
+
+ $query = \OCP\DB::prepare('
+ DELETE
+ FROM `*PREFIX*appconfig`
+ WHERE `configkey` LIKE ?
+ AND `appid` = "user_ldap"
+ AND `configkey` NOT IN ("enabled", "installed_version", "types", "bgjUpdateGroupsLastRun")
+ ');
+ $res = $query->execute(array($prefix.'%'));
+
+ if(\OCP\DB::isError($res)) {
+ return false;
+ }
+
+ if($res->numRows() == 0) {
+ return false;
+ }
+
+ return true;
+ }
+}
+
diff --git a/apps/user_ldap/lib/proxy.php b/apps/user_ldap/lib/proxy.php
new file mode 100644
index 00000000000..c80e2163475
--- /dev/null
+++ b/apps/user_ldap/lib/proxy.php
@@ -0,0 +1,104 @@
+.
+ *
+ */
+
+namespace OCA\user_ldap\lib;
+
+abstract class Proxy {
+ static private $connectors = array();
+
+ public function __construct() {
+ $this->cache = \OC_Cache::getGlobalCache();
+ }
+
+ private function addConnector($configPrefix) {
+ self::$connectors[$configPrefix] = new \OCA\user_ldap\lib\Connection($configPrefix);
+ }
+
+ protected function getConnector($configPrefix) {
+ if(!isset(self::$connectors[$configPrefix])) {
+ $this->addConnector($configPrefix);
+ }
+ return self::$connectors[$configPrefix];
+ }
+
+ protected function getConnectors() {
+ return self::$connectors;
+ }
+
+ protected function getUserCacheKey($uid) {
+ return 'user-'.$uid.'-lastSeenOn';
+ }
+
+ protected function getGroupCacheKey($gid) {
+ return 'group-'.$gid.'-lastSeenOn';
+ }
+
+ abstract protected function callOnLastSeenOn($id, $method, $parameters);
+ abstract protected function walkBackends($id, $method, $parameters);
+
+ /**
+ * @brief Takes care of the request to the User backend
+ * @param $uid string, the uid connected to the request
+ * @param $method string, the method of the user backend that shall be called
+ * @param $parameters an array of parameters to be passed
+ * @return mixed, the result of the specified method
+ */
+ protected function handleRequest($id, $method, $parameters) {
+ if(!$result = $this->callOnLastSeenOn($id, $method, $parameters)) {
+ $result = $this->walkBackends($id, $method, $parameters);
+ }
+ return $result;
+ }
+
+ private function getCacheKey($key) {
+ $prefix = 'LDAP-Proxy-';
+ if(is_null($key)) {
+ return $prefix;
+ }
+ return $prefix.md5($key);
+ }
+
+ public function getFromCache($key) {
+ if(!$this->isCached($key)) {
+ return null;
+ }
+ $key = $this->getCacheKey($key);
+
+ return unserialize(base64_decode($this->cache->get($key)));
+ }
+
+ public function isCached($key) {
+ $key = $this->getCacheKey($key);
+ return $this->cache->hasKey($key);
+ }
+
+ public function writeToCache($key, $value) {
+ $key = $this->getCacheKey($key);
+ $value = base64_encode(serialize($value));
+ $this->cache->set($key, $value, '2592000');
+ }
+
+ public function clearCache() {
+ $this->cache->clear($this->getCacheKey(null));
+ }
+}
\ No newline at end of file
diff --git a/apps/user_ldap/settings.php b/apps/user_ldap/settings.php
index 58ec8e7f7a4..d5d2f648b38 100644
--- a/apps/user_ldap/settings.php
+++ b/apps/user_ldap/settings.php
@@ -23,58 +23,46 @@
OC_Util::checkAdminUser();
-$params = array('ldap_host', 'ldap_port', 'ldap_dn', 'ldap_agent_password', 'ldap_base', 'ldap_base_users', 'ldap_base_groups', 'ldap_userlist_filter', 'ldap_login_filter', 'ldap_group_filter', 'ldap_display_name', 'ldap_group_display_name', 'ldap_tls', 'ldap_turn_off_cert_check', 'ldap_nocase', 'ldap_quota_def', 'ldap_quota_attr', 'ldap_email_attr', 'ldap_group_member_assoc_attribute', 'ldap_cache_ttl', 'home_folder_naming_rule');
+$params = array('ldap_host', 'ldap_port', 'ldap_backup_host',
+ 'ldap_backup_port', 'ldap_override_main_server', 'ldap_dn',
+ 'ldap_agent_password', 'ldap_base', 'ldap_base_users',
+ 'ldap_base_groups', 'ldap_userlist_filter',
+ 'ldap_login_filter', 'ldap_group_filter', 'ldap_display_name',
+ 'ldap_group_display_name', 'ldap_tls',
+ 'ldap_turn_off_cert_check', 'ldap_nocase', 'ldap_quota_def',
+ 'ldap_quota_attr', 'ldap_email_attr',
+ 'ldap_group_member_assoc_attribute', 'ldap_cache_ttl',
+ 'home_folder_naming_rule'
+ );
OCP\Util::addscript('user_ldap', 'settings');
OCP\Util::addstyle('user_ldap', 'settings');
-if ($_POST) {
- $clearCache = false;
- foreach($params as $param) {
- if(isset($_POST[$param])) {
- $clearCache = true;
- if('ldap_agent_password' == $param) {
- OCP\Config::setAppValue('user_ldap', $param, base64_encode($_POST[$param]));
- } elseif('home_folder_naming_rule' == $param) {
- $value = empty($_POST[$param]) ? 'opt:username' : 'attr:'.$_POST[$param];
- OCP\Config::setAppValue('user_ldap', $param, $value);
- } else {
- OCP\Config::setAppValue('user_ldap', $param, $_POST[$param]);
- }
- }
- elseif('ldap_tls' == $param) {
- // unchecked checkboxes are not included in the post paramters
- OCP\Config::setAppValue('user_ldap', $param, 0);
- }
- elseif('ldap_nocase' == $param) {
- OCP\Config::setAppValue('user_ldap', $param, 0);
- }
- elseif('ldap_turn_off_cert_check' == $param) {
- OCP\Config::setAppValue('user_ldap', $param, 0);
- }
- }
- if($clearCache) {
- $ldap = new \OCA\user_ldap\lib\Connection('user_ldap');
- $ldap->clearCache();
- }
-}
-
// fill template
-$tmpl = new OCP\Template( 'user_ldap', 'settings');
-foreach($params as $param) {
- $value = OCP\Config::getAppValue('user_ldap', $param, '');
- $tmpl->assign($param, $value);
+$tmpl = new OCP\Template('user_ldap', 'settings');
+
+$prefixes = \OCA\user_ldap\lib\Helper::getServerConfigurationPrefixes();
+$scoHtml = '';
+$i = 1;
+$sel = ' selected';
+foreach($prefixes as $prefix) {
+ $scoHtml .= '';
+ $sel = '';
+}
+if(count($prefixes) == 0) {
+ $scoHtml .= '';
+}
+$tmpl->assign('serverConfigurationOptions', $scoHtml, false);
+
+// assign default values
+if(!isset($ldap)) {
+ $ldap = new \OCA\user_ldap\lib\Connection();
+}
+$defaults = $ldap->getDefaults();
+foreach($defaults as $key => $default) {
+ $tmpl->assign($key.'_default', $default);
}
-// settings with default values
-$tmpl->assign( 'ldap_port', OCP\Config::getAppValue('user_ldap', 'ldap_port', '389'));
-$tmpl->assign( 'ldap_display_name', OCP\Config::getAppValue('user_ldap', 'ldap_display_name', 'uid'));
-$tmpl->assign( 'ldap_group_display_name', OCP\Config::getAppValue('user_ldap', 'ldap_group_display_name', 'cn'));
-$tmpl->assign( 'ldap_group_member_assoc_attribute', OCP\Config::getAppValue('user_ldap', 'ldap_group_member_assoc_attribute', 'uniqueMember'));
-$tmpl->assign( 'ldap_agent_password', base64_decode(OCP\Config::getAppValue('user_ldap', 'ldap_agent_password')));
-$tmpl->assign( 'ldap_cache_ttl', OCP\Config::getAppValue('user_ldap', 'ldap_cache_ttl', '600'));
-$hfnr = OCP\Config::getAppValue('user_ldap', 'home_folder_naming_rule', 'opt:username');
-$hfnr = ($hfnr == 'opt:username') ? '' : substr($hfnr, strlen('attr:'));
-$tmpl->assign( 'home_folder_naming_rule', $hfnr, '');
+// $tmpl->assign();
return $tmpl->fetchPage();
diff --git a/apps/user_ldap/templates/settings.php b/apps/user_ldap/templates/settings.php
index b24c6e2f025..e6fa91cc85f 100644
--- a/apps/user_ldap/templates/settings.php
+++ b/apps/user_ldap/templates/settings.php
@@ -12,31 +12,43 @@
}
?>
- t('Help');?>
+ t('Help');?>
diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php
index 6591d1d5fee..6aa8cd9b83c 100644
--- a/apps/user_ldap/user_ldap.php
+++ b/apps/user_ldap/user_ldap.php
@@ -116,10 +116,9 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface {
if($limit <= 0) {
$limit = null;
}
- $search = empty($search) ? '*' : '*'.$search.'*';
$filter = $this->combineFilterWithAnd(array(
$this->connection->ldapUserFilter,
- $this->connection->ldapUserDisplayName.'='.$search
+ $this->getFilterPartForUserSearch($search)
));
\OCP\Util::writeLog('user_ldap', 'getUsers: Options: search '.$search.' limit '.$limit.' offset '.$offset.' Filter: '.$filter, \OCP\Util::DEBUG);
@@ -156,6 +155,7 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface {
}
$this->connection->writeToCache('userExists'.$uid, true);
+ $this->updateQuota($dn);
return true;
}
@@ -208,6 +208,50 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface {
return false;
}
+ /**
+ * @brief get display name of the user
+ * @param $uid user ID of the user
+ * @return display name
+ */
+ public function getDisplayName($uid) {
+ $cacheKey = 'getDisplayName'.$uid;
+ if(!is_null($displayName = $this->connection->getFromCache($cacheKey))) {
+ return $displayName;
+ }
+
+ $displayName = $this->readAttribute(
+ $this->username2dn($uid),
+ $this->connection->ldapUserDisplayName);
+
+ if($displayName && (count($displayName) > 0)) {
+ $this->connection->writeToCache($cacheKey, $displayName);
+ return $displayName[0];
+ }
+
+ return null;
+ }
+
+ /**
+ * @brief Get a list of all display names
+ * @returns array with all displayNames (value) and the correspondig uids (key)
+ *
+ * Get a list of all display names and user ids.
+ */
+ public function getDisplayNames($search = '', $limit = null, $offset = null) {
+ $cacheKey = 'getDisplayNames-'.$search.'-'.$limit.'-'.$offset;
+ if(!is_null($displayNames = $this->connection->getFromCache($cacheKey))) {
+ return $displayNames;
+ }
+
+ $displayNames = array();
+ $users = $this->getUsers($search, $limit, $offset);
+ foreach ($users as $user) {
+ $displayNames[$user] = $this->getDisplayName($user);
+ }
+ $this->connection->writeToCache($cacheKey, $displayNames);
+ return $displayNames;
+ }
+
/**
* @brief Check if backend implements actions
* @param $actions bitwise-or'ed actions
diff --git a/apps/user_ldap/user_proxy.php b/apps/user_ldap/user_proxy.php
new file mode 100644
index 00000000000..a94be3354fc
--- /dev/null
+++ b/apps/user_ldap/user_proxy.php
@@ -0,0 +1,186 @@
+.
+ *
+ */
+
+namespace OCA\user_ldap;
+
+class User_Proxy extends lib\Proxy implements \OCP\UserInterface {
+ private $backends = array();
+ private $refBackend = null;
+
+ /**
+ * @brief Constructor
+ * @param $serverConfigPrefixes array containing the config Prefixes
+ */
+ public function __construct($serverConfigPrefixes) {
+ parent::__construct();
+ foreach($serverConfigPrefixes as $configPrefix) {
+ $this->backends[$configPrefix] = new \OCA\user_ldap\USER_LDAP();
+ $connector = $this->getConnector($configPrefix);
+ $this->backends[$configPrefix]->setConnector($connector);
+ if(is_null($this->refBackend)) {
+ $this->refBackend = &$this->backends[$configPrefix];
+ }
+ }
+ }
+
+ /**
+ * @brief Tries the backends one after the other until a positive result is returned from the specified method
+ * @param $uid string, the uid connected to the request
+ * @param $method string, the method of the user backend that shall be called
+ * @param $parameters an array of parameters to be passed
+ * @return mixed, the result of the method or false
+ */
+ protected function walkBackends($uid, $method, $parameters) {
+ $cacheKey = $this->getUserCacheKey($uid);
+ foreach($this->backends as $configPrefix => $backend) {
+ if($result = call_user_func_array(array($backend, $method), $parameters)) {
+ $this->writeToCache($cacheKey, $configPrefix);
+ return $result;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * @brief Asks the backend connected to the server that supposely takes care of the uid from the request.
+ * @param $uid string, the uid connected to the request
+ * @param $method string, the method of the user backend that shall be called
+ * @param $parameters an array of parameters to be passed
+ * @return mixed, the result of the method or false
+ */
+ protected function callOnLastSeenOn($uid, $method, $parameters) {
+ $cacheKey = $this->getUserCacheKey($uid);
+ $prefix = $this->getFromCache($cacheKey);
+ //in case the uid has been found in the past, try this stored connection first
+ if(!is_null($prefix)) {
+ if(isset($this->backends[$prefix])) {
+ $result = call_user_func_array(array($this->backends[$prefix], $method), $parameters);
+ if(!$result) {
+ //not found here, reset cache to null
+ $this->writeToCache($cacheKey, null);
+ }
+ return $result;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * @brief Check if backend implements actions
+ * @param $actions bitwise-or'ed actions
+ * @returns boolean
+ *
+ * Returns the supported actions as int to be
+ * compared with OC_USER_BACKEND_CREATE_USER etc.
+ */
+ public function implementsActions($actions) {
+ //it's the same across all our user backends obviously
+ return $this->refBackend->implementsActions($actions);
+ }
+
+ /**
+ * @brief Get a list of all users
+ * @returns array with all uids
+ *
+ * Get a list of all users.
+ */
+ public function getUsers($search = '', $limit = 10, $offset = 0) {
+ //we do it just as the /OC_User implementation: do not play around with limit and offset but ask all backends
+ $users = array();
+ foreach($this->backends as $backend) {
+ $backendUsers = $backend->getUsers($search, $limit, $offset);
+ if (is_array($backendUsers)) {
+ $users = array_merge($users, $backendUsers);
+ }
+ }
+ return $users;
+ }
+
+ /**
+ * @brief check if a user exists
+ * @param string $uid the username
+ * @return boolean
+ */
+ public function userExists($uid) {
+ return $this->handleRequest($uid, 'userExists', array($uid));
+ }
+
+ /**
+ * @brief Check if the password is correct
+ * @param $uid The username
+ * @param $password The password
+ * @returns true/false
+ *
+ * Check if the password is correct without logging in the user
+ */
+ public function checkPassword($uid, $password) {
+ return $this->handleRequest($uid, 'checkPassword', array($uid, $password));
+ }
+
+ /**
+ * @brief get the user's home directory
+ * @param string $uid the username
+ * @return boolean
+ */
+ public function getHome($uid) {
+ return $this->handleRequest($uid, 'getHome', array($uid));
+ }
+
+ /**
+ * @brief get display name of the user
+ * @param $uid user ID of the user
+ * @return display name
+ */
+ public function getDisplayName($uid) {
+ return $this->handleRequest($uid, 'getDisplayName', array($uid));
+ }
+
+ /**
+ * @brief Get a list of all display names
+ * @returns array with all displayNames (value) and the corresponding uids (key)
+ *
+ * Get a list of all display names and user ids.
+ */
+ public function getDisplayNames($search = '', $limit = null, $offset = null) {
+ //we do it just as the /OC_User implementation: do not play around with limit and offset but ask all backends
+ $users = array();
+ foreach($this->backends as $backend) {
+ $backendUsers = $backend->getDisplayNames($search, $limit, $offset);
+ if (is_array($backendUsers)) {
+ $users = array_merge($users, $backendUsers);
+ }
+ }
+ return $users;
+ }
+
+ /**
+ * @brief delete a user
+ * @param $uid The username of the user to delete
+ * @returns true/false
+ *
+ * Deletes a user
+ */
+ public function deleteUser($uid) {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/apps/user_webdavauth/appinfo/info.xml b/apps/user_webdavauth/appinfo/info.xml
index e51f2e9ec4f..f62f03577e8 100755
--- a/apps/user_webdavauth/appinfo/info.xml
+++ b/apps/user_webdavauth/appinfo/info.xml
@@ -7,7 +7,7 @@
This app is not compatible to the LDAP user and group backend.
AGPLFrank Karlitschek
- 4.9
+ 4.91true
diff --git a/apps/user_webdavauth/l10n/da.php b/apps/user_webdavauth/l10n/da.php
index 245a5101341..b268d3e15d0 100644
--- a/apps/user_webdavauth/l10n/da.php
+++ b/apps/user_webdavauth/l10n/da.php
@@ -1,3 +1,5 @@
"URL: http://"
+"WebDAV Authentication" => "WebDAV-godkendelse",
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "ownCloud vil sende brugerens oplysninger til denne URL. Plugin'et registrerer responsen og fortolker HTTP-statuskoder 401 og 403 som ugyldige oplysninger, men alle andre besvarelser som gyldige oplysninger."
);
diff --git a/apps/user_webdavauth/l10n/es_AR.php b/apps/user_webdavauth/l10n/es_AR.php
index 245a5101341..103c3738e2d 100644
--- a/apps/user_webdavauth/l10n/es_AR.php
+++ b/apps/user_webdavauth/l10n/es_AR.php
@@ -1,3 +1,5 @@
"URL: http://"
+"WebDAV Authentication" => "Autenticación de WevDAV",
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "onwCloud enviará las credenciales de usuario a esta URL. Este complemento verifica la respuesta e interpretará los códigos de respuesta HTTP 401 y 403 como credenciales inválidas y todas las otras respuestas como credenciales válidas."
);
diff --git a/apps/user_webdavauth/l10n/hu_HU.php b/apps/user_webdavauth/l10n/hu_HU.php
index 245a5101341..64352801142 100644
--- a/apps/user_webdavauth/l10n/hu_HU.php
+++ b/apps/user_webdavauth/l10n/hu_HU.php
@@ -1,3 +1,5 @@
"URL: http://"
+"WebDAV Authentication" => "WebDAV hitelesítés",
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "Az ownCloud elküldi a felhasználói fiók adatai a következő URL-re. Ez a bővítőmodul leellenőrzi a választ és ha a HTTP hibakód nem 401 vagy 403 azaz érvénytelen hitelesítő, akkor minden más válasz érvényes lesz."
);
diff --git a/apps/user_webdavauth/l10n/ko.php b/apps/user_webdavauth/l10n/ko.php
index 245a5101341..578ff35e721 100644
--- a/apps/user_webdavauth/l10n/ko.php
+++ b/apps/user_webdavauth/l10n/ko.php
@@ -1,3 +1,5 @@
"URL: http://"
+"WebDAV Authentication" => "WebDAV 인증",
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "ownCloud에서 이 URL로 사용자 인증 정보를 보냅니다. 이 플러그인은 응답을 확인하여 HTTP 상태 코드 401이나 403이 돌아온 경우에 잘못된 인증 정보로 간주합니다. 다른 모든 상태 코드는 올바른 인증 정보로 간주합니다."
);
diff --git a/apps/user_webdavauth/l10n/pt_BR.php b/apps/user_webdavauth/l10n/pt_BR.php
index 991c746a221..6ddd00ccc3e 100644
--- a/apps/user_webdavauth/l10n/pt_BR.php
+++ b/apps/user_webdavauth/l10n/pt_BR.php
@@ -1,3 +1,5 @@
"URL do WebDAV: http://"
+"WebDAV Authentication" => "Autenticação WebDAV",
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "O ownCloud enviará as credenciais do usuário para esta URL. Este plugin verifica a resposta e interpreta o os códigos de status do HTTP 401 e 403 como credenciais inválidas, e todas as outras respostas como credenciais válidas."
);
diff --git a/apps/user_webdavauth/l10n/ru_RU.php b/apps/user_webdavauth/l10n/ru_RU.php
index 245a5101341..46f74cb972f 100644
--- a/apps/user_webdavauth/l10n/ru_RU.php
+++ b/apps/user_webdavauth/l10n/ru_RU.php
@@ -1,3 +1,4 @@
"WebDAV аутентификация",
"URL: http://" => "URL: http://"
);
diff --git a/apps/user_webdavauth/l10n/sk_SK.php b/apps/user_webdavauth/l10n/sk_SK.php
index 6e34b818ed7..c4e6dfddc7b 100644
--- a/apps/user_webdavauth/l10n/sk_SK.php
+++ b/apps/user_webdavauth/l10n/sk_SK.php
@@ -1,4 +1,5 @@
"WebDAV overenie",
-"URL: http://" => "URL: http://"
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "ownCloud odošle používateľské údaje na zadanú URL. Plugin skontroluje odpoveď a považuje návratovú hodnotu HTTP 401 a 403 za neplatné údaje a všetky ostatné hodnoty ako platné prihlasovacie údaje."
);
diff --git a/config/config.sample.php b/config/config.sample.php
index 51373327f44..5264e948200 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -38,6 +38,12 @@ $CONFIG = array(
/* The automatic protocol detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the protocol detection. For example "https" */
"overwriteprotocol" => "",
+/* The automatic webroot detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the automatic detection. For example "/domain.tld/ownCloud" */
+"overwritewebroot" => "",
+
+/* The automatic detection of ownCloud can fail in certain reverse proxy situations. This option allows to define a manually override condition as regular expression for the remote ip address. For example "^10\.0\.0\.[1-3]$" */
+"overwritecondaddr" => "",
+
/* A proxy to use to connect to the internet. For example "myproxy.org:88" */
"proxy" => "",
@@ -92,12 +98,19 @@ $CONFIG = array(
*/
"mail_smtpauth" => false,
+/* authentication type needed to send mail, depends on mail_smtpmode if this is used
+ * Can be LOGIN (default), PLAIN or NTLM */
+"mail_smtpauthtype" => "LOGIN",
+
/* Username to use for sendmail mail, depends on mail_smtpauth if this is used */
"mail_smtpname" => "",
/* Password to use for sendmail mail, depends on mail_smtpauth if this is used */
"mail_smtppassword" => "",
+/* How long should ownCloud keep deleted files in the trash bin, default value: 180 days */
+'trashbin_retention_obligation' => 180,
+
/* Check 3rdparty apps for malicious code fragments */
"appcodechecker" => "",
diff --git a/core/ajax/share.php b/core/ajax/share.php
index 077baa8ba56..6704a00c5a2 100644
--- a/core/ajax/share.php
+++ b/core/ajax/share.php
@@ -72,6 +72,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
case 'email':
// read post variables
$user = OCP\USER::getUser();
+ $displayName = OCP\User::getDisplayName();
$type = $_POST['itemType'];
$link = $_POST['link'];
$file = $_POST['file'];
@@ -81,13 +82,13 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
$l = OC_L10N::get('core');
// setup the email
- $subject = (string)$l->t('User %s shared a file with you', $user);
+ $subject = (string)$l->t('User %s shared a file with you', $displayName);
if ($type === 'dir')
- $subject = (string)$l->t('User %s shared a folder with you', $user);
+ $subject = (string)$l->t('User %s shared a folder with you', $displayName);
- $text = (string)$l->t('User %s shared the file "%s" with you. It is available for download here: %s', array($user, $file, $link));
+ $text = (string)$l->t('User %s shared the file "%s" with you. It is available for download here: %s', array($displayName, $file, $link));
if ($type === 'dir')
- $text = (string)$l->t('User %s shared the folder "%s" with you. It is available for download here: %s', array($user, $file, $link));
+ $text = (string)$l->t('User %s shared the folder "%s" with you. It is available for download here: %s', array($displayName, $file, $link));
$default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply');
@@ -158,14 +159,14 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
while ($count < 4 && count($users) == $limit) {
$limit = 4 - $count;
if ($sharePolicy == 'groups_only') {
- $users = OC_Group::usersInGroups($groups, $_GET['search'], $limit, $offset);
+ $users = OC_Group::DisplayNamesInGroups($groups, $_GET['search'], $limit, $offset);
} else {
- $users = OC_User::getUsers($_GET['search'], $limit, $offset);
+ $users = OC_User::getDisplayNames($_GET['search'], $limit, $offset);
}
$offset += $limit;
- foreach ($users as $user) {
- if ((!isset($_GET['itemShares']) || !is_array($_GET['itemShares'][OCP\Share::SHARE_TYPE_USER]) || !in_array($user, $_GET['itemShares'][OCP\Share::SHARE_TYPE_USER])) && $user != OC_User::getUser()) {
- $shareWith[] = array('label' => $user, 'value' => array('shareType' => OCP\Share::SHARE_TYPE_USER, 'shareWith' => $user));
+ foreach ($users as $uid => $displayName) {
+ if ((!isset($_GET['itemShares']) || !is_array($_GET['itemShares'][OCP\Share::SHARE_TYPE_USER]) || !in_array($uid, $_GET['itemShares'][OCP\Share::SHARE_TYPE_USER])) && $uid != OC_User::getUser()) {
+ $shareWith[] = array('label' => $displayName, 'value' => array('shareType' => OCP\Share::SHARE_TYPE_USER, 'shareWith' => $uid));
$count++;
}
}
diff --git a/core/css/styles.css b/core/css/styles.css
index 022acab4d8a..d82bdd2db4a 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -56,14 +56,15 @@ input[type="checkbox"]:hover+label, input[type="checkbox"]:focus+label { color:#
/* BUTTONS */
input[type="submit"], input[type="button"], button, .button, #quota, div.jp-progress, select, .pager li a {
width:auto; padding:.4em;
- background-color:rgba(230,230,230,.5); font-weight:bold; color:#555; text-shadow:#fff 0 1px 0; border:1px solid #bbb; border:1px solid rgba(180,180,180,.5); cursor:pointer;
- -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset;
+ background-color:rgba(240,240,240,.9); font-weight:bold; color:#555; text-shadow:rgba(255,255,255,.9) 0 1px 0; border:1px solid rgba(190,190,190,.9); cursor:pointer;
+ -moz-box-shadow:0 1px 1px rgba(255,255,255,.9), 0 1px 1px rgba(255,255,255,.9) inset; -webkit-box-shadow:0 1px 1px rgba(255,255,255,.9), 0 1px 1px rgba(255,255,255,.9) inset; box-shadow:0 1px 1px rgba(255,255,255,.9), 0 1px 1px rgba(255,255,255,.9) inset;
-moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em;
}
input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, select:hover, select:focus, select:active, input[type="button"]:focus, .button:hover {
- background:rgba(255,255,255,.5); color:#333;
+ background:rgba(250,250,250,.9); color:#333;
}
input[type="submit"] img, input[type="button"] img, button img, .button img { cursor:pointer; }
+#header .button { border:none; -moz-box-shadow:none; -webkit-box-shadow:none; box-shadow:none; }
/* Primary action button, use sparingly */
.primary, input[type="submit"].primary, input[type="button"].primary, button.primary, .button.primary {
@@ -195,8 +196,8 @@ fieldset.warning legend { color:#b94a48 !important; }
#notification { z-index:101; background-color:#fc4; border:0; padding:0 .7em .3em; display:none; position: relative; top:0; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; -moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; }
#notification span { cursor:pointer; font-weight:bold; margin-left:1em; }
-tr .action, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; }
-tr:hover .action, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter:alpha(opacity=50); opacity:.5; }
+tr .action:not(.permanent), .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; }
+tr:hover .action, tr .action.permanent, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter:alpha(opacity=50); opacity:.5; }
tr .action { width:16px; height:16px; }
.header-action { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter:alpha(opacity=80); opacity:.8; }
tr:hover .action:hover, .selectedActions a:hover, .header-action:hover { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; }
diff --git a/core/img/actions/undelete.png b/core/img/actions/undelete.png
new file mode 100644
index 00000000000..d712527ef61
Binary files /dev/null and b/core/img/actions/undelete.png differ
diff --git a/core/js/js.js b/core/js/js.js
index 01e47edf268..9c8cf4aa625 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -672,6 +672,7 @@ $(document).ready(function(){
// all the tipsy stuff needs to be here (in reverse order) to work
$('.jp-controls .jp-previous').tipsy({gravity:'nw', fade:true, live:true});
$('.jp-controls .jp-next').tipsy({gravity:'n', fade:true, live:true});
+ $('.displayName .action').tipsy({gravity:'se', fade:true, live:true});
$('.password .action').tipsy({gravity:'se', fade:true, live:true});
$('#upload').tipsy({gravity:'w', fade:true});
$('.selectedActions a').tipsy({gravity:'s', fade:true, live:true});
diff --git a/core/js/share.js b/core/js/share.js
index bb3ec010ff5..0c45765bd8b 100644
--- a/core/js/share.js
+++ b/core/js/share.js
@@ -23,7 +23,10 @@ OC.Share={
} else {
var file = $('tr').filterAttr('data-file', OC.basename(item));
if (file.length > 0) {
- $(file).find('.fileactions .action').filterAttr('data-action', 'Share').find('img').attr('src', image);
+ var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share');
+ action.find('img').attr('src', image);
+ action.addClass('permanent');
+ action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared')));
}
var dir = $('#dir').val();
if (dir.length > 1) {
@@ -32,9 +35,12 @@ OC.Share={
// Search for possible parent folders that are shared
while (path != last) {
if (path == item) {
- var img = $('.fileactions .action').filterAttr('data-action', 'Share').find('img');
+ var action = $('.fileactions .action').filterAttr('data-action', 'Share');
+ var img = action.find('img');
if (img.attr('src') != OC.imagePath('core', 'actions/public')) {
img.attr('src', image);
+ action.addClass('permanent');
+ action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared')));
}
}
last = path;
@@ -48,7 +54,8 @@ OC.Share={
},
updateIcon:function(itemType, itemSource) {
if (itemType == 'file' || itemType == 'folder') {
- var filename = $('tr').filterAttr('data-id', String(itemSource)).data('file');
+ var file = $('tr').filterAttr('data-id', String(itemSource));
+ var filename = file.data('file');
if ($('#dir').val() == '/') {
itemSource = $('#dir').val() + filename;
} else {
@@ -75,6 +82,16 @@ OC.Share={
});
if (itemType != 'file' && itemType != 'folder') {
$('a.share[data-item="'+itemSource+'"]').css('background', 'url('+image+') no-repeat center');
+ } else {
+ var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share');
+ action.find('img').attr('src', image);
+ if (shares) {
+ action.addClass('permanent');
+ action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared')));
+ } else {
+ action.removeClass('permanent');
+ action.html(action.html().replace(t('core', 'Shared'), t('core', 'Share')));
+ }
}
if (shares) {
OC.Share.statuses[itemSource] = link;
@@ -148,9 +165,9 @@ OC.Share={
var html = '
';
if (data !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) {
if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) {
- html += ''+t('core', 'Shared with you and the group {group} by {owner}', {group: data.reshare.share_with, owner: data.reshare.uid_owner})+'';
+ html += ''+t('core', 'Shared with you and the group {group} by {owner}', {group: data.reshare.share_with, owner: data.reshare.displayname_owner})+'';
} else {
- html += ''+t('core', 'Shared with you by {owner}', {owner: data.reshare.uid_owner})+'';
+ html += ''+t('core', 'Shared with you by {owner}', {owner: data.reshare.displayname_owner})+'';
}
html += ' ';
}
@@ -186,9 +203,9 @@ OC.Share={
OC.Share.showLink(share.token, share.share_with, itemSource);
} else {
if (share.collection) {
- OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions, share.collection);
+ OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.collection);
} else {
- OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions, false);
+ OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, false);
}
}
if (share.expiration != null) {
@@ -228,7 +245,7 @@ OC.Share={
// Default permissions are Read and Share
var permissions = OC.PERMISSION_READ | OC.PERMISSION_SHARE;
OC.Share.share(itemType, itemSource, shareType, shareWith, permissions, function() {
- OC.Share.addShareWith(shareType, shareWith, permissions, possiblePermissions);
+ OC.Share.addShareWith(shareType, shareWith, selected.item.label, permissions, possiblePermissions);
$('#shareWith').val('');
OC.Share.updateIcon(itemType, itemSource);
});
@@ -257,7 +274,7 @@ OC.Share={
}
});
},
- addShareWith:function(shareType, shareWith, permissions, possiblePermissions, collection) {
+ addShareWith:function(shareType, shareWith, shareWithDisplayName, permissions, possiblePermissions, collection) {
if (!OC.Share.itemShares[shareType]) {
OC.Share.itemShares[shareType] = [];
}
@@ -272,7 +289,7 @@ OC.Share={
if (collectionList.length > 0) {
$(collectionList).append(', '+shareWith);
} else {
- var html = '
'+t('core', 'Shared in {item} with {user}', {'item': item, user: shareWith})+'
';
+ var html = '
'+t('core', 'Shared in {item} with {user}', {'item': item, user: shareWithDisplayName})+'
';
$('#shareWithList').prepend(html);
}
} else {
@@ -295,9 +312,9 @@ OC.Share={
var html = '
';
html += '';
if(shareWith.length > 14){
- html += shareWith.substr(0,11) + '...';
+ html += shareWithDisplayName.substr(0,11) + '...';
}else{
- html += shareWith;
+ html += shareWithDisplayName;
}
if (possiblePermissions & OC.PERMISSION_CREATE || possiblePermissions & OC.PERMISSION_UPDATE || possiblePermissions & OC.PERMISSION_DELETE) {
if (editChecked == '') {
diff --git a/core/js/update.js b/core/js/update.js
new file mode 100644
index 00000000000..8ab02bbf935
--- /dev/null
+++ b/core/js/update.js
@@ -0,0 +1,23 @@
+$(document).ready(function () {
+ var updateEventSource = new OC.EventSource(OC.webroot+'/core/ajax/update.php');
+ updateEventSource.listen('success', function(message) {
+ $('').append(message).append(' ').appendTo($('.update'));
+ });
+ updateEventSource.listen('error', function(message) {
+ $('').addClass('error').append(message).append(' ').appendTo($('.update'));
+ });
+ updateEventSource.listen('failure', function(message) {
+ $('').addClass('error').append(message).append(' ').appendTo($('.update'));
+ $('')
+ .addClass('error bold')
+ .append(' ')
+ .append(t('core', 'The update was unsuccessful. Please report this issue to the ownCloud community.'))
+ .appendTo($('.update'));
+ });
+ updateEventSource.listen('done', function(message) {
+ $('').addClass('bold').append(' ').append(t('core', 'The update was successful. Redirecting you to ownCloud now.')).appendTo($('.update'));
+ setTimeout(function () {
+ window.location.href = OC.webroot;
+ }, 3000);
+ });
+});
\ No newline at end of file
diff --git a/core/l10n/ar.php b/core/l10n/ar.php
index 38450f8d54f..218eeed0722 100644
--- a/core/l10n/ar.php
+++ b/core/l10n/ar.php
@@ -2,6 +2,25 @@
"No category to add?" => "ألا توجد فئة للإضافة؟",
"This category already exists: " => "هذه الفئة موجودة مسبقاً",
"No categories selected for deletion." => "لم يتم اختيار فئة للحذف",
+"Sunday" => "الاحد",
+"Monday" => "الأثنين",
+"Tuesday" => "الثلاثاء",
+"Wednesday" => "الاربعاء",
+"Thursday" => "الخميس",
+"Friday" => "الجمعه",
+"Saturday" => "السبت",
+"January" => "كانون الثاني",
+"February" => "شباط",
+"March" => "آذار",
+"April" => "نيسان",
+"May" => "أيار",
+"June" => "حزيران",
+"July" => "تموز",
+"August" => "آب",
+"September" => "أيلول",
+"October" => "تشرين الاول",
+"November" => "تشرين الثاني",
+"December" => "كانون الاول",
"Settings" => "تعديلات",
"seconds ago" => "منذ ثواني",
"1 minute ago" => "منذ دقيقة",
@@ -13,6 +32,7 @@
"Yes" => "نعم",
"Ok" => "موافق",
"Error" => "خطأ",
+"Share" => "شارك",
"Error while sharing" => "حصل خطأ عند عملية المشاركة",
"Error while unsharing" => "حصل خطأ عند عملية إزالة المشاركة",
"Error while changing permissions" => "حصل خطأ عند عملية إعادة تعيين التصريح بالتوصل",
@@ -71,25 +91,6 @@
"Database tablespace" => "مساحة جدول قاعدة البيانات",
"Database host" => "خادم قاعدة البيانات",
"Finish setup" => "انهاء التعديلات",
-"Sunday" => "الاحد",
-"Monday" => "الأثنين",
-"Tuesday" => "الثلاثاء",
-"Wednesday" => "الاربعاء",
-"Thursday" => "الخميس",
-"Friday" => "الجمعه",
-"Saturday" => "السبت",
-"January" => "كانون الثاني",
-"February" => "شباط",
-"March" => "آذار",
-"April" => "نيسان",
-"May" => "أيار",
-"June" => "حزيران",
-"July" => "تموز",
-"August" => "آب",
-"September" => "أيلول",
-"October" => "تشرين الاول",
-"November" => "تشرين الثاني",
-"December" => "كانون الاول",
"web services under your control" => "خدمات الوب تحت تصرفك",
"Log out" => "الخروج",
"Automatic logon rejected!" => "تم رفض تسجيل الدخول التلقائي!",
diff --git a/core/l10n/bg_BG.php b/core/l10n/bg_BG.php
index 9a2716277a3..587991499a9 100644
--- a/core/l10n/bg_BG.php
+++ b/core/l10n/bg_BG.php
@@ -9,6 +9,7 @@
"last year" => "последната година",
"years ago" => "последните години",
"Error" => "Грешка",
+"Share" => "Споделяне",
"Password" => "Парола",
"Personal" => "Лични",
"Users" => "Потребители",
diff --git a/core/l10n/bn_BD.php b/core/l10n/bn_BD.php
index 333e4bf0be5..d698f470152 100644
--- a/core/l10n/bn_BD.php
+++ b/core/l10n/bn_BD.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "প্রিয়তে %s যোগ করতে সমস্যা দেখা দিয়েছে।",
"No categories selected for deletion." => "মুছে ফেলার জন্য কোন ক্যাটেগরি নির্বাচন করা হয় নি ।",
"Error removing %s from favorites." => "প্রিয় থেকে %s সরিয়ে ফেলতে সমস্যা দেখা দিয়েছে।",
+"Sunday" => "রবিবার",
+"Monday" => "সোমবার",
+"Tuesday" => "মঙ্গলবার",
+"Wednesday" => "বুধবার",
+"Thursday" => "বৃহষ্পতিবার",
+"Friday" => "শুক্রবার",
+"Saturday" => "শনিবার",
+"January" => "জানুয়ারি",
+"February" => "ফেব্রুয়ারি",
+"March" => "মার্চ",
+"April" => "এপ্রিল",
+"May" => "মে",
+"June" => "জুন",
+"July" => "জুলাই",
+"August" => "অগাষ্ট",
+"September" => "সেপ্টেম্বর",
+"October" => "অক্টোবর",
+"November" => "নভেম্বর",
+"December" => "ডিসেম্বর",
"Settings" => "নিয়ামকসমূহ",
"seconds ago" => "সেকেন্ড পূর্বে",
"1 minute ago" => "1 মিনিট পূর্বে",
@@ -34,6 +53,7 @@
"Error" => "সমস্যা",
"The app name is not specified." => "অ্যাপের নামটি সুনির্দিষ্ট নয়।",
"The required file {file} is not installed!" => "আবশ্যিক {file} টি সংস্থাপিত নেই !",
+"Share" => "ভাগাভাগি কর",
"Error while sharing" => "ভাগাভাগি করতে সমস্যা দেখা দিয়েছে ",
"Error while unsharing" => "ভাগাভাগি বাতিল করতে সমস্যা দেখা দিয়েছে",
"Error while changing permissions" => "অনুমতিসমূহ পরিবর্তন করতে সমস্যা দেখা দিয়েছে",
@@ -95,25 +115,6 @@
"Database tablespace" => "ডাটাবেজ টেবলস্পেস",
"Database host" => "ডাটাবেজ হোস্ট",
"Finish setup" => "সেটআপ সুসম্পন্ন কর",
-"Sunday" => "রবিবার",
-"Monday" => "সোমবার",
-"Tuesday" => "মঙ্গলবার",
-"Wednesday" => "বুধবার",
-"Thursday" => "বৃহষ্পতিবার",
-"Friday" => "শুক্রবার",
-"Saturday" => "শনিবার",
-"January" => "জানুয়ারি",
-"February" => "ফেব্রুয়ারি",
-"March" => "মার্চ",
-"April" => "এপ্রিল",
-"May" => "মে",
-"June" => "জুন",
-"July" => "জুলাই",
-"August" => "অগাষ্ট",
-"September" => "সেপ্টেম্বর",
-"October" => "অক্টোবর",
-"November" => "নভেম্বর",
-"December" => "ডিসেম্বর",
"web services under your control" => "ওয়েব সার্ভিসের নিয়ন্ত্রণ আপনার হাতের মুঠোয়",
"Log out" => "প্রস্থান",
"Lost your password?" => "কূটশব্দ হারিয়েছেন?",
diff --git a/core/l10n/ca.php b/core/l10n/ca.php
index e66bad25e43..780366aaf0e 100644
--- a/core/l10n/ca.php
+++ b/core/l10n/ca.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Error en afegir %s als preferits.",
"No categories selected for deletion." => "No hi ha categories per eliminar.",
"Error removing %s from favorites." => "Error en eliminar %s dels preferits.",
+"Sunday" => "Diumenge",
+"Monday" => "Dilluns",
+"Tuesday" => "Dimarts",
+"Wednesday" => "Dimecres",
+"Thursday" => "Dijous",
+"Friday" => "Divendres",
+"Saturday" => "Dissabte",
+"January" => "Gener",
+"February" => "Febrer",
+"March" => "Març",
+"April" => "Abril",
+"May" => "Maig",
+"June" => "Juny",
+"July" => "Juliol",
+"August" => "Agost",
+"September" => "Setembre",
+"October" => "Octubre",
+"November" => "Novembre",
+"December" => "Desembre",
"Settings" => "Arranjament",
"seconds ago" => "segons enrere",
"1 minute ago" => "fa 1 minut",
@@ -34,6 +53,8 @@
"Error" => "Error",
"The app name is not specified." => "No s'ha especificat el nom de l'aplicació.",
"The required file {file} is not installed!" => "El fitxer requerit {file} no està instal·lat!",
+"Share" => "Comparteix",
+"Shared" => "Compartit",
"Error while sharing" => "Error en compartir",
"Error while unsharing" => "Error en deixar de compartir",
"Error while changing permissions" => "Error en canviar els permisos",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Error en establir la data d'expiració",
"Sending ..." => "Enviant...",
"Email sent" => "El correu electrónic s'ha enviat",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "L'actualització ha estat incorrecte. Comuniqueu aquest error a la comunitat ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "L'actualització ha estat correcte. Ara sou redireccionat a ownCloud.",
"ownCloud password reset" => "estableix de nou la contrasenya Owncloud",
"Use the following link to reset your password: {link}" => "Useu l'enllaç següent per restablir la contrasenya: {link}",
"You will receive a link to reset your password via Email." => "Rebreu un enllaç al correu electrònic per reiniciar la contrasenya.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Espai de taula de la base de dades",
"Database host" => "Ordinador central de la base de dades",
"Finish setup" => "Acaba la configuració",
-"Sunday" => "Diumenge",
-"Monday" => "Dilluns",
-"Tuesday" => "Dimarts",
-"Wednesday" => "Dimecres",
-"Thursday" => "Dijous",
-"Friday" => "Divendres",
-"Saturday" => "Dissabte",
-"January" => "Gener",
-"February" => "Febrer",
-"March" => "Març",
-"April" => "Abril",
-"May" => "Maig",
-"June" => "Juny",
-"July" => "Juliol",
-"August" => "Agost",
-"September" => "Setembre",
-"October" => "Octubre",
-"November" => "Novembre",
-"December" => "Desembre",
"web services under your control" => "controleu els vostres serveis web",
"Log out" => "Surt",
"Automatic logon rejected!" => "L'ha rebutjat l'acceditació automàtica!",
diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php
index 7a766bd7176..a8fa035711c 100644
--- a/core/l10n/cs_CZ.php
+++ b/core/l10n/cs_CZ.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Chyba při přidávání %s k oblíbeným.",
"No categories selected for deletion." => "Žádné kategorie nebyly vybrány ke smazání.",
"Error removing %s from favorites." => "Chyba při odebírání %s z oblíbených.",
+"Sunday" => "Neděle",
+"Monday" => "Pondělí",
+"Tuesday" => "Úterý",
+"Wednesday" => "Středa",
+"Thursday" => "Čtvrtek",
+"Friday" => "Pátek",
+"Saturday" => "Sobota",
+"January" => "Leden",
+"February" => "Únor",
+"March" => "Březen",
+"April" => "Duben",
+"May" => "Květen",
+"June" => "Červen",
+"July" => "Červenec",
+"August" => "Srpen",
+"September" => "Září",
+"October" => "Říjen",
+"November" => "Listopad",
+"December" => "Prosinec",
"Settings" => "Nastavení",
"seconds ago" => "před pár vteřinami",
"1 minute ago" => "před minutou",
@@ -34,6 +53,8 @@
"Error" => "Chyba",
"The app name is not specified." => "Není určen název aplikace.",
"The required file {file} is not installed!" => "Požadovaný soubor {file} není nainstalován.",
+"Share" => "Sdílet",
+"Shared" => "Sdílené",
"Error while sharing" => "Chyba při sdílení",
"Error while unsharing" => "Chyba při rušení sdílení",
"Error while changing permissions" => "Chyba při změně oprávnění",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Chyba při nastavení data vypršení platnosti",
"Sending ..." => "Odesílám...",
"Email sent" => "E-mail odeslán",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Aktualizace neproběhla úspěšně. Nahlaste prosím problém do evidence chyb ownCloud",
+"The update was successful. Redirecting you to ownCloud now." => "Aktualizace byla úspěšná. Přesměrovávám na ownCloud.",
"ownCloud password reset" => "Obnovení hesla pro ownCloud",
"Use the following link to reset your password: {link}" => "Heslo obnovíte použitím následujícího odkazu: {link}",
"You will receive a link to reset your password via Email." => "Bude Vám e-mailem zaslán odkaz pro obnovu hesla.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Tabulkový prostor databáze",
"Database host" => "Hostitel databáze",
"Finish setup" => "Dokončit nastavení",
-"Sunday" => "Neděle",
-"Monday" => "Pondělí",
-"Tuesday" => "Úterý",
-"Wednesday" => "Středa",
-"Thursday" => "Čtvrtek",
-"Friday" => "Pátek",
-"Saturday" => "Sobota",
-"January" => "Leden",
-"February" => "Únor",
-"March" => "Březen",
-"April" => "Duben",
-"May" => "Květen",
-"June" => "Červen",
-"July" => "Červenec",
-"August" => "Srpen",
-"September" => "Září",
-"October" => "Říjen",
-"November" => "Listopad",
-"December" => "Prosinec",
"web services under your control" => "webové služby pod Vaší kontrolou",
"Log out" => "Odhlásit se",
"Automatic logon rejected!" => "Automatické přihlášení odmítnuto.",
diff --git a/core/l10n/da.php b/core/l10n/da.php
index 12c4c693c83..ca23b622289 100644
--- a/core/l10n/da.php
+++ b/core/l10n/da.php
@@ -53,6 +53,7 @@
"Error" => "Fejl",
"The app name is not specified." => "Den app navn er ikke angivet.",
"The required file {file} is not installed!" => "Den krævede fil {file} er ikke installeret!",
+"Share" => "Del",
"Error while sharing" => "Fejl under deling",
"Error while unsharing" => "Fejl under annullering af deling",
"Error while changing permissions" => "Fejl under justering af rettigheder",
@@ -82,6 +83,8 @@
"Error setting expiration date" => "Fejl under sætning af udløbsdato",
"Sending ..." => "Sender ...",
"Email sent" => "E-mail afsendt",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Opdateringen blev ikke udført korrekt. Rapporter venligst problemet til ownClouds community.",
+"The update was successful. Redirecting you to ownCloud now." => "Opdateringen blev udført korrekt. Du bliver nu viderestillet til ownCloud.",
"ownCloud password reset" => "Nulstil ownCloud kodeord",
"Use the following link to reset your password: {link}" => "Anvend følgende link til at nulstille din adgangskode: {link}",
"You will receive a link to reset your password via Email." => "Du vil modtage et link til at nulstille dit kodeord via email.",
diff --git a/core/l10n/de.php b/core/l10n/de.php
index b7ad57cf4c5..358e8e3e756 100644
--- a/core/l10n/de.php
+++ b/core/l10n/de.php
@@ -53,6 +53,7 @@
"Error" => "Fehler",
"The app name is not specified." => "Der App-Name ist nicht angegeben.",
"The required file {file} is not installed!" => "Die benötigte Datei {file} ist nicht installiert.",
+"Share" => "Freigeben",
"Error while sharing" => "Fehler beim Freigeben",
"Error while unsharing" => "Fehler beim Aufheben der Freigabe",
"Error while changing permissions" => "Fehler beim Ändern der Rechte",
@@ -82,6 +83,8 @@
"Error setting expiration date" => "Fehler beim Setzen des Ablaufdatums",
"Sending ..." => "Sende ...",
"Email sent" => "E-Mail wurde verschickt",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die ownCloud Gemeinschaft.",
+"The update was successful. Redirecting you to ownCloud now." => "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet.",
"ownCloud password reset" => "ownCloud-Passwort zurücksetzen",
"Use the following link to reset your password: {link}" => "Nutze den nachfolgenden Link, um Dein Passwort zurückzusetzen: {link}",
"You will receive a link to reset your password via Email." => "Du erhältst einen Link per E-Mail, um Dein Passwort zurückzusetzen.",
diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php
index d62b000c0ab..ca5b843a832 100644
--- a/core/l10n/de_DE.php
+++ b/core/l10n/de_DE.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Fehler beim Hinzufügen von %s zu den Favoriten.",
"No categories selected for deletion." => "Es wurden keine Kategorien zum Löschen ausgewählt.",
"Error removing %s from favorites." => "Fehler beim Entfernen von %s von den Favoriten.",
+"Sunday" => "Sonntag",
+"Monday" => "Montag",
+"Tuesday" => "Dienstag",
+"Wednesday" => "Mittwoch",
+"Thursday" => "Donnerstag",
+"Friday" => "Freitag",
+"Saturday" => "Samstag",
+"January" => "Januar",
+"February" => "Februar",
+"March" => "März",
+"April" => "April",
+"May" => "Mai",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "August",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "Dezember",
"Settings" => "Einstellungen",
"seconds ago" => "Gerade eben",
"1 minute ago" => "Vor 1 Minute",
@@ -34,6 +53,8 @@
"Error" => "Fehler",
"The app name is not specified." => "Der App-Name ist nicht angegeben.",
"The required file {file} is not installed!" => "Die benötigte Datei {file} ist nicht installiert.",
+"Share" => "Freigeben",
+"Shared" => "Freigegeben",
"Error while sharing" => "Fehler bei der Freigabe",
"Error while unsharing" => "Fehler bei der Aufhebung der Freigabe",
"Error while changing permissions" => "Fehler bei der Änderung der Rechte",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Fehler beim Setzen des Ablaufdatums",
"Sending ..." => "Sende ...",
"Email sent" => "Email gesendet",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die ownCloud Gemeinschaft.",
+"The update was successful. Redirecting you to ownCloud now." => "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet.",
"ownCloud password reset" => "ownCloud-Passwort zurücksetzen",
"Use the following link to reset your password: {link}" => "Nutzen Sie den nachfolgenden Link, um Ihr Passwort zurückzusetzen: {link}",
"You will receive a link to reset your password via Email." => "Sie erhalten einen Link per E-Mail, um Ihr Passwort zurückzusetzen.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Datenbank-Tablespace",
"Database host" => "Datenbank-Host",
"Finish setup" => "Installation abschließen",
-"Sunday" => "Sonntag",
-"Monday" => "Montag",
-"Tuesday" => "Dienstag",
-"Wednesday" => "Mittwoch",
-"Thursday" => "Donnerstag",
-"Friday" => "Freitag",
-"Saturday" => "Samstag",
-"January" => "Januar",
-"February" => "Februar",
-"March" => "März",
-"April" => "April",
-"May" => "Mai",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "August",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "Dezember",
"web services under your control" => "Web-Services unter Ihrer Kontrolle",
"Log out" => "Abmelden",
"Automatic logon rejected!" => "Automatische Anmeldung verweigert.",
diff --git a/core/l10n/el.php b/core/l10n/el.php
index c029b01fd9c..74ec378b9df 100644
--- a/core/l10n/el.php
+++ b/core/l10n/el.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Σφάλμα προσθήκης %s στα αγαπημένα.",
"No categories selected for deletion." => "Δεν επιλέχτηκαν κατηγορίες για διαγραφή.",
"Error removing %s from favorites." => "Σφάλμα αφαίρεσης %s από τα αγαπημένα.",
+"Sunday" => "Κυριακή",
+"Monday" => "Δευτέρα",
+"Tuesday" => "Τρίτη",
+"Wednesday" => "Τετάρτη",
+"Thursday" => "Πέμπτη",
+"Friday" => "Παρασκευή",
+"Saturday" => "Σάββατο",
+"January" => "Ιανουάριος",
+"February" => "Φεβρουάριος",
+"March" => "Μάρτιος",
+"April" => "Απρίλιος",
+"May" => "Μάϊος",
+"June" => "Ιούνιος",
+"July" => "Ιούλιος",
+"August" => "Αύγουστος",
+"September" => "Σεπτέμβριος",
+"October" => "Οκτώβριος",
+"November" => "Νοέμβριος",
+"December" => "Δεκέμβριος",
"Settings" => "Ρυθμίσεις",
"seconds ago" => "δευτερόλεπτα πριν",
"1 minute ago" => "1 λεπτό πριν",
@@ -34,6 +53,7 @@
"Error" => "Σφάλμα",
"The app name is not specified." => "Δεν καθορίστηκε το όνομα της εφαρμογής.",
"The required file {file} is not installed!" => "Το απαιτούμενο αρχείο {file} δεν εγκαταστάθηκε!",
+"Share" => "Διαμοιρασμός",
"Error while sharing" => "Σφάλμα κατά τον διαμοιρασμό",
"Error while unsharing" => "Σφάλμα κατά το σταμάτημα του διαμοιρασμού",
"Error while changing permissions" => "Σφάλμα κατά την αλλαγή των δικαιωμάτων",
@@ -98,25 +118,6 @@
"Database tablespace" => "Κενά Πινάκων Βάσης Δεδομένων",
"Database host" => "Διακομιστής βάσης δεδομένων",
"Finish setup" => "Ολοκλήρωση εγκατάστασης",
-"Sunday" => "Κυριακή",
-"Monday" => "Δευτέρα",
-"Tuesday" => "Τρίτη",
-"Wednesday" => "Τετάρτη",
-"Thursday" => "Πέμπτη",
-"Friday" => "Παρασκευή",
-"Saturday" => "Σάββατο",
-"January" => "Ιανουάριος",
-"February" => "Φεβρουάριος",
-"March" => "Μάρτιος",
-"April" => "Απρίλιος",
-"May" => "Μάϊος",
-"June" => "Ιούνιος",
-"July" => "Ιούλιος",
-"August" => "Αύγουστος",
-"September" => "Σεπτέμβριος",
-"October" => "Οκτώβριος",
-"November" => "Νοέμβριος",
-"December" => "Δεκέμβριος",
"web services under your control" => "Υπηρεσίες web υπό τον έλεγχό σας",
"Log out" => "Αποσύνδεση",
"Automatic logon rejected!" => "Απορρίφθηκε η αυτόματη σύνδεση!",
diff --git a/core/l10n/eo.php b/core/l10n/eo.php
index 0319eeef2d4..7c0e65f4e03 100644
--- a/core/l10n/eo.php
+++ b/core/l10n/eo.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Eraro dum aldono de %s al favoratoj.",
"No categories selected for deletion." => "Neniu kategorio elektiĝis por forigo.",
"Error removing %s from favorites." => "Eraro dum forigo de %s el favoratoj.",
+"Sunday" => "dimanĉo",
+"Monday" => "lundo",
+"Tuesday" => "mardo",
+"Wednesday" => "merkredo",
+"Thursday" => "ĵaŭdo",
+"Friday" => "vendredo",
+"Saturday" => "sabato",
+"January" => "Januaro",
+"February" => "Februaro",
+"March" => "Marto",
+"April" => "Aprilo",
+"May" => "Majo",
+"June" => "Junio",
+"July" => "Julio",
+"August" => "Aŭgusto",
+"September" => "Septembro",
+"October" => "Oktobro",
+"November" => "Novembro",
+"December" => "Decembro",
"Settings" => "Agordo",
"seconds ago" => "sekundoj antaŭe",
"1 minute ago" => "antaŭ 1 minuto",
@@ -34,6 +53,7 @@
"Error" => "Eraro",
"The app name is not specified." => "Ne indikiĝis nomo de la aplikaĵo.",
"The required file {file} is not installed!" => "La necesa dosiero {file} ne instaliĝis!",
+"Share" => "Kunhavigi",
"Error while sharing" => "Eraro dum kunhavigo",
"Error while unsharing" => "Eraro dum malkunhavigo",
"Error while changing permissions" => "Eraro dum ŝanĝo de permesoj",
@@ -95,25 +115,6 @@
"Database tablespace" => "Datumbaza tabelospaco",
"Database host" => "Datumbaza gastigo",
"Finish setup" => "Fini la instalon",
-"Sunday" => "dimanĉo",
-"Monday" => "lundo",
-"Tuesday" => "mardo",
-"Wednesday" => "merkredo",
-"Thursday" => "ĵaŭdo",
-"Friday" => "vendredo",
-"Saturday" => "sabato",
-"January" => "Januaro",
-"February" => "Februaro",
-"March" => "Marto",
-"April" => "Aprilo",
-"May" => "Majo",
-"June" => "Junio",
-"July" => "Julio",
-"August" => "Aŭgusto",
-"September" => "Septembro",
-"October" => "Oktobro",
-"November" => "Novembro",
-"December" => "Decembro",
"web services under your control" => "TTT-servoj sub via kontrolo",
"Log out" => "Elsaluti",
"If you did not change your password recently, your account may be compromised!" => "Se vi ne ŝanĝis vian pasvorton lastatempe, via konto eble kompromitas!",
diff --git a/core/l10n/es.php b/core/l10n/es.php
index 4f8f1936c7f..e046e3bf7a0 100644
--- a/core/l10n/es.php
+++ b/core/l10n/es.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Error añadiendo %s a los favoritos.",
"No categories selected for deletion." => "No hay categorías seleccionadas para borrar.",
"Error removing %s from favorites." => "Error eliminando %s de los favoritos.",
+"Sunday" => "Domingo",
+"Monday" => "Lunes",
+"Tuesday" => "Martes",
+"Wednesday" => "Miércoles",
+"Thursday" => "Jueves",
+"Friday" => "Viernes",
+"Saturday" => "Sábado",
+"January" => "Enero",
+"February" => "Febrero",
+"March" => "Marzo",
+"April" => "Abril",
+"May" => "Mayo",
+"June" => "Junio",
+"July" => "Julio",
+"August" => "Agosto",
+"September" => "Septiembre",
+"October" => "Octubre",
+"November" => "Noviembre",
+"December" => "Diciembre",
"Settings" => "Ajustes",
"seconds ago" => "hace segundos",
"1 minute ago" => "hace 1 minuto",
@@ -34,6 +53,8 @@
"Error" => "Fallo",
"The app name is not specified." => "El nombre de la app no se ha especificado.",
"The required file {file} is not installed!" => "El fichero {file} requerido, no está instalado.",
+"Share" => "Compartir",
+"Shared" => "Compartido",
"Error while sharing" => "Error compartiendo",
"Error while unsharing" => "Error descompartiendo",
"Error while changing permissions" => "Error cambiando permisos",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Error estableciendo fecha de caducidad",
"Sending ..." => "Enviando...",
"Email sent" => "Correo electrónico enviado",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "La actualización ha fracasado. Por favor, informe este problema a la Comunidad de ownCloud a>.",
+"The update was successful. Redirecting you to ownCloud now." => "La actualización se ha realizado correctamente. Redireccionando a ownCloud ahora.",
"ownCloud password reset" => "Reiniciar contraseña de ownCloud",
"Use the following link to reset your password: {link}" => "Utiliza el siguiente enlace para restablecer tu contraseña: {link}",
"You will receive a link to reset your password via Email." => "Recibirás un enlace por correo electrónico para restablecer tu contraseña",
@@ -98,25 +121,6 @@
"Database tablespace" => "Espacio de tablas de la base de datos",
"Database host" => "Host de la base de datos",
"Finish setup" => "Completar la instalación",
-"Sunday" => "Domingo",
-"Monday" => "Lunes",
-"Tuesday" => "Martes",
-"Wednesday" => "Miércoles",
-"Thursday" => "Jueves",
-"Friday" => "Viernes",
-"Saturday" => "Sábado",
-"January" => "Enero",
-"February" => "Febrero",
-"March" => "Marzo",
-"April" => "Abril",
-"May" => "Mayo",
-"June" => "Junio",
-"July" => "Julio",
-"August" => "Agosto",
-"September" => "Septiembre",
-"October" => "Octubre",
-"November" => "Noviembre",
-"December" => "Diciembre",
"web services under your control" => "servicios web bajo tu control",
"Log out" => "Salir",
"Automatic logon rejected!" => "¡Inicio de sesión automático rechazado!",
diff --git a/core/l10n/es_AR.php b/core/l10n/es_AR.php
index 374a679260b..1ce26416f6e 100644
--- a/core/l10n/es_AR.php
+++ b/core/l10n/es_AR.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Error al agregar %s a favoritos. ",
"No categories selected for deletion." => "No hay categorías seleccionadas para borrar.",
"Error removing %s from favorites." => "Error al remover %s de favoritos. ",
+"Sunday" => "Domingo",
+"Monday" => "Lunes",
+"Tuesday" => "Martes",
+"Wednesday" => "Miércoles",
+"Thursday" => "Jueves",
+"Friday" => "Viernes",
+"Saturday" => "Sábado",
+"January" => "Enero",
+"February" => "Febrero",
+"March" => "Marzo",
+"April" => "Abril",
+"May" => "Mayo",
+"June" => "Junio",
+"July" => "Julio",
+"August" => "Agosto",
+"September" => "Septiembre",
+"October" => "Octubre",
+"November" => "Noviembre",
+"December" => "Diciembre",
"Settings" => "Ajustes",
"seconds ago" => "segundos atrás",
"1 minute ago" => "hace 1 minuto",
@@ -34,6 +53,8 @@
"Error" => "Error",
"The app name is not specified." => "El nombre de la aplicación no esta especificado.",
"The required file {file} is not installed!" => "¡El archivo requerido {file} no está instalado!",
+"Share" => "Compartir",
+"Shared" => "Compartido",
"Error while sharing" => "Error al compartir",
"Error while unsharing" => "Error en el procedimiento de ",
"Error while changing permissions" => "Error al cambiar permisos",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Error al asignar fecha de vencimiento",
"Sending ..." => "Enviando...",
"Email sent" => "Email enviado",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "La actualización no pudo ser completada. Por favor, reportá el inconveniente a la comunidad ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "La actualización fue exitosa. Estás siendo redirigido a ownCloud.",
"ownCloud password reset" => "Restablecer contraseña de ownCloud",
"Use the following link to reset your password: {link}" => "Usá este enlace para restablecer tu contraseña: {link}",
"You will receive a link to reset your password via Email." => "Vas a recibir un enlace por e-mail para restablecer tu contraseña",
@@ -98,25 +121,6 @@
"Database tablespace" => "Espacio de tablas de la base de datos",
"Database host" => "Host de la base de datos",
"Finish setup" => "Completar la instalación",
-"Sunday" => "Domingo",
-"Monday" => "Lunes",
-"Tuesday" => "Martes",
-"Wednesday" => "Miércoles",
-"Thursday" => "Jueves",
-"Friday" => "Viernes",
-"Saturday" => "Sábado",
-"January" => "Enero",
-"February" => "Febrero",
-"March" => "Marzo",
-"April" => "Abril",
-"May" => "Mayo",
-"June" => "Junio",
-"July" => "Julio",
-"August" => "Agosto",
-"September" => "Septiembre",
-"October" => "Octubre",
-"November" => "Noviembre",
-"December" => "Diciembre",
"web services under your control" => "servicios web sobre los que tenés control",
"Log out" => "Cerrar la sesión",
"Automatic logon rejected!" => "¡El inicio de sesión automático fue rechazado!",
diff --git a/core/l10n/et_EE.php b/core/l10n/et_EE.php
index b79dd4761e7..f4328de9901 100644
--- a/core/l10n/et_EE.php
+++ b/core/l10n/et_EE.php
@@ -2,6 +2,25 @@
"No category to add?" => "Pole kategooriat, mida lisada?",
"This category already exists: " => "See kategooria on juba olemas: ",
"No categories selected for deletion." => "Kustutamiseks pole kategooriat valitud.",
+"Sunday" => "Pühapäev",
+"Monday" => "Esmaspäev",
+"Tuesday" => "Teisipäev",
+"Wednesday" => "Kolmapäev",
+"Thursday" => "Neljapäev",
+"Friday" => "Reede",
+"Saturday" => "Laupäev",
+"January" => "Jaanuar",
+"February" => "Veebruar",
+"March" => "Märts",
+"April" => "Aprill",
+"May" => "Mai",
+"June" => "Juuni",
+"July" => "Juuli",
+"August" => "August",
+"September" => "September",
+"October" => "Oktoober",
+"November" => "November",
+"December" => "Detsember",
"Settings" => "Seaded",
"seconds ago" => "sekundit tagasi",
"1 minute ago" => "1 minut tagasi",
@@ -19,6 +38,7 @@
"Yes" => "Jah",
"Ok" => "Ok",
"Error" => "Viga",
+"Share" => "Jaga",
"Error while sharing" => "Viga jagamisel",
"Error while unsharing" => "Viga jagamise lõpetamisel",
"Error while changing permissions" => "Viga õiguste muutmisel",
@@ -74,25 +94,6 @@
"Database tablespace" => "Andmebaasi tabeliruum",
"Database host" => "Andmebaasi host",
"Finish setup" => "Lõpeta seadistamine",
-"Sunday" => "Pühapäev",
-"Monday" => "Esmaspäev",
-"Tuesday" => "Teisipäev",
-"Wednesday" => "Kolmapäev",
-"Thursday" => "Neljapäev",
-"Friday" => "Reede",
-"Saturday" => "Laupäev",
-"January" => "Jaanuar",
-"February" => "Veebruar",
-"March" => "Märts",
-"April" => "Aprill",
-"May" => "Mai",
-"June" => "Juuni",
-"July" => "Juuli",
-"August" => "August",
-"September" => "September",
-"October" => "Oktoober",
-"November" => "November",
-"December" => "Detsember",
"web services under your control" => "veebiteenused sinu kontrolli all",
"Log out" => "Logi välja",
"Automatic logon rejected!" => "Automaatne sisselogimine lükati tagasi!",
diff --git a/core/l10n/eu.php b/core/l10n/eu.php
index 3f1a2909531..ed919d64d9d 100644
--- a/core/l10n/eu.php
+++ b/core/l10n/eu.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Errorea gertatu da %s gogokoetara gehitzean.",
"No categories selected for deletion." => "Ez da ezabatzeko kategoriarik hautatu.",
"Error removing %s from favorites." => "Errorea gertatu da %s gogokoetatik ezabatzean.",
+"Sunday" => "Igandea",
+"Monday" => "Astelehena",
+"Tuesday" => "Asteartea",
+"Wednesday" => "Asteazkena",
+"Thursday" => "Osteguna",
+"Friday" => "Ostirala",
+"Saturday" => "Larunbata",
+"January" => "Urtarrila",
+"February" => "Otsaila",
+"March" => "Martxoa",
+"April" => "Apirila",
+"May" => "Maiatza",
+"June" => "Ekaina",
+"July" => "Uztaila",
+"August" => "Abuztua",
+"September" => "Iraila",
+"October" => "Urria",
+"November" => "Azaroa",
+"December" => "Abendua",
"Settings" => "Ezarpenak",
"seconds ago" => "segundu",
"1 minute ago" => "orain dela minutu 1",
@@ -34,6 +53,8 @@
"Error" => "Errorea",
"The app name is not specified." => "App izena ez dago zehaztuta.",
"The required file {file} is not installed!" => "Beharrezkoa den {file} fitxategia ez dago instalatuta!",
+"Share" => "Elkarbanatu",
+"Shared" => "Elkarbanatuta",
"Error while sharing" => "Errore bat egon da elkarbanatzean",
"Error while unsharing" => "Errore bat egon da elkarbanaketa desegitean",
"Error while changing permissions" => "Errore bat egon da baimenak aldatzean",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Errore bat egon da muga data ezartzean",
"Sending ..." => "Bidaltzen ...",
"Email sent" => "Eposta bidalia",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Eguneraketa ez da ongi egin. Mesedez egin arazoaren txosten bat ownCloud komunitatearentzako.",
+"The update was successful. Redirecting you to ownCloud now." => "Eguneraketa ongi egin da. Orain zure ownClouderea berbideratua izango zara.",
"ownCloud password reset" => "ownCloud-en pasahitza berrezarri",
"Use the following link to reset your password: {link}" => "Eribili hurrengo lotura zure pasahitza berrezartzeko: {link}",
"You will receive a link to reset your password via Email." => "Zure pashitza berrezartzeko lotura bat jasoko duzu Epostaren bidez.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Datu basearen taula-lekua",
"Database host" => "Datubasearen hostalaria",
"Finish setup" => "Bukatu konfigurazioa",
-"Sunday" => "Igandea",
-"Monday" => "Astelehena",
-"Tuesday" => "Asteartea",
-"Wednesday" => "Asteazkena",
-"Thursday" => "Osteguna",
-"Friday" => "Ostirala",
-"Saturday" => "Larunbata",
-"January" => "Urtarrila",
-"February" => "Otsaila",
-"March" => "Martxoa",
-"April" => "Apirila",
-"May" => "Maiatza",
-"June" => "Ekaina",
-"July" => "Uztaila",
-"August" => "Abuztua",
-"September" => "Iraila",
-"October" => "Urria",
-"November" => "Azaroa",
-"December" => "Abendua",
"web services under your control" => "web zerbitzuak zure kontrolpean",
"Log out" => "Saioa bukatu",
"Automatic logon rejected!" => "Saio hasiera automatikoa ez onartuta!",
diff --git a/core/l10n/fa.php b/core/l10n/fa.php
index 7ed2831d821..6f1f65bd34f 100644
--- a/core/l10n/fa.php
+++ b/core/l10n/fa.php
@@ -53,6 +53,7 @@
"Error" => "خطا",
"The app name is not specified." => "نام برنامه تعیین نشده است.",
"The required file {file} is not installed!" => "پرونده { پرونده} درخواست شده نصب نشده است !",
+"Share" => "اشتراکگزاری",
"Error while sharing" => "خطا درحال به اشتراک گذاشتن",
"Error while unsharing" => "خطا درحال لغو اشتراک",
"Error while changing permissions" => "خطا در حال تغییر مجوز",
diff --git a/core/l10n/fi_FI.php b/core/l10n/fi_FI.php
index 751293e1fd5..1f2568f9513 100644
--- a/core/l10n/fi_FI.php
+++ b/core/l10n/fi_FI.php
@@ -8,6 +8,25 @@
"Error adding %s to favorites." => "Virhe lisätessä kohdetta %s suosikkeihin.",
"No categories selected for deletion." => "Luokkia ei valittu poistettavaksi.",
"Error removing %s from favorites." => "Virhe poistaessa kohdetta %s suosikeista.",
+"Sunday" => "Sunnuntai",
+"Monday" => "Maanantai",
+"Tuesday" => "Tiistai",
+"Wednesday" => "Keskiviikko",
+"Thursday" => "Torstai",
+"Friday" => "Perjantai",
+"Saturday" => "Lauantai",
+"January" => "Tammikuu",
+"February" => "Helmikuu",
+"March" => "Maaliskuu",
+"April" => "Huhtikuu",
+"May" => "Toukokuu",
+"June" => "Kesäkuu",
+"July" => "Heinäkuu",
+"August" => "Elokuu",
+"September" => "Syyskuu",
+"October" => "Lokakuu",
+"November" => "Marraskuu",
+"December" => "Joulukuu",
"Settings" => "Asetukset",
"seconds ago" => "sekuntia sitten",
"1 minute ago" => "1 minuutti sitten",
@@ -30,6 +49,7 @@
"Error" => "Virhe",
"The app name is not specified." => "Sovelluksen nimeä ei ole määritelty.",
"The required file {file} is not installed!" => "Vaadittua tiedostoa {file} ei ole asennettu!",
+"Share" => "Jaa",
"Error while sharing" => "Virhe jaettaessa",
"Error while unsharing" => "Virhe jakoa peruttaessa",
"Error while changing permissions" => "Virhe oikeuksia muuttaessa",
@@ -58,6 +78,8 @@
"Error setting expiration date" => "Virhe päättymispäivää asettaessa",
"Sending ..." => "Lähetetään...",
"Email sent" => "Sähköposti lähetetty",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Päivitys epäonnistui. Ilmoita ongelmasta ownCloud-yhteisölle.",
+"The update was successful. Redirecting you to ownCloud now." => "Päivitys onnistui. Selain ohjautuu nyt ownCloudiisi.",
"ownCloud password reset" => "ownCloud-salasanan nollaus",
"Use the following link to reset your password: {link}" => "Voit palauttaa salasanasi seuraavassa osoitteessa: {link}",
"You will receive a link to reset your password via Email." => "Saat sähköpostitse linkin nollataksesi salasanan.",
@@ -91,25 +113,6 @@
"Database tablespace" => "Tietokannan taulukkotila",
"Database host" => "Tietokantapalvelin",
"Finish setup" => "Viimeistele asennus",
-"Sunday" => "Sunnuntai",
-"Monday" => "Maanantai",
-"Tuesday" => "Tiistai",
-"Wednesday" => "Keskiviikko",
-"Thursday" => "Torstai",
-"Friday" => "Perjantai",
-"Saturday" => "Lauantai",
-"January" => "Tammikuu",
-"February" => "Helmikuu",
-"March" => "Maaliskuu",
-"April" => "Huhtikuu",
-"May" => "Toukokuu",
-"June" => "Kesäkuu",
-"July" => "Heinäkuu",
-"August" => "Elokuu",
-"September" => "Syyskuu",
-"October" => "Lokakuu",
-"November" => "Marraskuu",
-"December" => "Joulukuu",
"web services under your control" => "verkkopalvelut hallinnassasi",
"Log out" => "Kirjaudu ulos",
"Automatic logon rejected!" => "Automaattinen sisäänkirjautuminen hylättiin!",
diff --git a/core/l10n/fr.php b/core/l10n/fr.php
index 39269e43b5d..202203753d2 100644
--- a/core/l10n/fr.php
+++ b/core/l10n/fr.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Erreur lors de l'ajout de %s aux favoris.",
"No categories selected for deletion." => "Aucune catégorie sélectionnée pour suppression",
"Error removing %s from favorites." => "Erreur lors de la suppression de %s des favoris.",
+"Sunday" => "Dimanche",
+"Monday" => "Lundi",
+"Tuesday" => "Mardi",
+"Wednesday" => "Mercredi",
+"Thursday" => "Jeudi",
+"Friday" => "Vendredi",
+"Saturday" => "Samedi",
+"January" => "janvier",
+"February" => "février",
+"March" => "mars",
+"April" => "avril",
+"May" => "mai",
+"June" => "juin",
+"July" => "juillet",
+"August" => "août",
+"September" => "septembre",
+"October" => "octobre",
+"November" => "novembre",
+"December" => "décembre",
"Settings" => "Paramètres",
"seconds ago" => "il y a quelques secondes",
"1 minute ago" => "il y a une minute",
@@ -34,6 +53,7 @@
"Error" => "Erreur",
"The app name is not specified." => "Le nom de l'application n'est pas spécifié.",
"The required file {file} is not installed!" => "Le fichier requis {file} n'est pas installé !",
+"Share" => "Partager",
"Error while sharing" => "Erreur lors de la mise en partage",
"Error while unsharing" => "Erreur lors de l'annulation du partage",
"Error while changing permissions" => "Erreur lors du changement des permissions",
@@ -63,6 +83,8 @@
"Error setting expiration date" => "Erreur lors de la spécification de la date d'expiration",
"Sending ..." => "En cours d'envoi ...",
"Email sent" => "Email envoyé",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "La mise à jour a échoué. Veuillez signaler ce problème à la communauté ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "La mise à jour a réussi. Vous êtes redirigé maintenant vers ownCloud.",
"ownCloud password reset" => "Réinitialisation de votre mot de passe Owncloud",
"Use the following link to reset your password: {link}" => "Utilisez le lien suivant pour réinitialiser votre mot de passe : {link}",
"You will receive a link to reset your password via Email." => "Vous allez recevoir un e-mail contenant un lien pour réinitialiser votre mot de passe.",
@@ -98,25 +120,6 @@
"Database tablespace" => "Tablespaces de la base de données",
"Database host" => "Serveur de la base de données",
"Finish setup" => "Terminer l'installation",
-"Sunday" => "Dimanche",
-"Monday" => "Lundi",
-"Tuesday" => "Mardi",
-"Wednesday" => "Mercredi",
-"Thursday" => "Jeudi",
-"Friday" => "Vendredi",
-"Saturday" => "Samedi",
-"January" => "janvier",
-"February" => "février",
-"March" => "mars",
-"April" => "avril",
-"May" => "mai",
-"June" => "juin",
-"July" => "juillet",
-"August" => "août",
-"September" => "septembre",
-"October" => "octobre",
-"November" => "novembre",
-"December" => "décembre",
"web services under your control" => "services web sous votre contrôle",
"Log out" => "Se déconnecter",
"Automatic logon rejected!" => "Connexion automatique rejetée !",
diff --git a/core/l10n/gl.php b/core/l10n/gl.php
index 2642debb288..e96d6962c90 100644
--- a/core/l10n/gl.php
+++ b/core/l10n/gl.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Produciuse un erro ao engadir %s aos favoritos.",
"No categories selected for deletion." => "Non hai categorías seleccionadas para eliminar.",
"Error removing %s from favorites." => "Produciuse un erro ao eliminar %s dos favoritos.",
+"Sunday" => "Domingo",
+"Monday" => "Luns",
+"Tuesday" => "Martes",
+"Wednesday" => "Mércores",
+"Thursday" => "Xoves",
+"Friday" => "Venres",
+"Saturday" => "Sábado",
+"January" => "xaneiro",
+"February" => "febreiro",
+"March" => "marzo",
+"April" => "abril",
+"May" => "maio",
+"June" => "xuño",
+"July" => "xullo",
+"August" => "agosto",
+"September" => "setembro",
+"October" => "outubro",
+"November" => "novembro",
+"December" => "decembro",
"Settings" => "Configuracións",
"seconds ago" => "segundos atrás",
"1 minute ago" => "hai 1 minuto",
@@ -34,6 +53,7 @@
"Error" => "Erro",
"The app name is not specified." => "Non se especificou o nome do aplicativo.",
"The required file {file} is not installed!" => "Non está instalado o ficheiro {file} que se precisa",
+"Share" => "Compartir",
"Error while sharing" => "Produciuse un erro ao compartir",
"Error while unsharing" => "Produciuse un erro ao deixar de compartir",
"Error while changing permissions" => "Produciuse un erro ao cambiar os permisos",
@@ -98,25 +118,6 @@
"Database tablespace" => "Táboa de espazos da base de datos",
"Database host" => "Servidor da base de datos",
"Finish setup" => "Rematar a configuración",
-"Sunday" => "Domingo",
-"Monday" => "Luns",
-"Tuesday" => "Martes",
-"Wednesday" => "Mércores",
-"Thursday" => "Xoves",
-"Friday" => "Venres",
-"Saturday" => "Sábado",
-"January" => "xaneiro",
-"February" => "febreiro",
-"March" => "marzo",
-"April" => "abril",
-"May" => "maio",
-"June" => "xuño",
-"July" => "xullo",
-"August" => "agosto",
-"September" => "setembro",
-"October" => "outubro",
-"November" => "novembro",
-"December" => "decembro",
"web services under your control" => "servizos web baixo o seu control",
"Log out" => "Desconectar",
"Automatic logon rejected!" => "Rexeitouse a entrada automática",
diff --git a/core/l10n/he.php b/core/l10n/he.php
index 59eb3ae14d4..b7292c6edee 100644
--- a/core/l10n/he.php
+++ b/core/l10n/he.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "אירעה שגיאה בעת הוספת %s למועדפים.",
"No categories selected for deletion." => "לא נבחרו קטגוריות למחיקה",
"Error removing %s from favorites." => "שגיאה בהסרת %s מהמועדפים.",
+"Sunday" => "יום ראשון",
+"Monday" => "יום שני",
+"Tuesday" => "יום שלישי",
+"Wednesday" => "יום רביעי",
+"Thursday" => "יום חמישי",
+"Friday" => "יום שישי",
+"Saturday" => "שבת",
+"January" => "ינואר",
+"February" => "פברואר",
+"March" => "מרץ",
+"April" => "אפריל",
+"May" => "מאי",
+"June" => "יוני",
+"July" => "יולי",
+"August" => "אוגוסט",
+"September" => "ספטמבר",
+"October" => "אוקטובר",
+"November" => "נובמבר",
+"December" => "דצמבר",
"Settings" => "הגדרות",
"seconds ago" => "שניות",
"1 minute ago" => "לפני דקה אחת",
@@ -34,6 +53,7 @@
"Error" => "שגיאה",
"The app name is not specified." => "שם היישום לא צוין.",
"The required file {file} is not installed!" => "הקובץ הנדרש {file} אינו מותקן!",
+"Share" => "שתף",
"Error while sharing" => "שגיאה במהלך השיתוף",
"Error while unsharing" => "שגיאה במהלך ביטול השיתוף",
"Error while changing permissions" => "שגיאה במהלך שינוי ההגדרות",
@@ -98,25 +118,6 @@
"Database tablespace" => "מרחב הכתובות של מסד הנתונים",
"Database host" => "שרת בסיס נתונים",
"Finish setup" => "סיום התקנה",
-"Sunday" => "יום ראשון",
-"Monday" => "יום שני",
-"Tuesday" => "יום שלישי",
-"Wednesday" => "יום רביעי",
-"Thursday" => "יום חמישי",
-"Friday" => "יום שישי",
-"Saturday" => "שבת",
-"January" => "ינואר",
-"February" => "פברואר",
-"March" => "מרץ",
-"April" => "אפריל",
-"May" => "מאי",
-"June" => "יוני",
-"July" => "יולי",
-"August" => "אוגוסט",
-"September" => "ספטמבר",
-"October" => "אוקטובר",
-"November" => "נובמבר",
-"December" => "דצמבר",
"web services under your control" => "שירותי רשת בשליטתך",
"Log out" => "התנתקות",
"Automatic logon rejected!" => "בקשת הכניסה האוטומטית נדחתה!",
diff --git a/core/l10n/hr.php b/core/l10n/hr.php
index 43dbbe51ae0..78b767305a3 100644
--- a/core/l10n/hr.php
+++ b/core/l10n/hr.php
@@ -2,6 +2,25 @@
"No category to add?" => "Nemate kategorija koje možete dodati?",
"This category already exists: " => "Ova kategorija već postoji: ",
"No categories selected for deletion." => "Nema odabranih kategorija za brisanje.",
+"Sunday" => "nedelja",
+"Monday" => "ponedeljak",
+"Tuesday" => "utorak",
+"Wednesday" => "srijeda",
+"Thursday" => "četvrtak",
+"Friday" => "petak",
+"Saturday" => "subota",
+"January" => "Siječanj",
+"February" => "Veljača",
+"March" => "Ožujak",
+"April" => "Travanj",
+"May" => "Svibanj",
+"June" => "Lipanj",
+"July" => "Srpanj",
+"August" => "Kolovoz",
+"September" => "Rujan",
+"October" => "Listopad",
+"November" => "Studeni",
+"December" => "Prosinac",
"Settings" => "Postavke",
"seconds ago" => "sekundi prije",
"today" => "danas",
@@ -16,6 +35,7 @@
"Yes" => "Da",
"Ok" => "U redu",
"Error" => "Pogreška",
+"Share" => "Podijeli",
"Error while sharing" => "Greška prilikom djeljenja",
"Error while unsharing" => "Greška prilikom isključivanja djeljenja",
"Error while changing permissions" => "Greška prilikom promjena prava",
@@ -67,25 +87,6 @@
"Database tablespace" => "Database tablespace",
"Database host" => "Poslužitelj baze podataka",
"Finish setup" => "Završi postavljanje",
-"Sunday" => "nedelja",
-"Monday" => "ponedeljak",
-"Tuesday" => "utorak",
-"Wednesday" => "srijeda",
-"Thursday" => "četvrtak",
-"Friday" => "petak",
-"Saturday" => "subota",
-"January" => "Siječanj",
-"February" => "Veljača",
-"March" => "Ožujak",
-"April" => "Travanj",
-"May" => "Svibanj",
-"June" => "Lipanj",
-"July" => "Srpanj",
-"August" => "Kolovoz",
-"September" => "Rujan",
-"October" => "Listopad",
-"November" => "Studeni",
-"December" => "Prosinac",
"web services under your control" => "web usluge pod vašom kontrolom",
"Log out" => "Odjava",
"Lost your password?" => "Izgubili ste lozinku?",
diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php
index e03c6af27f5..30ddc7b8677 100644
--- a/core/l10n/hu_HU.php
+++ b/core/l10n/hu_HU.php
@@ -53,6 +53,7 @@
"Error" => "Hiba",
"The app name is not specified." => "Az alkalmazás neve nincs megadva.",
"The required file {file} is not installed!" => "A szükséges fájl: {file} nincs telepítve!",
+"Share" => "Megosztás",
"Error while sharing" => "Nem sikerült létrehozni a megosztást",
"Error while unsharing" => "Nem sikerült visszavonni a megosztást",
"Error while changing permissions" => "Nem sikerült módosítani a jogosultságokat",
diff --git a/core/l10n/ia.php b/core/l10n/ia.php
index d614f8381af..7f2eac17367 100644
--- a/core/l10n/ia.php
+++ b/core/l10n/ia.php
@@ -1,7 +1,27 @@
"Iste categoria jam existe:",
+"Sunday" => "Dominica",
+"Monday" => "Lunedi",
+"Tuesday" => "Martedi",
+"Wednesday" => "Mercuridi",
+"Thursday" => "Jovedi",
+"Friday" => "Venerdi",
+"Saturday" => "Sabbato",
+"January" => "januario",
+"February" => "Februario",
+"March" => "Martio",
+"April" => "April",
+"May" => "Mai",
+"June" => "Junio",
+"July" => "Julio",
+"August" => "Augusto",
+"September" => "Septembre",
+"October" => "Octobre",
+"November" => "Novembre",
+"December" => "Decembre",
"Settings" => "Configurationes",
"Cancel" => "Cancellar",
+"Share" => "Compartir",
"Password" => "Contrasigno",
"ownCloud password reset" => "Reinitialisation del contrasigno de ownCLoud",
"Username" => "Nomine de usator",
@@ -28,25 +48,6 @@
"Database password" => "Contrasigno de base de datos",
"Database name" => "Nomine de base de datos",
"Database host" => "Hospite de base de datos",
-"Sunday" => "Dominica",
-"Monday" => "Lunedi",
-"Tuesday" => "Martedi",
-"Wednesday" => "Mercuridi",
-"Thursday" => "Jovedi",
-"Friday" => "Venerdi",
-"Saturday" => "Sabbato",
-"January" => "januario",
-"February" => "Februario",
-"March" => "Martio",
-"April" => "April",
-"May" => "Mai",
-"June" => "Junio",
-"July" => "Julio",
-"August" => "Augusto",
-"September" => "Septembre",
-"October" => "Octobre",
-"November" => "Novembre",
-"December" => "Decembre",
"web services under your control" => "servicios web sub tu controlo",
"Log out" => "Clauder le session",
"Lost your password?" => "Tu perdeva le contrasigno?",
diff --git a/core/l10n/id.php b/core/l10n/id.php
index ee5fad95217..896d444e833 100644
--- a/core/l10n/id.php
+++ b/core/l10n/id.php
@@ -2,6 +2,25 @@
"No category to add?" => "Tidak ada kategori yang akan ditambahkan?",
"This category already exists: " => "Kategori ini sudah ada:",
"No categories selected for deletion." => "Tidak ada kategori terpilih untuk penghapusan.",
+"Sunday" => "minggu",
+"Monday" => "senin",
+"Tuesday" => "selasa",
+"Wednesday" => "rabu",
+"Thursday" => "kamis",
+"Friday" => "jumat",
+"Saturday" => "sabtu",
+"January" => "Januari",
+"February" => "Februari",
+"March" => "Maret",
+"April" => "April",
+"May" => "Mei",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "Agustus",
+"September" => "September",
+"October" => "Oktober",
+"November" => "Nopember",
+"December" => "Desember",
"Settings" => "Setelan",
"seconds ago" => "beberapa detik yang lalu",
"1 minute ago" => "1 menit lalu",
@@ -17,6 +36,7 @@
"Yes" => "Ya",
"Ok" => "Oke",
"Error" => "gagal",
+"Share" => "berbagi",
"Error while sharing" => "gagal ketika membagikan",
"Error while unsharing" => "gagal ketika membatalkan pembagian",
"Error while changing permissions" => "gagal ketika merubah perijinan",
@@ -73,25 +93,6 @@
"Database tablespace" => "tablespace basis data",
"Database host" => "Host database",
"Finish setup" => "Selesaikan instalasi",
-"Sunday" => "minggu",
-"Monday" => "senin",
-"Tuesday" => "selasa",
-"Wednesday" => "rabu",
-"Thursday" => "kamis",
-"Friday" => "jumat",
-"Saturday" => "sabtu",
-"January" => "Januari",
-"February" => "Februari",
-"March" => "Maret",
-"April" => "April",
-"May" => "Mei",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "Agustus",
-"September" => "September",
-"October" => "Oktober",
-"November" => "Nopember",
-"December" => "Desember",
"web services under your control" => "web service dibawah kontrol anda",
"Log out" => "Keluar",
"Automatic logon rejected!" => "login otomatis ditolak!",
diff --git a/core/l10n/is.php b/core/l10n/is.php
index e810eb359fd..98766efc2c9 100644
--- a/core/l10n/is.php
+++ b/core/l10n/is.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Villa við að bæta %s við eftirlæti.",
"No categories selected for deletion." => "Enginn flokkur valinn til eyðingar.",
"Error removing %s from favorites." => "Villa við að fjarlægja %s úr eftirlæti.",
+"Sunday" => "Sunnudagur",
+"Monday" => "Mánudagur",
+"Tuesday" => "Þriðjudagur",
+"Wednesday" => "Miðvikudagur",
+"Thursday" => "Fimmtudagur",
+"Friday" => "Föstudagur",
+"Saturday" => "Laugardagur",
+"January" => "Janúar",
+"February" => "Febrúar",
+"March" => "Mars",
+"April" => "Apríl",
+"May" => "Maí",
+"June" => "Júní",
+"July" => "Júlí",
+"August" => "Ágúst",
+"September" => "September",
+"October" => "Október",
+"November" => "Nóvember",
+"December" => "Desember",
"Settings" => "Stillingar",
"seconds ago" => "sek síðan",
"1 minute ago" => "1 min síðan",
@@ -34,6 +53,7 @@
"Error" => "Villa",
"The app name is not specified." => "Nafn forrits ekki tilgreint",
"The required file {file} is not installed!" => "Umbeðina skráin {file} ekki tiltæk!",
+"Share" => "Deila",
"Error while sharing" => "Villa við deilingu",
"Error while unsharing" => "Villa við að hætta deilingu",
"Error while changing permissions" => "Villa við að breyta aðgangsheimildum",
@@ -98,25 +118,6 @@
"Database tablespace" => "Töflusvæði gagnagrunns",
"Database host" => "Netþjónn gagnagrunns",
"Finish setup" => "Virkja uppsetningu",
-"Sunday" => "Sunnudagur",
-"Monday" => "Mánudagur",
-"Tuesday" => "Þriðjudagur",
-"Wednesday" => "Miðvikudagur",
-"Thursday" => "Fimmtudagur",
-"Friday" => "Föstudagur",
-"Saturday" => "Laugardagur",
-"January" => "Janúar",
-"February" => "Febrúar",
-"March" => "Mars",
-"April" => "Apríl",
-"May" => "Maí",
-"June" => "Júní",
-"July" => "Júlí",
-"August" => "Ágúst",
-"September" => "September",
-"October" => "Október",
-"November" => "Nóvember",
-"December" => "Desember",
"web services under your control" => "vefþjónusta undir þinni stjórn",
"Log out" => "Útskrá",
"Automatic logon rejected!" => "Sjálfvirkri innskráningu hafnað!",
diff --git a/core/l10n/it.php b/core/l10n/it.php
index 89b6a7952a9..ec094f643a4 100644
--- a/core/l10n/it.php
+++ b/core/l10n/it.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Errore durante l'aggiunta di %s ai preferiti.",
"No categories selected for deletion." => "Nessuna categoria selezionata per l'eliminazione.",
"Error removing %s from favorites." => "Errore durante la rimozione di %s dai preferiti.",
+"Sunday" => "Domenica",
+"Monday" => "Lunedì",
+"Tuesday" => "Martedì",
+"Wednesday" => "Mercoledì",
+"Thursday" => "Giovedì",
+"Friday" => "Venerdì",
+"Saturday" => "Sabato",
+"January" => "Gennaio",
+"February" => "Febbraio",
+"March" => "Marzo",
+"April" => "Aprile",
+"May" => "Maggio",
+"June" => "Giugno",
+"July" => "Luglio",
+"August" => "Agosto",
+"September" => "Settembre",
+"October" => "Ottobre",
+"November" => "Novembre",
+"December" => "Dicembre",
"Settings" => "Impostazioni",
"seconds ago" => "secondi fa",
"1 minute ago" => "Un minuto fa",
@@ -34,6 +53,8 @@
"Error" => "Errore",
"The app name is not specified." => "Il nome dell'applicazione non è specificato.",
"The required file {file} is not installed!" => "Il file richiesto {file} non è installato!",
+"Share" => "Condividi",
+"Shared" => "Condivisi",
"Error while sharing" => "Errore durante la condivisione",
"Error while unsharing" => "Errore durante la rimozione della condivisione",
"Error while changing permissions" => "Errore durante la modifica dei permessi",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Errore durante l'impostazione della data di scadenza",
"Sending ..." => "Invio in corso...",
"Email sent" => "Messaggio inviato",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "L'aggiornamento non è riuscito. Segnala il problema alla comunità di ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "L'aggiornamento è stato effettuato correttamente. Stai per essere reindirizzato a ownCloud.",
"ownCloud password reset" => "Ripristino password di ownCloud",
"Use the following link to reset your password: {link}" => "Usa il collegamento seguente per ripristinare la password: {link}",
"You will receive a link to reset your password via Email." => "Riceverai un collegamento per ripristinare la tua password via email",
@@ -98,34 +121,15 @@
"Database tablespace" => "Spazio delle tabelle del database",
"Database host" => "Host del database",
"Finish setup" => "Termina la configurazione",
-"Sunday" => "Domenica",
-"Monday" => "Lunedì",
-"Tuesday" => "Martedì",
-"Wednesday" => "Mercoledì",
-"Thursday" => "Giovedì",
-"Friday" => "Venerdì",
-"Saturday" => "Sabato",
-"January" => "Gennaio",
-"February" => "Febbraio",
-"March" => "Marzo",
-"April" => "Aprile",
-"May" => "Maggio",
-"June" => "Giugno",
-"July" => "Luglio",
-"August" => "Agosto",
-"September" => "Settembre",
-"October" => "Ottobre",
-"November" => "Novembre",
-"December" => "Dicembre",
"web services under your control" => "servizi web nelle tue mani",
"Log out" => "Esci",
"Automatic logon rejected!" => "Accesso automatico rifiutato.",
-"If you did not change your password recently, your account may be compromised!" => "Se non hai cambiato la password recentemente, il tuo account potrebbe essere stato compromesso.",
+"If you did not change your password recently, your account may be compromised!" => "Se non hai cambiato la password recentemente, il tuo account potrebbe essere compromesso.",
"Please change your password to secure your account again." => "Cambia la password per rendere nuovamente sicuro il tuo account.",
"Lost your password?" => "Hai perso la password?",
"remember" => "ricorda",
"Log in" => "Accedi",
"prev" => "precedente",
"next" => "successivo",
-"Updating ownCloud to version %s, this may take a while." => "Aggiornamento di ownCloud alla versione %s in corso, potrebbe richiedere del tempo."
+"Updating ownCloud to version %s, this may take a while." => "Aggiornamento di ownCloud alla versione %s in corso, ciò potrebbe richiedere del tempo."
);
diff --git a/core/l10n/ja_JP.php b/core/l10n/ja_JP.php
index 7d4baf94583..155c201d9b7 100644
--- a/core/l10n/ja_JP.php
+++ b/core/l10n/ja_JP.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "お気に入りに %s を追加エラー",
"No categories selected for deletion." => "削除するカテゴリが選択されていません。",
"Error removing %s from favorites." => "お気に入りから %s の削除エラー",
+"Sunday" => "日",
+"Monday" => "月",
+"Tuesday" => "火",
+"Wednesday" => "水",
+"Thursday" => "木",
+"Friday" => "金",
+"Saturday" => "土",
+"January" => "1月",
+"February" => "2月",
+"March" => "3月",
+"April" => "4月",
+"May" => "5月",
+"June" => "6月",
+"July" => "7月",
+"August" => "8月",
+"September" => "9月",
+"October" => "10月",
+"November" => "11月",
+"December" => "12月",
"Settings" => "設定",
"seconds ago" => "秒前",
"1 minute ago" => "1 分前",
@@ -34,6 +53,8 @@
"Error" => "エラー",
"The app name is not specified." => "アプリ名がしていされていません。",
"The required file {file} is not installed!" => "必要なファイル {file} がインストールされていません!",
+"Share" => "共有",
+"Shared" => "共有中",
"Error while sharing" => "共有でエラー発生",
"Error while unsharing" => "共有解除でエラー発生",
"Error while changing permissions" => "権限変更でエラー発生",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "有効期限の設定でエラー発生",
"Sending ..." => "送信中...",
"Email sent" => "メールを送信しました",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "更新に成功しました。この問題を ownCloud community にレポートしてください。",
+"The update was successful. Redirecting you to ownCloud now." => "更新に成功しました。今すぐownCloudにリダイレクトします。",
"ownCloud password reset" => "ownCloudのパスワードをリセットします",
"Use the following link to reset your password: {link}" => "パスワードをリセットするには次のリンクをクリックして下さい: {link}",
"You will receive a link to reset your password via Email." => "メールでパスワードをリセットするリンクが届きます。",
@@ -98,25 +121,6 @@
"Database tablespace" => "データベースの表領域",
"Database host" => "データベースのホスト名",
"Finish setup" => "セットアップを完了します",
-"Sunday" => "日",
-"Monday" => "月",
-"Tuesday" => "火",
-"Wednesday" => "水",
-"Thursday" => "木",
-"Friday" => "金",
-"Saturday" => "土",
-"January" => "1月",
-"February" => "2月",
-"March" => "3月",
-"April" => "4月",
-"May" => "5月",
-"June" => "6月",
-"July" => "7月",
-"August" => "8月",
-"September" => "9月",
-"October" => "10月",
-"November" => "11月",
-"December" => "12月",
"web services under your control" => "管理下にあるウェブサービス",
"Log out" => "ログアウト",
"Automatic logon rejected!" => "自動ログインは拒否されました!",
diff --git a/core/l10n/ka_GE.php b/core/l10n/ka_GE.php
index aafdacab4c6..ab4045601f9 100644
--- a/core/l10n/ka_GE.php
+++ b/core/l10n/ka_GE.php
@@ -2,6 +2,25 @@
"No category to add?" => "არ არის კატეგორია დასამატებლად?",
"This category already exists: " => "კატეგორია უკვე არსებობს",
"No categories selected for deletion." => "სარედაქტირებელი კატეგორია არ არის არჩეული ",
+"Sunday" => "კვირა",
+"Monday" => "ორშაბათი",
+"Tuesday" => "სამშაბათი",
+"Wednesday" => "ოთხშაბათი",
+"Thursday" => "ხუთშაბათი",
+"Friday" => "პარასკევი",
+"Saturday" => "შაბათი",
+"January" => "იანვარი",
+"February" => "თებერვალი",
+"March" => "მარტი",
+"April" => "აპრილი",
+"May" => "მაისი",
+"June" => "ივნისი",
+"July" => "ივლისი",
+"August" => "აგვისტო",
+"September" => "სექტემბერი",
+"October" => "ოქტომბერი",
+"November" => "ნოემბერი",
+"December" => "დეკემბერი",
"Settings" => "პარამეტრები",
"seconds ago" => "წამის წინ",
"1 minute ago" => "1 წუთის წინ",
@@ -19,6 +38,7 @@
"Yes" => "კი",
"Ok" => "დიახ",
"Error" => "შეცდომა",
+"Share" => "გაზიარება",
"Error while sharing" => "შეცდომა გაზიარების დროს",
"Error while unsharing" => "შეცდომა გაზიარების გაუქმების დროს",
"Error while changing permissions" => "შეცდომა დაშვების ცვლილების დროს",
@@ -73,25 +93,6 @@
"Database tablespace" => "ბაზის ცხრილის ზომა",
"Database host" => "ბაზის ჰოსტი",
"Finish setup" => "კონფიგურაციის დასრულება",
-"Sunday" => "კვირა",
-"Monday" => "ორშაბათი",
-"Tuesday" => "სამშაბათი",
-"Wednesday" => "ოთხშაბათი",
-"Thursday" => "ხუთშაბათი",
-"Friday" => "პარასკევი",
-"Saturday" => "შაბათი",
-"January" => "იანვარი",
-"February" => "თებერვალი",
-"March" => "მარტი",
-"April" => "აპრილი",
-"May" => "მაისი",
-"June" => "ივნისი",
-"July" => "ივლისი",
-"August" => "აგვისტო",
-"September" => "სექტემბერი",
-"October" => "ოქტომბერი",
-"November" => "ნოემბერი",
-"December" => "დეკემბერი",
"web services under your control" => "თქვენი კონტროლის ქვეშ მყოფი ვებ სერვისები",
"Log out" => "გამოსვლა",
"Automatic logon rejected!" => "ავტომატური შესვლა უარყოფილია!",
diff --git a/core/l10n/ko.php b/core/l10n/ko.php
index 3db5a501173..91c00c4a570 100644
--- a/core/l10n/ko.php
+++ b/core/l10n/ko.php
@@ -1,8 +1,8 @@
"User %s 가 당신과 파일을 공유하였습니다.",
-"User %s shared a folder with you" => "User %s 가 당신과 폴더를 공유하였습니다.",
-"User %s shared the file \"%s\" with you. It is available for download here: %s" => "User %s 가 파일 \"%s\"를 당신과 공유하였습니다. 다운로드는 여기서 %s 할 수 있습니다.",
-"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "User %s 가 폴더 \"%s\"를 당신과 공유하였습니다. 다운로드는 여기서 %s 할 수 있습니다.",
+"User %s shared a file with you" => "%s 님이 파일을 공유하였습니다",
+"User %s shared a folder with you" => "%s 님이 폴더를 공유하였습니다",
+"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s 님이 파일 \"%s\"을(를) 공유하였습니다. 여기에서 다운로드할 수 있습니다: %s",
+"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s 님이 폴더 \"%s\"을(를) 공유하였습니다. 여기에서 다운로드할 수 있습니다: %s",
"Category type not provided." => "분류 형식이 제공되지 않았습니다.",
"No category to add?" => "추가할 분류가 없습니까?",
"This category already exists: " => "이 분류는 이미 존재합니다:",
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "책갈피에 %s을(를) 추가할 수 없었습니다.",
"No categories selected for deletion." => "삭제할 분류를 선택하지 않았습니다.",
"Error removing %s from favorites." => "책갈피에서 %s을(를) 삭제할 수 없었습니다.",
+"Sunday" => "일요일",
+"Monday" => "월요일",
+"Tuesday" => "화요일",
+"Wednesday" => "수요일",
+"Thursday" => "목요일",
+"Friday" => "금요일",
+"Saturday" => "토요일",
+"January" => "1월",
+"February" => "2월",
+"March" => "3월",
+"April" => "4월",
+"May" => "5월",
+"June" => "6월",
+"July" => "7월",
+"August" => "8월",
+"September" => "9월",
+"October" => "10월",
+"November" => "11월",
+"December" => "12월",
"Settings" => "설정",
"seconds ago" => "초 전",
"1 minute ago" => "1분 전",
@@ -34,6 +53,8 @@
"Error" => "오류",
"The app name is not specified." => "앱 이름이 지정되지 않았습니다.",
"The required file {file} is not installed!" => "필요한 파일 {file}이(가) 설치되지 않았습니다!",
+"Share" => "공유",
+"Shared" => "공유됨",
"Error while sharing" => "공유하는 중 오류 발생",
"Error while unsharing" => "공유 해제하는 중 오류 발생",
"Error while changing permissions" => "권한 변경하는 중 오류 발생",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "만료 날짜 설정 오류",
"Sending ..." => "전송 중...",
"Email sent" => "이메일 발송됨",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "업데이트가 실패하였습니다. 이 문제를 ownCloud 커뮤니티에 보고해 주십시오.",
+"The update was successful. Redirecting you to ownCloud now." => "업데이트가 성공하였습니다. ownCloud로 돌아갑니다.",
"ownCloud password reset" => "ownCloud 암호 재설정",
"Use the following link to reset your password: {link}" => "다음 링크를 사용하여 암호를 재설정할 수 있습니다: {link}",
"You will receive a link to reset your password via Email." => "이메일로 암호 재설정 링크를 보냈습니다.",
@@ -98,25 +121,6 @@
"Database tablespace" => "데이터베이스 테이블 공간",
"Database host" => "데이터베이스 호스트",
"Finish setup" => "설치 완료",
-"Sunday" => "일요일",
-"Monday" => "월요일",
-"Tuesday" => "화요일",
-"Wednesday" => "수요일",
-"Thursday" => "목요일",
-"Friday" => "금요일",
-"Saturday" => "토요일",
-"January" => "1월",
-"February" => "2월",
-"March" => "3월",
-"April" => "4월",
-"May" => "5월",
-"June" => "6월",
-"July" => "7월",
-"August" => "8월",
-"September" => "9월",
-"October" => "10월",
-"November" => "11월",
-"December" => "12월",
"web services under your control" => "내가 관리하는 웹 서비스",
"Log out" => "로그아웃",
"Automatic logon rejected!" => "자동 로그인이 거부되었습니다!",
@@ -127,5 +131,5 @@
"Log in" => "로그인",
"prev" => "이전",
"next" => "다음",
-"Updating ownCloud to version %s, this may take a while." => "ownCloud 를 버젼 %s로 업데이트 하는 중, 시간이 소요됩니다."
+"Updating ownCloud to version %s, this may take a while." => "ownCloud를 버전 %s(으)로 업데이트합니다. 잠시 기다려 주십시오."
);
diff --git a/core/l10n/lb.php b/core/l10n/lb.php
index 85d83d1f953..4069a778365 100644
--- a/core/l10n/lb.php
+++ b/core/l10n/lb.php
@@ -35,6 +35,7 @@
"Yes" => "Jo",
"Ok" => "OK",
"Error" => "Fehler",
+"Share" => "Deelen",
"Password" => "Passwuert",
"Unshare" => "Net méi deelen",
"create" => "erstellen",
diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php
index ec15c646191..c2dc47c826c 100644
--- a/core/l10n/lt_LT.php
+++ b/core/l10n/lt_LT.php
@@ -2,6 +2,25 @@
"No category to add?" => "Nepridėsite jokios kategorijos?",
"This category already exists: " => "Tokia kategorija jau yra:",
"No categories selected for deletion." => "Trynimui nepasirinkta jokia kategorija.",
+"Sunday" => "Sekmadienis",
+"Monday" => "Pirmadienis",
+"Tuesday" => "Antradienis",
+"Wednesday" => "Trečiadienis",
+"Thursday" => "Ketvirtadienis",
+"Friday" => "Penktadienis",
+"Saturday" => "Šeštadienis",
+"January" => "Sausis",
+"February" => "Vasaris",
+"March" => "Kovas",
+"April" => "Balandis",
+"May" => "Gegužė",
+"June" => "Birželis",
+"July" => "Liepa",
+"August" => "Rugpjūtis",
+"September" => "Rugsėjis",
+"October" => "Spalis",
+"November" => "Lapkritis",
+"December" => "Gruodis",
"Settings" => "Nustatymai",
"seconds ago" => "prieš sekundę",
"1 minute ago" => "Prieš 1 minutę",
@@ -19,6 +38,7 @@
"Yes" => "Taip",
"Ok" => "Gerai",
"Error" => "Klaida",
+"Share" => "Dalintis",
"Error while sharing" => "Klaida, dalijimosi metu",
"Error while unsharing" => "Klaida, kai atšaukiamas dalijimasis",
"Error while changing permissions" => "Klaida, keičiant privilegijas",
@@ -77,25 +97,6 @@
"Database tablespace" => "Duomenų bazės loginis saugojimas",
"Database host" => "Duomenų bazės serveris",
"Finish setup" => "Baigti diegimą",
-"Sunday" => "Sekmadienis",
-"Monday" => "Pirmadienis",
-"Tuesday" => "Antradienis",
-"Wednesday" => "Trečiadienis",
-"Thursday" => "Ketvirtadienis",
-"Friday" => "Penktadienis",
-"Saturday" => "Šeštadienis",
-"January" => "Sausis",
-"February" => "Vasaris",
-"March" => "Kovas",
-"April" => "Balandis",
-"May" => "Gegužė",
-"June" => "Birželis",
-"July" => "Liepa",
-"August" => "Rugpjūtis",
-"September" => "Rugsėjis",
-"October" => "Spalis",
-"November" => "Lapkritis",
-"December" => "Gruodis",
"web services under your control" => "jūsų valdomos web paslaugos",
"Log out" => "Atsijungti",
"Automatic logon rejected!" => "Automatinis prisijungimas atmestas!",
diff --git a/core/l10n/lv.php b/core/l10n/lv.php
index 66866249e76..dd63ab6c90f 100644
--- a/core/l10n/lv.php
+++ b/core/l10n/lv.php
@@ -21,6 +21,7 @@
"Settings" => "Iestatījumi",
"Cancel" => "Atcelt",
"Error" => "Kļūme",
+"Share" => "Līdzdalīt",
"Password" => "Parole",
"Unshare" => "Pārtraukt līdzdalīšanu",
"Use the following link to reset your password: {link}" => "Izmantojiet šo linku lai mainītu paroli",
diff --git a/core/l10n/mk.php b/core/l10n/mk.php
index d8fa16d44f3..0b202fa6667 100644
--- a/core/l10n/mk.php
+++ b/core/l10n/mk.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Грешка при додавање %s во омилени.",
"No categories selected for deletion." => "Не е одбрана категорија за бришење.",
"Error removing %s from favorites." => "Грешка при бришење на %s од омилени.",
+"Sunday" => "Недела",
+"Monday" => "Понеделник",
+"Tuesday" => "Вторник",
+"Wednesday" => "Среда",
+"Thursday" => "Четврток",
+"Friday" => "Петок",
+"Saturday" => "Сабота",
+"January" => "Јануари",
+"February" => "Февруари",
+"March" => "Март",
+"April" => "Април",
+"May" => "Мај",
+"June" => "Јуни",
+"July" => "Јули",
+"August" => "Август",
+"September" => "Септември",
+"October" => "Октомври",
+"November" => "Ноември",
+"December" => "Декември",
"Settings" => "Поставки",
"seconds ago" => "пред секунди",
"1 minute ago" => "пред 1 минута",
@@ -34,6 +53,7 @@
"Error" => "Грешка",
"The app name is not specified." => "Името на апликацијата не е специфицирано.",
"The required file {file} is not installed!" => "Задолжителната датотека {file} не е инсталирана!",
+"Share" => "Сподели",
"Error while sharing" => "Грешка при споделување",
"Error while unsharing" => "Грешка при прекин на споделување",
"Error while changing permissions" => "Грешка при промена на привилегии",
@@ -98,25 +118,6 @@
"Database tablespace" => "Табела во базата на податоци",
"Database host" => "Сервер со база",
"Finish setup" => "Заврши го подесувањето",
-"Sunday" => "Недела",
-"Monday" => "Понеделник",
-"Tuesday" => "Вторник",
-"Wednesday" => "Среда",
-"Thursday" => "Четврток",
-"Friday" => "Петок",
-"Saturday" => "Сабота",
-"January" => "Јануари",
-"February" => "Февруари",
-"March" => "Март",
-"April" => "Април",
-"May" => "Мај",
-"June" => "Јуни",
-"July" => "Јули",
-"August" => "Август",
-"September" => "Септември",
-"October" => "Октомври",
-"November" => "Ноември",
-"December" => "Декември",
"web services under your control" => "веб сервиси под Ваша контрола",
"Log out" => "Одјава",
"Automatic logon rejected!" => "Одбиена автоматска најава!",
diff --git a/core/l10n/ms_MY.php b/core/l10n/ms_MY.php
index b08ccecf616..477e82ea9f1 100644
--- a/core/l10n/ms_MY.php
+++ b/core/l10n/ms_MY.php
@@ -2,12 +2,32 @@
"No category to add?" => "Tiada kategori untuk di tambah?",
"This category already exists: " => "Kategori ini telah wujud",
"No categories selected for deletion." => "tiada kategori dipilih untuk penghapusan",
+"Sunday" => "Ahad",
+"Monday" => "Isnin",
+"Tuesday" => "Selasa",
+"Wednesday" => "Rabu",
+"Thursday" => "Khamis",
+"Friday" => "Jumaat",
+"Saturday" => "Sabtu",
+"January" => "Januari",
+"February" => "Februari",
+"March" => "Mac",
+"April" => "April",
+"May" => "Mei",
+"June" => "Jun",
+"July" => "Julai",
+"August" => "Ogos",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "Disember",
"Settings" => "Tetapan",
"Cancel" => "Batal",
"No" => "Tidak",
"Yes" => "Ya",
"Ok" => "Ok",
"Error" => "Ralat",
+"Share" => "Kongsi",
"Password" => "Kata laluan",
"ownCloud password reset" => "Set semula kata lalaun ownCloud",
"Use the following link to reset your password: {link}" => "Guna pautan berikut untuk menetapkan semula kata laluan anda: {link}",
@@ -38,25 +58,6 @@
"Database name" => "Nama pangkalan data",
"Database host" => "Hos pangkalan data",
"Finish setup" => "Setup selesai",
-"Sunday" => "Ahad",
-"Monday" => "Isnin",
-"Tuesday" => "Selasa",
-"Wednesday" => "Rabu",
-"Thursday" => "Khamis",
-"Friday" => "Jumaat",
-"Saturday" => "Sabtu",
-"January" => "Januari",
-"February" => "Februari",
-"March" => "Mac",
-"April" => "April",
-"May" => "Mei",
-"June" => "Jun",
-"July" => "Julai",
-"August" => "Ogos",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "Disember",
"web services under your control" => "Perkhidmatan web di bawah kawalan anda",
"Log out" => "Log keluar",
"Lost your password?" => "Hilang kata laluan?",
diff --git a/core/l10n/nb_NO.php b/core/l10n/nb_NO.php
index d985e454b7c..65d6ea00cce 100644
--- a/core/l10n/nb_NO.php
+++ b/core/l10n/nb_NO.php
@@ -2,6 +2,25 @@
"No category to add?" => "Ingen kategorier å legge til?",
"This category already exists: " => "Denne kategorien finnes allerede:",
"No categories selected for deletion." => "Ingen kategorier merket for sletting.",
+"Sunday" => "Søndag",
+"Monday" => "Mandag",
+"Tuesday" => "Tirsdag",
+"Wednesday" => "Onsdag",
+"Thursday" => "Torsdag",
+"Friday" => "Fredag",
+"Saturday" => "Lørdag",
+"January" => "Januar",
+"February" => "Februar",
+"March" => "Mars",
+"April" => "April",
+"May" => "Mai",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "August",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "Desember",
"Settings" => "Innstillinger",
"seconds ago" => "sekunder siden",
"1 minute ago" => "1 minutt siden",
@@ -22,6 +41,7 @@
"Yes" => "Ja",
"Ok" => "Ok",
"Error" => "Feil",
+"Share" => "Del",
"Error while sharing" => "Feil under deling",
"Share with" => "Del med",
"Share with link" => "Del med link",
@@ -73,25 +93,6 @@
"Database tablespace" => "Database tabellområde",
"Database host" => "Databasevert",
"Finish setup" => "Fullfør oppsetting",
-"Sunday" => "Søndag",
-"Monday" => "Mandag",
-"Tuesday" => "Tirsdag",
-"Wednesday" => "Onsdag",
-"Thursday" => "Torsdag",
-"Friday" => "Fredag",
-"Saturday" => "Lørdag",
-"January" => "Januar",
-"February" => "Februar",
-"March" => "Mars",
-"April" => "April",
-"May" => "Mai",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "August",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "Desember",
"web services under your control" => "nettjenester under din kontroll",
"Log out" => "Logg ut",
"Automatic logon rejected!" => "Automatisk pålogging avvist!",
diff --git a/core/l10n/nl.php b/core/l10n/nl.php
index 739d8181d6f..91ab7827fd6 100644
--- a/core/l10n/nl.php
+++ b/core/l10n/nl.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Toevoegen van %s aan favorieten is mislukt.",
"No categories selected for deletion." => "Geen categorie geselecteerd voor verwijdering.",
"Error removing %s from favorites." => "Verwijderen %s van favorieten is mislukt.",
+"Sunday" => "Zondag",
+"Monday" => "Maandag",
+"Tuesday" => "Dinsdag",
+"Wednesday" => "Woensdag",
+"Thursday" => "Donderdag",
+"Friday" => "Vrijdag",
+"Saturday" => "Zaterdag",
+"January" => "januari",
+"February" => "februari",
+"March" => "maart",
+"April" => "april",
+"May" => "mei",
+"June" => "juni",
+"July" => "juli",
+"August" => "augustus",
+"September" => "september",
+"October" => "oktober",
+"November" => "november",
+"December" => "december",
"Settings" => "Instellingen",
"seconds ago" => "seconden geleden",
"1 minute ago" => "1 minuut geleden",
@@ -34,6 +53,7 @@
"Error" => "Fout",
"The app name is not specified." => "De app naam is niet gespecificeerd.",
"The required file {file} is not installed!" => "Het vereiste bestand {file} is niet geïnstalleerd!",
+"Share" => "Delen",
"Error while sharing" => "Fout tijdens het delen",
"Error while unsharing" => "Fout tijdens het stoppen met delen",
"Error while changing permissions" => "Fout tijdens het veranderen van permissies",
@@ -98,25 +118,6 @@
"Database tablespace" => "Database tablespace",
"Database host" => "Database server",
"Finish setup" => "Installatie afronden",
-"Sunday" => "Zondag",
-"Monday" => "Maandag",
-"Tuesday" => "Dinsdag",
-"Wednesday" => "Woensdag",
-"Thursday" => "Donderdag",
-"Friday" => "Vrijdag",
-"Saturday" => "Zaterdag",
-"January" => "januari",
-"February" => "februari",
-"March" => "maart",
-"April" => "april",
-"May" => "mei",
-"June" => "juni",
-"July" => "juli",
-"August" => "augustus",
-"September" => "september",
-"October" => "oktober",
-"November" => "november",
-"December" => "december",
"web services under your control" => "Webdiensten in eigen beheer",
"Log out" => "Afmelden",
"Automatic logon rejected!" => "Automatische aanmelding geweigerd!",
diff --git a/core/l10n/nn_NO.php b/core/l10n/nn_NO.php
index 8aaf0b705c8..61b2baffbf2 100644
--- a/core/l10n/nn_NO.php
+++ b/core/l10n/nn_NO.php
@@ -1,4 +1,23 @@
"Søndag",
+"Monday" => "Måndag",
+"Tuesday" => "Tysdag",
+"Wednesday" => "Onsdag",
+"Thursday" => "Torsdag",
+"Friday" => "Fredag",
+"Saturday" => "Laurdag",
+"January" => "Januar",
+"February" => "Februar",
+"March" => "Mars",
+"April" => "April",
+"May" => "Mai",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "August",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "Desember",
"Settings" => "Innstillingar",
"Cancel" => "Kanseller",
"Error" => "Feil",
@@ -28,25 +47,6 @@
"Database name" => "Databasenamn",
"Database host" => "Databasetenar",
"Finish setup" => "Fullfør oppsettet",
-"Sunday" => "Søndag",
-"Monday" => "Måndag",
-"Tuesday" => "Tysdag",
-"Wednesday" => "Onsdag",
-"Thursday" => "Torsdag",
-"Friday" => "Fredag",
-"Saturday" => "Laurdag",
-"January" => "Januar",
-"February" => "Februar",
-"March" => "Mars",
-"April" => "April",
-"May" => "Mai",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "August",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "Desember",
"web services under your control" => "Vev tjenester under din kontroll",
"Log out" => "Logg ut",
"Lost your password?" => "Gløymt passordet?",
diff --git a/core/l10n/oc.php b/core/l10n/oc.php
index be6d5aec285..5b399dd8264 100644
--- a/core/l10n/oc.php
+++ b/core/l10n/oc.php
@@ -2,6 +2,25 @@
"No category to add?" => "Pas de categoria d'ajustar ?",
"This category already exists: " => "La categoria exista ja :",
"No categories selected for deletion." => "Pas de categorias seleccionadas per escafar.",
+"Sunday" => "Dimenge",
+"Monday" => "Diluns",
+"Tuesday" => "Dimarç",
+"Wednesday" => "Dimecres",
+"Thursday" => "Dijòus",
+"Friday" => "Divendres",
+"Saturday" => "Dissabte",
+"January" => "Genièr",
+"February" => "Febrièr",
+"March" => "Març",
+"April" => "Abril",
+"May" => "Mai",
+"June" => "Junh",
+"July" => "Julhet",
+"August" => "Agost",
+"September" => "Septembre",
+"October" => "Octobre",
+"November" => "Novembre",
+"December" => "Decembre",
"Settings" => "Configuracion",
"seconds ago" => "segonda a",
"1 minute ago" => "1 minuta a",
@@ -17,6 +36,7 @@
"Yes" => "Òc",
"Ok" => "D'accòrdi",
"Error" => "Error",
+"Share" => "Parteja",
"Error while sharing" => "Error al partejar",
"Error while unsharing" => "Error al non partejar",
"Error while changing permissions" => "Error al cambiar permissions",
@@ -69,25 +89,6 @@
"Database tablespace" => "Espandi de taula de basa de donadas",
"Database host" => "Òste de basa de donadas",
"Finish setup" => "Configuracion acabada",
-"Sunday" => "Dimenge",
-"Monday" => "Diluns",
-"Tuesday" => "Dimarç",
-"Wednesday" => "Dimecres",
-"Thursday" => "Dijòus",
-"Friday" => "Divendres",
-"Saturday" => "Dissabte",
-"January" => "Genièr",
-"February" => "Febrièr",
-"March" => "Març",
-"April" => "Abril",
-"May" => "Mai",
-"June" => "Junh",
-"July" => "Julhet",
-"August" => "Agost",
-"September" => "Septembre",
-"October" => "Octobre",
-"November" => "Novembre",
-"December" => "Decembre",
"web services under your control" => "Services web jos ton contraròtle",
"Log out" => "Sortida",
"Lost your password?" => "L'as perdut lo senhal ?",
diff --git a/core/l10n/pl.php b/core/l10n/pl.php
index 3324040209b..1376fa1359d 100644
--- a/core/l10n/pl.php
+++ b/core/l10n/pl.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Błąd dodania %s do ulubionych.",
"No categories selected for deletion." => "Nie ma kategorii zaznaczonych do usunięcia.",
"Error removing %s from favorites." => "Błąd usunięcia %s z ulubionych.",
+"Sunday" => "Niedziela",
+"Monday" => "Poniedziałek",
+"Tuesday" => "Wtorek",
+"Wednesday" => "Środa",
+"Thursday" => "Czwartek",
+"Friday" => "Piątek",
+"Saturday" => "Sobota",
+"January" => "Styczeń",
+"February" => "Luty",
+"March" => "Marzec",
+"April" => "Kwiecień",
+"May" => "Maj",
+"June" => "Czerwiec",
+"July" => "Lipiec",
+"August" => "Sierpień",
+"September" => "Wrzesień",
+"October" => "Październik",
+"November" => "Listopad",
+"December" => "Grudzień",
"Settings" => "Ustawienia",
"seconds ago" => "sekund temu",
"1 minute ago" => "1 minute temu",
@@ -34,6 +53,8 @@
"Error" => "Błąd",
"The app name is not specified." => "Nazwa aplikacji nie jest określona.",
"The required file {file} is not installed!" => "Żądany plik {file} nie jest zainstalowany!",
+"Share" => "Udostępnij",
+"Shared" => "Udostępniono",
"Error while sharing" => "Błąd podczas współdzielenia",
"Error while unsharing" => "Błąd podczas zatrzymywania współdzielenia",
"Error while changing permissions" => "Błąd przy zmianie uprawnień",
@@ -98,25 +119,6 @@
"Database tablespace" => "Obszar tabel bazy danych",
"Database host" => "Komputer bazy danych",
"Finish setup" => "Zakończ konfigurowanie",
-"Sunday" => "Niedziela",
-"Monday" => "Poniedziałek",
-"Tuesday" => "Wtorek",
-"Wednesday" => "Środa",
-"Thursday" => "Czwartek",
-"Friday" => "Piątek",
-"Saturday" => "Sobota",
-"January" => "Styczeń",
-"February" => "Luty",
-"March" => "Marzec",
-"April" => "Kwiecień",
-"May" => "Maj",
-"June" => "Czerwiec",
-"July" => "Lipiec",
-"August" => "Sierpień",
-"September" => "Wrzesień",
-"October" => "Październik",
-"November" => "Listopad",
-"December" => "Grudzień",
"web services under your control" => "usługi internetowe pod kontrolą",
"Log out" => "Wylogowuje użytkownika",
"Automatic logon rejected!" => "Automatyczne logowanie odrzucone!",
diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php
index 3b119650268..929f298c4c3 100644
--- a/core/l10n/pt_BR.php
+++ b/core/l10n/pt_BR.php
@@ -1,4 +1,8 @@
"O usuário %s compartilhou um arquivo com você",
+"User %s shared a folder with you" => "O usuário %s compartilhou uma pasta com você",
+"User %s shared the file \"%s\" with you. It is available for download here: %s" => "O usuário %s compartilhou com você o arquivo \"%s\", que está disponível para download em: %s",
+"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "O usuário %s compartilhou com você a pasta \"%s\", que está disponível para download em: %s",
"Category type not provided." => "Tipo de categoria não fornecido.",
"No category to add?" => "Nenhuma categoria adicionada?",
"This category already exists: " => "Essa categoria já existe",
@@ -7,6 +11,25 @@
"Error adding %s to favorites." => "Erro ao adicionar %s aos favoritos.",
"No categories selected for deletion." => "Nenhuma categoria selecionada para deletar.",
"Error removing %s from favorites." => "Erro ao remover %s dos favoritos.",
+"Sunday" => "Domingo",
+"Monday" => "Segunda-feira",
+"Tuesday" => "Terça-feira",
+"Wednesday" => "Quarta-feira",
+"Thursday" => "Quinta-feira",
+"Friday" => "Sexta-feira",
+"Saturday" => "Sábado",
+"January" => "Janeiro",
+"February" => "Fevereiro",
+"March" => "Março",
+"April" => "Abril",
+"May" => "Maio",
+"June" => "Junho",
+"July" => "Julho",
+"August" => "Agosto",
+"September" => "Setembro",
+"October" => "Outubro",
+"November" => "Novembro",
+"December" => "Dezembro",
"Settings" => "Configurações",
"seconds ago" => "segundos atrás",
"1 minute ago" => "1 minuto atrás",
@@ -30,6 +53,8 @@
"Error" => "Erro",
"The app name is not specified." => "O nome do app não foi especificado.",
"The required file {file} is not installed!" => "O arquivo {file} necessário não está instalado!",
+"Share" => "Compartilhar",
+"Shared" => "Compartilhados",
"Error while sharing" => "Erro ao compartilhar",
"Error while unsharing" => "Erro ao descompartilhar",
"Error while changing permissions" => "Erro ao mudar permissões",
@@ -39,6 +64,8 @@
"Share with link" => "Compartilhar com link",
"Password protect" => "Proteger com senha",
"Password" => "Senha",
+"Email link to person" => "Enviar link por e-mail",
+"Send" => "Enviar",
"Set expiration date" => "Definir data de expiração",
"Expiration date" => "Data de expiração",
"Share via email:" => "Compartilhar via e-mail:",
@@ -55,6 +82,10 @@
"Password protected" => "Protegido com senha",
"Error unsetting expiration date" => "Erro ao remover data de expiração",
"Error setting expiration date" => "Erro ao definir data de expiração",
+"Sending ..." => "Enviando ...",
+"Email sent" => "E-mail enviado",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "A atualização falhou. Por favor, relate este problema para a comunidade ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "A atualização teve êxito. Você será redirecionado ao ownCloud agora.",
"ownCloud password reset" => "Redefinir senha ownCloud",
"Use the following link to reset your password: {link}" => "Use o seguinte link para redefinir sua senha: {link}",
"You will receive a link to reset your password via Email." => "Você receberá um link para redefinir sua senha via e-mail.",
@@ -90,25 +121,6 @@
"Database tablespace" => "Espaço de tabela do banco de dados",
"Database host" => "Banco de dados do host",
"Finish setup" => "Concluir configuração",
-"Sunday" => "Domingo",
-"Monday" => "Segunda-feira",
-"Tuesday" => "Terça-feira",
-"Wednesday" => "Quarta-feira",
-"Thursday" => "Quinta-feira",
-"Friday" => "Sexta-feira",
-"Saturday" => "Sábado",
-"January" => "Janeiro",
-"February" => "Fevereiro",
-"March" => "Março",
-"April" => "Abril",
-"May" => "Maio",
-"June" => "Junho",
-"July" => "Julho",
-"August" => "Agosto",
-"September" => "Setembro",
-"October" => "Outubro",
-"November" => "Novembro",
-"December" => "Dezembro",
"web services under your control" => "web services sob seu controle",
"Log out" => "Sair",
"Automatic logon rejected!" => "Entrada Automática no Sistema Rejeitada!",
@@ -118,5 +130,6 @@
"remember" => "lembrete",
"Log in" => "Log in",
"prev" => "anterior",
-"next" => "próximo"
+"next" => "próximo",
+"Updating ownCloud to version %s, this may take a while." => "Atualizando ownCloud para a versão %s, isto pode levar algum tempo."
);
diff --git a/core/l10n/pt_PT.php b/core/l10n/pt_PT.php
index 6e3a558986c..2189a7e811c 100644
--- a/core/l10n/pt_PT.php
+++ b/core/l10n/pt_PT.php
@@ -9,11 +9,30 @@
"Object type not provided." => "Tipo de objecto não fornecido",
"%s ID not provided." => "ID %s não fornecido",
"Error adding %s to favorites." => "Erro a adicionar %s aos favoritos",
-"No categories selected for deletion." => "Nenhuma categoria seleccionar para eliminar",
+"No categories selected for deletion." => "Nenhuma categoria seleccionada para apagar",
"Error removing %s from favorites." => "Erro a remover %s dos favoritos.",
+"Sunday" => "Domingo",
+"Monday" => "Segunda",
+"Tuesday" => "Terça",
+"Wednesday" => "Quarta",
+"Thursday" => "Quinta",
+"Friday" => "Sexta",
+"Saturday" => "Sábado",
+"January" => "Janeiro",
+"February" => "Fevereiro",
+"March" => "Março",
+"April" => "Abril",
+"May" => "Maio",
+"June" => "Junho",
+"July" => "Julho",
+"August" => "Agosto",
+"September" => "Setembro",
+"October" => "Outubro",
+"November" => "Novembro",
+"December" => "Dezembro",
"Settings" => "Definições",
"seconds ago" => "Minutos atrás",
-"1 minute ago" => "Falta 1 minuto",
+"1 minute ago" => "Há 1 minuto",
"{minutes} minutes ago" => "{minutes} minutos atrás",
"1 hour ago" => "Há 1 hora",
"{hours} hours ago" => "Há {hours} horas atrás",
@@ -34,6 +53,8 @@
"Error" => "Erro",
"The app name is not specified." => "O nome da aplicação não foi especificado",
"The required file {file} is not installed!" => "O ficheiro necessário {file} não está instalado!",
+"Share" => "Partilhar",
+"Shared" => "Partilhado",
"Error while sharing" => "Erro ao partilhar",
"Error while unsharing" => "Erro ao deixar de partilhar",
"Error while changing permissions" => "Erro ao mudar permissões",
@@ -62,7 +83,9 @@
"Error unsetting expiration date" => "Erro ao retirar a data de expiração",
"Error setting expiration date" => "Erro ao aplicar a data de expiração",
"Sending ..." => "A Enviar...",
-"Email sent" => "E-mail enviado com sucesso!",
+"Email sent" => "E-mail enviado",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "A actualização falhou. Por favor reporte este incidente seguindo este link ownCloud community.",
+"The update was successful. Redirecting you to ownCloud now." => "A actualização foi concluída com sucesso. Vai ser redireccionado para o ownCloud agora.",
"ownCloud password reset" => "Reposição da password ownCloud",
"Use the following link to reset your password: {link}" => "Use o seguinte endereço para repor a sua password: {link}",
"You will receive a link to reset your password via Email." => "Vai receber um endereço para repor a sua password",
@@ -71,7 +94,7 @@
"Username" => "Utilizador",
"Request reset" => "Pedir reposição",
"Your password was reset" => "A sua password foi reposta",
-"To login page" => "Para a página de conexão",
+"To login page" => "Para a página de entrada",
"New password" => "Nova password",
"Reset password" => "Repor password",
"Personal" => "Pessoal",
@@ -96,36 +119,17 @@
"Database password" => "Password da base de dados",
"Database name" => "Nome da base de dados",
"Database tablespace" => "Tablespace da base de dados",
-"Database host" => "Host da base de dados",
+"Database host" => "Anfitrião da base de dados",
"Finish setup" => "Acabar instalação",
-"Sunday" => "Domingo",
-"Monday" => "Segunda",
-"Tuesday" => "Terça",
-"Wednesday" => "Quarta",
-"Thursday" => "Quinta",
-"Friday" => "Sexta",
-"Saturday" => "Sábado",
-"January" => "Janeiro",
-"February" => "Fevereiro",
-"March" => "Março",
-"April" => "Abril",
-"May" => "Maio",
-"June" => "Junho",
-"July" => "Julho",
-"August" => "Agosto",
-"September" => "Setembro",
-"October" => "Outubro",
-"November" => "Novembro",
-"December" => "Dezembro",
"web services under your control" => "serviços web sob o seu controlo",
"Log out" => "Sair",
"Automatic logon rejected!" => "Login automático rejeitado!",
"If you did not change your password recently, your account may be compromised!" => "Se não mudou a sua palavra-passe recentemente, a sua conta pode ter sido comprometida!",
"Please change your password to secure your account again." => "Por favor mude a sua palavra-passe para assegurar a sua conta de novo.",
-"Lost your password?" => "Esqueceu a sua password?",
+"Lost your password?" => "Esqueceu-se da sua password?",
"remember" => "lembrar",
"Log in" => "Entrar",
"prev" => "anterior",
"next" => "seguinte",
-"Updating ownCloud to version %s, this may take a while." => "A Actualizar o ownCloud para a versão %s, esta operação pode demorar."
+"Updating ownCloud to version %s, this may take a while." => "A actualizar o ownCloud para a versão %s, esta operação pode demorar."
);
diff --git a/core/l10n/ro.php b/core/l10n/ro.php
index 3e389bfab0c..83587fa4a76 100644
--- a/core/l10n/ro.php
+++ b/core/l10n/ro.php
@@ -53,6 +53,7 @@
"Error" => "Eroare",
"The app name is not specified." => "Numele aplicației nu a fost specificat",
"The required file {file} is not installed!" => "Fișierul obligatoriu {file} nu este instalat!",
+"Share" => "Partajează",
"Error while sharing" => "Eroare la partajare",
"Error while unsharing" => "Eroare la anularea partajării",
"Error while changing permissions" => "Eroare la modificarea permisiunilor",
diff --git a/core/l10n/ru.php b/core/l10n/ru.php
index 7434d6af7f8..7b11ea43a4b 100644
--- a/core/l10n/ru.php
+++ b/core/l10n/ru.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Ошибка добавления %s в избранное",
"No categories selected for deletion." => "Нет категорий для удаления.",
"Error removing %s from favorites." => "Ошибка удаления %s из избранного",
+"Sunday" => "Воскресенье",
+"Monday" => "Понедельник",
+"Tuesday" => "Вторник",
+"Wednesday" => "Среда",
+"Thursday" => "Четверг",
+"Friday" => "Пятница",
+"Saturday" => "Суббота",
+"January" => "Январь",
+"February" => "Февраль",
+"March" => "Март",
+"April" => "Апрель",
+"May" => "Май",
+"June" => "Июнь",
+"July" => "Июль",
+"August" => "Август",
+"September" => "Сентябрь",
+"October" => "Октябрь",
+"November" => "Ноябрь",
+"December" => "Декабрь",
"Settings" => "Настройки",
"seconds ago" => "несколько секунд назад",
"1 minute ago" => "1 минуту назад",
@@ -34,6 +53,7 @@
"Error" => "Ошибка",
"The app name is not specified." => "Имя приложения не указано",
"The required file {file} is not installed!" => "Необходимый файл {file} не установлен!",
+"Share" => "Открыть доступ",
"Error while sharing" => "Ошибка при открытии доступа",
"Error while unsharing" => "Ошибка при закрытии доступа",
"Error while changing permissions" => "Ошибка при смене разрешений",
@@ -98,25 +118,6 @@
"Database tablespace" => "Табличое пространство базы данных",
"Database host" => "Хост базы данных",
"Finish setup" => "Завершить установку",
-"Sunday" => "Воскресенье",
-"Monday" => "Понедельник",
-"Tuesday" => "Вторник",
-"Wednesday" => "Среда",
-"Thursday" => "Четверг",
-"Friday" => "Пятница",
-"Saturday" => "Суббота",
-"January" => "Январь",
-"February" => "Февраль",
-"March" => "Март",
-"April" => "Апрель",
-"May" => "Май",
-"June" => "Июнь",
-"July" => "Июль",
-"August" => "Август",
-"September" => "Сентябрь",
-"October" => "Октябрь",
-"November" => "Ноябрь",
-"December" => "Декабрь",
"web services under your control" => "Сетевые службы под твоим контролем",
"Log out" => "Выйти",
"Automatic logon rejected!" => "Автоматический вход в систему отключен!",
diff --git a/core/l10n/ru_RU.php b/core/l10n/ru_RU.php
index 84bd8f93156..53a3b9b0d59 100644
--- a/core/l10n/ru_RU.php
+++ b/core/l10n/ru_RU.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Ошибка добавления %s в избранное.",
"No categories selected for deletion." => "Нет категорий, выбранных для удаления.",
"Error removing %s from favorites." => "Ошибка удаления %s из избранного.",
+"Sunday" => "Воскресенье",
+"Monday" => "Понедельник",
+"Tuesday" => "Вторник",
+"Wednesday" => "Среда",
+"Thursday" => "Четверг",
+"Friday" => "Пятница",
+"Saturday" => "Суббота",
+"January" => "Январь",
+"February" => "Февраль",
+"March" => "Март",
+"April" => "Апрель",
+"May" => "Май",
+"June" => "Июнь",
+"July" => "Июль",
+"August" => "Август",
+"September" => "Сентябрь",
+"October" => "Октябрь",
+"November" => "Ноябрь",
+"December" => "Декабрь",
"Settings" => "Настройки",
"seconds ago" => "секунд назад",
"1 minute ago" => " 1 минуту назад",
@@ -34,6 +53,8 @@
"Error" => "Ошибка",
"The app name is not specified." => "Имя приложения не указано.",
"The required file {file} is not installed!" => "Требуемый файл {файл} не установлен!",
+"Share" => "Сделать общим",
+"Shared" => "Опубликовано",
"Error while sharing" => "Ошибка создания общего доступа",
"Error while unsharing" => "Ошибка отключения общего доступа",
"Error while changing permissions" => "Ошибка при изменении прав доступа",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Ошибка при установке даты истечения срока действия",
"Sending ..." => "Отправка ...",
"Email sent" => "Письмо отправлено",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Обновление прошло неудачно. Пожалуйста, сообщите об этом результате в ownCloud community.",
+"The update was successful. Redirecting you to ownCloud now." => "Обновление прошло успешно. Немедленное перенаправление Вас на ownCloud.",
"ownCloud password reset" => "Переназначение пароля",
"Use the following link to reset your password: {link}" => "Воспользуйтесь следующей ссылкой для переназначения пароля: {link}",
"You will receive a link to reset your password via Email." => "Вы получите ссылку для восстановления пароля по электронной почте.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Табличная область базы данных",
"Database host" => "Сервер базы данных",
"Finish setup" => "Завершение настройки",
-"Sunday" => "Воскресенье",
-"Monday" => "Понедельник",
-"Tuesday" => "Вторник",
-"Wednesday" => "Среда",
-"Thursday" => "Четверг",
-"Friday" => "Пятница",
-"Saturday" => "Суббота",
-"January" => "Январь",
-"February" => "Февраль",
-"March" => "Март",
-"April" => "Апрель",
-"May" => "Май",
-"June" => "Июнь",
-"July" => "Июль",
-"August" => "Август",
-"September" => "Сентябрь",
-"October" => "Октябрь",
-"November" => "Ноябрь",
-"December" => "Декабрь",
"web services under your control" => "веб-сервисы под Вашим контролем",
"Log out" => "Выйти",
"Automatic logon rejected!" => "Автоматический вход в систему отклонен!",
@@ -126,5 +130,6 @@
"remember" => "запомнить",
"Log in" => "Войти",
"prev" => "предыдущий",
-"next" => "следующий"
+"next" => "следующий",
+"Updating ownCloud to version %s, this may take a while." => "Обновление ownCloud до версии %s, это может занять некоторое время."
);
diff --git a/core/l10n/si_LK.php b/core/l10n/si_LK.php
index a6aeb484ed7..eab1ba10018 100644
--- a/core/l10n/si_LK.php
+++ b/core/l10n/si_LK.php
@@ -1,5 +1,24 @@
"මකා දැමීම සඳහා ප්රවර්ගයන් තෝරා නොමැත.",
+"Sunday" => "ඉරිදා",
+"Monday" => "සඳුදා",
+"Tuesday" => "අඟහරුවාදා",
+"Wednesday" => "බදාදා",
+"Thursday" => "බ්රහස්පතින්දා",
+"Friday" => "සිකුරාදා",
+"Saturday" => "සෙනසුරාදා",
+"January" => "ජනවාරි",
+"February" => "පෙබරවාරි",
+"March" => "මාර්තු",
+"April" => "අප්රේල්",
+"May" => "මැයි",
+"June" => "ජූනි",
+"July" => "ජූලි",
+"August" => "අගෝස්තු",
+"September" => "සැප්තැම්බර්",
+"October" => "ඔක්තෝබර්",
+"November" => "නොවැම්බර්",
+"December" => "දෙසැම්බර්",
"Settings" => "සැකසුම්",
"seconds ago" => "තත්පරයන්ට පෙර",
"1 minute ago" => "1 මිනිත්තුවකට පෙර",
@@ -15,6 +34,7 @@
"Yes" => "ඔව්",
"Ok" => "හරි",
"Error" => "දෝෂයක්",
+"Share" => "බෙදා හදා ගන්න",
"Share with" => "බෙදාගන්න",
"Share with link" => "යොමුවක් මඟින් බෙදාගන්න",
"Password protect" => "මුර පදයකින් ආරක්ශාකරන්න",
@@ -61,25 +81,6 @@
"Database name" => "දත්තගබඩාවේ නම",
"Database host" => "දත්තගබඩා සේවාදායකයා",
"Finish setup" => "ස්ථාපනය කිරීම අවසන් කරන්න",
-"Sunday" => "ඉරිදා",
-"Monday" => "සඳුදා",
-"Tuesday" => "අඟහරුවාදා",
-"Wednesday" => "බදාදා",
-"Thursday" => "බ්රහස්පතින්දා",
-"Friday" => "සිකුරාදා",
-"Saturday" => "සෙනසුරාදා",
-"January" => "ජනවාරි",
-"February" => "පෙබරවාරි",
-"March" => "මාර්තු",
-"April" => "අප්රේල්",
-"May" => "මැයි",
-"June" => "ජූනි",
-"July" => "ජූලි",
-"August" => "අගෝස්තු",
-"September" => "සැප්තැම්බර්",
-"October" => "ඔක්තෝබර්",
-"November" => "නොවැම්බර්",
-"December" => "දෙසැම්බර්",
"web services under your control" => "ඔබට පාලනය කළ හැකි වෙබ් සේවාවන්",
"Log out" => "නික්මීම",
"Lost your password?" => "මුරපදය අමතකද?",
diff --git a/core/l10n/sk_SK.php b/core/l10n/sk_SK.php
index 286642ace7a..ad5ae0ea371 100644
--- a/core/l10n/sk_SK.php
+++ b/core/l10n/sk_SK.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Chyba pri pridávaní %s do obľúbených položiek.",
"No categories selected for deletion." => "Neboli vybrané žiadne kategórie pre odstránenie.",
"Error removing %s from favorites." => "Chyba pri odstraňovaní %s z obľúbených položiek.",
+"Sunday" => "Nedeľa",
+"Monday" => "Pondelok",
+"Tuesday" => "Utorok",
+"Wednesday" => "Streda",
+"Thursday" => "Štvrtok",
+"Friday" => "Piatok",
+"Saturday" => "Sobota",
+"January" => "Január",
+"February" => "Február",
+"March" => "Marec",
+"April" => "Apríl",
+"May" => "Máj",
+"June" => "Jún",
+"July" => "Júl",
+"August" => "August",
+"September" => "September",
+"October" => "Október",
+"November" => "November",
+"December" => "December",
"Settings" => "Nastavenia",
"seconds ago" => "pred sekundami",
"1 minute ago" => "pred minútou",
@@ -34,6 +53,8 @@
"Error" => "Chyba",
"The app name is not specified." => "Nešpecifikované meno aplikácie.",
"The required file {file} is not installed!" => "Požadovaný súbor {file} nie je inštalovaný!",
+"Share" => "Zdieľaj",
+"Shared" => "Zdieľané",
"Error while sharing" => "Chyba počas zdieľania",
"Error while unsharing" => "Chyba počas ukončenia zdieľania",
"Error while changing permissions" => "Chyba počas zmeny oprávnení",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Chyba pri nastavení dátumu vypršania platnosti",
"Sending ..." => "Odosielam ...",
"Email sent" => "Email odoslaný",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Aktualizácia nebola úspešná. Problém nahláste na ownCloud community.",
+"The update was successful. Redirecting you to ownCloud now." => "Aktualizácia bola úspešná. Presmerovávam na ownCloud.",
"ownCloud password reset" => "Obnovenie hesla pre ownCloud",
"Use the following link to reset your password: {link}" => "Použite nasledujúci odkaz pre obnovenie vášho hesla: {link}",
"You will receive a link to reset your password via Email." => "Odkaz pre obnovenie hesla obdržíte e-mailom.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Tabuľkový priestor databázy",
"Database host" => "Server databázy",
"Finish setup" => "Dokončiť inštaláciu",
-"Sunday" => "Nedeľa",
-"Monday" => "Pondelok",
-"Tuesday" => "Utorok",
-"Wednesday" => "Streda",
-"Thursday" => "Štvrtok",
-"Friday" => "Piatok",
-"Saturday" => "Sobota",
-"January" => "Január",
-"February" => "Február",
-"March" => "Marec",
-"April" => "Apríl",
-"May" => "Máj",
-"June" => "Jún",
-"July" => "Júl",
-"August" => "August",
-"September" => "September",
-"October" => "Október",
-"November" => "November",
-"December" => "December",
"web services under your control" => "webové služby pod vašou kontrolou",
"Log out" => "Odhlásiť",
"Automatic logon rejected!" => "Automatické prihlásenie bolo zamietnuté!",
diff --git a/core/l10n/sl.php b/core/l10n/sl.php
index b2c924d412e..54cf817a7a0 100644
--- a/core/l10n/sl.php
+++ b/core/l10n/sl.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Napaka pri dodajanju %s med priljubljene.",
"No categories selected for deletion." => "Za izbris ni izbrana nobena kategorija.",
"Error removing %s from favorites." => "Napaka pri odstranjevanju %s iz priljubljenih.",
+"Sunday" => "nedelja",
+"Monday" => "ponedeljek",
+"Tuesday" => "torek",
+"Wednesday" => "sreda",
+"Thursday" => "četrtek",
+"Friday" => "petek",
+"Saturday" => "sobota",
+"January" => "januar",
+"February" => "februar",
+"March" => "marec",
+"April" => "april",
+"May" => "maj",
+"June" => "junij",
+"July" => "julij",
+"August" => "avgust",
+"September" => "september",
+"October" => "oktober",
+"November" => "november",
+"December" => "december",
"Settings" => "Nastavitve",
"seconds ago" => "pred nekaj sekundami",
"1 minute ago" => "pred minuto",
@@ -34,6 +53,7 @@
"Error" => "Napaka",
"The app name is not specified." => "Ime aplikacije ni podano.",
"The required file {file} is not installed!" => "Zahtevana datoteka {file} ni nameščena!",
+"Share" => "Souporaba",
"Error while sharing" => "Napaka med souporabo",
"Error while unsharing" => "Napaka med odstranjevanjem souporabe",
"Error while changing permissions" => "Napaka med spreminjanjem dovoljenj",
@@ -98,25 +118,6 @@
"Database tablespace" => "Razpredelnica podatkovne zbirke",
"Database host" => "Gostitelj podatkovne zbirke",
"Finish setup" => "Dokončaj namestitev",
-"Sunday" => "nedelja",
-"Monday" => "ponedeljek",
-"Tuesday" => "torek",
-"Wednesday" => "sreda",
-"Thursday" => "četrtek",
-"Friday" => "petek",
-"Saturday" => "sobota",
-"January" => "januar",
-"February" => "februar",
-"March" => "marec",
-"April" => "april",
-"May" => "maj",
-"June" => "junij",
-"July" => "julij",
-"August" => "avgust",
-"September" => "september",
-"October" => "oktober",
-"November" => "november",
-"December" => "december",
"web services under your control" => "spletne storitve pod vašim nadzorom",
"Log out" => "Odjava",
"Automatic logon rejected!" => "Samodejno prijavljanje je zavrnjeno!",
diff --git a/core/l10n/sr.php b/core/l10n/sr.php
index e55ad9250ab..ecd316b7cfb 100644
--- a/core/l10n/sr.php
+++ b/core/l10n/sr.php
@@ -9,6 +9,25 @@
"Error adding %s to favorites." => "Грешка приликом додавања %s у омиљене.",
"No categories selected for deletion." => "Ни једна категорија није означена за брисање.",
"Error removing %s from favorites." => "Грешка приликом уклањања %s из омиљених",
+"Sunday" => "Недеља",
+"Monday" => "Понедељак",
+"Tuesday" => "Уторак",
+"Wednesday" => "Среда",
+"Thursday" => "Четвртак",
+"Friday" => "Петак",
+"Saturday" => "Субота",
+"January" => "Јануар",
+"February" => "Фебруар",
+"March" => "Март",
+"April" => "Април",
+"May" => "Мај",
+"June" => "Јун",
+"July" => "Јул",
+"August" => "Август",
+"September" => "Септембар",
+"October" => "Октобар",
+"November" => "Новембар",
+"December" => "Децембар",
"Settings" => "Подешавања",
"seconds ago" => "пре неколико секунди",
"1 minute ago" => "пре 1 минут",
@@ -32,6 +51,7 @@
"Error" => "Грешка",
"The app name is not specified." => "Име програма није унето.",
"The required file {file} is not installed!" => "Потребна датотека {file} није инсталирана.",
+"Share" => "Дељење",
"Error while sharing" => "Грешка у дељењу",
"Error while unsharing" => "Грешка код искључења дељења",
"Error while changing permissions" => "Грешка код промене дозвола",
@@ -95,25 +115,6 @@
"Database tablespace" => "Радни простор базе података",
"Database host" => "Домаћин базе",
"Finish setup" => "Заврши подешавање",
-"Sunday" => "Недеља",
-"Monday" => "Понедељак",
-"Tuesday" => "Уторак",
-"Wednesday" => "Среда",
-"Thursday" => "Четвртак",
-"Friday" => "Петак",
-"Saturday" => "Субота",
-"January" => "Јануар",
-"February" => "Фебруар",
-"March" => "Март",
-"April" => "Април",
-"May" => "Мај",
-"June" => "Јун",
-"July" => "Јул",
-"August" => "Август",
-"September" => "Септембар",
-"October" => "Октобар",
-"November" => "Новембар",
-"December" => "Децембар",
"web services under your control" => "веб сервиси под контролом",
"Log out" => "Одјава",
"Automatic logon rejected!" => "Аутоматска пријава је одбијена!",
diff --git a/core/l10n/sr@latin.php b/core/l10n/sr@latin.php
index efcb7c10f01..ec3eab34e29 100644
--- a/core/l10n/sr@latin.php
+++ b/core/l10n/sr@latin.php
@@ -1,4 +1,23 @@
"Nedelja",
+"Monday" => "Ponedeljak",
+"Tuesday" => "Utorak",
+"Wednesday" => "Sreda",
+"Thursday" => "Četvrtak",
+"Friday" => "Petak",
+"Saturday" => "Subota",
+"January" => "Januar",
+"February" => "Februar",
+"March" => "Mart",
+"April" => "April",
+"May" => "Maj",
+"June" => "Jun",
+"July" => "Jul",
+"August" => "Avgust",
+"September" => "Septembar",
+"October" => "Oktobar",
+"November" => "Novembar",
+"December" => "Decembar",
"Settings" => "Podešavanja",
"Cancel" => "Otkaži",
"Password" => "Lozinka",
@@ -24,25 +43,6 @@
"Database name" => "Ime baze",
"Database host" => "Domaćin baze",
"Finish setup" => "Završi podešavanje",
-"Sunday" => "Nedelja",
-"Monday" => "Ponedeljak",
-"Tuesday" => "Utorak",
-"Wednesday" => "Sreda",
-"Thursday" => "Četvrtak",
-"Friday" => "Petak",
-"Saturday" => "Subota",
-"January" => "Januar",
-"February" => "Februar",
-"March" => "Mart",
-"April" => "April",
-"May" => "Maj",
-"June" => "Jun",
-"July" => "Jul",
-"August" => "Avgust",
-"September" => "Septembar",
-"October" => "Oktobar",
-"November" => "Novembar",
-"December" => "Decembar",
"Log out" => "Odjava",
"Lost your password?" => "Izgubili ste lozinku?",
"remember" => "upamti",
diff --git a/core/l10n/sv.php b/core/l10n/sv.php
index 70a9871be26..a0dde652693 100644
--- a/core/l10n/sv.php
+++ b/core/l10n/sv.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Fel vid tillägg av %s till favoriter.",
"No categories selected for deletion." => "Inga kategorier valda för radering.",
"Error removing %s from favorites." => "Fel vid borttagning av %s från favoriter.",
+"Sunday" => "Söndag",
+"Monday" => "Måndag",
+"Tuesday" => "Tisdag",
+"Wednesday" => "Onsdag",
+"Thursday" => "Torsdag",
+"Friday" => "Fredag",
+"Saturday" => "Lördag",
+"January" => "Januari",
+"February" => "Februari",
+"March" => "Mars",
+"April" => "April",
+"May" => "Maj",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "Augusti",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "December",
"Settings" => "Inställningar",
"seconds ago" => "sekunder sedan",
"1 minute ago" => "1 minut sedan",
@@ -34,6 +53,8 @@
"Error" => "Fel",
"The app name is not specified." => " Namnet på appen är inte specificerad.",
"The required file {file} is not installed!" => "Den nödvändiga filen {file} är inte installerad!",
+"Share" => "Dela",
+"Shared" => "Delad",
"Error while sharing" => "Fel vid delning",
"Error while unsharing" => "Fel när delning skulle avslutas",
"Error while changing permissions" => "Fel vid ändring av rättigheter",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Fel vid sättning av utgångsdatum",
"Sending ..." => "Skickar ...",
"Email sent" => "E-post skickat",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Uppdateringen misslyckades. Rapportera detta problem till ownCloud-gemenskapen.",
+"The update was successful. Redirecting you to ownCloud now." => "Uppdateringen lyckades. Du omdirigeras nu till OwnCloud",
"ownCloud password reset" => "ownCloud lösenordsåterställning",
"Use the following link to reset your password: {link}" => "Använd följande länk för att återställa lösenordet: {link}",
"You will receive a link to reset your password via Email." => "Du får en länk att återställa ditt lösenord via e-post.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Databas tabellutrymme",
"Database host" => "Databasserver",
"Finish setup" => "Avsluta installation",
-"Sunday" => "Söndag",
-"Monday" => "Måndag",
-"Tuesday" => "Tisdag",
-"Wednesday" => "Onsdag",
-"Thursday" => "Torsdag",
-"Friday" => "Fredag",
-"Saturday" => "Lördag",
-"January" => "Januari",
-"February" => "Februari",
-"March" => "Mars",
-"April" => "April",
-"May" => "Maj",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "Augusti",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "December",
"web services under your control" => "webbtjänster under din kontroll",
"Log out" => "Logga ut",
"Automatic logon rejected!" => "Automatisk inloggning inte tillåten!",
diff --git a/core/l10n/ta_LK.php b/core/l10n/ta_LK.php
index 65cfbbf965d..2b8829c717f 100644
--- a/core/l10n/ta_LK.php
+++ b/core/l10n/ta_LK.php
@@ -7,6 +7,25 @@
"Error adding %s to favorites." => "விருப்பங்களுக்கு %s ஐ சேர்ப்பதில் வழு",
"No categories selected for deletion." => "நீக்குவதற்கு எந்தப் பிரிவும் தெரிவுசெய்யப்படவில்லை.",
"Error removing %s from favorites." => "விருப்பத்திலிருந்து %s ஐ அகற்றுவதில் வழு.உஇஇ",
+"Sunday" => "ஞாயிற்றுக்கிழமை",
+"Monday" => "திங்கட்கிழமை",
+"Tuesday" => "செவ்வாய்க்கிழமை",
+"Wednesday" => "புதன்கிழமை",
+"Thursday" => "வியாழக்கிழமை",
+"Friday" => "வெள்ளிக்கிழமை",
+"Saturday" => "சனிக்கிழமை",
+"January" => "தை",
+"February" => "மாசி",
+"March" => "பங்குனி",
+"April" => "சித்திரை",
+"May" => "வைகாசி",
+"June" => "ஆனி",
+"July" => "ஆடி",
+"August" => "ஆவணி",
+"September" => "புரட்டாசி",
+"October" => "ஐப்பசி",
+"November" => "கார்த்திகை",
+"December" => "மார்கழி",
"Settings" => "அமைப்புகள்",
"seconds ago" => "செக்கன்களுக்கு முன்",
"1 minute ago" => "1 நிமிடத்திற்கு முன் ",
@@ -30,6 +49,7 @@
"Error" => "வழு",
"The app name is not specified." => "செயலி பெயர் குறிப்பிடப்படவில்லை.",
"The required file {file} is not installed!" => "தேவைப்பட்ட கோப்பு {கோப்பு} நிறுவப்படவில்லை!",
+"Share" => "பகிர்வு",
"Error while sharing" => "பகிரும் போதான வழு",
"Error while unsharing" => "பகிராமல் உள்ளப்போதான வழு",
"Error while changing permissions" => "அனுமதிகள் மாறும்போதான வழு",
@@ -90,25 +110,6 @@
"Database tablespace" => "தரவுத்தள அட்டவணை",
"Database host" => "தரவுத்தள ஓம்புனர்",
"Finish setup" => "அமைப்பை முடிக்க",
-"Sunday" => "ஞாயிற்றுக்கிழமை",
-"Monday" => "திங்கட்கிழமை",
-"Tuesday" => "செவ்வாய்க்கிழமை",
-"Wednesday" => "புதன்கிழமை",
-"Thursday" => "வியாழக்கிழமை",
-"Friday" => "வெள்ளிக்கிழமை",
-"Saturday" => "சனிக்கிழமை",
-"January" => "தை",
-"February" => "மாசி",
-"March" => "பங்குனி",
-"April" => "சித்திரை",
-"May" => "வைகாசி",
-"June" => "ஆனி",
-"July" => "ஆடி",
-"August" => "ஆவணி",
-"September" => "புரட்டாசி",
-"October" => "ஐப்பசி",
-"November" => "கார்த்திகை",
-"December" => "மார்கழி",
"web services under your control" => "உங்கள் கட்டுப்பாட்டின் கீழ் இணைய சேவைகள்",
"Log out" => "விடுபதிகை செய்க",
"Automatic logon rejected!" => "தன்னிச்சையான புகுபதிகை நிராகரிப்பட்டது!",
diff --git a/core/l10n/th_TH.php b/core/l10n/th_TH.php
index bcbd70d03e6..7e00ac6e2df 100644
--- a/core/l10n/th_TH.php
+++ b/core/l10n/th_TH.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "เกิดข้อผิดพลาดในการเพิ่ม %s เข้าไปยังรายการโปรด",
"No categories selected for deletion." => "ยังไม่ได้เลือกหมวดหมู่ที่ต้องการลบ",
"Error removing %s from favorites." => "เกิดข้อผิดพลาดในการลบ %s ออกจากรายการโปรด",
+"Sunday" => "วันอาทิตย์",
+"Monday" => "วันจันทร์",
+"Tuesday" => "วันอังคาร",
+"Wednesday" => "วันพุธ",
+"Thursday" => "วันพฤหัสบดี",
+"Friday" => "วันศุกร์",
+"Saturday" => "วันเสาร์",
+"January" => "มกราคม",
+"February" => "กุมภาพันธ์",
+"March" => "มีนาคม",
+"April" => "เมษายน",
+"May" => "พฤษภาคม",
+"June" => "มิถุนายน",
+"July" => "กรกฏาคม",
+"August" => "สิงหาคม",
+"September" => "กันยายน",
+"October" => "ตุลาคม",
+"November" => "พฤศจิกายน",
+"December" => "ธันวาคม",
"Settings" => "ตั้งค่า",
"seconds ago" => "วินาที ก่อนหน้านี้",
"1 minute ago" => "1 นาทีก่อนหน้านี้",
@@ -34,6 +53,7 @@
"Error" => "พบข้อผิดพลาด",
"The app name is not specified." => "ชื่อของแอปยังไม่ได้รับการระบุชื่อ",
"The required file {file} is not installed!" => "ไฟล์ {file} ซึ่งเป็นไฟล์ที่จำเป็นต้องได้รับการติดตั้งไว้ก่อน ยังไม่ได้ถูกติดตั้ง",
+"Share" => "แชร์",
"Error while sharing" => "เกิดข้อผิดพลาดในระหว่างการแชร์ข้อมูล",
"Error while unsharing" => "เกิดข้อผิดพลาดในการยกเลิกการแชร์ข้อมูล",
"Error while changing permissions" => "เกิดข้อผิดพลาดในการเปลี่ยนสิทธิ์การเข้าใช้งาน",
@@ -63,6 +83,8 @@
"Error setting expiration date" => "เกิดข้อผิดพลาดในการตั้งค่าวันที่หมดอายุ",
"Sending ..." => "กำลังส่ง...",
"Email sent" => "ส่งอีเมล์แล้ว",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "การอัพเดทไม่เป็นผลสำเร็จ กรุณาแจ้งปัญหาที่เกิดขึ้นไปยัง คอมมูนิตี้ผู้ใช้งาน ownCloud",
+"The update was successful. Redirecting you to ownCloud now." => "การอัพเดทเสร็จเรียบร้อยแล้ว กำลังเปลี่ยนเส้นทางไปที่ ownCloud อยู่ในขณะนี้",
"ownCloud password reset" => "รีเซ็ตรหัสผ่าน ownCloud",
"Use the following link to reset your password: {link}" => "ใช้ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่านของคุณใหม่: {link}",
"You will receive a link to reset your password via Email." => "คุณจะได้รับลิงค์เพื่อกำหนดรหัสผ่านใหม่ทางอีเมล์",
@@ -98,25 +120,6 @@
"Database tablespace" => "พื้นที่ตารางในฐานข้อมูล",
"Database host" => "Database host",
"Finish setup" => "ติดตั้งเรียบร้อยแล้ว",
-"Sunday" => "วันอาทิตย์",
-"Monday" => "วันจันทร์",
-"Tuesday" => "วันอังคาร",
-"Wednesday" => "วันพุธ",
-"Thursday" => "วันพฤหัสบดี",
-"Friday" => "วันศุกร์",
-"Saturday" => "วันเสาร์",
-"January" => "มกราคม",
-"February" => "กุมภาพันธ์",
-"March" => "มีนาคม",
-"April" => "เมษายน",
-"May" => "พฤษภาคม",
-"June" => "มิถุนายน",
-"July" => "กรกฏาคม",
-"August" => "สิงหาคม",
-"September" => "กันยายน",
-"October" => "ตุลาคม",
-"November" => "พฤศจิกายน",
-"December" => "ธันวาคม",
"web services under your control" => "web services under your control",
"Log out" => "ออกจากระบบ",
"Automatic logon rejected!" => "การเข้าสู่ระบบอัตโนมัติถูกปฏิเสธแล้ว",
diff --git a/core/l10n/tr.php b/core/l10n/tr.php
index 58e28a9b3b9..624887674d1 100644
--- a/core/l10n/tr.php
+++ b/core/l10n/tr.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "%s favorilere eklenirken hata oluştu",
"No categories selected for deletion." => "Silmek için bir kategori seçilmedi",
"Error removing %s from favorites." => "%s favorilere çıkarılırken hata oluştu",
+"Sunday" => "Pazar",
+"Monday" => "Pazartesi",
+"Tuesday" => "Salı",
+"Wednesday" => "Çarşamba",
+"Thursday" => "Perşembe",
+"Friday" => "Cuma",
+"Saturday" => "Cumartesi",
+"January" => "Ocak",
+"February" => "Şubat",
+"March" => "Mart",
+"April" => "Nisan",
+"May" => "Mayıs",
+"June" => "Haziran",
+"July" => "Temmuz",
+"August" => "Ağustos",
+"September" => "Eylül",
+"October" => "Ekim",
+"November" => "Kasım",
+"December" => "Aralık",
"Settings" => "Ayarlar",
"seconds ago" => "saniye önce",
"1 minute ago" => "1 dakika önce",
@@ -34,6 +53,7 @@
"Error" => "Hata",
"The app name is not specified." => "uygulama adı belirtilmedi.",
"The required file {file} is not installed!" => "İhtiyaç duyulan {file} dosyası kurulu değil.",
+"Share" => "Paylaş",
"Error while sharing" => "Paylaşım sırasında hata ",
"Error while unsharing" => "Paylaşım iptal ediliyorken hata",
"Error while changing permissions" => "İzinleri değiştirirken hata oluştu",
@@ -98,25 +118,6 @@
"Database tablespace" => "Veritabanı tablo alanı",
"Database host" => "Veritabanı sunucusu",
"Finish setup" => "Kurulumu tamamla",
-"Sunday" => "Pazar",
-"Monday" => "Pazartesi",
-"Tuesday" => "Salı",
-"Wednesday" => "Çarşamba",
-"Thursday" => "Perşembe",
-"Friday" => "Cuma",
-"Saturday" => "Cumartesi",
-"January" => "Ocak",
-"February" => "Şubat",
-"March" => "Mart",
-"April" => "Nisan",
-"May" => "Mayıs",
-"June" => "Haziran",
-"July" => "Temmuz",
-"August" => "Ağustos",
-"September" => "Eylül",
-"October" => "Ekim",
-"November" => "Kasım",
-"December" => "Aralık",
"web services under your control" => "kontrolünüzdeki web servisleri",
"Log out" => "Çıkış yap",
"Automatic logon rejected!" => "Otomatik oturum açma reddedildi!",
diff --git a/core/l10n/uk.php b/core/l10n/uk.php
index 88e18d3eb28..fa8150e7c9d 100644
--- a/core/l10n/uk.php
+++ b/core/l10n/uk.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Помилка при додаванні %s до обраного.",
"No categories selected for deletion." => "Жодної категорії не обрано для видалення.",
"Error removing %s from favorites." => "Помилка при видалені %s із обраного.",
+"Sunday" => "Неділя",
+"Monday" => "Понеділок",
+"Tuesday" => "Вівторок",
+"Wednesday" => "Середа",
+"Thursday" => "Четвер",
+"Friday" => "П'ятниця",
+"Saturday" => "Субота",
+"January" => "Січень",
+"February" => "Лютий",
+"March" => "Березень",
+"April" => "Квітень",
+"May" => "Травень",
+"June" => "Червень",
+"July" => "Липень",
+"August" => "Серпень",
+"September" => "Вересень",
+"October" => "Жовтень",
+"November" => "Листопад",
+"December" => "Грудень",
"Settings" => "Налаштування",
"seconds ago" => "секунди тому",
"1 minute ago" => "1 хвилину тому",
@@ -34,6 +53,7 @@
"Error" => "Помилка",
"The app name is not specified." => "Не визначено ім'я програми.",
"The required file {file} is not installed!" => "Необхідний файл {file} не встановлено!",
+"Share" => "Поділитися",
"Error while sharing" => "Помилка під час публікації",
"Error while unsharing" => "Помилка під час відміни публікації",
"Error while changing permissions" => "Помилка при зміні повноважень",
@@ -98,25 +118,6 @@
"Database tablespace" => "Таблиця бази даних",
"Database host" => "Хост бази даних",
"Finish setup" => "Завершити налаштування",
-"Sunday" => "Неділя",
-"Monday" => "Понеділок",
-"Tuesday" => "Вівторок",
-"Wednesday" => "Середа",
-"Thursday" => "Четвер",
-"Friday" => "П'ятниця",
-"Saturday" => "Субота",
-"January" => "Січень",
-"February" => "Лютий",
-"March" => "Березень",
-"April" => "Квітень",
-"May" => "Травень",
-"June" => "Червень",
-"July" => "Липень",
-"August" => "Серпень",
-"September" => "Вересень",
-"October" => "Жовтень",
-"November" => "Листопад",
-"December" => "Грудень",
"web services under your control" => "веб-сервіс під вашим контролем",
"Log out" => "Вихід",
"Automatic logon rejected!" => "Автоматичний вхід в систему відхилений!",
diff --git a/core/l10n/vi.php b/core/l10n/vi.php
index c827dc038e6..078cfa8dd8c 100644
--- a/core/l10n/vi.php
+++ b/core/l10n/vi.php
@@ -1,4 +1,8 @@
"%s chia sẻ tập tin này cho bạn",
+"User %s shared a folder with you" => "%s chia sẻ thư mục này cho bạn",
+"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Người dùng %s chia sẻ tập tin \"%s\" cho bạn .Bạn có thể tải tại đây : %s",
+"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Người dùng %s chia sẻ thư mục \"%s\" cho bạn .Bạn có thể tải tại đây : %s",
"Category type not provided." => "Kiểu hạng mục không được cung cấp.",
"No category to add?" => "Không có danh mục được thêm?",
"This category already exists: " => "Danh mục này đã được tạo :",
@@ -7,6 +11,25 @@
"Error adding %s to favorites." => "Lỗi thêm %s vào mục yêu thích.",
"No categories selected for deletion." => "Không có thể loại nào được chọn để xóa.",
"Error removing %s from favorites." => "Lỗi xóa %s từ mục yêu thích.",
+"Sunday" => "Chủ nhật",
+"Monday" => "Thứ 2",
+"Tuesday" => "Thứ 3",
+"Wednesday" => "Thứ 4",
+"Thursday" => "Thứ 5",
+"Friday" => "Thứ ",
+"Saturday" => "Thứ 7",
+"January" => "Tháng 1",
+"February" => "Tháng 2",
+"March" => "Tháng 3",
+"April" => "Tháng 4",
+"May" => "Tháng 5",
+"June" => "Tháng 6",
+"July" => "Tháng 7",
+"August" => "Tháng 8",
+"September" => "Tháng 9",
+"October" => "Tháng 10",
+"November" => "Tháng 11",
+"December" => "Tháng 12",
"Settings" => "Cài đặt",
"seconds ago" => "vài giây trước",
"1 minute ago" => "1 phút trước",
@@ -30,6 +53,7 @@
"Error" => "Lỗi",
"The app name is not specified." => "Tên ứng dụng không được chỉ định.",
"The required file {file} is not installed!" => "Tập tin cần thiết {file} không được cài đặt!",
+"Share" => "Chia sẻ",
"Error while sharing" => "Lỗi trong quá trình chia sẻ",
"Error while unsharing" => "Lỗi trong quá trình gỡ chia sẻ",
"Error while changing permissions" => "Lỗi trong quá trình phân quyền",
@@ -39,6 +63,7 @@
"Share with link" => "Chia sẻ với liên kết",
"Password protect" => "Mật khẩu bảo vệ",
"Password" => "Mật khẩu",
+"Send" => "Gởi",
"Set expiration date" => "Đặt ngày kết thúc",
"Expiration date" => "Ngày kết thúc",
"Share via email:" => "Chia sẻ thông qua email",
@@ -55,6 +80,9 @@
"Password protected" => "Mật khẩu bảo vệ",
"Error unsetting expiration date" => "Lỗi không thiết lập ngày kết thúc",
"Error setting expiration date" => "Lỗi cấu hình ngày kết thúc",
+"Sending ..." => "Đang gởi ...",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Cập nhật không thành công . Vui lòng thông báo đến Cộng đồng ownCloud .",
+"The update was successful. Redirecting you to ownCloud now." => "Cập nhật thành công .Hệ thống sẽ đưa bạn tới ownCloud.",
"ownCloud password reset" => "Khôi phục mật khẩu Owncloud ",
"Use the following link to reset your password: {link}" => "Dùng đường dẫn sau để khôi phục lại mật khẩu : {link}",
"You will receive a link to reset your password via Email." => "Vui lòng kiểm tra Email để khôi phục lại mật khẩu.",
@@ -90,25 +118,6 @@
"Database tablespace" => "Cơ sở dữ liệu tablespace",
"Database host" => "Database host",
"Finish setup" => "Cài đặt hoàn tất",
-"Sunday" => "Chủ nhật",
-"Monday" => "Thứ 2",
-"Tuesday" => "Thứ 3",
-"Wednesday" => "Thứ 4",
-"Thursday" => "Thứ 5",
-"Friday" => "Thứ ",
-"Saturday" => "Thứ 7",
-"January" => "Tháng 1",
-"February" => "Tháng 2",
-"March" => "Tháng 3",
-"April" => "Tháng 4",
-"May" => "Tháng 5",
-"June" => "Tháng 6",
-"July" => "Tháng 7",
-"August" => "Tháng 8",
-"September" => "Tháng 9",
-"October" => "Tháng 10",
-"November" => "Tháng 11",
-"December" => "Tháng 12",
"web services under your control" => "các dịch vụ web dưới sự kiểm soát của bạn",
"Log out" => "Đăng xuất",
"Automatic logon rejected!" => "Tự động đăng nhập đã bị từ chối !",
diff --git a/core/l10n/zh_CN.GB2312.php b/core/l10n/zh_CN.GB2312.php
index 74dd9ad8a3f..9617d7260dc 100644
--- a/core/l10n/zh_CN.GB2312.php
+++ b/core/l10n/zh_CN.GB2312.php
@@ -2,6 +2,25 @@
"No category to add?" => "没有分类添加了?",
"This category already exists: " => "这个分类已经存在了:",
"No categories selected for deletion." => "没有选者要删除的分类.",
+"Sunday" => "星期天",
+"Monday" => "星期一",
+"Tuesday" => "星期二",
+"Wednesday" => "星期三",
+"Thursday" => "星期四",
+"Friday" => "星期五",
+"Saturday" => "星期六",
+"January" => "一月",
+"February" => "二月",
+"March" => "三月",
+"April" => "四月",
+"May" => "五月",
+"June" => "六月",
+"July" => "七月",
+"August" => "八月",
+"September" => "九月",
+"October" => "十月",
+"November" => "十一月",
+"December" => "十二月",
"Settings" => "设置",
"seconds ago" => "秒前",
"1 minute ago" => "1 分钟前",
@@ -19,6 +38,7 @@
"Yes" => "是",
"Ok" => "好的",
"Error" => "错误",
+"Share" => "分享",
"Error while sharing" => "分享出错",
"Error while unsharing" => "取消分享出错",
"Error while changing permissions" => "变更权限出错",
@@ -79,25 +99,6 @@
"Database tablespace" => "数据库表格空间",
"Database host" => "数据库主机",
"Finish setup" => "完成安装",
-"Sunday" => "星期天",
-"Monday" => "星期一",
-"Tuesday" => "星期二",
-"Wednesday" => "星期三",
-"Thursday" => "星期四",
-"Friday" => "星期五",
-"Saturday" => "星期六",
-"January" => "一月",
-"February" => "二月",
-"March" => "三月",
-"April" => "四月",
-"May" => "五月",
-"June" => "六月",
-"July" => "七月",
-"August" => "八月",
-"September" => "九月",
-"October" => "十月",
-"November" => "十一月",
-"December" => "十二月",
"web services under your control" => "你控制下的网络服务",
"Log out" => "注销",
"Automatic logon rejected!" => "自动登录被拒绝!",
diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php
index 626ede4cc70..f18fd6b357d 100644
--- a/core/l10n/zh_CN.php
+++ b/core/l10n/zh_CN.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "向收藏夹中新增%s时出错。",
"No categories selected for deletion." => "没有选择要删除的类别",
"Error removing %s from favorites." => "从收藏夹中移除%s时出错。",
+"Sunday" => "星期日",
+"Monday" => "星期一",
+"Tuesday" => "星期二",
+"Wednesday" => "星期三",
+"Thursday" => "星期四",
+"Friday" => "星期五",
+"Saturday" => "星期六",
+"January" => "一月",
+"February" => "二月",
+"March" => "三月",
+"April" => "四月",
+"May" => "五月",
+"June" => "六月",
+"July" => "七月",
+"August" => "八月",
+"September" => "九月",
+"October" => "十月",
+"November" => "十一月",
+"December" => "十二月",
"Settings" => "设置",
"seconds ago" => "秒前",
"1 minute ago" => "一分钟前",
@@ -34,6 +53,8 @@
"Error" => "错误",
"The app name is not specified." => "未指定App名称。",
"The required file {file} is not installed!" => "所需文件{file}未安装!",
+"Share" => "共享",
+"Shared" => "已共享",
"Error while sharing" => "共享时出错",
"Error while unsharing" => "取消共享时出错",
"Error while changing permissions" => "修改权限时出错",
@@ -98,25 +119,6 @@
"Database tablespace" => "数据库表空间",
"Database host" => "数据库主机",
"Finish setup" => "安装完成",
-"Sunday" => "星期日",
-"Monday" => "星期一",
-"Tuesday" => "星期二",
-"Wednesday" => "星期三",
-"Thursday" => "星期四",
-"Friday" => "星期五",
-"Saturday" => "星期六",
-"January" => "一月",
-"February" => "二月",
-"March" => "三月",
-"April" => "四月",
-"May" => "五月",
-"June" => "六月",
-"July" => "七月",
-"August" => "八月",
-"September" => "九月",
-"October" => "十月",
-"November" => "十一月",
-"December" => "十二月",
"web services under your control" => "由您掌控的网络服务",
"Log out" => "注销",
"Automatic logon rejected!" => "自动登录被拒绝!",
diff --git a/core/l10n/zh_TW.php b/core/l10n/zh_TW.php
index 7537c764451..74cb3b34d08 100644
--- a/core/l10n/zh_TW.php
+++ b/core/l10n/zh_TW.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "加入 %s 到最愛時發生錯誤。",
"No categories selected for deletion." => "沒有選擇要刪除的分類。",
"Error removing %s from favorites." => "從最愛移除 %s 時發生錯誤。",
+"Sunday" => "週日",
+"Monday" => "週一",
+"Tuesday" => "週二",
+"Wednesday" => "週三",
+"Thursday" => "週四",
+"Friday" => "週五",
+"Saturday" => "週六",
+"January" => "一月",
+"February" => "二月",
+"March" => "三月",
+"April" => "四月",
+"May" => "五月",
+"June" => "六月",
+"July" => "七月",
+"August" => "八月",
+"September" => "九月",
+"October" => "十月",
+"November" => "十一月",
+"December" => "十二月",
"Settings" => "設定",
"seconds ago" => "幾秒前",
"1 minute ago" => "1 分鐘前",
@@ -34,6 +53,7 @@
"Error" => "錯誤",
"The app name is not specified." => "沒有指定 app 名稱。",
"The required file {file} is not installed!" => "沒有安裝所需的檔案 {file} !",
+"Share" => "分享",
"Error while sharing" => "分享時發生錯誤",
"Error while unsharing" => "取消分享時發生錯誤",
"Error while changing permissions" => "修改權限時發生錯誤",
@@ -98,25 +118,6 @@
"Database tablespace" => "資料庫 tablespace",
"Database host" => "資料庫主機",
"Finish setup" => "完成設定",
-"Sunday" => "週日",
-"Monday" => "週一",
-"Tuesday" => "週二",
-"Wednesday" => "週三",
-"Thursday" => "週四",
-"Friday" => "週五",
-"Saturday" => "週六",
-"January" => "一月",
-"February" => "二月",
-"March" => "三月",
-"April" => "四月",
-"May" => "五月",
-"June" => "六月",
-"July" => "七月",
-"August" => "八月",
-"September" => "九月",
-"October" => "十月",
-"November" => "十一月",
-"December" => "十二月",
"web services under your control" => "網路服務在您控制之下",
"Log out" => "登出",
"Automatic logon rejected!" => "自動登入被拒!",
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 18291e0f84e..2886c3c5a2e 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -1,7 +1,7 @@
- ownCloud
+ ownCloud
diff --git a/core/templates/update.php b/core/templates/update.php
index c65230db0d6..ae714dcfb92 100644
--- a/core/templates/update.php
+++ b/core/templates/update.php
@@ -3,28 +3,3 @@
t('Updating ownCloud to version %s, this may take a while.', array($_['version'])); ?>
-
\ No newline at end of file
diff --git a/db_structure.xml b/db_structure.xml
index db43ef21140..f4111bfabd0 100644
--- a/db_structure.xml
+++ b/db_structure.xml
@@ -60,16 +60,96 @@