diff --git a/.gitignore b/.gitignore index fe89c74ab3..68977ad077 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ config/mount.php apps/inc.php # ignore all apps except core ones -apps/* +apps* !apps/files !apps/files_encryption !apps/files_external @@ -76,4 +76,4 @@ nbproject data-autotest /tests/coverage* /tests/autoconfig* -/tests/autotest* \ No newline at end of file +/tests/autotest* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fd87513ec2..a79fcc08d6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,15 @@ ## Submitting issues -If you have questions about how to use ownCloud, please direct these to the [mailing list][mailinglist] or our [forum][forum]. We are also available on [IRC][irc]. +If you have questions about how to install or use ownCloud, please direct these to the [mailing list][mailinglist] or our [forum][forum]. We are also available on [IRC][irc]. + +### TL;DR + + * The [issue template can be found here][template] but be aware of the different repositories! See list below. ### Guidelines -* Please search the existing issues first, it's likely that your issue was already reported. -* [Report the issue](https://github.com/owncloud/core/issues/new) using our [template][template], it includes all the informations we need to track down the issue. -* This repository is *only* for issues within the ownCloud core code. Issues in other compontents should be reported in their own repositores: +* Please search the existing issues first, it's likely that your issue was already reported or even fixed. +* This repository is *only* for issues within the ownCloud core code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth +* The issues in other components should be reported in their respective repositories: - [Android client](https://github.com/owncloud/android/issues) - [iOS client](https://github.com/owncloud/ios-issues/issues) - [Desktop client](https://github.com/owncloud/mirall/issues) @@ -14,12 +18,12 @@ If you have questions about how to use ownCloud, please direct these to the [mai - [Calendar](https://github.com/owncloud/calendar/issues) - [Contacts](https://github.com/owncloud/contacts/issues) - [Mail](https://github.com/owncloud/mail/issues) + - [Media/Music](https://github.com/owncloud/media/issues) - [News](https://github.com/owncloud/news/issues) - [Notes](https://github.com/owncloud/notes/issues) - [Shorty](https://github.com/owncloud/shorty/issues) - - [other apps](https://github.com/owncloud/apps/issues) (e.g. Pictures, Music, Tasks, ...) - -If your issue appears to be a bug, and hasn't been reported, open a new issue. + - [All other apps](https://github.com/owncloud/apps/issues) (e.g. Pictures, Tasks, ...) +* Report the issue using our [template][template], it includes all the information we need to track down the issue. Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues. @@ -34,7 +38,7 @@ Thanks for wanting to contribute source code to ownCloud. That's great! Before we're able to merge your code into the ownCloud core, you need to sign our [Contributor Agreement][agreement]. -Please read the [Developer Manuals][devmanual] to get useful infos like how to create your first application or how to test the ownCloud code with phpunit. +Please read the [Developer Manuals][devmanual] to learn how to create your first application or how to test the ownCloud code with PHPUnit. [agreement]: http://owncloud.org/about/contributor-agreement/ [devmanual]: http://owncloud.org/dev/ diff --git a/apps/files/ajax/scan.php b/apps/files/ajax/scan.php index 391b98608b..0706d4e782 100644 --- a/apps/files/ajax/scan.php +++ b/apps/files/ajax/scan.php @@ -4,6 +4,16 @@ session_write_close(); $force = (isset($_GET['force']) and ($_GET['force'] === 'true')); $dir = isset($_GET['dir']) ? $_GET['dir'] : ''; +if (isset($_GET['users'])) { + OC_JSON::checkAdminUser(); + if ($_GET['users'] === 'all') { + $users = OC_User::getUsers(); + } else { + $users = json_decode($_GET['users']); + } +} else { + $users = array(OC_User::getUser()); +} $eventSource = new OC_EventSource(); ScanListener::$eventSource = $eventSource; @@ -12,21 +22,27 @@ ScanListener::$view = \OC\Files\Filesystem::getView(); OC_Hook::connect('\OC\Files\Cache\Scanner', 'scan_folder', 'ScanListener', 'folder'); OC_Hook::connect('\OC\Files\Cache\Scanner', 'scan_file', 'ScanListener', 'file'); -$absolutePath = \OC\Files\Filesystem::getView()->getAbsolutePath($dir); +foreach ($users as $user) { + $eventSource->send('user', $user); + OC_Util::tearDownFS(); + OC_Util::setupFS($user); -$mountPoints = \OC\Files\Filesystem::getMountPoints($absolutePath); -$mountPoints[] = \OC\Files\Filesystem::getMountPoint($absolutePath); -$mountPoints = array_reverse($mountPoints); //start with the mount point of $dir + $absolutePath = \OC\Files\Filesystem::getView()->getAbsolutePath($dir); -foreach ($mountPoints as $mountPoint) { - $storage = \OC\Files\Filesystem::getStorage($mountPoint); - if ($storage) { - ScanListener::$mountPoints[$storage->getId()] = $mountPoint; - $scanner = $storage->getScanner(); - if ($force) { - $scanner->scan(''); - } else { - $scanner->backgroundScan(); + $mountPoints = \OC\Files\Filesystem::getMountPoints($absolutePath); + $mountPoints[] = \OC\Files\Filesystem::getMountPoint($absolutePath); + $mountPoints = array_reverse($mountPoints); //start with the mount point of $dir + + foreach ($mountPoints as $mountPoint) { + $storage = \OC\Files\Filesystem::getStorage($mountPoint); + if ($storage) { + ScanListener::$mountPoints[$storage->getId()] = $mountPoint; + $scanner = $storage->getScanner(); + if ($force) { + $scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG); + } else { + $scanner->backgroundScan(); + } } } } diff --git a/apps/files/css/files.css b/apps/files/css/files.css index f788949b1b..108dcd741c 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -63,8 +63,12 @@ } #filestable { position: relative; top:37px; width:100%; } tbody tr { background-color:#fff; height:2.5em; } -tbody tr:hover, tbody tr:active, tbody tr.selected { background-color:#f8f8f8; } -tbody tr.selected { background-color:#eee; } +tbody tr:hover, tbody tr:active { + background-color: rgb(240,240,240); +} +tbody tr.selected { + background-color: rgb(230,230,230); +} tbody a { color:#000; } span.extension, span.uploading, td.date { color:#999; } span.extension { text-transform:lowercase; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter:alpha(opacity=70); opacity:.7; -webkit-transition:opacity 300ms; -moz-transition:opacity 300ms; -o-transition:opacity 300ms; transition:opacity 300ms; } @@ -81,7 +85,12 @@ table th#headerDate, table td.date { min-width:11em; padding:0 .1em 0 1em; text- /* Multiselect bar */ #filestable.multiselect { top:63px; } table.multiselect thead { position:fixed; top:82px; z-index:1; -moz-box-sizing: border-box; box-sizing: border-box; left: 0; padding-left: 64px; width:100%; } -table.multiselect thead th { background:rgba(230,230,230,.8); color:#000; font-weight:bold; border-bottom:0; } +table.multiselect thead th { + background-color: rgba(210,210,210,.7); + color: #000; + font-weight: bold; + border-bottom: 0; +} table.multiselect #headerName { width: 100%; } table td.selection, table th.selection, table td.fileaction { width:2em; text-align:center; } table td.filename a.name { display:block; height:1.5em; vertical-align:middle; margin-left:3em; } @@ -115,10 +124,12 @@ table td.filename form { font-size:.85em; margin-left:3em; margin-right:3em; } } #fileList .name { position:relative; /* Firefox needs to explicitly have this default set … */ } #fileList tr:hover .fileactions { /* background to distinguish when overlaying with file names */ - background:rgba(248,248,248,.9); box-shadow:-5px 0 7px rgba(248,248,248,.9); + background-color: rgba(240,240,240,0.898); + box-shadow: -5px 0 7px rgba(240,240,240,0.898); } #fileList tr.selected:hover .fileactions, #fileList tr.mouseOver .fileactions { /* slightly darker color for selected rows */ - background:rgba(238,238,238,.9); box-shadow:-5px 0 7px rgba(238,238,238,.9); + background-color: rgba(230,230,230,.9); + box-shadow: -5px 0 7px rgba(230,230,230,.9); } #fileList .fileactions a.action img { position:relative; top:.2em; } #fileList a.action { display:inline; margin:-.5em 0; padding:1em .5em 1em .5em !important; } diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index c24d1fd824..e19a35bbc5 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -51,7 +51,7 @@ var FileList={ }else{ simpleSize=t('files', 'Pending'); } - var sizeColor = Math.round(200-Math.pow((size/(1024*1024)),2)); + var sizeColor = Math.round(160-Math.pow((size/(1024*1024)),2)); var lastModifiedTime = Math.round(lastModified.getTime() / 1000); td = $('').attr({ "class": "filesize", diff --git a/apps/files/js/files.js b/apps/files/js/files.js index a79d34c9b2..3438c1c30a 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -695,7 +695,7 @@ $(document).ready(function() { } }); -function scanFiles(force, dir){ +function scanFiles(force, dir, users){ if (!OC.currentUser) { return; } @@ -705,7 +705,18 @@ function scanFiles(force, dir){ } force = !!force; //cast to bool scanFiles.scanning = true; - var scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force:force,dir:dir}); + var scannerEventSource; + if (users) { + var usersString; + if (users === 'all') { + usersString = users; + } else { + usersString = JSON.stringify(users); + } + scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force: force,dir: dir, users: usersString}); + } else { + scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force: force,dir: dir}); + } scanFiles.cancel = scannerEventSource.close.bind(scannerEventSource); scannerEventSource.listen('count',function(count){ console.log(count + ' files scanned') @@ -717,6 +728,9 @@ function scanFiles(force, dir){ scanFiles.scanning=false; console.log('done after ' + count + ' files'); }); + scannerEventSource.listen('user',function(user){ + console.log('scanning files for ' + user); + }); } scanFiles.scanning=false; diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php index de6a154242..8c6b637265 100644 --- a/apps/files/l10n/cs_CZ.php +++ b/apps/files/l10n/cs_CZ.php @@ -46,6 +46,7 @@ "{count} folders" => "{count} složky", "1 file" => "1 soubor", "{count} files" => "{count} soubory", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Název složky nelze použít. Použití názvu 'Shared' je ownCloudem rezervováno", "Unable to rename file" => "Nelze přejmenovat soubor", "Upload" => "Odeslat", "File handling" => "Zacházení se soubory", diff --git a/apps/files/l10n/da.php b/apps/files/l10n/da.php index 879fbc8451..542e0d05d6 100644 --- a/apps/files/l10n/da.php +++ b/apps/files/l10n/da.php @@ -46,6 +46,7 @@ "{count} folders" => "{count} mapper", "1 file" => "1 fil", "{count} files" => "{count} filer", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Ugyldigt mappenavn. Brug af 'Shared' er forbeholdt af ownCloud", "Unable to rename file" => "Kunne ikke omdøbe fil", "Upload" => "Upload", "File handling" => "Filhåndtering", diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php index bcc3a4c6c9..e9a6ad6bde 100644 --- a/apps/files/l10n/de.php +++ b/apps/files/l10n/de.php @@ -46,6 +46,7 @@ "{count} folders" => "{count} Ordner", "1 file" => "1 Datei", "{count} files" => "{count} Dateien", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Der Ordnername ist ungültig. Nur ownCloud kann den Ordner \"Shared\" anlegen", "Unable to rename file" => "Konnte Datei nicht umbenennen", "Upload" => "Hochladen", "File handling" => "Dateibehandlung", diff --git a/apps/files/l10n/eo.php b/apps/files/l10n/eo.php index 3eeb88754c..d4cc7b2bb9 100644 --- a/apps/files/l10n/eo.php +++ b/apps/files/l10n/eo.php @@ -9,9 +9,11 @@ "No file was uploaded" => "Neniu dosiero alŝutiĝis.", "Missing a temporary folder" => "Mankas provizora dosierujo.", "Failed to write to disk" => "Malsukcesis skribo al disko", +"Not enough storage available" => "Ne haveblas sufiĉa memoro", "Invalid directory." => "Nevalida dosierujo.", "Files" => "Dosieroj", "Share" => "Kunhavigi", +"Delete permanently" => "Forigi por ĉiam", "Delete" => "Forigi", "Rename" => "Alinomigi", "Pending" => "Traktotaj", @@ -21,11 +23,14 @@ "cancel" => "nuligi", "replaced {new_name} with {old_name}" => "anstataŭiĝis {new_name} per {old_name}", "undo" => "malfari", +"perform delete operation" => "plenumi forigan operacion", "1 file uploading" => "1 dosiero estas alŝutata", "files uploading" => "dosieroj estas alŝutataj", "'.' 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.", +"Your storage is full, files can not be updated or synced anymore!" => "Via memoro plenas, ne plu eblas ĝisdatigi aŭ sinkronigi dosierojn!", +"Your storage is almost full ({usedSpacePercent}%)" => "Via memoro preskaŭ plenas ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Via elŝuto pretiĝatas. Ĉi tio povas daŭri iom da tempo se la dosieroj grandas.", "Unable to upload your file as it is a directory or has 0 bytes" => "Ne eblis alŝuti vian dosieron ĉar ĝi estas dosierujo aŭ havas 0 duumokojn", "Not enough space available" => "Ne haveblas sufiĉa spaco", @@ -41,6 +46,7 @@ "{count} folders" => "{count} dosierujoj", "1 file" => "1 dosiero", "{count} files" => "{count} dosierujoj", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nevalida dosierujnomo. La uzo de “Shared” estas rezervita de ownCloud.", "Unable to rename file" => "Ne eblis alinomigi dosieron", "Upload" => "Alŝuti", "File handling" => "Dosieradministro", @@ -55,12 +61,15 @@ "Text file" => "Tekstodosiero", "Folder" => "Dosierujo", "From link" => "El ligilo", +"Deleted files" => "Forigitaj dosieroj", "Cancel upload" => "Nuligi alŝuton", +"You don’t have write permissions here." => "Vi ne havas permeson skribi ĉi tie.", "Nothing in here. Upload something!" => "Nenio estas ĉi tie. Alŝutu ion!", "Download" => "Elŝuti", "Unshare" => "Malkunhavigi", "Upload too large" => "Alŝuto tro larĝa", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "La dosieroj, kiujn vi provas alŝuti, transpasas la maksimuman grandon por dosieralŝutoj en ĉi tiu servilo.", "Files are being scanned, please wait." => "Dosieroj estas skanataj, bonvolu atendi.", -"Current scanning" => "Nuna skano" +"Current scanning" => "Nuna skano", +"Upgrading filesystem cache..." => "Ĝisdatiĝas dosiersistema kaŝmemoro..." ); diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php index 963f25ebed..b15c7a5649 100644 --- a/apps/files/l10n/he.php +++ b/apps/files/l10n/he.php @@ -1,4 +1,6 @@ "לא ניתן להעביר את %s - קובץ בשם הזה כבר קיים", +"Could not move %s" => "לא ניתן להעביר את %s", "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:", @@ -7,6 +9,8 @@ "No file was uploaded" => "שום קובץ לא הועלה", "Missing a temporary folder" => "תקיה זמנית חסרה", "Failed to write to disk" => "הכתיבה לכונן נכשלה", +"Not enough storage available" => "אין די שטח פנוי באחסון", +"Invalid directory." => "תיקייה שגויה.", "Files" => "קבצים", "Share" => "שתף", "Delete permanently" => "מחק לצמיתות", @@ -19,7 +23,9 @@ "cancel" => "ביטול", "replaced {new_name} with {old_name}" => "{new_name} הוחלף ב־{old_name}", "undo" => "ביטול", +"perform delete operation" => "ביצוע פעולת מחיקה", "1 file uploading" => "קובץ אחד נשלח", +"files uploading" => "קבצים בהעלאה", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "השם שגוי, אסור להשתמש בתווים '\\', '/', '<', '>', ':', '\"', '|', '?' ו־'*'.", "Unable to upload your file as it is a directory or has 0 bytes" => "לא יכול להעלות את הקובץ מכיוון שזו תקיה או שמשקל הקובץ 0 בתים", "Upload cancelled." => "ההעלאה בוטלה.", @@ -33,6 +39,7 @@ "{count} folders" => "{count} תיקיות", "1 file" => "קובץ אחד", "{count} files" => "{count} קבצים", +"Unable to rename file" => "לא ניתן לשנות את שם הקובץ", "Upload" => "העלאה", "File handling" => "טיפול בקבצים", "Maximum upload size" => "גודל העלאה מקסימלי", diff --git a/apps/files/l10n/hi.php b/apps/files/l10n/hi.php new file mode 100644 index 0000000000..df57abe28b --- /dev/null +++ b/apps/files/l10n/hi.php @@ -0,0 +1,4 @@ + "साझा करें", +"Save" => "सहेजें" +); diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php index 3e2ea80c94..5938521bea 100644 --- a/apps/files/l10n/lt_LT.php +++ b/apps/files/l10n/lt_LT.php @@ -1,12 +1,19 @@ "Nepavyko perkelti %s - failas su tokiu pavadinimu jau egzistuoja", +"Could not move %s" => "Nepavyko perkelti %s", +"No file was uploaded. Unknown error" => "Failai nebuvo įkelti dėl nežinomos priežasties", "There is no error, the file uploaded with success" => "Failas įkeltas sėkmingai, be klaidų", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Įkeliamas failas yra didesnis nei leidžia upload_max_filesize php.ini faile:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Įkeliamo failo dydis viršija MAX_FILE_SIZE nustatymą, kuris naudojamas HTML formoje.", "The uploaded file was only partially uploaded" => "Failas buvo įkeltas tik dalinai", "No file was uploaded" => "Nebuvo įkeltas joks failas", "Missing a temporary folder" => "Nėra laikinojo katalogo", "Failed to write to disk" => "Nepavyko įrašyti į diską", +"Not enough storage available" => "Nepakanka vietos serveryje", +"Invalid directory." => "Neteisingas aplankas", "Files" => "Failai", "Share" => "Dalintis", +"Delete permanently" => "Ištrinti negrįžtamai", "Delete" => "Ištrinti", "Rename" => "Pervadinti", "Pending" => "Laukiantis", @@ -16,10 +23,21 @@ "cancel" => "atšaukti", "replaced {new_name} with {old_name}" => "pakeiskite {new_name} į {old_name}", "undo" => "anuliuoti", +"perform delete operation" => "ištrinti", "1 file uploading" => "įkeliamas 1 failas", +"files uploading" => "įkeliami failai", +"'.' is an invalid file name." => "'.' yra neleidžiamas failo pavadinime.", +"File name cannot be empty." => "Failo pavadinimas negali būti tuščias.", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neleistinas pavadinimas, '\\', '/', '<', '>', ':', '\"', '|', '?' ir '*' yra neleidžiami.", +"Your storage is full, files can not be updated or synced anymore!" => "Jūsų visa vieta serveryje užimta", +"Your storage is almost full ({usedSpacePercent}%)" => "Jūsų vieta serveryje beveik visa užimta ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "Jūsų atsisiuntimas yra paruošiamas. tai gali užtrukti jei atsisiunčiamas didelis failas.", "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", +"Not enough space available" => "Nepakanka vietos", "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.", +"URL cannot be empty." => "URL negali būti tuščias.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Negalimas aplanko pavadinimas. 'Shared' pavadinimas yra rezervuotas ownCloud", "Error" => "Klaida", "Name" => "Pavadinimas", "Size" => "Dydis", @@ -28,6 +46,8 @@ "{count} folders" => "{count} aplankalai", "1 file" => "1 failas", "{count} files" => "{count} failai", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Negalimas aplanko pavadinimas. 'Shared' pavadinimas yra rezervuotas ownCloud", +"Unable to rename file" => "Nepavyko pervadinti failo", "Upload" => "Įkelti", "File handling" => "Failų tvarkymas", "Maximum upload size" => "Maksimalus įkeliamo failo dydis", @@ -40,12 +60,16 @@ "New" => "Naujas", "Text file" => "Teksto failas", "Folder" => "Katalogas", +"From link" => "Iš nuorodos", +"Deleted files" => "Ištrinti failai", "Cancel upload" => "Atšaukti siuntimą", +"You don’t have write permissions here." => "Jūs neturite rašymo leidimo.", "Nothing in here. Upload something!" => "Čia tuščia. Įkelkite ką nors!", "Download" => "Atsisiųsti", "Unshare" => "Nebesidalinti", "Upload too large" => "Įkėlimui failas per didelis", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Bandomų įkelti failų dydis viršija maksimalų, kuris leidžiamas šiame serveryje", "Files are being scanned, please wait." => "Skenuojami failai, prašome palaukti.", -"Current scanning" => "Šiuo metu skenuojama" +"Current scanning" => "Šiuo metu skenuojama", +"Upgrading filesystem cache..." => "Atnaujinamas sistemos kešavimas..." ); diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php index 8fdf62aeb3..59c12c57a3 100644 --- a/apps/files/l10n/ro.php +++ b/apps/files/l10n/ro.php @@ -46,6 +46,7 @@ "{count} folders" => "{count} foldare", "1 file" => "1 fisier", "{count} files" => "{count} fisiere", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nume de dosar invalid. Utilizarea 'Shared' e rezervată de ownCloud", "Unable to rename file" => "Nu s-a putut redenumi fișierul", "Upload" => "Încărcare", "File handling" => "Manipulare fișiere", diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php index 83412bf2be..43a8dc7008 100644 --- a/apps/files/l10n/ru.php +++ b/apps/files/l10n/ru.php @@ -46,6 +46,7 @@ "{count} folders" => "{count} папок", "1 file" => "1 файл", "{count} files" => "{count} файлов", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Неправильное имя каталога. Имя 'Shared' зарезервировано.", "Unable to rename file" => "Невозможно переименовать файл", "Upload" => "Загрузка", "File handling" => "Управление файлами", diff --git a/apps/files/l10n/sv.php b/apps/files/l10n/sv.php index 82d169d569..f433176159 100644 --- a/apps/files/l10n/sv.php +++ b/apps/files/l10n/sv.php @@ -29,7 +29,7 @@ "'.' 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 full, files can not be updated or synced anymore!" => "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!", "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" => "Kan inte ladda upp din fil eftersom det är en katalog eller har 0 bytes", @@ -46,6 +46,7 @@ "{count} folders" => "{count} mappar", "1 file" => "1 fil", "{count} files" => "{count} filer", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Ogiltigt mappnamn. Användning av 'Shared' är reserverad av ownCloud", "Unable to rename file" => "Kan inte byta namn på filen", "Upload" => "Ladda upp", "File handling" => "Filhantering", diff --git a/apps/files/templates/part.list.php b/apps/files/templates/part.list.php index 1719d25e66..1e94275dcb 100644 --- a/apps/files/templates/part.list.php +++ b/apps/files/templates/part.list.php @@ -3,12 +3,12 @@ 200) $relative_date_color = 200; + if($relative_date_color>160) $relative_date_color = 160; $name = rawurlencode($file['name']); $name = str_replace('%2F', '/', $name); $directory = rawurlencode($file['directory']); diff --git a/apps/files/triggerupdate.php b/apps/files/triggerupdate.php new file mode 100644 index 0000000000..0e29edbba3 --- /dev/null +++ b/apps/files/triggerupdate.php @@ -0,0 +1,22 @@ +resolvePath($file); + $watcher = $storage->getWatcher($internalPath); + $watcher->checkUpdate($internalPath); + } else { + echo "Usage: php triggerupdate.php /path/to/file\n"; + } +} else { + echo "This script can be run from the command line only\n"; +} diff --git a/apps/files_encryption/ajax/changeRecoveryPassword.php b/apps/files_encryption/ajax/changeRecoveryPassword.php index b0594f967b..366f634a51 100644 --- a/apps/files_encryption/ajax/changeRecoveryPassword.php +++ b/apps/files_encryption/ajax/changeRecoveryPassword.php @@ -22,28 +22,28 @@ $return = false; $oldPassword = $_POST['oldPassword']; $newPassword = $_POST['newPassword']; +$view = new \OC\Files\View('/'); $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); -$result = $util->checkRecoveryPassword($oldPassword); +$proxyStatus = \OC_FileProxy::$enabled; +\OC_FileProxy::$enabled = false; -if ($result) { - $keyId = $util->getRecoveryKeyId(); - $keyPath = '/owncloud_private_key/' . $keyId . '.private.key'; - $view = new \OC\Files\View('/'); +$keyId = $util->getRecoveryKeyId(); +$keyPath = '/owncloud_private_key/' . $keyId . '.private.key'; - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; +$encryptedRecoveryKey = $view->file_get_contents($keyPath); +$decryptedRecoveryKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedRecoveryKey, $oldPassword); + +if ($decryptedRecoveryKey) { - $encryptedRecoveryKey = $view->file_get_contents($keyPath); - $decryptedRecoveryKey = \OCA\Encryption\Crypt::symmetricDecryptFileContent($encryptedRecoveryKey, $oldPassword); $encryptedRecoveryKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($decryptedRecoveryKey, $newPassword); $view->file_put_contents($keyPath, $encryptedRecoveryKey); - \OC_FileProxy::$enabled = $proxyStatus; - $return = true; } +\OC_FileProxy::$enabled = $proxyStatus; + // success or failure if ($return) { \OCP\JSON::success(array('data' => array('message' => $l->t('Password successfully changed.')))); diff --git a/apps/files_encryption/ajax/updatePrivateKeyPassword.php b/apps/files_encryption/ajax/updatePrivateKeyPassword.php new file mode 100644 index 0000000000..6fd63dae9c --- /dev/null +++ b/apps/files_encryption/ajax/updatePrivateKeyPassword.php @@ -0,0 +1,54 @@ + + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + * + * @brief Script to change recovery key password + * + */ + +use OCA\Encryption; + +\OCP\JSON::checkLoggedIn(); +\OCP\JSON::checkAppEnabled('files_encryption'); +\OCP\JSON::callCheck(); + +$l = OC_L10N::get('core'); + +$return = false; + +$oldPassword = $_POST['oldPassword']; +$newPassword = $_POST['newPassword']; + +$view = new \OC\Files\View('/'); +$session = new \OCA\Encryption\Session($view); +$user = \OCP\User::getUser(); + +$proxyStatus = \OC_FileProxy::$enabled; +\OC_FileProxy::$enabled = false; + +$keyPath = '/' . $user . '/files_encryption/' . $user . '.private.key'; + +$encryptedKey = $view->file_get_contents($keyPath); +$decryptedKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, $oldPassword); + +if ($decryptedKey) { + + $encryptedKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($decryptedKey, $newPassword); + $view->file_put_contents($keyPath, $encryptedKey); + + $session->setPrivateKey($decryptedKey); + + $return = true; +} + +\OC_FileProxy::$enabled = $proxyStatus; + +// success or failure +if ($return) { + \OCP\JSON::success(array('data' => array('message' => $l->t('Private key password successfully updated.')))); +} else { + \OCP\JSON::error(array('data' => array('message' => $l->t('Could not update the private key password. Maybe the old password was not correct.')))); +} \ No newline at end of file diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index 99bdc2c247..d97811bb79 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -10,45 +10,56 @@ OC::$CLASSPATH['OCA\Encryption\Session'] = 'files_encryption/lib/session.php'; OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabilities.php'; OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php'; -OC_FileProxy::register(new OCA\Encryption\Proxy()); +if (!OC_Config::getValue('maintenance', false)) { + OC_FileProxy::register(new OCA\Encryption\Proxy()); -// User related hooks -OCA\Encryption\Helper::registerUserHooks(); + // User related hooks + OCA\Encryption\Helper::registerUserHooks(); -// Sharing related hooks -OCA\Encryption\Helper::registerShareHooks(); + // Sharing related hooks + OCA\Encryption\Helper::registerShareHooks(); -// Filesystem related hooks -OCA\Encryption\Helper::registerFilesystemHooks(); + // Filesystem related hooks + OCA\Encryption\Helper::registerFilesystemHooks(); -stream_wrapper_register('crypt', 'OCA\Encryption\Stream'); + stream_wrapper_register('crypt', 'OCA\Encryption\Stream'); -// check if we are logged in -if (OCP\User::isLoggedIn()) { + // check if we are logged in + if (OCP\User::isLoggedIn()) { - // ensure filesystem is loaded - if(!\OC\Files\Filesystem::$loaded) { - \OC_Util::setupFS(); - } - - $view = new OC_FilesystemView('/'); - $session = new \OCA\Encryption\Session($view); - - // check if user has a private key - if ( - !$session->getPrivateKey(\OCP\USER::getUser()) - && OCA\Encryption\Crypt::mode() === 'server' - ) { - - // Force the user to log-in again if the encryption key isn't unlocked - // (happens when a user is logged in before the encryption app is - // enabled) - OCP\User::logout(); - - header("Location: " . OC::$WEBROOT . '/'); - - exit(); + // ensure filesystem is loaded + if (!\OC\Files\Filesystem::$loaded) { + \OC_Util::setupFS(); + } + + $view = new OC_FilesystemView('/'); + + $sessionReady = false; + if(extension_loaded("openssl")) { + $session = new \OCA\Encryption\Session($view); + $sessionReady = true; + } + + $user = \OCP\USER::getUser(); + // check if user has a private key + if ($sessionReady === false + || (!$view->file_exists('/' . $user . '/files_encryption/' . $user . '.private.key') + && OCA\Encryption\Crypt::mode() === 'server') + ) { + + // Force the user to log-in again if the encryption key isn't unlocked + // (happens when a user is logged in before the encryption app is + // enabled) + OCP\User::logout(); + + header("Location: " . OC::$WEBROOT . '/'); + + exit(); + } } +} else { + // logout user if we are in maintenance to force re-login + OCP\User::logout(); } // Register settings scripts diff --git a/apps/files_encryption/appinfo/info.xml b/apps/files_encryption/appinfo/info.xml index ea8f6cf6f3..1e97b1b221 100644 --- a/apps/files_encryption/appinfo/info.xml +++ b/apps/files_encryption/appinfo/info.xml @@ -2,7 +2,7 @@ files_encryption Encryption - WARNING: This is a preview release of the new ownCloud 5 encryption system. Testing and feedback is very welcome but don't use this in production yet. Encryption is not yet compatible with LDAP. + WARNING: This is a preview release of the new ownCloud 5 encryption system. Testing and feedback is very welcome but don't use this in production yet. After the app was enabled you need to re-login to initialize your encryption keys AGPL Sam Tuke, Bjoern Schiessle, Florin Peter 4 diff --git a/apps/files_encryption/files/error.php b/apps/files_encryption/files/error.php new file mode 100644 index 0000000000..63c74e4e79 --- /dev/null +++ b/apps/files_encryption/files/error.php @@ -0,0 +1,24 @@ +t('Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files'); + + if(isset($_GET['p']) && $_GET['p'] === '1') { + header('HTTP/1.0 404 ' . $errorMsg); + } + + // check if ajax request + if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { + \OCP\JSON::error(array('data' => array('message' => $errorMsg))); + } else { + header('HTTP/1.0 404 ' . $errorMsg); + $tmpl = new OC_Template('files_encryption', 'invalid_private_key', 'guest'); + $tmpl->printPage(); + } + + exit; +} +?> diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index d1b08a0b97..e39e068cc5 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -38,11 +38,15 @@ class Hooks { * @note This method should never be called for users using client side encryption */ public static function login($params) { - - // Manually initialise Filesystem{} singleton with correct - // fake root path, in order to avoid fatal webdav errors - // NOTE: disabled because this give errors on webdav! - //\OC\Files\Filesystem::init( $params['uid'], '/' . 'files' . '/' ); + $l = new \OC_L10N('files_encryption'); + //check if openssl is available + if(!extension_loaded("openssl") ) { + $error_msg = $l->t("PHP module OpenSSL is not installed."); + $hint = $l->t('Please ask your server administrator to install the module. For now the encryption app was disabled.'); + \OC_App::disable('files_encryption'); + \OCP\Util::writeLog('Encryption library', $error_msg . ' ' . $hint, \OCP\Util::ERROR); + \OCP\Template::printErrorPage($error_msg, $hint); + } $view = new \OC_FilesystemView('/'); @@ -60,17 +64,25 @@ class Hooks { $encryptedKey = Keymanager::getPrivateKey($view, $params['uid']); - $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, $params['password']); + $privateKey = Crypt::decryptPrivateKey($encryptedKey, $params['password']); + + if ($privateKey === false) { + \OCP\Util::writeLog('Encryption library', 'Private key for user "' . $params['uid'] + . '" is not valid! Maybe the user password was changed from outside if so please change it back to gain access', \OCP\Util::ERROR); + } $session = new \OCA\Encryption\Session($view); - $session->setPrivateKey($privateKey, $params['uid']); + $session->setPrivateKey($privateKey); // Check if first-run file migration has already been performed - $migrationCompleted = $util->getMigrationStatus(); + $ready = false; + if ($util->getMigrationStatus() === Util::MIGRATION_OPEN) { + $ready = $util->beginMigration(); + } // If migration not yet done - if (!$migrationCompleted) { + if ($ready) { $userView = new \OC_FilesystemView('/' . $params['uid']); @@ -81,7 +93,7 @@ class Hooks { && $encLegacyKey = $userView->file_get_contents('encryption.key') ) { - $plainLegacyKey = Crypt::legacyBlockDecrypt($encLegacyKey, $params['password']); + $plainLegacyKey = Crypt::legacyDecrypt($encLegacyKey, $params['password']); $session->setLegacyKey($plainLegacyKey); @@ -102,7 +114,7 @@ class Hooks { } // Register successful migration in DB - $util->setMigrationStatus(1); + $util->finishMigration(); } @@ -141,6 +153,15 @@ class Hooks { \OC_FileProxy::$enabled = $proxyStatus; } + /** + * @brief If the password can't be changed within ownCloud, than update the key password in advance. + */ + public static function preSetPassphrase($params) { + if ( ! \OC_User::canUserChangePassword($params['uid']) ) { + self::setPassphrase($params); + } + } + /** * @brief Change a user's encryption passphrase * @param array $params keys: uid, password @@ -148,7 +169,7 @@ class Hooks { public static function setPassphrase($params) { // Only attempt to change passphrase if server-side encryption - // is in use (client-side encryption does not have access to + // is in use (client-side encryption does not have access to // the necessary keys) if (Crypt::mode() === 'server') { @@ -333,7 +354,7 @@ class Hooks { $sharingEnabled = \OCP\Share::isEnabled(); // get the path including mount point only if not a shared folder - if(strncmp($path, '/Shared' , strlen('/Shared') !== 0)) { + if (strncmp($path, '/Shared', strlen('/Shared') !== 0)) { // get path including the the storage mount point $path = $util->getPathWithMountPoint($params['itemSource']); } @@ -410,14 +431,14 @@ class Hooks { } // get the path including mount point only if not a shared folder - if(strncmp($path, '/Shared' , strlen('/Shared') !== 0)) { + if (strncmp($path, '/Shared', strlen('/Shared') !== 0)) { // get path including the the storage mount point $path = $util->getPathWithMountPoint($params['itemSource']); } // if we unshare a folder we need a list of all (sub-)files if ($params['itemType'] === 'folder') { - $allFiles = $util->getAllFiles( $path ); + $allFiles = $util->getAllFiles($path); } else { $allFiles = array($path); } diff --git a/apps/files_encryption/js/settings-personal.js b/apps/files_encryption/js/settings-personal.js index 312b672ad4..d6535a25b7 100644 --- a/apps/files_encryption/js/settings-personal.js +++ b/apps/files_encryption/js/settings-personal.js @@ -4,7 +4,25 @@ * See the COPYING-README file. */ +function updatePrivateKeyPasswd() { + var oldPrivateKeyPassword = $('input:password[id="oldPrivateKeyPassword"]').val(); + var newPrivateKeyPassword = $('input:password[id="newPrivateKeyPassword"]').val(); + OC.msg.startSaving('#encryption .msg'); + $.post( + OC.filePath( 'files_encryption', 'ajax', 'updatePrivateKeyPassword.php' ) + , { oldPassword: oldPrivateKeyPassword, newPassword: newPrivateKeyPassword } + , function( data ) { + if (data.status === "error") { + OC.msg.finishedSaving('#encryption .msg', data); + } else { + OC.msg.finishedSaving('#encryption .msg', data); + } + } + ); +} + $(document).ready(function(){ + // Trigger ajax on recoveryAdmin status change $( 'input:radio[name="userEnableRecovery"]' ).change( function() { @@ -57,4 +75,24 @@ $(document).ready(function(){ } ); + + // update private key password + + $('input:password[name="changePrivateKeyPassword"]').keyup(function(event) { + var oldPrivateKeyPassword = $('input:password[id="oldPrivateKeyPassword"]').val(); + var newPrivateKeyPassword = $('input:password[id="newPrivateKeyPassword"]').val(); + if (newPrivateKeyPassword !== '' && oldPrivateKeyPassword !== '' ) { + $('button:button[name="submitChangePrivateKeyPassword"]').removeAttr("disabled"); + if(event.which === 13) { + updatePrivateKeyPasswd(); + } + } else { + $('button:button[name="submitChangePrivateKeyPassword"]').attr("disabled", "true"); + } + }); + + $('button:button[name="submitChangePrivateKeyPassword"]').click(function() { + updatePrivateKeyPasswd(); + }); + }); \ No newline at end of file diff --git a/apps/files_encryption/l10n/ca.php b/apps/files_encryption/l10n/ca.php index 46e91d1f07..44836fb9c9 100644 --- a/apps/files_encryption/l10n/ca.php +++ b/apps/files_encryption/l10n/ca.php @@ -1,4 +1,29 @@ "La clau de recuperació s'ha activat", +"Could not enable recovery key. Please check your recovery key password!" => "No s'ha pogut activar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!", +"Recovery key successfully disabled" => "La clau de recuperació s'ha descativat", +"Could not disable recovery key. Please check your recovery key password!" => "No s'ha pogut desactivar la calu de recuperació. Comproveu la contrasenya de la clau de recuperació!", +"Password successfully changed." => "La contrasenya s'ha canviat.", +"Could not change the password. Maybe the old password was not correct." => "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.", +"Private key password successfully updated." => "La contrasenya de la clau privada s'ha actualitzat.", +"Could not update the private key password. Maybe the old password was not correct." => "No s'ha pogut actualitzar la contrasenya de la clau privada. Potser la contrasenya anterior no era correcta.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "La clau privada no és vàlida! Potser la contrasenya ha canviat des de fora. Podeu actualitzar la contrasenya de la clau privada a l'arranjament personal per obtenir de nou accés als vostres fitxers", "Saving..." => "Desant...", -"Encryption" => "Xifrat" +"Your private key is not valid! Maybe the your password was changed from outside." => "La vostra clau privada no és vàlida! Potser la vostra contrasenya ha canviat des de fora.", +"You can unlock your private key in your " => "Podeu desbloquejar la clau privada en el vostre", +"personal settings" => "arranjament personal", +"Encryption" => "Xifrat", +"Enabled" => "Activat", +"Disabled" => "Desactivat", +"Change Password" => "Canvia la contrasenya", +"Your private key password no longer match your log-in password:" => "La clau privada ja no es correspon amb la contrasenya d'accés:", +"Set your old private key password to your current log-in password." => "Establiu la vostra contrasenya clau en funció de la contrasenya actual d'accés.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.", +"Old log-in password" => "Contrasenya anterior d'accés", +"Current log-in password" => "Contrasenya d'accés actual", +"Update Private Key Password" => "Actualitza la contrasenya de clau privada", +"Enable password recovery:" => "Habilita la recuperació de contrasenya:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya", +"File recovery settings updated" => "S'han actualitzat els arranjaments de recuperació de fitxers", +"Could not update file recovery" => "No s'ha pogut actualitzar la recuperació de fitxers" ); diff --git a/apps/files_encryption/l10n/cs_CZ.php b/apps/files_encryption/l10n/cs_CZ.php index f9b2dd06b6..88548b9430 100644 --- a/apps/files_encryption/l10n/cs_CZ.php +++ b/apps/files_encryption/l10n/cs_CZ.php @@ -1,4 +1,20 @@ "Záchranný klíč byl úspěšně povolen", +"Could not enable recovery key. Please check your recovery key password!" => "Nepodařilo se povolit záchranný klíč. Zkontrolujte prosím vaše heslo záchranného klíče!", +"Recovery key successfully disabled" => "Záchranný klíč byl úspěšně zakázán", +"Could not disable recovery key. Please check your recovery key password!" => "Nelze zakázat záchranný klíč. Zkontrolujte prosím heslo vašeho záchranného klíče.", +"Password successfully changed." => "Heslo bylo úspěšně změněno.", +"Could not change the password. Maybe the old password was not correct." => "Nelze změnit heslo. Pravděpodobně nebylo stávající heslo zadáno správně.", +"Private key password successfully updated." => "Heslo soukromého klíče úspěšně aktualizováno.", +"Could not update the private key password. Maybe the old password was not correct." => "Nelze aktualizovat heslo soukromého klíče. Možná nebylo staré heslo správně.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "Váš soukromý klíč není platný. Možná bylo vaše heslo změněno z venku. Můžete aktualizovat heslo soukromého klíče v osobním nastavení pro opětovné získání přístupu k souborům", "Saving..." => "Ukládám...", -"Encryption" => "Šifrování" +"Encryption" => "Šifrování", +"Enabled" => "Povoleno", +"Disabled" => "Zakázáno", +"Change Password" => "Změnit heslo", +"Enable password recovery:" => "Povolit obnovu hesla:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Povolení vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo", +"File recovery settings updated" => "Možnosti obnovy souborů aktualizovány", +"Could not update file recovery" => "Nelze aktualizovat obnovu souborů" ); diff --git a/apps/files_encryption/l10n/de.php b/apps/files_encryption/l10n/de.php index 2ab77f480c..ed9b8d6c16 100644 --- a/apps/files_encryption/l10n/de.php +++ b/apps/files_encryption/l10n/de.php @@ -1,4 +1,18 @@ "Wiederherstellungsschlüssel wurde erfolgreich aktiviert", +"Could not enable recovery key. Please check your recovery key password!" => "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden. Überprüfen Sie Ihr Wiederherstellungspasswort!", +"Recovery key successfully disabled" => "Wiederherstellungsschlüssel deaktiviert.", +"Could not disable recovery key. Please check your recovery key password!" => "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Überprüfen Sie Ihr Wiederherstellungspasswort!", +"Password successfully changed." => "Dein Passwort wurde geändert.", +"Could not change the password. Maybe the old password was not correct." => "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.", +"Private key password successfully updated." => "Passwort des privaten Schlüssels erfolgreich aktualisiert", "Saving..." => "Speichern...", -"Encryption" => "Verschlüsselung" +"personal settings" => "Private Einstellungen", +"Encryption" => "Verschlüsselung", +"Enabled" => "Aktiviert", +"Disabled" => "Deaktiviert", +"Change Password" => "Passwort ändern", +"Old log-in password" => "Altes login Passwort", +"Current log-in password" => "Aktuelles Passwort", +"File recovery settings updated" => "Einstellungen zur Wiederherstellung von Dateien wurden aktualisiert" ); diff --git a/apps/files_encryption/l10n/de_DE.php b/apps/files_encryption/l10n/de_DE.php index 884ed3c50b..59ccbaa1fc 100644 --- a/apps/files_encryption/l10n/de_DE.php +++ b/apps/files_encryption/l10n/de_DE.php @@ -5,15 +5,22 @@ "Could not disable recovery key. Please check your recovery key password!" => "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!", "Password successfully changed." => "Das Passwort wurde erfolgreich geändert.", "Could not change the password. Maybe the old password was not correct." => "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.", +"Private key password successfully updated." => "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.", +"Could not update the private key password. Maybe the old password was not correct." => "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden. Vielleicht war das alte Passwort nicht richtig.", +"PHP module OpenSSL is not installed." => "Das PHP-Modul OpenSSL ist nicht installiert.", +"Please ask your server administrator to install the module. For now the encryption app was disabled." => "Bitte fragen Sie Ihren Server-Administrator, das entsprechende Modul zu installieren. Bis dahin wurde die Anwendung zur Verschlüsselung deaktiviert.", "Saving..." => "Speichern...", +"Your private key is not valid! Maybe the your password was changed from outside." => "Ihr privater Schlüssel ist ungültig! Vielleicht wurde Ihr Passwort von außerhalb geändert.", +"personal settings" => "Persönliche Einstellungen", "Encryption" => "Verschlüsselung", -"Recovery account password" => "Account-Passwort wiederherstellen", "Enabled" => "Aktiviert", "Disabled" => "Deaktiviert", -"Old Recovery account password" => "Altes Passwort für die Account-Wiederherstellung", -"New Recovery account password" => "Neues Passwort für die Account-Wiederherstellung", "Change Password" => "Passwort ändern", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Falls Sie sich nicht an Ihr altes Passwort erinnern können, fragen Sie bitte Ihren Administrator, um Ihre Dateien wiederherzustellen.", +"Old log-in password" => "Altes Login-Passwort", +"Current log-in password" => "Momentanes Login-Passwort", +"Update Private Key Password" => "Das Passwort des privaten Schlüssels aktualisieren", +"Enable password recovery:" => "Passwort-Wiederherstellung aktivieren:", "File recovery settings updated" => "Die Einstellungen für die Dateiwiederherstellung wurden aktualisiert.", "Could not update file recovery" => "Die Dateiwiederherstellung konnte nicht aktualisiert werden." ); diff --git a/apps/files_encryption/l10n/el.php b/apps/files_encryption/l10n/el.php index 7067799cd2..990f464bc1 100644 --- a/apps/files_encryption/l10n/el.php +++ b/apps/files_encryption/l10n/el.php @@ -1,4 +1,11 @@ "Ο κωδικός αλλάχτηκε επιτυχώς.", +"Could not change the password. Maybe the old password was not correct." => "Αποτυχία αλλαγής κωδικού ίσως ο παλιός κωδικός να μην ήταν σωστός.", "Saving..." => "Γίνεται αποθήκευση...", -"Encryption" => "Κρυπτογράφηση" +"personal settings" => "προσωπικές ρυθμίσεις", +"Encryption" => "Κρυπτογράφηση", +"Enabled" => "Ενεργοποιημένο", +"Disabled" => "Απενεργοποιημένο", +"Change Password" => "Αλλαγή Κωδικού Πρόσβασης", +"File recovery settings updated" => "Οι ρυθμίσεις επαναφοράς αρχείων ανανεώθηκαν" ); diff --git a/apps/files_encryption/l10n/eo.php b/apps/files_encryption/l10n/eo.php index ea405fda1a..f6e0e884f3 100644 --- a/apps/files_encryption/l10n/eo.php +++ b/apps/files_encryption/l10n/eo.php @@ -1,4 +1,16 @@ "La pasvorto sukcese ŝanĝiĝis.", +"Could not change the password. Maybe the old password was not correct." => "Ne eblis ŝanĝi la pasvorton. Eble la malnova pasvorto malĝustis.", +"Private key password successfully updated." => "La pasvorto de la malpublika klavo sukcese ĝisdatiĝis.", +"PHP module OpenSSL is not installed." => "La PHP-modulo OpenSSL ne instalitas.", "Saving..." => "Konservante...", -"Encryption" => "Ĉifrado" +"personal settings" => "persona agordo", +"Encryption" => "Ĉifrado", +"Enabled" => "Kapabligita", +"Disabled" => "Malkapabligita", +"Change Password" => "Ŝarĝi pasvorton", +"Your private key password no longer match your log-in password:" => "La pasvorto de via malpublika klavo ne plu kongruas kun via ensaluta pasvorto:", +"Old log-in password" => "Malnova ensaluta pasvorto", +"Current log-in password" => "Nuna ensaluta pasvorto", +"Update Private Key Password" => "Ĝisdatigi la pasvorton de la malpublika klavo" ); diff --git a/apps/files_encryption/l10n/es.php b/apps/files_encryption/l10n/es.php index 58adbd716a..7489127935 100644 --- a/apps/files_encryption/l10n/es.php +++ b/apps/files_encryption/l10n/es.php @@ -5,18 +5,14 @@ "Could not disable recovery key. Please check your recovery key password!" => "No se pudo deshabilitar la clave de recuperación. Por favor compruebe su contraseña!", "Password successfully changed." => "Su contraseña ha sido cambiada", "Could not change the password. Maybe the old password was not correct." => "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.", +"Private key password successfully updated." => "Contraseña de clave privada actualizada con éxito.", +"Could not update the private key password. Maybe the old password was not correct." => "No se pudo cambiar la contraseña. Puede que la contraseña antigua no sea correcta.", "Saving..." => "Guardando...", "Encryption" => "Cifrado", -"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Habilitar clave de recuperación de contraseñas ():", -"Recovery account password" => "Recuperar contraseña", "Enabled" => "Habilitar", "Disabled" => "Deshabilitado", -"Change encryption passwords recovery key:" => "Cambiar clave de cifrado de contraseñas:", -"Old Recovery account password" => "Contraseña de recuperación actual", -"New Recovery account password" => "Contraseña de recuperación nueva", "Change Password" => "Cambiar contraseña", -"Enable password recovery by sharing all files with your administrator:" => "Habilitar recuperación de contraseña compartiendo todos los archivos con su administrador", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Habilitar esta opción para poder acceder a sus archivos cifrados si pierde su contraseña", +"Enable password recovery:" => "Habilitar la recuperación de contraseña:", "File recovery settings updated" => "Opciones de recuperación de archivos actualizada", "Could not update file recovery" => "No se pudo actualizar la recuperación de archivos" ); diff --git a/apps/files_encryption/l10n/es_AR.php b/apps/files_encryption/l10n/es_AR.php index 857186a55f..e7f28e1e1f 100644 --- a/apps/files_encryption/l10n/es_AR.php +++ b/apps/files_encryption/l10n/es_AR.php @@ -1,4 +1,36 @@ "Se habilitó la recuperación de archivos", +"Could not enable recovery key. Please check your recovery key password!" => "No se pudo habilitar la clave de recuperación. Por favor, comprobá tu contraseña.", +"Recovery key successfully disabled" => "Clave de recuperación deshabilitada", +"Could not disable recovery key. Please check your recovery key password!" => "No fue posible deshabilitar la clave de recuperación. Por favor, comprobá tu contraseña.", +"Password successfully changed." => "Tu contraseña fue cambiada", +"Could not change the password. Maybe the old password was not correct." => "No se pudo cambiar la contraseña. Comprobá que la contraseña actual sea correcta.", +"Private key password successfully updated." => "Contraseña de clave privada actualizada con éxito.", +"Could not update the private key password. Maybe the old password was not correct." => "No fue posible actualizar la contraseña de la clave privada. Tal vez la contraseña antigua no es correcta.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "¡Tu clave privada no es válida! Tal vez tu contraseña fue cambiada de alguna manera. Podés actualizar tu clave privada de contraseña en 'configuración personal' para tener acceso nuevamente a tus archivos", +"PHP module OpenSSL is not installed." => "El módulo OpenSSL para PHP no está instalado.", +"Please ask your server administrator to install the module. For now the encryption app was disabled." => "Pedile al administrador del servidor que instale el módulo. Por ahora la App de encriptación está deshabilitada.", "Saving..." => "Guardando...", -"Encryption" => "Encriptación" +"Your private key is not valid! Maybe the your password was changed from outside." => "¡Tu clave privada no es válida! Tal vez tu contraseña fue cambiada desde afuera.", +"You can unlock your private key in your " => "Podés desbloquear tu clave privada en tu", +"personal settings" => "Configuración personal", +"Encryption" => "Encriptación", +"Enable recovery key (allow to recover users files in case of password loss):" => "Habilitar clave de recuperación (te permite recuperar los archivos de usuario en el caso en que pierdas la contraseña):", +"Recovery key password" => "Contraseña de recuperación de clave", +"Enabled" => "Habilitado", +"Disabled" => "Deshabilitado", +"Change recovery key password:" => "Cambiar contraseña para recuperar la clave:", +"Old Recovery key password" => "Contraseña antigua de recuperación de clave", +"New Recovery key password" => "Nueva contraseña de recuperación de clave", +"Change Password" => "Cambiar contraseña", +"Your private key password no longer match your log-in password:" => "Tu contraseña de recuperación de clave ya no coincide con la contraseña de ingreso:", +"Set your old private key password to your current log-in password." => "Usá tu contraseña de recuperación de clave antigua para tu contraseña de ingreso actual.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Si no te acordás de tu contraseña antigua, pedile al administrador que recupere tus archivos", +"Old log-in password" => "Contraseña anterior", +"Current log-in password" => "Contraseña actual", +"Update Private Key Password" => "Actualizar contraseña de la clave privada", +"Enable password recovery:" => "Habilitar contraseña de recuperación:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Habilitando esta opción te va a permitir tener acceso a tus archivos encriptados incluso si perdés la contraseña", +"File recovery settings updated" => "Las opciones de recuperación de archivos fueron actualizadas", +"Could not update file recovery" => "No fue posible actualizar la recuperación de archivos" ); diff --git a/apps/files_encryption/l10n/et_EE.php b/apps/files_encryption/l10n/et_EE.php index e762647f78..94c774636b 100644 --- a/apps/files_encryption/l10n/et_EE.php +++ b/apps/files_encryption/l10n/et_EE.php @@ -7,16 +7,9 @@ "Could not change the password. Maybe the old password was not correct." => "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.", "Saving..." => "Salvestamine...", "Encryption" => "Krüpteerimine", -"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Luba krüpteerimise paroolide taastevõti (võimalda parooli jagamine taastevõtmesse):", -"Recovery account password" => "Konto taasteparool", "Enabled" => "Sisse lülitatud", "Disabled" => "Väljalülitatud", -"Change encryption passwords recovery key:" => "Muuda taaste võtme krüpteerimise paroole:", -"Old Recovery account password" => "Konto vana taaste parool", -"New Recovery account password" => "Konto uus taasteparool", "Change Password" => "Muuda parooli", -"Enable password recovery by sharing all files with your administrator:" => "Luba parooli taaste jagades kõik failid administraatoriga:", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Valiku lubamine võimaldab taastada ligipääsu krüpteeritud failidele kui parool on kadunud", "File recovery settings updated" => "Faili taaste seaded uuendatud", "Could not update file recovery" => "Ei suuda uuendada taastefaili" ); diff --git a/apps/files_encryption/l10n/fr.php b/apps/files_encryption/l10n/fr.php index 98fb70691d..94d27f5501 100644 --- a/apps/files_encryption/l10n/fr.php +++ b/apps/files_encryption/l10n/fr.php @@ -1,4 +1,29 @@ "Clé de récupération activée avec succès", +"Could not enable recovery key. Please check your recovery key password!" => "Ne peut pas activer la clé de récupération. s'il vous plait vérifiez votre mot de passe de clé de récupération!", +"Recovery key successfully disabled" => "Clé de récupération désactivée avc succès", +"Could not disable recovery key. Please check your recovery key password!" => "Ne peut pas désactiver la clé de récupération. S'il vous plait vérifiez votre mot de passe de clé de récupération!", +"Password successfully changed." => "Mot de passe changé avec succès ", +"Could not change the password. Maybe the old password was not correct." => "Ne peut pas changer le mot de passe. L'ancien mot de passe est peut-être incorrect.", +"Private key password successfully updated." => "Mot de passe de la clé privé mis à jour avec succès.", +"Could not update the private key password. Maybe the old password was not correct." => "Impossible de mettre à jour le mot de passe de la clé privé. Peut-être que l'ancien mot de passe n'était pas correcte.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "Votre clef privée est invalide ! Votre mot de passe a peut-être été modifié depuis l'extérieur. Vous pouvez mettre à jour le mot de passe de votre clef privée dans vos paramètres personnels pour récupérer l'accès à vos fichiers", "Saving..." => "Enregistrement...", -"Encryption" => "Chiffrement" +"Your private key is not valid! Maybe the your password was changed from outside." => "Votre clef privée est invalide ! Votre mot de passe a peut-être été modifié depuis l'extérieur.", +"You can unlock your private key in your " => "Vous pouvez déverrouiller votre clé privée dans votre", +"personal settings" => "paramètres personnel", +"Encryption" => "Chiffrement", +"Enabled" => "Activer", +"Disabled" => "Désactiver", +"Change Password" => "Changer de mot de passe", +"Your private key password no longer match your log-in password:" => "Le mot de passe de votre clef privée ne correspond plus à votre mot de passe de connexion :", +"Set your old private key password to your current log-in password." => "Configurez le mot de passe de votre ancienne clef privée avec votre mot de passe courant de connexion. ", +" If you don't remember your old password you can ask your administrator to recover your files." => "Si vous ne vous souvenez plus de votre ancien mot de passe, vous pouvez demander à votre administrateur de récupérer vos fichiers.", +"Old log-in password" => "Ancien mot de passe de connexion", +"Current log-in password" => "Actuel mot de passe de connexion", +"Update Private Key Password" => "Mettre à jour le mot de passe de votre clé privée", +"Enable password recovery:" => "Activer la récupération du mot de passe:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Activer cette option vous permettra d'obtenir à nouveau l'accès à vos fichiers chiffrés en cas de perte de mot de passe", +"File recovery settings updated" => "Mise à jour des paramètres de récupération de fichiers ", +"Could not update file recovery" => "Ne peut pas remettre à jour les fichiers de récupération" ); diff --git a/apps/files_encryption/l10n/gl.php b/apps/files_encryption/l10n/gl.php index ca93efba9a..e82840fa9a 100644 --- a/apps/files_encryption/l10n/gl.php +++ b/apps/files_encryption/l10n/gl.php @@ -5,18 +5,32 @@ "Could not disable recovery key. Please check your recovery key password!" => "Non foi posíbel desactivar a chave de recuperación. Comprobe o contrasinal da chave de recuperación!", "Password successfully changed." => "O contrasinal foi cambiado satisfactoriamente", "Could not change the password. Maybe the old password was not correct." => "Non foi posíbel cambiar o contrasinal. Probabelmente o contrasinal antigo non é o correcto.", +"Private key password successfully updated." => "A chave privada foi actualizada correctamente.", +"Could not update the private key password. Maybe the old password was not correct." => "Non foi posíbel actualizar o contrasinal da chave privada. É probábel que o contrasinal antigo non sexa correcto.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "A chave privada non é correcta! É probábel que o seu contrasinal teña sido cambiado desde o exterior. Vostede pode actualizar o contrasinal da súa chave privada nos seus axustes persoais para recuperar o acceso aos seus ficheiros", +"PHP module OpenSSL is not installed." => "O módulo PHP OpenSSL non está instalado.", +"Please ask your server administrator to install the module. For now the encryption app was disabled." => "Pregúntelle ao administrador do servidor pola instalación do módulo. Polo de agora o aplicativo de cifrado foi desactivado.", "Saving..." => "Gardando...", +"Your private key is not valid! Maybe the your password was changed from outside." => "A chave privada non é correcta! É probábel que o seu contrasinal teña sido cambiado desde o exterior. ", +"You can unlock your private key in your " => "Pode desbloquear a chave privada nos seus", +"personal settings" => "axustes persoais", "Encryption" => "Cifrado", -"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Activar a chave de recuperación do cifrado de contrasinais (permite compartir a chave de recuperación):", -"Recovery account password" => "Recuperación do contrasinal da conta", +"Enable recovery key (allow to recover users files in case of password loss):" => "Activar a chave de recuperación (permitirá recuperar os ficheiros dos usuarios no caso de perda do contrasinal):", +"Recovery key password" => "Contrasinal da chave de recuperación", "Enabled" => "Activado", "Disabled" => "Desactivado", -"Change encryption passwords recovery key:" => "Cambiar a chave de la recuperación do cifrado de contrasinais:", -"Old Recovery account password" => "Antigo contrasinal de recuperación da conta", -"New Recovery account password" => "Novo contrasinal de recuperación da conta", +"Change recovery key password:" => "Cambiar o contrasinal da chave de la recuperación:", +"Old Recovery key password" => "Antigo contrasinal da chave de recuperación", +"New Recovery key password" => "Novo contrasinal da chave de recuperación", "Change Password" => "Cambiar o contrasinal", -"Enable password recovery by sharing all files with your administrator:" => "Activar a recuperación de contrasinais compartindo todos os ficheiros co administrador:", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados se perde o contrasinal", +"Your private key password no longer match your log-in password:" => "O seu contrasinal da chave privada non coincide co seu contrasinal de acceso.", +"Set your old private key password to your current log-in password." => "Estabeleza o seu contrasinal antigo da chave de recuperación ao seu contrasinal de acceso actual", +" If you don't remember your old password you can ask your administrator to recover your files." => " Se non lembra o seu antigo contrasinal pode pedírllelo ao seu administrador para recuperar os seus ficheiros.", +"Old log-in password" => "Contrasinal de acceso antigo", +"Current log-in password" => "Contrasinal de acceso actual", +"Update Private Key Password" => "Actualizar o contrasinal da chave privada", +"Enable password recovery:" => "Activar o contrasinal de recuperación:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados no caso de perda do contrasinal", "File recovery settings updated" => "Actualizouse o ficheiro de axustes de recuperación", "Could not update file recovery" => "Non foi posíbel actualizar o ficheiro de recuperación" ); diff --git a/apps/files_encryption/l10n/it.php b/apps/files_encryption/l10n/it.php index 63ae4b70b4..f0f2c79cc4 100644 --- a/apps/files_encryption/l10n/it.php +++ b/apps/files_encryption/l10n/it.php @@ -5,18 +5,32 @@ "Could not disable recovery key. Please check your recovery key password!" => "Impossibile disabilitare la chiave di ripristino. Verifica la password della chiave di ripristino.", "Password successfully changed." => "Password modificata correttamente.", "Could not change the password. Maybe the old password was not correct." => "Impossibile cambiare la password. Forse la vecchia password non era corretta.", +"Private key password successfully updated." => "Password della chiave privata aggiornata correttamente.", +"Could not update the private key password. Maybe the old password was not correct." => "Impossibile aggiornare la password della chiave privata. Forse la vecchia password non era corretta.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "La chiave privata non è valida! Forse la password è stata cambiata dall'esterno. Puoi aggiornare la password della chiave privata nelle impostazioni personali per ottenere nuovamente l'accesso ai file.", +"PHP module OpenSSL is not installed." => "Il modulo PHP OpenSSL non è installato.", +"Please ask your server administrator to install the module. For now the encryption app was disabled." => "Chiedi all'amministratore del server di installare il modulo. Per ora la crittografia è disabilitata.", "Saving..." => "Salvataggio in corso...", +"Your private key is not valid! Maybe the your password was changed from outside." => "La tua chiave privata non è valida! Forse è stata modifica dall'esterno.", +"You can unlock your private key in your " => "Puoi sbloccare la chiave privata nelle tue", +"personal settings" => "impostazioni personali", "Encryption" => "Cifratura", -"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Abilita la chiave di ripristino delle password di cifratura (consente di condividere la chiave di ripristino):", -"Recovery account password" => "Password di ripristino dell'account", +"Enable recovery key (allow to recover users files in case of password loss):" => "Abilita la chiave di recupero (permette di recuperare i file utenti in caso di perdita della password):", +"Recovery key password" => "Password della chiave di recupero", "Enabled" => "Abilitata", "Disabled" => "Disabilitata", -"Change encryption passwords recovery key:" => "Cambia la chiave di ripristino delle password di cifratura:", -"Old Recovery account password" => "Vecchia password di ripristino dell'account", -"New Recovery account password" => "Nuova password di ripristino dell'account", +"Change recovery key password:" => "Cambia la password della chiave di recupero:", +"Old Recovery key password" => "Vecchia password della chiave di recupero", +"New Recovery key password" => "Nuova password della chiave di recupero", "Change Password" => "Modifica password", -"Enable password recovery by sharing all files with your administrator:" => "Abilita il ripristino della password condividendo tutti i file con l'amministratore:", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "L'abilitazione di questa opzione ti consentirà di ottenere nuovamente accesso ai tuoi file cifrati in caso di smarrimento della password", +"Your private key password no longer match your log-in password:" => "La password della chiave privata non corrisponde più alla password di accesso:", +"Set your old private key password to your current log-in password." => "Imposta la vecchia password della chiave privata sull'attuale password di accesso.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Se non ricordi la vecchia password puoi chiedere al tuo amministratore di recuperare i file.", +"Old log-in password" => "Vecchia password di accesso", +"Current log-in password" => "Password di accesso attuale", +"Update Private Key Password" => "Aggiorna la password della chiave privata", +"Enable password recovery:" => "Abilita il ripristino della password:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "L'abilitazione di questa opzione ti consentirà di accedere nuovamente ai file cifrati in caso di perdita della password", "File recovery settings updated" => "Impostazioni di ripristino dei file aggiornate", "Could not update file recovery" => "Impossibile aggiornare il ripristino dei file" ); diff --git a/apps/files_encryption/l10n/ja_JP.php b/apps/files_encryption/l10n/ja_JP.php index 6d2d3e249c..b8e332672c 100644 --- a/apps/files_encryption/l10n/ja_JP.php +++ b/apps/files_encryption/l10n/ja_JP.php @@ -5,18 +5,32 @@ "Could not disable recovery key. Please check your recovery key password!" => "リカバリ用のキーを無効化できませんでした。リカバリ用のキーのパスワードを確認して下さい!", "Password successfully changed." => "パスワードを変更できました。", "Could not change the password. Maybe the old password was not correct." => "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。", +"Private key password successfully updated." => "秘密鍵のパスワードが正常に更新されました。", +"Could not update the private key password. Maybe the old password was not correct." => "秘密鍵のパスワードを更新できませんでした。古いパスワードが正確でない場合があります。", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "秘密鍵が有効ではありません。パスワードが外部から変更された恐れがあります。。個人設定で秘密鍵のパスワードを更新して、ファイルへのアクセス権を奪還できます。", +"PHP module OpenSSL is not installed." => "PHPのモジュール OpenSSLがインストールされていません。", +"Please ask your server administrator to install the module. For now the encryption app was disabled." => "サーバーの管理者にモジュールのインストールを頼んでください。さしあたり暗号化アプリは無効化されました。", "Saving..." => "保存中...", +"Your private key is not valid! Maybe the your password was changed from outside." => "秘密鍵が有効ではありません。パスワードが外部から変更された恐れがあります。", +"You can unlock your private key in your " => "個人設定で", +"personal settings" => "秘密鍵をアンロックできます", "Encryption" => "暗号化", -"Enable encryption passwords recovery key (allow sharing to recovery key):" => "暗号化パスワードの復旧キーを有効にする(復旧キーを共有することを許可):", -"Recovery account password" => "復旧アカウントのパスワード", +"Enable recovery key (allow to recover users files in case of password loss):" => "復旧キーを有効化 (万一パスワードを亡くした場合もユーザーのファイルを回復できる):", +"Recovery key password" => "復旧キーのパスワード", "Enabled" => "有効", "Disabled" => "無効", -"Change encryption passwords recovery key:" => "復旧キーの暗号化パスワードを変更:", -"Old Recovery account password" => "古い復旧アカウントのパスワード", -"New Recovery account password" => "新しい復旧アカウントのパスワード", +"Change recovery key password:" => "復旧キーのパスワードを変更:", +"Old Recovery key password" => "古い復旧キーのパスワード", +"New Recovery key password" => "新しい復旧キーのパスワード", "Change Password" => "パスワードを変更", -"Enable password recovery by sharing all files with your administrator:" => "管理者が全ての共有ファイルに対してパスワードによる復旧を有効にする:", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "このオプションを有効にすると、もしパスワードが分からなくなったとしても、暗号化されたファイルに再度アクセスすることが出来るようになります。", +"Your private key password no longer match your log-in password:" => "もはや秘密鍵はログインパスワードと一致しません:", +"Set your old private key password to your current log-in password." => "古い秘密鍵のパスワードを現在のログインパスワードに設定する。", +" If you don't remember your old password you can ask your administrator to recover your files." => "古いパスワードを覚えていない場合、管理者に尋ねてファイルを回復することができます。", +"Old log-in password" => "古いログインパスワード", +"Current log-in password" => "現在のログインパスワード", +"Update Private Key Password" => "秘密鍵のパスワードを更新", +"Enable password recovery:" => "パスワード復旧を有効化:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "このオプションを有効にすると、パスワードを紛失した場合も、暗号化されたファイルに再度アクセスすることができるようになります。", "File recovery settings updated" => "ファイル復旧設定が更新されました", "Could not update file recovery" => "ファイル復旧を更新できませんでした" ); diff --git a/apps/files_encryption/l10n/lt_LT.php b/apps/files_encryption/l10n/lt_LT.php index 6bc80ff44a..84fa902dc6 100644 --- a/apps/files_encryption/l10n/lt_LT.php +++ b/apps/files_encryption/l10n/lt_LT.php @@ -1,4 +1,15 @@ "Atkūrimo raktas sėkmingai įjungtas", +"Could not enable recovery key. Please check your recovery key password!" => "Neišėjo įjungti jūsų atkūrimo rakto. Prašome jį patikrinti!", +"Recovery key successfully disabled" => "Atkūrimo raktas sėkmingai išjungtas", +"Could not disable recovery key. Please check your recovery key password!" => "Neišėjo išjungti jūsų atkūrimo rakto. Prašome jį patikrinti!", +"Password successfully changed." => "Slaptažodis sėkmingai pakeistas", +"Could not change the password. Maybe the old password was not correct." => "Slaptažodis nebuvo pakeistas. Gali būti, kad buvo neteisingai suvestas senasis.", "Saving..." => "Saugoma...", -"Encryption" => "Šifravimas" +"Encryption" => "Šifravimas", +"Enabled" => "Įjungta", +"Disabled" => "Išjungta", +"Change Password" => "Pakeisti slaptažodį", +"File recovery settings updated" => "Failų atstatymo nustatymai pakeisti", +"Could not update file recovery" => "Neišėjo atnaujinti failų atkūrimo" ); diff --git a/apps/files_encryption/l10n/nl.php b/apps/files_encryption/l10n/nl.php index 9c462917cf..56b4a9bfb3 100644 --- a/apps/files_encryption/l10n/nl.php +++ b/apps/files_encryption/l10n/nl.php @@ -5,18 +5,32 @@ "Could not disable recovery key. Please check your recovery key password!" => "Kon herstelsleutel niet deactiveren. Controleer het wachtwoord van uw herstelsleutel!", "Password successfully changed." => "Wachtwoord succesvol gewijzigd.", "Could not change the password. Maybe the old password was not correct." => "Kon wachtwoord niet wijzigen. Wellicht oude wachtwoord niet juist ingevoerd.", +"Private key password successfully updated." => "Privésleutel succesvol bijgewerkt.", +"Could not update the private key password. Maybe the old password was not correct." => "Kon het wachtwoord van de privésleutel niet wijzigen. Misschien was het oude wachtwoord onjuist.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "Uw privésleutel is niet geldig! Misschien was uw wachtwoord van buitenaf gewijzigd. U kunt het wachtwoord van uw privésleutel bijwerking in uw persoonlijke instellingen om bij uw bestanden te komen.", +"PHP module OpenSSL is not installed." => "PHP module OpenSSL is niet geïnstalleerd.", +"Please ask your server administrator to install the module. For now the encryption app was disabled." => "Vraag uw beheerder deze module te installeren. Tot zolang is de crypto app gedeactiveerd.", "Saving..." => "Opslaan", +"Your private key is not valid! Maybe the your password was changed from outside." => "Uw privésleutel is niet geldig. Misschien was uw wachtwoord van buitenaf gewijzigd.", +"You can unlock your private key in your " => "U kunt uw privésleutel deblokkeren in uw", +"personal settings" => "persoonlijke instellingen", "Encryption" => "Versleuteling", -"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Activeer versleuteling van wachtwoorden herstelsleutel (maak delen met herstel sleutel mogelijk):", -"Recovery account password" => "Herstel account wachtwoord", +"Enable recovery key (allow to recover users files in case of password loss):" => "Activeren herstelsleutel (maakt het mogelijk om gebruikersbestanden terug te halen in geval van verlies van het wachtwoord):", +"Recovery key password" => "Wachtwoord herstelsleulel", "Enabled" => "Geactiveerd", "Disabled" => "Gedeactiveerd", -"Change encryption passwords recovery key:" => "Wijzig versleuteling wachtwoord herstelsleutel", -"Old Recovery account password" => "Oude herstel account wachtwoord", -"New Recovery account password" => "Nieuwe herstel account wachtwoord", +"Change recovery key password:" => "Wijzig wachtwoord herstelsleutel:", +"Old Recovery key password" => "Oude wachtwoord herstelsleutel", +"New Recovery key password" => "Nieuwe wachtwoord herstelsleutel", "Change Password" => "Wijzigen wachtwoord", -"Enable password recovery by sharing all files with your administrator:" => "Activeer wachtwoordherstel door alle bestanden met uw beheerder te delen:", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Door deze optie te activeren kunt u toegang tot uw versleutelde bestanden krijgen als u uw wachtwoord kwijt bent", +"Your private key password no longer match your log-in password:" => "Het wachtwoord van uw privésleutel komt niet meer overeen met uw inlogwachtwoord:", +"Set your old private key password to your current log-in password." => "Stel het wachtwoord van uw oude privésleutel in op uw huidige inlogwachtwoord.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Als u uw oude wachtwoord niet meer weet, kunt u uw beheerder vragen uw bestanden terug te halen.", +"Old log-in password" => "Oude wachtwoord", +"Current log-in password" => "Huidige wachtwoord", +"Update Private Key Password" => "Bijwerken wachtwoord Privésleutel", +"Enable password recovery:" => "Activeren wachtwoord herstel:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Het activeren van deze optie maakt het mogelijk om uw versleutelde bestanden te benaderen als uw wachtwoord kwijt is", "File recovery settings updated" => "Bestandsherstel instellingen bijgewerkt", "Could not update file recovery" => "Kon bestandsherstel niet bijwerken" ); diff --git a/apps/files_encryption/l10n/pl.php b/apps/files_encryption/l10n/pl.php index a6f90db4cd..6a28f85994 100644 --- a/apps/files_encryption/l10n/pl.php +++ b/apps/files_encryption/l10n/pl.php @@ -1,18 +1,31 @@ "Klucz odzyskiwania włączony", +"Could not enable recovery key. Please check your recovery key password!" => "Nie można włączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!", +"Recovery key successfully disabled" => "Klucz odzyskiwania wyłączony", +"Could not disable recovery key. Please check your recovery key password!" => "Nie można wyłączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!", "Password successfully changed." => "Zmiana hasła udana.", "Could not change the password. Maybe the old password was not correct." => "Nie można zmienić hasła. Może stare hasło nie było poprawne.", +"Private key password successfully updated." => "Pomyślnie zaktualizowano hasło klucza prywatnego.", +"Could not update the private key password. Maybe the old password was not correct." => "Nie można zmienić prywatnego hasła. Może stare hasło nie było poprawne.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz. Można zaktualizować hasło klucza prywatnego w ustawieniach osobistych w celu odzyskania dostępu do plików", +"PHP module OpenSSL is not installed." => "Moduł PHP OpenSSL nie jest zainstalowany", +"Please ask your server administrator to install the module. For now the encryption app was disabled." => "Proszę poproś administratora serwera aby zainstalował ten moduł. Obecnie aplikacja szyfrowanie została wyłączona.", "Saving..." => "Zapisywanie...", +"Your private key is not valid! Maybe the your password was changed from outside." => "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz.", +"You can unlock your private key in your " => "Możesz odblokować swój klucz prywatny w swojej", +"personal settings" => "Ustawienia osobiste", "Encryption" => "Szyfrowanie", -"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Włącz szyfrowanie odzyskiwanych haseł klucza (zezwalaj na odzyskiwanie klucza):", -"Recovery account password" => "Odzyskiwanie hasła konta", "Enabled" => "Włączone", "Disabled" => "Wyłączone", -"Change encryption passwords recovery key:" => "Zmiana klucza szyfrowania haseł odzyskiwania:", -"Old Recovery account password" => "Stare hasło odzyskiwania", -"New Recovery account password" => "Nowe hasło odzyskiwania", "Change Password" => "Zmień hasło", -"Enable password recovery by sharing all files with your administrator:" => "Włączyć hasło odzyskiwania przez udostępnianie wszystkich plików z administratorem:", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła", +"Your private key password no longer match your log-in password:" => "Hasło klucza prywatnego nie pasuje do hasła logowania:", +"Set your old private key password to your current log-in password." => "Podaj swoje stare prywatne hasło aby ustawić nowe", +" If you don't remember your old password you can ask your administrator to recover your files." => "Jeśli nie pamiętasz swojego starego hasła, poproś swojego administratora, aby odzyskać pliki.", +"Old log-in password" => "Stare hasło logowania", +"Current log-in password" => "Bieżące hasło logowania", +"Update Private Key Password" => "Aktualizacja hasła klucza prywatnego", +"Enable password recovery:" => "Włącz hasło odzyskiwania:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła", "File recovery settings updated" => "Ustawienia odzyskiwania plików zmienione", "Could not update file recovery" => "Nie można zmienić pliku odzyskiwania" ); diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php index e5fa0b55ca..cb1678541b 100644 --- a/apps/files_encryption/l10n/pt_BR.php +++ b/apps/files_encryption/l10n/pt_BR.php @@ -5,18 +5,32 @@ "Could not disable recovery key. Please check your recovery key password!" => "Impossível desabilitar recuperação de chave. Por favor verifique sua senha para recuperação de chave!", "Password successfully changed." => "Senha alterada com sucesso.", "Could not change the password. Maybe the old password was not correct." => "Não foi possível alterar a senha. Talvez a senha antiga não estava correta.", +"Private key password successfully updated." => "Senha de chave privada atualizada com sucesso.", +"Could not update the private key password. Maybe the old password was not correct." => "Não foi possível atualizar a senha de chave privada. Talvez a senha antiga esteja incorreta.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "Sua chave privada não é válida! Talvez sua senha tenha sido mudada. Você pode atualizar sua senha de chave privada nas suas configurações pessoais para obter novamente acesso aos seus arquivos.", +"PHP module OpenSSL is not installed." => "O módulo PHP OpenSSL não está instalado.", +"Please ask your server administrator to install the module. For now the encryption app was disabled." => "Por favor peça ao administrador do servidor para instalar o módulo. Por enquanto o app de encriptação foi desabilitada.", "Saving..." => "Salvando...", +"Your private key is not valid! Maybe the your password was changed from outside." => "Sua chave privada não é válida! Talvez sua senha tenha sido mudada.", +"You can unlock your private key in your " => "Você pode desbloquear sua chave privada nas suas", +"personal settings" => "configurações pessoais.", "Encryption" => "Criptografia", -"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Ativar a criptografia de chave de recuperação de senhas (permitir compartilhar a chave de recuperação):", -"Recovery account password" => "Recuperar a senha da conta", +"Enable recovery key (allow to recover users files in case of password loss):" => "Habilitar chave de recuperação (permite recuperar arquivos de usuários em caso de perda de senha):", +"Recovery key password" => "Senha da chave de recuperação", "Enabled" => "Habilidado", "Disabled" => "Desabilitado", -"Change encryption passwords recovery key:" => "Mudar a criptografia de chave de recuperação de senhas:", -"Old Recovery account password" => "Recuperação de senha de conta antiga", -"New Recovery account password" => "Senha Nova da conta de Recuperação", +"Change recovery key password:" => "Mudar a senha da chave de recuperação:", +"Old Recovery key password" => "Senha antiga da chave de recuperação", +"New Recovery key password" => "Nova senha da chave de recuperação", "Change Password" => "Trocar Senha", -"Enable password recovery by sharing all files with your administrator:" => "Habilitar recuperação de senha através da partilha de todos os arquivos com o administrador:", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Ativando esta opção irá permitir que você reobtainha acesso aos seus arquivos criptografados se sua senha for perdida", +"Your private key password no longer match your log-in password:" => "Sua senha de chave privada não coincide mais com sua senha de login:", +"Set your old private key password to your current log-in password." => "Configure sua antiga senha de chave privada para sua atual senha de login.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Se você não se lembra de sua antiga senha você pode pedir ao administrador que recupere seus arquivos.", +"Old log-in password" => "Senha antiga de login", +"Current log-in password" => "Atual senha de login", +"Update Private Key Password" => "Atualizar senha de chave privada", +"Enable password recovery:" => "Habilitar recuperação de senha:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Habilitar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos encriptados em caso de perda de senha", "File recovery settings updated" => "Configurações de recuperação de arquivo atualizado", "Could not update file recovery" => "Não foi possível atualizar a recuperação de arquivos" ); diff --git a/apps/files_encryption/l10n/pt_PT.php b/apps/files_encryption/l10n/pt_PT.php index e1bb17ecaa..f485f373a5 100644 --- a/apps/files_encryption/l10n/pt_PT.php +++ b/apps/files_encryption/l10n/pt_PT.php @@ -1,9 +1,15 @@ "Chave de recuperação activada com sucesso", +"Could not enable recovery key. Please check your recovery key password!" => "Não foi possível activar a chave de recuperação. Por favor verifique a password da chave de recuperação!", +"Recovery key successfully disabled" => "Chave de recuperação descativada com sucesso", +"Could not disable recovery key. Please check your recovery key password!" => "Não foi possível desactivar a chave de recuperação. Por favor verifique a password da chave de recuperação.", "Password successfully changed." => "Password alterada com sucesso.", "Could not change the password. Maybe the old password was not correct." => "Não foi possivel alterar a password. Possivelmente a password antiga não está correcta.", "Saving..." => "A guardar...", "Encryption" => "Encriptação", "Enabled" => "Activado", "Disabled" => "Desactivado", -"Change Password" => "Mudar a Password" +"Change Password" => "Mudar a Password", +"File recovery settings updated" => "Actualizadas as definições de recuperação de ficheiros", +"Could not update file recovery" => "Não foi possível actualizar a recuperação de ficheiros" ); diff --git a/apps/files_encryption/l10n/ru.php b/apps/files_encryption/l10n/ru.php index aaf7f0997c..9b90a5110e 100644 --- a/apps/files_encryption/l10n/ru.php +++ b/apps/files_encryption/l10n/ru.php @@ -1,18 +1,16 @@ "Ключ восстановления успешно установлен", +"Recovery key successfully disabled" => "Ключ восстановления успешно отключен", "Password successfully changed." => "Пароль изменен удачно.", "Could not change the password. Maybe the old password was not correct." => "Невозможно изменить пароль. Возможно старый пароль не был верен.", "Saving..." => "Сохранение...", +"personal settings" => "персональные настройки", "Encryption" => "Шифрование", -"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Включить шифрование пароля ключа восстановления (понадобится разрешение для восстановления ключа)", -"Recovery account password" => "Восстановление пароля учетной записи", "Enabled" => "Включено", "Disabled" => "Отключено", -"Change encryption passwords recovery key:" => "Изменить шифрование пароля ключа восстановления:", -"Old Recovery account password" => "Старое Восстановление пароля учетной записи", -"New Recovery account password" => "Новое Восстановление пароля учетной записи", "Change Password" => "Изменить пароль", -"Enable password recovery by sharing all files with your administrator:" => "Включить восстановление пароля путем доступа Вашего администратора ко всем файлам", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Включение этой опции позволит вам получить доступ к зашифрованным файлам, в случае утери пароля", +" If you don't remember your old password you can ask your administrator to recover your files." => "Если вы не помните свой старый пароль, вы можете попросить своего администратора восстановить ваши файлы", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Включение этой опции позволит вам получить доступ к своим зашифрованным файлам в случае утери пароля", "File recovery settings updated" => "Настройки файла восстановления обновлены", "Could not update file recovery" => "Невозможно обновить файл восстановления" ); diff --git a/apps/files_encryption/l10n/sk_SK.php b/apps/files_encryption/l10n/sk_SK.php index 279481fbd4..b01c7f709d 100644 --- a/apps/files_encryption/l10n/sk_SK.php +++ b/apps/files_encryption/l10n/sk_SK.php @@ -1,11 +1,28 @@ "Záchranný kľúč bol úspešne povolený", +"Could not enable recovery key. Please check your recovery key password!" => "Nepodarilo sa povoliť záchranný kľúč. Skontrolujte prosím Vaše heslo záchranného kľúča!", +"Recovery key successfully disabled" => "Záchranný kľúč bol úspešne zakázaný", +"Could not disable recovery key. Please check your recovery key password!" => "Nepodarilo sa zakázať záchranný kľúč. Skontrolujte prosím Vaše heslo záchranného kľúča!", "Password successfully changed." => "Heslo úspešne zmenené.", +"Could not change the password. Maybe the old password was not correct." => "Nemožno zmeniť heslo. Pravdepodobne nebolo staré heslo zadané správne.", +"Private key password successfully updated." => "Heslo súkromného kľúča je úspešne aktualizované.", +"Could not update the private key password. Maybe the old password was not correct." => "Nemožno aktualizovať heslo súkromného kľúča. Možno nebolo staré heslo správne.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "Váš súkromný kľúč je neplatný. Možno bolo Vaše heslo zmenené z vonku. Môžete aktualizovať heslo súkromného kľúča v osobnom nastavení na opätovné získanie prístupu k súborom", "Saving..." => "Ukladám...", +"Your private key is not valid! Maybe the your password was changed from outside." => "Váš súkromný kľúč je neplatný. Možno bolo Vaše heslo zmenené z vonku.", +"personal settings" => "osobné nastavenia", "Encryption" => "Šifrovanie", "Enabled" => "Povolené", "Disabled" => "Zakázané", -"Change encryption passwords recovery key:" => "Zmeniť šifrovacie heslo obnovovacieho kľúča:", "Change Password" => "Zmeniť heslo", +"Your private key password no longer match your log-in password:" => "Vaše heslo súkromného kľúča je rovnaké ako Vaše prihlasovacie heslo:", +"Set your old private key password to your current log-in password." => "Nastavte si staré heslo súkromného kľúča k Vášmu súčasnému prihlasovaciemu heslu.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Ak si nepamätáte svoje staré heslo, môžete požiadať správcu o obnovenie svojich súborov.", +"Old log-in password" => "Staré prihlasovacie heslo", +"Current log-in password" => "Súčasné prihlasovacie heslo", +"Update Private Key Password" => "Aktualizovať heslo súkromného kľúča", +"Enable password recovery:" => "Povoliť obnovu hesla:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Povolenie Vám umožní znovu získať prístup k Vašim zašifrovaným súborom, ak stratíte heslo", "File recovery settings updated" => "Nastavenie obnovy súborov aktualizované", "Could not update file recovery" => "Nemožno aktualizovať obnovenie súborov" ); diff --git a/apps/files_encryption/l10n/sv.php b/apps/files_encryption/l10n/sv.php index 966963b554..d3d317f210 100644 --- a/apps/files_encryption/l10n/sv.php +++ b/apps/files_encryption/l10n/sv.php @@ -1,4 +1,29 @@ "Återställningsnyckeln har framgångsrikt aktiverats", +"Could not enable recovery key. Please check your recovery key password!" => "Kunde inte aktivera återställningsnyckeln. Vänligen kontrollera ditt lösenord för återställningsnyckeln!", +"Recovery key successfully disabled" => "Återställningsnyckeln har framgångsrikt inaktiverats", +"Could not disable recovery key. Please check your recovery key password!" => "Kunde inte inaktivera återställningsnyckeln. Vänligen kontrollera ditt lösenord för återställningsnyckeln!", +"Password successfully changed." => "Ändringen av lösenordet lyckades.", +"Could not change the password. Maybe the old password was not correct." => "Kunde inte ändra lösenordet. Kanske det gamla lösenordet inte var rätt.", +"Private key password successfully updated." => "Den privata lösenordsnyckeln uppdaterades utan problem.", +"Could not update the private key password. Maybe the old password was not correct." => "Kunde inte uppdatera den privata lösenordsnyckeln. Kanske var det gamla lösenordet fel.", +"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "Din privata lösenordsnyckel är inte giltig! Kanske byttes ditt lösenord från utsidan. Du kan uppdatera din privata lösenordsnyckel under dina personliga inställningar för att återfå tillgång till dina filer", "Saving..." => "Sparar...", -"Encryption" => "Kryptering" +"Your private key is not valid! Maybe the your password was changed from outside." => "Din privata lösenordsnyckel är inte giltig! Kanske byttes ditt lösenord från utsidan.", +"You can unlock your private key in your " => "Du kan låsa upp din privata nyckel i dina", +"personal settings" => "personliga inställningar", +"Encryption" => "Kryptering", +"Enabled" => "Aktiverad", +"Disabled" => "Inaktiverad", +"Change Password" => "Byt lösenord", +"Your private key password no longer match your log-in password:" => "Din privata lösenordsnyckel stämmer inte längre överrens med ditt inloggningslösenord:", +"Set your old private key password to your current log-in password." => "Ställ in din gamla privata lösenordsnyckel till ditt aktuella inloggningslösenord.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Om du inte kommer ihåg ditt gamla lösenord kan du be din administratör att återställa dina filer.", +"Old log-in password" => "Gammalt inloggningslösenord", +"Current log-in password" => "Nuvarande inloggningslösenord", +"Update Private Key Password" => "Uppdatera den privata lösenordsnyckeln", +"Enable password recovery:" => "Aktivera lösenordsåterställning", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Genom att aktivera detta alternativ kommer du kunna återfå tillgång till dina krypterade filer om du skulle förlora/glömma ditt lösenord", +"File recovery settings updated" => "Inställningarna för filåterställning har uppdaterats", +"Could not update file recovery" => "Kunde inte uppdatera filåterställning" ); diff --git a/apps/files_encryption/l10n/tr.php b/apps/files_encryption/l10n/tr.php index 917ff0a0ea..24c6fa4727 100644 --- a/apps/files_encryption/l10n/tr.php +++ b/apps/files_encryption/l10n/tr.php @@ -1,4 +1,15 @@ "Kurtarma anahtarı başarıyla etkinleştirildi", +"Could not enable recovery key. Please check your recovery key password!" => "Kurtarma anahtarı etkinleştirilemedi. Lütfen kurtarma anahtarı parolanızı kontrol edin!", +"Recovery key successfully disabled" => "Kurtarma anahtarı başarıyla devre dışı bırakıldı", +"Could not disable recovery key. Please check your recovery key password!" => "Kurtarma anahtarı devre dışı bırakılamadı. Lütfen kurtarma anahtarı parolanızı kontrol edin!", +"Password successfully changed." => "Şifreniz başarıyla değiştirildi.", +"Could not change the password. Maybe the old password was not correct." => "Parola değiştirilemedi. Eski parolanız doğru olmayabilir", "Saving..." => "Kaydediliyor...", -"Encryption" => "Şifreleme" +"Encryption" => "Şifreleme", +"Enabled" => "Etkinleştirildi", +"Disabled" => "Devre dışı", +"Change Password" => "Parola değiştir", +"File recovery settings updated" => "Dosya kurtarma ayarları güncellendi", +"Could not update file recovery" => "Dosya kurtarma güncellenemedi" ); diff --git a/apps/files_encryption/l10n/vi.php b/apps/files_encryption/l10n/vi.php index 0af5bdc9a6..d11569bb94 100644 --- a/apps/files_encryption/l10n/vi.php +++ b/apps/files_encryption/l10n/vi.php @@ -1,4 +1,9 @@ "Đã đổi mật khẩu.", +"Could not change the password. Maybe the old password was not correct." => "Không thể đổi mật khẩu. Có lẽ do mật khẩu cũ không đúng.", "Saving..." => "Đang lưu...", -"Encryption" => "Mã hóa" +"Encryption" => "Mã hóa", +"Enabled" => "Bật", +"Disabled" => "Tắt", +"Change Password" => "Đổi Mật khẩu" ); diff --git a/apps/files_encryption/l10n/zh_CN.php b/apps/files_encryption/l10n/zh_CN.php index e565fce801..6d6d457f43 100644 --- a/apps/files_encryption/l10n/zh_CN.php +++ b/apps/files_encryption/l10n/zh_CN.php @@ -1,4 +1,15 @@ "恢复密钥成功启用", +"Could not enable recovery key. Please check your recovery key password!" => "不能启用恢复密钥。请检查恢复密钥密码!", +"Recovery key successfully disabled" => "恢复密钥成功禁用", +"Could not disable recovery key. Please check your recovery key password!" => "不能禁用恢复密钥。请检查恢复密钥密码!", +"Password successfully changed." => "密码修改成功。", +"Could not change the password. Maybe the old password was not correct." => "不能修改密码。旧密码可能不正确。", "Saving..." => "保存中", -"Encryption" => "加密" +"Encryption" => "加密", +"Enabled" => "开启", +"Disabled" => "禁用", +"Change Password" => "修改密码", +"File recovery settings updated" => "文件恢复设置已更新", +"Could not update file recovery" => "不能更新文件恢复" ); diff --git a/apps/files_encryption/l10n/zh_TW.php b/apps/files_encryption/l10n/zh_TW.php index faea3f54a1..d34f51c487 100644 --- a/apps/files_encryption/l10n/zh_TW.php +++ b/apps/files_encryption/l10n/zh_TW.php @@ -5,10 +5,7 @@ "Encryption" => "加密", "Enabled" => "已啓用", "Disabled" => "已停用", -"Change encryption passwords recovery key:" => "變更加密密碼還原金鑰:", "Change Password" => "變更密碼", -"Enable password recovery by sharing all files with your administrator:" => "與管理員分享所有檔案以啓用密碼還原功能:", -"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "啓用此選項允許您未來遺失密碼時重新取得已加密的檔案", "File recovery settings updated" => "檔案還原設定已更新", "Could not update file recovery" => "無法更新檔案還原設定" ); diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index ddeb3590f6..927064012b 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -51,21 +51,26 @@ class Crypt { */ public static function createKeypair() { + $return = false; + $res = openssl_pkey_new(array('private_key_bits' => 4096)); - // Get private key - openssl_pkey_export($res, $privateKey); + if ($res === false) { + \OCP\Util::writeLog('Encryption library', 'couldn\'t generate users key-pair for ' . \OCP\User::getUser(), \OCP\Util::ERROR); + } elseif (openssl_pkey_export($res, $privateKey)) { + // Get public key + $publicKey = openssl_pkey_get_details($res); + $publicKey = $publicKey['key']; - // Get public key - $publicKey = openssl_pkey_get_details($res); - - $publicKey = $publicKey['key']; - - return (array( - 'publicKey' => $publicKey, - 'privateKey' => $privateKey - )); + $return = array( + 'publicKey' => $publicKey, + 'privateKey' => $privateKey + ); + } else { + \OCP\Util::writeLog('Encryption library', 'couldn\'t export users private key, please check your servers openSSL configuration.' . \OCP\User::getUser(), \OCP\Util::ERROR); + } + return $return; } /** @@ -168,7 +173,7 @@ class Crypt { * e.g. filename or /Docs/filename, NOT admin/files/filename * @return boolean */ - public static function isLegacyEncryptedContent($data, $relPath) { + public static function isLegacyEncryptedContent($isCatFileContent, $relPath) { // Fetch all file metadata from DB $metadata = \OC\Files\Filesystem::getFileInfo($relPath, ''); @@ -178,7 +183,7 @@ class Crypt { // legacy encryption system if (isset($metadata['encrypted']) && $metadata['encrypted'] === true - && !self::isCatfileContent($data) + && $isCatFileContent === false ) { return true; @@ -287,28 +292,22 @@ class Crypt { public static function symmetricEncryptFileContent($plainContent, $passphrase = '') { if (!$plainContent) { - + \OCP\Util::writeLog('Encryption library', 'symmetrically encryption failed, no content given.', \OCP\Util::ERROR); return false; - } $iv = self::generateIv(); if ($encryptedContent = self::encrypt($plainContent, $iv, $passphrase)) { - // Combine content to encrypt with IV identifier and actual IV $catfile = self::concatIv($encryptedContent, $iv); - $padded = self::addPadding($catfile); return $padded; } else { - \OCP\Util::writeLog('Encryption library', 'Encryption (symmetric) of keyfile content failed', \OCP\Util::ERROR); - return false; - } } @@ -351,6 +350,34 @@ class Crypt { } + /** + * @brief Decrypt private key and check if the result is a valid keyfile + * @param string $encryptedKey encrypted keyfile + * @param string $passphrase to decrypt keyfile + * @returns encrypted private key or false + * + * This function decrypts a file + */ + public static function decryptPrivateKey($encryptedKey, $passphrase) { + + $plainKey = self::symmetricDecryptFileContent($encryptedKey, $passphrase); + + // check if this a valid private key + $res = openssl_pkey_get_private($plainKey); + if (is_resource($res)) { + $sslInfo = openssl_pkey_get_details($res); + if (!isset($sslInfo['key'])) { + $plainKey = false; + } + } else { + $plainKey = false; + } + + return $plainKey; + + } + + /** * @brief Creates symmetric keyfile content using a generated key * @param string $plainContent content to be encrypted @@ -452,7 +479,7 @@ class Crypt { } else { - \OCP\Util::writeLog('Encryption library', 'Decryption (asymmetric) of sealed content failed', \OCP\Util::ERROR); + \OCP\Util::writeLog('Encryption library', 'Decryption (asymmetric) of sealed content with share-key "'.$shareKey.'" failed', \OCP\Util::ERROR); return false; @@ -608,7 +635,7 @@ class Crypt { * * This function decrypts an content */ - private static function legacyDecrypt($content, $passphrase = '') { + public static function legacyDecrypt($content, $passphrase = '') { $bf = self::getBlowfish($passphrase); @@ -637,28 +664,4 @@ class Crypt { } } - /** - * @param $legacyEncryptedContent - * @param $legacyPassphrase - * @param $publicKeys - * @return array - */ - public static function legacyKeyRecryptKeyfile($legacyEncryptedContent, $legacyPassphrase, $publicKeys) { - - $decrypted = self::legacyBlockDecrypt($legacyEncryptedContent, $legacyPassphrase); - - // Encrypt plain data, generate keyfile & encrypted file - $cryptedData = self::symmetricEncryptFileContentKeyfile($decrypted); - - // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt($cryptedData['key'], $publicKeys); - - return array( - 'data' => $cryptedData['encrypted'], - 'filekey' => $multiEncrypted['data'], - 'sharekeys' => $multiEncrypted['keys'] - ); - - } - } \ No newline at end of file diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index e078ab3554..a22c139c50 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -48,6 +48,7 @@ class Helper { \OCP\Util::connectHook('OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login'); \OCP\Util::connectHook('OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase'); + \OCP\Util::connectHook('OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'preSetPassphrase'); \OCP\Util::connectHook('OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser'); \OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser'); } @@ -73,7 +74,7 @@ class Helper { if (!$util->ready()) { \OCP\Util::writeLog('Encryption library', 'User account "' . $util->getUserId() - . '" is not ready for encryption; configuration started', \OCP\Util::DEBUG); + . '" is not ready for encryption; configuration started', \OCP\Util::DEBUG); if (!$util->setupServerSide($password)) { return false; @@ -93,6 +94,7 @@ class Helper { * @return bool */ public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) { + $view = new \OC\Files\View('/'); if ($recoveryKeyId === null) { @@ -127,13 +129,6 @@ class Helper { // Save private key $view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey); - // create control file which let us check later on if the entered password was correct. - $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']); - if (!$view->is_dir('/control-file')) { - $view->mkdir('/control-file'); - } - $view->file_put_contents('/control-file/controlfile.enc', $encryptedControlData); - \OC_FileProxy::$enabled = true; // Set recoveryAdmin as enabled @@ -200,4 +195,17 @@ class Helper { return $relPath; } + + /** + * @brief redirect to a error page + */ + public static function redirectToErrorPage() { + $location = \OC_Helper::linkToAbsolute('apps/files_encryption/files', 'error.php'); + $post = 0; + if(count($_POST) > 0) { + $post = 1; + } + header('Location: ' . $location . '?p=' . $post); + exit(); + } } \ No newline at end of file diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 0df34a38bd..735eba911a 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -256,6 +256,8 @@ class Proxy extends \OC_FileProxy { */ public function postFopen($path, &$result) { + $path = \OC\Files\Filesystem::normalizePath($path); + if (!$result) { return $result; diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index bff1737554..1911386cd1 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -88,9 +88,10 @@ class Session { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/' . $publicShareKeyId . '.private.key' ); - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, '' ); - $this->setPublicSharePrivateKey( $privateKey ); + $encryptedKey = $this->view->file_get_contents( + '/owncloud_private_key/' . $publicShareKeyId . '.private.key'); + $privateKey = Crypt::decryptPrivateKey($encryptedKey, ''); + $this->setPublicSharePrivateKey($privateKey); \OC_FileProxy::$enabled = $proxyStatus; } @@ -121,7 +122,7 @@ class Session { if (\OCA\Encryption\Helper::isPublicAccess()) { return $this->getPublicSharePrivateKey(); } else { - if (!is_null( \OC::$session->get('privateKey') )) { + if (!is_null(\OC::$session->get('privateKey'))) { return \OC::$session->get('privateKey'); } else { return false; @@ -136,7 +137,7 @@ class Session { */ public function setPublicSharePrivateKey($privateKey) { - \OC::$session->set('publicSharePrivateKey', $privateKey); + \OC::$session->set('publicSharePrivateKey', $privateKey); return true; @@ -149,7 +150,7 @@ class Session { */ public function getPublicSharePrivateKey() { - if (!is_null( \OC::$session->get('publicSharePrivateKey') )) { + if (!is_null(\OC::$session->get('publicSharePrivateKey'))) { return \OC::$session->get('publicSharePrivateKey'); } else { return false; @@ -176,7 +177,7 @@ class Session { */ public function getLegacyKey() { - if ( !is_null( \OC::$session->get('legacyKey') ) ) { + if (!is_null(\OC::$session->get('legacyKey'))) { return \OC::$session->get('legacyKey'); diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 072c528664..3c1eb2c5f5 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -56,18 +56,21 @@ class Stream { private $relPath; // rel path to users file dir private $userId; private $handle; // Resource returned by fopen - private $path; - private $readBuffer; // For streams that dont support seeking private $meta = array(); // Header / meta for source stream - private $count; private $writeCache; private $size; private $unencryptedSize; private $publicKey; - private $keyfile; private $encKeyfile; - private static $view; // a fsview object set to user dir + /** + * @var \OC\Files\View + */ private $rootView; // a fsview object set to '/' + /** + * @var \OCA\Encryption\Session + */ + private $session; + private $privateKey; /** * @param $path @@ -82,6 +85,10 @@ class Stream { $this->rootView = new \OC_FilesystemView('/'); } + $this->session = new \OCA\Encryption\Session($this->rootView); + + $this->privateKey = $this->session->getPrivateKey($this->userId); + $util = new Util($this->rootView, \OCP\USER::getUser()); $this->userId = $util->getUserId(); @@ -109,6 +116,11 @@ class Stream { } else { + if($this->privateKey === false) { + // if private key is not valid redirect user to a error page + \OCA\Encryption\Helper::redirectToErrorPage(); + } + $this->size = $this->rootView->filesize($this->rawPath, $mode); } @@ -118,7 +130,7 @@ class Stream { if (!is_resource($this->handle)) { - \OCP\Util::writeLog('files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR); + \OCP\Util::writeLog('Encryption library', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR); } else { @@ -156,7 +168,7 @@ class Stream { // $count will always be 8192 https://bugs.php.net/bug.php?id=21641 // This makes this function a lot simpler, but will break this class if the above 'bug' gets 'fixed' - \OCP\Util::writeLog('files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL); + \OCP\Util::writeLog('Encryption library', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL); die(); @@ -165,7 +177,7 @@ class Stream { // Get the data from the file handle $data = fread($this->handle, 8192); - $result = ''; + $result = null; if (strlen($data)) { @@ -175,10 +187,11 @@ class Stream { throw new \Exception( 'Encryption key not found for "' . $this->rawPath . '" during attempted read via stream'); - } + } else { - // Decrypt data - $result = Crypt::symmetricDecryptFileContent($data, $this->plainKey); + // Decrypt data + $result = Crypt::symmetricDecryptFileContent($data, $this->plainKey); + } } @@ -228,13 +241,18 @@ class Stream { // If a keyfile already exists if ($this->encKeyfile) { - $session = new \OCA\Encryption\Session( $this->rootView ); + // if there is no valid private key return false + if ($this->privateKey === false) { - $privateKey = $session->getPrivateKey($this->userId); + // if private key is not valid redirect user to a error page + \OCA\Encryption\Helper::redirectToErrorPage(); + + return false; + } $shareKey = Keymanager::getShareKey($this->rootView, $this->userId, $this->relPath); - $this->plainKey = Crypt::multiKeyDecrypt($this->encKeyfile, $shareKey, $privateKey); + $this->plainKey = Crypt::multiKeyDecrypt($this->encKeyfile, $shareKey, $this->privateKey); return true; @@ -257,6 +275,12 @@ class Stream { */ public function stream_write($data) { + // if there is no valid private key return false + if ($this->privateKey === false) { + $this->size = 0; + return strlen($data); + } + // Disable the file proxies so that encryption is not // automatically attempted when the file is written to disk - // we are handling that separately here and we don't want to @@ -424,6 +448,28 @@ class Stream { $this->flush(); + // if there is no valid private key return false + if ($this->privateKey === false) { + + // cleanup + if ($this->meta['mode'] !== 'r' && $this->meta['mode'] !== 'rb') { + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + if ($this->rootView->file_exists($this->rawPath) && $this->size === 0) { + $this->rootView->unlink($this->rawPath); + } + + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; + } + + // if private key is not valid redirect user to a error page + \OCA\Encryption\Helper::redirectToErrorPage(); + } + if ( $this->meta['mode'] !== 'r' and $this->meta['mode'] !== 'rb' @@ -450,16 +496,14 @@ class Stream { // Encrypt enc key for all sharing users $this->encKeyfiles = Crypt::multiKeyEncrypt($this->plainKey, $publicKeys); - $view = new \OC_FilesystemView('/'); - // Save the new encrypted file key Keymanager::setFileKey($this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data']); // Save the sharekeys - Keymanager::setShareKeys($view, $this->relPath, $this->encKeyfiles['keys']); + Keymanager::setShareKeys($this->rootView, $this->relPath, $this->encKeyfiles['keys']); // get file info - $fileInfo = $view->getFileInfo($this->rawPath); + $fileInfo = $this->rootView->getFileInfo($this->rawPath); if (!is_array($fileInfo)) { $fileInfo = array(); } @@ -473,7 +517,7 @@ class Stream { $fileInfo['unencrypted_size'] = $this->unencryptedSize; // set fileinfo - $view->putFileInfo($this->rawPath, $fileInfo); + $this->rootView->putFileInfo($this->rawPath, $fileInfo); } return fclose($this->handle); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 04bd4dc8ac..e8e53859bd 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -96,10 +96,13 @@ class Util { //// DONE: test new encryption with sharing //// TODO: test new encryption with proxies + const MIGRATION_COMPLETED = 1; // migration to new encryption completed + const MIGRATION_IN_PROGRESS = -1; // migration is running + const MIGRATION_OPEN = 0; // user still needs to be migrated + private $view; // OC_FilesystemView object for filesystem operations private $userId; // ID of the currently logged-in user - private $pwd; // User Password private $client; // Client side encryption mode flag private $publicKeyDir; // Dir containing all public user keys private $encryptionDir; // Dir containing user's files_encryption @@ -225,18 +228,21 @@ class Util { // Generate keypair $keypair = Crypt::createKeypair(); - \OC_FileProxy::$enabled = false; + if ($keypair) { - // Save public key - $this->view->file_put_contents($this->publicKeyPath, $keypair['publicKey']); + \OC_FileProxy::$enabled = false; - // Encrypt private key with user pwd as passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $passphrase); + // Encrypt private key with user pwd as passphrase + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $passphrase); - // Save private key - $this->view->file_put_contents($this->privateKeyPath, $encryptedPrivateKey); + // Save key-pair + if ($encryptedPrivateKey) { + $this->view->file_put_contents($this->privateKeyPath, $encryptedPrivateKey); + $this->view->file_put_contents($this->publicKeyPath, $keypair['publicKey']); + } - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = true; + } } else { // check if public-key exists but private-key is missing @@ -289,7 +295,7 @@ class Util { */ public function recoveryEnabledForUser() { - $sql = 'SELECT `recovery_enabled` FROM `*PREFIX*encryption` WHERE uid = ?'; + $sql = 'SELECT `recovery_enabled` FROM `*PREFIX*encryption` WHERE `uid` = ?'; $args = array($this->userId); @@ -302,7 +308,7 @@ class Util { if (\OCP\DB::isError($result)) { \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - if($result->numRows() > 0) { + if ($result->numRows() > 0) { $row = $result->fetchRow(); if (isset($row['recovery_enabled'])) { $recoveryEnabled[] = $row['recovery_enabled']; @@ -347,7 +353,7 @@ class Util { // Create a new record instead } else { - $sql = 'UPDATE `*PREFIX*encryption` SET recovery_enabled = ? WHERE uid = ?'; + $sql = 'UPDATE `*PREFIX*encryption` SET `recovery_enabled` = ? WHERE `uid` = ?'; $args = array( $enabled, @@ -421,8 +427,7 @@ class Util { // where they got re-enabled :/ \OC_FileProxy::$enabled = false; - $data = $this->view->file_get_contents($filePath); - + $isEncryptedPath = $this->isEncryptedPath($filePath); // If the file is encrypted // NOTE: If the userId is // empty or not set, file will @@ -432,7 +437,7 @@ class Util { // will eat server resources :( if ( Keymanager::getFileKey($this->view, $this->userId, $relPath) - && Crypt::isCatfileContent($data) + && $isEncryptedPath ) { $found['encrypted'][] = array( @@ -442,7 +447,7 @@ class Util { // If the file uses old // encryption system - } elseif ( Crypt::isLegacyEncryptedContent( $data, $relPath ) ) { + } elseif (Crypt::isLegacyEncryptedContent($isEncryptedPath, $relPath)) { $found['legacy'][] = array( 'name' => $file, @@ -573,7 +578,9 @@ class Util { // get relative path $relativePath = \OCA\Encryption\Helper::stripUserFilesPath($path); - if (isset($pathParts[2]) && $pathParts[2] === 'files' && $this->view->file_exists($path) && $this->isEncryptedPath($path)) { + if (isset($pathParts[2]) && $pathParts[2] === 'files' && $this->view->file_exists($path) + && $this->isEncryptedPath($path) + ) { // get the size from filesystem $fullPath = $this->view->getLocalFile($path); @@ -643,7 +650,7 @@ class Util { return $result; } - + /** * @param $path * @return bool @@ -687,28 +694,32 @@ class Util { $relPath = $plainFile['path']; //relative to /data - $rawPath = '/'.$this->userId . '/files/' . $plainFile['path']; + $rawPath = '/' . $this->userId . '/files/' . $plainFile['path']; // Open plain file handle for binary reading - $plainHandle = $this->view->fopen( $rawPath, 'rb' ); + $plainHandle = $this->view->fopen($rawPath, 'rb'); // Open enc file handle for binary writing, with same filename as original plain file - $encHandle = fopen( 'crypt://' . $relPath.'.tmp', 'wb' ); + $encHandle = fopen('crypt://' . $relPath . '.part', 'wb'); // Move plain file to a temporary location - $size = stream_copy_to_stream( $plainHandle, $encHandle ); + $size = stream_copy_to_stream($plainHandle, $encHandle); fclose($encHandle); $fakeRoot = $this->view->getRoot(); - $this->view->chroot('/'.$this->userId.'/files'); + $this->view->chroot('/' . $this->userId . '/files'); - $this->view->rename($relPath . '.tmp', $relPath); + $this->view->rename($relPath . '.part', $relPath); $this->view->chroot($fakeRoot); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $relPath, array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) ); + \OC\Files\Filesystem::putFileInfo($relPath, array( + 'encrypted' => true, + 'size' => $size, + 'unencrypted_size' => $size + )); } // Encrypt legacy encrypted files @@ -722,40 +733,28 @@ class Util { // Fetch data from file $legacyData = $this->view->file_get_contents($legacyFile['path']); - $sharingEnabled = \OCP\Share::isEnabled(); - - // if file exists try to get sharing users - if ($this->view->file_exists($legacyFile['path'])) { - $uniqueUserIds = $this->getSharingUsersArray($sharingEnabled, $legacyFile['path'], $this->userId); - } else { - $uniqueUserIds[] = $this->userId; - } - - // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys($this->view, $uniqueUserIds); - - // Recrypt data, generate catfile - $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKeys ); + // decrypt data, generate catfile + $decrypted = Crypt::legacyBlockDecrypt($legacyData, $legacyPassphrase); $rawPath = $legacyFile['path']; - $relPath = \OCA\Encryption\Helper::stripUserFilesPath($rawPath); - // Save keyfile - Keymanager::setFileKey($this->view, $relPath, $this->userId, $recrypted['filekey']); + // enable proxy the ensure encryption is handled + \OC_FileProxy::$enabled = true; - // Save sharekeys to user folders - Keymanager::setShareKeys($this->view, $relPath, $recrypted['sharekeys']); + // Open enc file handle for binary writing, with same filename as original plain file + $encHandle = $this->view->fopen( $rawPath, 'wb' ); - // Overwrite the existing file with the encrypted one - $this->view->file_put_contents($rawPath, $recrypted['data']); + if (is_resource($encHandle)) { - $size = strlen($recrypted['data']); + // write data to stream + fwrite($encHandle, $decrypted); - // Add the file to the cache - \OC\Files\Filesystem::putFileInfo($rawPath, array( - 'encrypted' => true, - 'size' => $size - ), ''); + // close stream + fclose($encHandle); + } + + // disable proxy to prevent file being encrypted twice + \OC_FileProxy::$enabled = false; } } @@ -831,7 +830,7 @@ class Util { if (\OCP\DB::isError($result)) { \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - if($result->numRows() > 0) { + if ($result->numRows() > 0) { $row = $result->fetchRow(); $path = substr($row['path'], strlen('files')); } @@ -1054,42 +1053,62 @@ class Util { } /** - * @brief Set file migration status for user - * @param $status - * @return bool + * @brief start migration mode to initially encrypt users data + * @return boolean */ - public function setMigrationStatus($status) { + public function beginMigration() { - $sql = 'UPDATE `*PREFIX*encryption` SET migration_status = ? WHERE uid = ?'; - - $args = array( - $status, - $this->userId - ); + $return = false; + $sql = 'UPDATE `*PREFIX*encryption` SET `migration_status` = ? WHERE `uid` = ? and `migration_status` = ?'; + $args = array(self::MIGRATION_IN_PROGRESS, $this->userId, self::MIGRATION_OPEN); $query = \OCP\DB::prepare($sql); + $result = $query->execute($args); + $manipulatedRows = $result->numRows(); - if ($query->execute($args)) { - - return true; - + if ($manipulatedRows === 1) { + $return = true; + \OCP\Util::writeLog('Encryption library', "Start migration to encryption mode for " . $this->userId, \OCP\Util::INFO); } else { - - return false; - + \OCP\Util::writeLog('Encryption library', "Could not activate migration mode for " . $this->userId . ". Probably another process already started the initial encryption", \OCP\Util::WARN); } + return $return; } /** - * @brief Check whether pwd recovery is enabled for a given user - * @return bool 1 = yes, 0 = no, false = no record + * @brief close migration mode after users data has been encrypted successfully + * @return boolean + */ + public function finishMigration() { + + $return = false; + + $sql = 'UPDATE `*PREFIX*encryption` SET `migration_status` = ? WHERE `uid` = ? and `migration_status` = ?'; + $args = array(self::MIGRATION_COMPLETED, $this->userId, self::MIGRATION_IN_PROGRESS); + $query = \OCP\DB::prepare($sql); + $result = $query->execute($args); + $manipulatedRows = $result->numRows(); + + if ($manipulatedRows === 1) { + $return = true; + \OCP\Util::writeLog('Encryption library', "Finish migration successfully for " . $this->userId, \OCP\Util::INFO); + } else { + \OCP\Util::writeLog('Encryption library', "Could not deactivate migration mode for " . $this->userId, \OCP\Util::WARN); + } + + return $return; + } + + /** + * @brief check if files are already migrated to the encryption system + * @return migration status, false = in case of no record * @note If records are not being returned, check for a hidden space * at the start of the uid in db */ public function getMigrationStatus() { - $sql = 'SELECT `migration_status` FROM `*PREFIX*encryption` WHERE uid = ?'; + $sql = 'SELECT `migration_status` FROM `*PREFIX*encryption` WHERE `uid` = ?'; $args = array($this->userId); @@ -1102,7 +1121,7 @@ class Util { if (\OCP\DB::isError($result)) { \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - if($result->numRows() > 0) { + if ($result->numRows() > 0) { $row = $result->fetchRow(); if (isset($row['migration_status'])) { $migrationStatus[] = $row['migration_status']; @@ -1112,14 +1131,11 @@ class Util { // If no record is found if (empty($migrationStatus)) { - + \OCP\Util::writeLog('Encryption library', "Could not get migration status for " . $this->userId . ", no record found", \OCP\Util::ERROR); return false; - // If a record is found } else { - - return $migrationStatus[0]; - + return (int)$migrationStatus[0]; } } @@ -1191,7 +1207,8 @@ class Util { $result = array(); - $content = $this->view->getDirectoryContent(\OC\Files\Filesystem::normalizePath($this->userFilesDir . '/' . $dir)); + $content = $this->view->getDirectoryContent(\OC\Files\Filesystem::normalizePath( + $this->userFilesDir . '/' . $dir)); // handling for re shared folders $pathSplit = explode('/', $dir); @@ -1252,7 +1269,7 @@ class Util { if (\OCP\DB::isError($result)) { \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - if($result->numRows() > 0) { + if ($result->numRows() > 0) { $row = $result->fetchRow(); } } @@ -1278,7 +1295,7 @@ class Util { if (\OCP\DB::isError($result)) { \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - if($result->numRows() > 0) { + if ($result->numRows() > 0) { $row = $result->fetchRow(); } } @@ -1303,7 +1320,7 @@ class Util { if (\OCP\DB::isError($result)) { \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - if($result->numRows() > 0) { + if ($result->numRows() > 0) { $source = $result->fetchRow(); } } @@ -1324,7 +1341,7 @@ class Util { if (\OCP\DB::isError($result)) { \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - if($result->numRows() > 0) { + if ($result->numRows() > 0) { $item = $result->fetchRow(); } } @@ -1372,26 +1389,24 @@ class Util { */ public function checkRecoveryPassword($password) { + $result = false; $pathKey = '/owncloud_private_key/' . $this->recoveryKeyId . ".private.key"; - $pathControlData = '/control-file/controlfile.enc'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; $recoveryKey = $this->view->file_get_contents($pathKey); - $decryptedRecoveryKey = Crypt::symmetricDecryptFileContent($recoveryKey, $password); + $decryptedRecoveryKey = Crypt::decryptPrivateKey($recoveryKey, $password); - $controlData = $this->view->file_get_contents($pathControlData); - $decryptedControlData = Crypt::keyDecrypt($controlData, $decryptedRecoveryKey); + if ($decryptedRecoveryKey) { + $result = true; + } \OC_FileProxy::$enabled = $proxyStatus; - if ($decryptedControlData === 'ownCloud') { - return true; - } - return false; + return $result; } /** @@ -1520,7 +1535,7 @@ class Util { $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/' . $this->recoveryKeyId . '.private.key'); - $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, $recoveryPassword); + $privateKey = Crypt::decryptPrivateKey($encryptedKey, $recoveryPassword); \OC_FileProxy::$enabled = $proxyStatus; @@ -1536,7 +1551,7 @@ class Util { list($storage, $internalPath) = \OC\Files\Cache\Cache::getById($id); $mount = \OC\Files\Filesystem::getMountByStorageId($storage); $mountPoint = $mount[0]->getMountPoint(); - $path = \OC\Files\Filesystem::normalizePath($mountPoint.'/'.$internalPath); + $path = \OC\Files\Filesystem::normalizePath($mountPoint . '/' . $internalPath); // reformat the path to be relative e.g. /user/files/folder becomes /folder/ $relativePath = \OCA\Encryption\Helper::stripUserFilesPath($path); diff --git a/apps/files_encryption/settings-personal.php b/apps/files_encryption/settings-personal.php index 3e96565949..fddc3ea5ee 100644 --- a/apps/files_encryption/settings-personal.php +++ b/apps/files_encryption/settings-personal.php @@ -14,15 +14,26 @@ $tmpl = new OCP\Template('files_encryption', 'settings-personal'); $user = \OCP\USER::getUser(); $view = new \OC_FilesystemView('/'); $util = new \OCA\Encryption\Util($view, $user); +$session = new \OCA\Encryption\Session($view); + +$privateKeySet = ($session->getPrivateKey() !== false) ? true : false; $recoveryAdminEnabled = OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled'); $recoveryEnabledForUser = $util->recoveryEnabledForUser(); -\OCP\Util::addscript('files_encryption', 'settings-personal'); -\OCP\Util::addScript('settings', 'personal'); +$result = false; -$tmpl->assign('recoveryEnabled', $recoveryAdminEnabled); -$tmpl->assign('recoveryEnabledForUser', $recoveryEnabledForUser); +if ($recoveryAdminEnabled || !$privateKeySet) { -return $tmpl->fetchPage(); + \OCP\Util::addscript('files_encryption', 'settings-personal'); + \OCP\Util::addScript('settings', 'personal'); + + $tmpl->assign('recoveryEnabled', $recoveryAdminEnabled); + $tmpl->assign('recoveryEnabledForUser', $recoveryEnabledForUser); + $tmpl->assign('privateKeySet', $privateKeySet); + + $result = $tmpl->fetchPage(); +} + +return $result; diff --git a/apps/files_encryption/templates/invalid_private_key.php b/apps/files_encryption/templates/invalid_private_key.php new file mode 100644 index 0000000000..5c086d6514 --- /dev/null +++ b/apps/files_encryption/templates/invalid_private_key.php @@ -0,0 +1,10 @@ + diff --git a/apps/files_encryption/templates/settings-admin.php b/apps/files_encryption/templates/settings-admin.php index 18fea1845f..f5f7582c2a 100644 --- a/apps/files_encryption/templates/settings-admin.php +++ b/apps/files_encryption/templates/settings-admin.php @@ -1,54 +1,56 @@
- +

- t( 'Encryption' )); ?> -
+ t('Encryption')); ?> +

+

- t( "Enable encryption passwords recovery key (allow sharing to recovery key):" )); ?> -
-
- - -
- /> - t( "Enabled" )); ?> -
- - /> - t( "Disabled" )); ?> + t("Enable recovery key (allow to recover users files in case of password loss):")); ?> +
+
+ + +
+ /> + t("Enabled")); ?> +
+ + /> + t("Disabled")); ?>

-

+

+

- t( "Change encryption passwords recovery key:" )); ?> -

- t("Change recovery key password:")); ?> +

+ /> - -
- /> + +
+ /> - -
+ /> + +

diff --git a/apps/files_encryption/templates/settings-personal.php b/apps/files_encryption/templates/settings-personal.php index 04d6e79179..3851245320 100644 --- a/apps/files_encryption/templates/settings-personal.php +++ b/apps/files_encryption/templates/settings-personal.php @@ -3,12 +3,48 @@ t( 'Encryption' ) ); ?> - - + +

- + +
- t( "Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" ) ); ?> + t( "Set your old private key password to your current log-in password." ) ); ?> + t( " If you don't remember your old password you can ask your administrator to recover your files." ) ); + endif; ?> + +
+ + +
+ + +
+ + +

+ + +
+ + +

+ +
+ t( "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" ) ); ?>
t( 'Could not update file recovery' ) ); ?>

+
diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 32156eea27..9b97df22d1 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -92,8 +92,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { // reset app files_trashbin if ($this->stateFilesTrashbin) { OC_App::enable('files_trashbin'); - } - else { + } else { OC_App::disable('files_trashbin'); } } @@ -103,6 +102,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { \OC_User::deleteUser(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1); } + /** + * @medium + */ function testGenerateKey() { # TODO: use more accurate (larger) string length for test confirmation @@ -114,6 +116,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @large * @return String */ function testGenerateIv() { @@ -127,6 +130,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @large * @depends testGenerateIv */ function testConcatIv($iv) { @@ -159,6 +163,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @depends testConcatIv */ function testSplitIv($testConcatIv) { @@ -175,6 +180,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @return string padded */ function testAddPadding() { @@ -190,6 +196,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @depends testAddPadding */ function testRemovePadding($padded) { @@ -200,6 +207,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } + /** + * @medium + */ function testEncrypt() { $random = openssl_random_pseudo_bytes(13); @@ -212,6 +222,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } + /** + * @medium + */ function testDecrypt() { $random = openssl_random_pseudo_bytes(13); @@ -226,6 +239,26 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } + function testDecryptPrivateKey() { + + // test successful decrypt + $crypted = Encryption\Crypt::symmetricEncryptFileContent($this->genPrivateKey, 'hat'); + + $decrypted = Encryption\Crypt::decryptPrivateKey($crypted, 'hat'); + + $this->assertEquals($this->genPrivateKey, $decrypted); + + //test private key decrypt with wrong password + $wrongPasswd = Encryption\Crypt::decryptPrivateKey($crypted, 'hat2'); + + $this->assertEquals(false, $wrongPasswd); + + } + + + /** + * @medium + */ function testSymmetricEncryptFileContent() { # TODO: search in keyfile for actual content as IV will ensure this test always passes @@ -241,6 +274,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } + /** + * @medium + */ function testSymmetricStreamEncryptShortFileContent() { $filename = 'tmp-' . time() . '.test'; @@ -291,6 +327,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief Test that data that is written by the crypto stream wrapper * @note Encrypted data is manually prepared and decrypted here to avoid dependency on success of stream_read * @note If this test fails with truncate content, check that enough array slices are being rejoined to form $e, as the crypt.php file may have gotten longer and broken the manual @@ -377,6 +414,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief Test that data that is read by the crypto stream wrapper */ function testSymmetricStreamDecryptShortFileContent() { @@ -406,6 +444,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->view->unlink($this->userId . '/files/' . $filename); } + /** + * @medium + */ function testSymmetricStreamDecryptLongFileContent() { $filename = 'tmp-' . time(); @@ -425,6 +466,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->view->unlink($this->userId . '/files/' . $filename); } + /** + * @medium + */ function testSymmetricEncryptFileContentKeyfile() { # TODO: search in keyfile for actual content as IV will ensure this test always passes @@ -440,6 +484,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } + /** + * @medium + */ function testIsEncryptedContent() { $this->assertFalse(Encryption\Crypt::isCatfileContent($this->dataUrl)); @@ -452,6 +499,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } + /** + * @large + */ function testMultiKeyEncrypt() { # TODO: search in keyfile for actual content as IV will ensure this test always passes @@ -476,6 +526,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } + /** + * @medium + */ function testKeyEncrypt() { // Generate keypair @@ -494,6 +547,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test encryption using legacy blowfish method */ function testLegacyEncryptShort() { @@ -510,6 +564,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptShort */ @@ -522,6 +577,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test encryption using legacy blowfish method */ function testLegacyEncryptLong() { @@ -538,6 +594,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ @@ -551,6 +608,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test generation of legacy encryption key * @depends testLegacyDecryptShort */ @@ -570,22 +628,8 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } /** - * @brief test decryption using legacy blowfish method - * @depends testLegacyEncryptLong + * @medium */ - function testLegacyKeyRecryptKeyfileEncrypt($crypted) { - - $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey)); - - $this->assertNotEquals($this->dataLong, $recrypted['data']); - - return $recrypted; - - # TODO: search inencrypted text for actual content to ensure it - # genuine transformation - - } - function testRenameFile() { $filename = 'tmp-' . time(); @@ -614,6 +658,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink($newFilename); } + /** + * @medium + */ function testMoveFileIntoFolder() { $filename = 'tmp-' . time(); @@ -644,6 +691,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink($newFolder); } + /** + * @medium + */ function testMoveFolder() { $view = new \OC\Files\View('/' . $this->userId . '/files'); @@ -679,6 +729,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink('/newfolder'); } + /** + * @medium + */ function testChangePassphrase() { $filename = 'tmp-' . time(); @@ -713,6 +766,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink($filename); } + /** + * @medium + */ function testViewFilePutAndGetContents() { $filename = '/tmp-' . time(); @@ -744,6 +800,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink($filename); } + /** + * @large + */ function testTouchExistingFile() { $filename = '/tmp-' . time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); @@ -765,6 +824,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink($filename); } + /** + * @medium + */ function testTouchFile() { $filename = '/tmp-' . time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); @@ -786,6 +848,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink($filename); } + /** + * @medium + */ function testFopenFile() { $filename = '/tmp-' . time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 40ae1659a5..19ba9a8117 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -103,6 +103,9 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { \OC_FileProxy::$enabled = true; } + /** + * @medium + */ function testGetPrivateKey() { $key = Encryption\Keymanager::getPrivateKey($this->view, $this->userId); @@ -119,6 +122,9 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { } + /** + * @medium + */ function testGetPublicKey() { $publiceKey = Encryption\Keymanager::getPublicKey($this->view, $this->userId); @@ -132,6 +138,9 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $this->assertArrayHasKey('key', $sslInfo); } + /** + * @medium + */ function testSetFileKey() { # NOTE: This cannot be tested until we are able to break out @@ -165,6 +174,9 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { } + /** + * @medium + */ function testGetUserKeys() { $keys = Encryption\Keymanager::getUserKeys($this->view, $this->userId); @@ -188,6 +200,9 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $this->assertArrayHasKey('key', $sslInfoPrivate); } + /** + * @medium + */ function testFixPartialFilePath() { $partFilename = 'testfile.txt.part'; @@ -202,6 +217,9 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($filename)); } + /** + * @medium + */ function testRecursiveDelShareKeys() { // generate filename diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 816bc709f2..6b53031585 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -111,8 +111,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // reset app files_trashbin if ($this->stateFilesTrashbin) { OC_App::enable('files_trashbin'); - } - else { + } else { OC_App::disable('files_trashbin'); } } @@ -129,6 +128,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { } /** + * @medium * @param bool $withTeardown */ function testShareFile($withTeardown = true) { @@ -205,6 +205,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { } /** + * @medium * @param bool $withTeardown */ function testReShareFile($withTeardown = true) { @@ -275,6 +276,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { } /** + * @medium * @param bool $withTeardown * @return array */ @@ -363,6 +365,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { } /** + * @medium * @param bool $withTeardown */ function testReShareFolder($withTeardown = true) { @@ -564,6 +567,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } + /** + * @medium + */ function testShareFileWithGroup() { // login as admin \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); @@ -639,6 +645,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { } + /** + * @large + */ function testRecoveryFile() { // login as admin \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); @@ -646,9 +655,6 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); - // check if control file created - $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); - // login as admin \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); @@ -741,6 +747,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); } + /** + * @large + */ function testRecoveryForUser() { // login as admin \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); @@ -748,9 +757,6 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); - // check if control file created - $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); - // login as user1 \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); @@ -837,6 +843,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); } + /** + * @medium + */ function testFailShareFile() { // login as admin \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index 3d97876754..50ac41e453 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -140,6 +140,9 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { $view->unlink($filename); } + /** + * @medium + */ function testStreamSetTimeout() { $filename = '/tmp-' . time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); diff --git a/apps/files_encryption/tests/trashbin.php b/apps/files_encryption/tests/trashbin.php index 29f8fb5a39..ade968fbec 100755 --- a/apps/files_encryption/tests/trashbin.php +++ b/apps/files_encryption/tests/trashbin.php @@ -113,6 +113,7 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test delete file */ function testDeleteFile() { @@ -184,6 +185,7 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test restore file * * @depends testDeleteFile @@ -215,6 +217,7 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test delete file forever */ function testPermanentDeleteFile() { diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 0dc452a41c..cb10befc8e 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -75,7 +75,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); - $this->legacyKey = '30943623843030686906'; + $this->legacyKey = "30943623843030686906\0\0\0\0"; $keypair = Encryption\Crypt::createKeypair(); @@ -118,6 +118,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test that paths set during User construction are correct */ function testKeyPaths() { @@ -132,6 +133,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test setup of encryption directories */ function testSetupServerSide() { @@ -139,6 +141,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { } /** + * @medium * @brief test checking whether account is ready for encryption, */ function testUserIsReady() { @@ -159,6 +162,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { // } /** + * @medium * @brief test checking whether account is not ready for encryption, */ function testIsLegacyUser() { @@ -178,14 +182,16 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { $params['uid'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; $params['password'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; - $util = new Encryption\Util($this->view, \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); - $util->setMigrationStatus(0); + $this->setMigrationStatus(0, \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); $this->assertTrue(OCA\Encryption\Hooks::login($params)); $this->assertEquals($this->legacyKey, \OC::$session->get('legacyKey')); } + /** + * @medium + */ function testRecoveryEnabledForUser() { $util = new Encryption\Util($this->view, $this->userId); @@ -206,6 +212,9 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { } + /** + * @medium + */ function testGetUidAndFilename() { \OC_User::setUserId(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); @@ -232,6 +241,9 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { $this->view->unlink($this->userId . '/files/' . $filename); } + /** + * @medium + */ function testIsSharedPath() { $sharedPath = '/user1/files/Shared/test'; $path = '/user1/files/test'; @@ -241,6 +253,9 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { $this->assertFalse($this->util->isSharedPath($path)); } + /** + * @large + */ function testEncryptLegacyFiles() { \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); @@ -269,7 +284,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { $params['password'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; $util = new Encryption\Util($this->view, \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); - $util->setMigrationStatus(0); + $this->setMigrationStatus(0, \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); $this->assertTrue(OCA\Encryption\Hooks::login($params)); @@ -314,4 +329,28 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { $params['password'] = $password; OCA\Encryption\Hooks::login($params); } + + /** + * helper function to set migration status to the right value + * to be able to test the migration path + * + * @param $status needed migration status for test + * @param $user for which user the status should be set + * @return boolean + */ + private function setMigrationStatus($status, $user) { + $sql = 'UPDATE `*PREFIX*encryption` SET `migration_status` = ? WHERE `uid` = ?'; + $args = array( + $status, + $user + ); + + $query = \OCP\DB::prepare($sql); + if ($query->execute($args)) { + return true; + } else { + return false; + } + } + } diff --git a/apps/files_external/ajax/addRootCertificate.php b/apps/files_external/ajax/addRootCertificate.php index 43fd6752c4..ae349bfcd3 100644 --- a/apps/files_external/ajax/addRootCertificate.php +++ b/apps/files_external/ajax/addRootCertificate.php @@ -29,8 +29,12 @@ if ($isValid == false) { // add the certificate if it could be verified if ( $isValid ) { + // disable proxy to prevent multiple fopen calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; $view->file_put_contents($filename, $data); OC_Mount_Config::createCertificateBundle(); + \OC_FileProxy::$enabled = $proxyStatus; } else { OCP\Util::writeLog('files_external', 'Couldn\'t import SSL root certificate ('.$filename.'), allowed formats: PEM and DER', diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index ac408786ff..3e605c59a9 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -88,7 +88,7 @@ OC.MountConfig={ url: OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), data: { mountPoint: mountPoint, - class: backendClass, + 'class': backendClass, classOptions: classOptions, mountType: mountType, applicable: applicable, @@ -103,7 +103,7 @@ OC.MountConfig={ url: OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), data: { mountPoint: mountPoint, - class: backendClass, + 'class': backendClass, classOptions: classOptions, mountType: mountType, applicable: applicable, @@ -247,15 +247,18 @@ $(document).ready(function() { OC.MountConfig.saveStorage($(this).parent().parent()); }); + $('#sslCertificate').on('click', 'td.remove>img', function() { + var $tr = $(this).parent().parent(); + var row = this.parentNode.parentNode; + $.post(OC.filePath('files_external', 'ajax', 'removeRootCertificate.php'), {cert: row.id}); + $tr.remove(); + return true; + }); + $('#externalStorage').on('click', 'td.remove>img', function() { var tr = $(this).parent().parent(); var mountPoint = $(tr).find('.mountPoint input').val(); - if ( ! mountPoint) { - var row=this.parentNode.parentNode; - $.post(OC.filePath('files_external', 'ajax', 'removeRootCertificate.php'), { cert: row.id }); - $(tr).remove(); - return true; - } + if ($('#externalStorage').data('admin') === true) { var isPersonal = false; var multiselect = $(tr).find('.chzn-select').val(); diff --git a/apps/files_external/l10n/es_AR.php b/apps/files_external/l10n/es_AR.php index 6706aa43a3..a844615272 100644 --- a/apps/files_external/l10n/es_AR.php +++ b/apps/files_external/l10n/es_AR.php @@ -6,6 +6,7 @@ "Error configuring Google Drive storage" => "Error al configurar el almacenamiento de Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Advertencia: El cliente smb (smbclient) no se encuentra instalado. El montado de archivos o ficheros CIFS/SMB no es posible. Por favor pida al administrador de su sistema que lo instale.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Advertencia: El soporte de FTP en PHP no se encuentra instalado. El montado de archivos o ficheros FTP no es posible. Por favor pida al administrador de su sistema que lo instale.", +"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Advertencia: El soporte de Curl de PHP no está activado ni instalado. Montar servicios ownCloud, WebDAV y/o GoogleDrive no será posible. Pedile al administrador del sistema que lo instale.", "External Storage" => "Almacenamiento externo", "Folder name" => "Nombre de la carpeta", "External storage" => "Almacenamiento externo", diff --git a/apps/files_external/l10n/ko.php b/apps/files_external/l10n/ko.php index 47de9aad5e..803b489c21 100644 --- a/apps/files_external/l10n/ko.php +++ b/apps/files_external/l10n/ko.php @@ -6,11 +6,14 @@ "Error configuring Google Drive storage" => "Google 드라이브 저장소 설정 오류", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "경고: \"smbclient\"가 설치되지 않았습니다. CIFS/SMB 공유 자원에 연결할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "경고: PHP FTP 지원이 비활성화되어 있거나 설치되지 않았습니다. FTP 공유를 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", +"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "경고: PHP Curl 지원이 비활성화되어 있거나 설치되지 않았습니다. 다른 ownCloud, WebDAV, Google 드라이브 공유를 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", "External Storage" => "외부 저장소", "Folder name" => "폴더 이름", +"External storage" => "외부 저장소", "Configuration" => "설정", "Options" => "옵션", "Applicable" => "적용 가능", +"Add storage" => "저장소 추가", "None set" => "설정되지 않음", "All Users" => "모든 사용자", "Groups" => "그룹", diff --git a/apps/files_external/l10n/sv.php b/apps/files_external/l10n/sv.php index 45d3589228..80e68ab6e0 100644 --- a/apps/files_external/l10n/sv.php +++ b/apps/files_external/l10n/sv.php @@ -6,6 +6,7 @@ "Error configuring Google Drive storage" => "Fel vid konfigurering av Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Varning: \"smb-klienten\" är inte installerad. Montering av CIFS/SMB delningar är inte möjligt. Kontakta din systemadministratör för att få den installerad.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Varning: Stöd för FTP i PHP är inte aktiverat eller installerat. Montering av FTP-delningar är inte möjligt. Kontakta din systemadministratör för att få det installerat.", +"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Varning: Curl-stöd i PHP är inte aktiverat eller installerat. Montering av ownCloud / WebDAV eller GoogleDrive är inte möjligt. Vänligen be din administratör att installera det.", "External Storage" => "Extern lagring", "Folder name" => "Mappnamn", "External storage" => "Extern lagring", diff --git a/apps/files_external/l10n/zh_CN.GB2312.php b/apps/files_external/l10n/zh_CN.GB2312.php index c74323db17..47298f8007 100644 --- a/apps/files_external/l10n/zh_CN.GB2312.php +++ b/apps/files_external/l10n/zh_CN.GB2312.php @@ -6,6 +6,7 @@ "Error configuring Google Drive storage" => "配置 Google Drive 存储失败", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "注意:“SMB客户端”未安装。CIFS/SMB分享不可用。请向您的系统管理员请求安装该客户端。", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "注意:PHP的FTP支持尚未启用或未安装。FTP分享不可用。请向您的系统管理员请求安装。", +"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "警告: PHP 的 Curl 支持没有安装或打开。挂载 ownCloud、WebDAV 或 Google Drive 的功能将不可用。请询问您的系统管理员去安装它。", "External Storage" => "外部存储", "Folder name" => "文件夹名", "External storage" => "外部存储", diff --git a/apps/files_external/tests/config.php b/apps/files_external/tests/config.php index 1d4f30c713..bac594b485 100644 --- a/apps/files_external/tests/config.php +++ b/apps/files_external/tests/config.php @@ -1,4 +1,13 @@ use them +$privateConfigFile = $_SERVER['HOME'] . '/owncloud-extfs-test-config.php'; +if (file_exists($privateConfigFile)) { + $config = include($privateConfigFile); + return $config; +} + +// this is now more a template now for your private configurations return array( 'ftp'=>array( 'run'=>false, diff --git a/apps/files_sharing/l10n/af_ZA.php b/apps/files_sharing/l10n/af_ZA.php index 344585a62f..04e194530b 100644 --- a/apps/files_sharing/l10n/af_ZA.php +++ b/apps/files_sharing/l10n/af_ZA.php @@ -1,4 +1,3 @@ "Wagwoord", -"web services under your control" => "webdienste onder jou beheer" +"Password" => "Wagwoord" ); diff --git a/apps/files_sharing/l10n/ar.php b/apps/files_sharing/l10n/ar.php index 4cf3f8c092..768df3d16c 100644 --- a/apps/files_sharing/l10n/ar.php +++ b/apps/files_sharing/l10n/ar.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s شارك المجلد %s معك", "%s shared the file %s with you" => "%s شارك الملف %s معك", "Download" => "تحميل", -"No preview available for" => "لا يوجد عرض مسبق لـ", -"web services under your control" => "خدمات الشبكة تحت سيطرتك" +"No preview available for" => "لا يوجد عرض مسبق لـ" ); diff --git a/apps/files_sharing/l10n/bg_BG.php b/apps/files_sharing/l10n/bg_BG.php index ac94358c4f..9fb9f78340 100644 --- a/apps/files_sharing/l10n/bg_BG.php +++ b/apps/files_sharing/l10n/bg_BG.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s сподели папката %s с Вас", "%s shared the file %s with you" => "%s сподели файла %s с Вас", "Download" => "Изтегляне", -"No preview available for" => "Няма наличен преглед за", -"web services under your control" => "уеб услуги под Ваш контрол" +"No preview available for" => "Няма наличен преглед за" ); diff --git a/apps/files_sharing/l10n/bn_BD.php b/apps/files_sharing/l10n/bn_BD.php index 5fdf6de50c..9fdfee6dfb 100644 --- a/apps/files_sharing/l10n/bn_BD.php +++ b/apps/files_sharing/l10n/bn_BD.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s আপনার সাথে %s ফোল্ডারটি ভাগাভাগি করেছেন", "%s shared the file %s with you" => "%s আপনার সাথে %s ফাইলটি ভাগাভাগি করেছেন", "Download" => "ডাউনলোড", -"No preview available for" => "এর জন্য কোন প্রাকবীক্ষণ সুলভ নয়", -"web services under your control" => "ওয়েব সার্ভিস আপনার হাতের মুঠোয়" +"No preview available for" => "এর জন্য কোন প্রাকবীক্ষণ সুলভ নয়" ); diff --git a/apps/files_sharing/l10n/ca.php b/apps/files_sharing/l10n/ca.php index 223495455f..af924e60dd 100644 --- a/apps/files_sharing/l10n/ca.php +++ b/apps/files_sharing/l10n/ca.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s ha compartit la carpeta %s amb vós", "%s shared the file %s with you" => "%s ha compartit el fitxer %s amb vós", "Download" => "Baixa", -"No preview available for" => "No hi ha vista prèvia disponible per a", -"web services under your control" => "controleu els vostres serveis web" +"No preview available for" => "No hi ha vista prèvia disponible per a" ); diff --git a/apps/files_sharing/l10n/cs_CZ.php b/apps/files_sharing/l10n/cs_CZ.php index 9889fae488..507955d4bd 100644 --- a/apps/files_sharing/l10n/cs_CZ.php +++ b/apps/files_sharing/l10n/cs_CZ.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s s Vámi sdílí složku %s", "%s shared the file %s with you" => "%s s Vámi sdílí soubor %s", "Download" => "Stáhnout", -"No preview available for" => "Náhled není dostupný pro", -"web services under your control" => "služby webu pod Vaší kontrolou" +"No preview available for" => "Náhled není dostupný pro" ); diff --git a/apps/files_sharing/l10n/cy_GB.php b/apps/files_sharing/l10n/cy_GB.php index dec9af4ebe..292f87a41e 100644 --- a/apps/files_sharing/l10n/cy_GB.php +++ b/apps/files_sharing/l10n/cy_GB.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "Rhannodd %s blygell %s â chi", "%s shared the file %s with you" => "Rhannodd %s ffeil %s â chi", "Download" => "Llwytho i lawr", -"No preview available for" => "Does dim rhagolwg ar gael ar gyfer", -"web services under your control" => "gwasanaethau gwe a reolir gennych" +"No preview available for" => "Does dim rhagolwg ar gael ar gyfer" ); diff --git a/apps/files_sharing/l10n/da.php b/apps/files_sharing/l10n/da.php index 75fbdabe16..55d70fec05 100644 --- a/apps/files_sharing/l10n/da.php +++ b/apps/files_sharing/l10n/da.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s delte mappen %s med dig", "%s shared the file %s with you" => "%s delte filen %s med dig", "Download" => "Download", -"No preview available for" => "Forhåndsvisning ikke tilgængelig for", -"web services under your control" => "Webtjenester under din kontrol" +"No preview available for" => "Forhåndsvisning ikke tilgængelig for" ); diff --git a/apps/files_sharing/l10n/de.php b/apps/files_sharing/l10n/de.php index 7f4cbb1ada..90fcdcf0f1 100644 --- a/apps/files_sharing/l10n/de.php +++ b/apps/files_sharing/l10n/de.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s hat den Ordner %s mit Dir geteilt", "%s shared the file %s with you" => "%s hat die Datei %s mit Dir geteilt", "Download" => "Download", -"No preview available for" => "Es ist keine Vorschau verfügbar für", -"web services under your control" => "Web-Services unter Deiner Kontrolle" +"No preview available for" => "Es ist keine Vorschau verfügbar für" ); diff --git a/apps/files_sharing/l10n/de_DE.php b/apps/files_sharing/l10n/de_DE.php index ab81589b0e..4594c7c248 100644 --- a/apps/files_sharing/l10n/de_DE.php +++ b/apps/files_sharing/l10n/de_DE.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s hat den Ordner %s mit Ihnen geteilt", "%s shared the file %s with you" => "%s hat die Datei %s mit Ihnen geteilt", "Download" => "Herunterladen", -"No preview available for" => "Es ist keine Vorschau verfügbar für", -"web services under your control" => "Web-Services unter Ihrer Kontrolle" +"No preview available for" => "Es ist keine Vorschau verfügbar für" ); diff --git a/apps/files_sharing/l10n/el.php b/apps/files_sharing/l10n/el.php index 5305eedd48..28360d03b4 100644 --- a/apps/files_sharing/l10n/el.php +++ b/apps/files_sharing/l10n/el.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s μοιράστηκε τον φάκελο %s μαζί σας", "%s shared the file %s with you" => "%s μοιράστηκε το αρχείο %s μαζί σας", "Download" => "Λήψη", -"No preview available for" => "Δεν υπάρχει διαθέσιμη προεπισκόπηση για", -"web services under your control" => "υπηρεσίες δικτύου υπό τον έλεγχό σας" +"No preview available for" => "Δεν υπάρχει διαθέσιμη προεπισκόπηση για" ); diff --git a/apps/files_sharing/l10n/en@pirate.php b/apps/files_sharing/l10n/en@pirate.php index 02ee844048..cb40c5a168 100644 --- a/apps/files_sharing/l10n/en@pirate.php +++ b/apps/files_sharing/l10n/en@pirate.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s shared the folder %s with you", "%s shared the file %s with you" => "%s shared the file %s with you", "Download" => "Download", -"No preview available for" => "No preview available for", -"web services under your control" => "web services under your control" +"No preview available for" => "No preview available for" ); diff --git a/apps/files_sharing/l10n/eo.php b/apps/files_sharing/l10n/eo.php index c598d3aa2c..5a216f1f1a 100644 --- a/apps/files_sharing/l10n/eo.php +++ b/apps/files_sharing/l10n/eo.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s kunhavigis la dosierujon %s kun vi", "%s shared the file %s with you" => "%s kunhavigis la dosieron %s kun vi", "Download" => "Elŝuti", -"No preview available for" => "Ne haveblas antaŭvido por", -"web services under your control" => "TTT-servoj regataj de vi" +"No preview available for" => "Ne haveblas antaŭvido por" ); diff --git a/apps/files_sharing/l10n/es.php b/apps/files_sharing/l10n/es.php index 2023d35903..61794d9c55 100644 --- a/apps/files_sharing/l10n/es.php +++ b/apps/files_sharing/l10n/es.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s compartió la carpeta %s contigo", "%s shared the file %s with you" => "%s compartió el fichero %s contigo", "Download" => "Descargar", -"No preview available for" => "No hay vista previa disponible para", -"web services under your control" => "Servicios web bajo su control" +"No preview available for" => "No hay vista previa disponible para" ); diff --git a/apps/files_sharing/l10n/es_AR.php b/apps/files_sharing/l10n/es_AR.php index a2d6e232f2..b079d05e52 100644 --- a/apps/files_sharing/l10n/es_AR.php +++ b/apps/files_sharing/l10n/es_AR.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s compartió la carpeta %s con vos", "%s shared the file %s with you" => "%s compartió el archivo %s con vos", "Download" => "Descargar", -"No preview available for" => "La vista preliminar no está disponible para", -"web services under your control" => "servicios web controlados por vos" +"No preview available for" => "La vista preliminar no está disponible para" ); diff --git a/apps/files_sharing/l10n/et_EE.php b/apps/files_sharing/l10n/et_EE.php index 36290ad278..b8f6b5ab06 100644 --- a/apps/files_sharing/l10n/et_EE.php +++ b/apps/files_sharing/l10n/et_EE.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s jagas sinuga kausta %s", "%s shared the file %s with you" => "%s jagas sinuga faili %s", "Download" => "Lae alla", -"No preview available for" => "Eelvaadet pole saadaval", -"web services under your control" => "veebitenused sinu kontrolli all" +"No preview available for" => "Eelvaadet pole saadaval" ); diff --git a/apps/files_sharing/l10n/eu.php b/apps/files_sharing/l10n/eu.php index ebef0f445e..614cdc1717 100644 --- a/apps/files_sharing/l10n/eu.php +++ b/apps/files_sharing/l10n/eu.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%sk zurekin %s karpeta elkarbanatu du", "%s shared the file %s with you" => "%sk zurekin %s fitxategia elkarbanatu du", "Download" => "Deskargatu", -"No preview available for" => "Ez dago aurrebista eskuragarririk hauentzat ", -"web services under your control" => "web zerbitzuak zure kontrolpean" +"No preview available for" => "Ez dago aurrebista eskuragarririk hauentzat " ); diff --git a/apps/files_sharing/l10n/fa.php b/apps/files_sharing/l10n/fa.php index 4313acae1a..d91daa90eb 100644 --- a/apps/files_sharing/l10n/fa.php +++ b/apps/files_sharing/l10n/fa.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%sپوشه %s را با شما به اشتراک گذاشت", "%s shared the file %s with you" => "%sفایل %s را با شما به اشتراک گذاشت", "Download" => "دانلود", -"No preview available for" => "هیچگونه پیش نمایشی موجود نیست", -"web services under your control" => "سرویس های تحت وب در کنترل شما" +"No preview available for" => "هیچگونه پیش نمایشی موجود نیست" ); diff --git a/apps/files_sharing/l10n/fi_FI.php b/apps/files_sharing/l10n/fi_FI.php index 6c44134213..7e9b67de2c 100644 --- a/apps/files_sharing/l10n/fi_FI.php +++ b/apps/files_sharing/l10n/fi_FI.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s jakoi kansion %s kanssasi", "%s shared the file %s with you" => "%s jakoi tiedoston %s kanssasi", "Download" => "Lataa", -"No preview available for" => "Ei esikatselua kohteelle", -"web services under your control" => "verkkopalvelut hallinnassasi" +"No preview available for" => "Ei esikatselua kohteelle" ); diff --git a/apps/files_sharing/l10n/fr.php b/apps/files_sharing/l10n/fr.php index 1038d81933..b4657978f7 100644 --- a/apps/files_sharing/l10n/fr.php +++ b/apps/files_sharing/l10n/fr.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s a partagé le répertoire %s avec vous", "%s shared the file %s with you" => "%s a partagé le fichier %s avec vous", "Download" => "Télécharger", -"No preview available for" => "Pas d'aperçu disponible pour", -"web services under your control" => "services web sous votre contrôle" +"No preview available for" => "Pas d'aperçu disponible pour" ); diff --git a/apps/files_sharing/l10n/gl.php b/apps/files_sharing/l10n/gl.php index d03f1a5005..90f7a22127 100644 --- a/apps/files_sharing/l10n/gl.php +++ b/apps/files_sharing/l10n/gl.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s compartiu o cartafol %s con vostede", "%s shared the file %s with you" => "%s compartiu o ficheiro %s con vostede", "Download" => "Descargar", -"No preview available for" => "Sen vista previa dispoñíbel para", -"web services under your control" => "servizos web baixo o seu control" +"No preview available for" => "Sen vista previa dispoñíbel para" ); diff --git a/apps/files_sharing/l10n/he.php b/apps/files_sharing/l10n/he.php index 2ea5ba76ab..d0c75e6ba5 100644 --- a/apps/files_sharing/l10n/he.php +++ b/apps/files_sharing/l10n/he.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s שיתף עמך את התיקייה %s", "%s shared the file %s with you" => "%s שיתף עמך את הקובץ %s", "Download" => "הורדה", -"No preview available for" => "אין תצוגה מקדימה זמינה עבור", -"web services under your control" => "שירותי רשת תחת השליטה שלך" +"No preview available for" => "אין תצוגה מקדימה זמינה עבור" ); diff --git a/apps/files_sharing/l10n/hr.php b/apps/files_sharing/l10n/hr.php index b2dca866bb..1d09d09bf5 100644 --- a/apps/files_sharing/l10n/hr.php +++ b/apps/files_sharing/l10n/hr.php @@ -1,6 +1,5 @@ "Lozinka", "Submit" => "Pošalji", -"Download" => "Preuzimanje", -"web services under your control" => "web usluge pod vašom kontrolom" +"Download" => "Preuzimanje" ); diff --git a/apps/files_sharing/l10n/hu_HU.php b/apps/files_sharing/l10n/hu_HU.php index f8ca541260..7184cfa4b3 100644 --- a/apps/files_sharing/l10n/hu_HU.php +++ b/apps/files_sharing/l10n/hu_HU.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s megosztotta Önnel ezt a mappát: %s", "%s shared the file %s with you" => "%s megosztotta Önnel ezt az állományt: %s", "Download" => "Letöltés", -"No preview available for" => "Nem áll rendelkezésre előnézet ehhez: ", -"web services under your control" => "webszolgáltatások saját kézben" +"No preview available for" => "Nem áll rendelkezésre előnézet ehhez: " ); diff --git a/apps/files_sharing/l10n/ia.php b/apps/files_sharing/l10n/ia.php index d229135a71..7db49518a4 100644 --- a/apps/files_sharing/l10n/ia.php +++ b/apps/files_sharing/l10n/ia.php @@ -1,6 +1,5 @@ "Contrasigno", "Submit" => "Submitter", -"Download" => "Discargar", -"web services under your control" => "servicios web sub tu controlo" +"Download" => "Discargar" ); diff --git a/apps/files_sharing/l10n/id.php b/apps/files_sharing/l10n/id.php index 95cf84312c..e27e78b5f6 100644 --- a/apps/files_sharing/l10n/id.php +++ b/apps/files_sharing/l10n/id.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s membagikan folder %s dengan Anda", "%s shared the file %s with you" => "%s membagikan file %s dengan Anda", "Download" => "Unduh", -"No preview available for" => "Tidak ada pratinjau tersedia untuk", -"web services under your control" => "layanan web dalam kontrol Anda" +"No preview available for" => "Tidak ada pratinjau tersedia untuk" ); diff --git a/apps/files_sharing/l10n/is.php b/apps/files_sharing/l10n/is.php index bf1975c54a..b76d737e6d 100644 --- a/apps/files_sharing/l10n/is.php +++ b/apps/files_sharing/l10n/is.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s deildi möppunni %s með þér", "%s shared the file %s with you" => "%s deildi skránni %s með þér", "Download" => "Niðurhal", -"No preview available for" => "Yfirlit ekki í boði fyrir", -"web services under your control" => "vefþjónusta undir þinni stjórn" +"No preview available for" => "Yfirlit ekki í boði fyrir" ); diff --git a/apps/files_sharing/l10n/it.php b/apps/files_sharing/l10n/it.php index f83ca1446d..60a1e588e8 100644 --- a/apps/files_sharing/l10n/it.php +++ b/apps/files_sharing/l10n/it.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s ha condiviso la cartella %s con te", "%s shared the file %s with you" => "%s ha condiviso il file %s con te", "Download" => "Scarica", -"No preview available for" => "Nessuna anteprima disponibile per", -"web services under your control" => "servizi web nelle tue mani" +"No preview available for" => "Nessuna anteprima disponibile per" ); diff --git a/apps/files_sharing/l10n/ja_JP.php b/apps/files_sharing/l10n/ja_JP.php index 02142e2879..8f208da10c 100644 --- a/apps/files_sharing/l10n/ja_JP.php +++ b/apps/files_sharing/l10n/ja_JP.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s はフォルダー %s をあなたと共有中です", "%s shared the file %s with you" => "%s はファイル %s をあなたと共有中です", "Download" => "ダウンロード", -"No preview available for" => "プレビューはありません", -"web services under your control" => "管理下のウェブサービス" +"No preview available for" => "プレビューはありません" ); diff --git a/apps/files_sharing/l10n/ka_GE.php b/apps/files_sharing/l10n/ka_GE.php index 6da1a8b019..4577148d7d 100644 --- a/apps/files_sharing/l10n/ka_GE.php +++ b/apps/files_sharing/l10n/ka_GE.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s–მა გაგიზიარათ ფოლდერი %s", "%s shared the file %s with you" => "%s–მა გაგიზიარათ ფაილი %s", "Download" => "ჩამოტვირთვა", -"No preview available for" => "წინასწარი დათვალიერება შეუძლებელია", -"web services under your control" => "web services under your control" +"No preview available for" => "წინასწარი დათვალიერება შეუძლებელია" ); diff --git a/apps/files_sharing/l10n/ko.php b/apps/files_sharing/l10n/ko.php index 600168d9bf..394c8d12b2 100644 --- a/apps/files_sharing/l10n/ko.php +++ b/apps/files_sharing/l10n/ko.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s 님이 폴더 %s을(를) 공유하였습니다", "%s shared the file %s with you" => "%s 님이 파일 %s을(를) 공유하였습니다", "Download" => "다운로드", -"No preview available for" => "다음 항목을 미리 볼 수 없음:", -"web services under your control" => "내가 관리하는 웹 서비스" +"No preview available for" => "다음 항목을 미리 볼 수 없음:" ); diff --git a/apps/files_sharing/l10n/ku_IQ.php b/apps/files_sharing/l10n/ku_IQ.php index 675fc372e1..4a0b53f6c8 100644 --- a/apps/files_sharing/l10n/ku_IQ.php +++ b/apps/files_sharing/l10n/ku_IQ.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s دابه‌شی کردووه‌ بوخچه‌ی %s له‌گه‌ڵ تۆ", "%s shared the file %s with you" => "%s دابه‌شی کردووه‌ په‌ڕگه‌یی %s له‌گه‌ڵ تۆ", "Download" => "داگرتن", -"No preview available for" => "هیچ پێشبینیه‌ك ئاماده‌ نیه بۆ", -"web services under your control" => "ڕاژه‌ی وێب له‌ژێر چاودێریت دایه" +"No preview available for" => "هیچ پێشبینیه‌ك ئاماده‌ نیه بۆ" ); diff --git a/apps/files_sharing/l10n/lb.php b/apps/files_sharing/l10n/lb.php index 630866ab4c..502f934cad 100644 --- a/apps/files_sharing/l10n/lb.php +++ b/apps/files_sharing/l10n/lb.php @@ -1,6 +1,5 @@ "Passwuert", "Submit" => "Fortschécken", -"Download" => "Download", -"web services under your control" => "Web Servicer ënnert denger Kontroll" +"Download" => "Download" ); diff --git a/apps/files_sharing/l10n/lt_LT.php b/apps/files_sharing/l10n/lt_LT.php index 96ab48cd2c..2e09aa206d 100644 --- a/apps/files_sharing/l10n/lt_LT.php +++ b/apps/files_sharing/l10n/lt_LT.php @@ -1,6 +1,8 @@ "Slaptažodis", "Submit" => "Išsaugoti", +"%s shared the folder %s with you" => "%s pasidalino su jumis %s aplanku", +"%s shared the file %s with you" => "%s pasidalino su jumis %s failu", "Download" => "Atsisiųsti", -"web services under your control" => "jūsų valdomos web paslaugos" +"No preview available for" => "Peržiūra nėra galima" ); diff --git a/apps/files_sharing/l10n/lv.php b/apps/files_sharing/l10n/lv.php index 88faeaf9f1..8430f99e6c 100644 --- a/apps/files_sharing/l10n/lv.php +++ b/apps/files_sharing/l10n/lv.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s ar jums dalījās ar mapi %s", "%s shared the file %s with you" => "%s ar jums dalījās ar datni %s", "Download" => "Lejupielādēt", -"No preview available for" => "Nav pieejams priekšskatījums priekš", -"web services under your control" => "tīmekļa servisi tavā varā" +"No preview available for" => "Nav pieejams priekšskatījums priekš" ); diff --git a/apps/files_sharing/l10n/mk.php b/apps/files_sharing/l10n/mk.php index 16c7ee0eb0..3d6e54f52b 100644 --- a/apps/files_sharing/l10n/mk.php +++ b/apps/files_sharing/l10n/mk.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s ја сподели папката %s со Вас", "%s shared the file %s with you" => "%s ја сподели датотеката %s со Вас", "Download" => "Преземи", -"No preview available for" => "Нема достапно преглед за", -"web services under your control" => "веб сервиси под Ваша контрола" +"No preview available for" => "Нема достапно преглед за" ); diff --git a/apps/files_sharing/l10n/ms_MY.php b/apps/files_sharing/l10n/ms_MY.php index 879524afce..5a1cb1018c 100644 --- a/apps/files_sharing/l10n/ms_MY.php +++ b/apps/files_sharing/l10n/ms_MY.php @@ -1,6 +1,5 @@ "Kata laluan", "Submit" => "Hantar", -"Download" => "Muat turun", -"web services under your control" => "Perkhidmatan web di bawah kawalan anda" +"Download" => "Muat turun" ); diff --git a/apps/files_sharing/l10n/my_MM.php b/apps/files_sharing/l10n/my_MM.php index dc7ec17e9c..4b37ab8b48 100644 --- a/apps/files_sharing/l10n/my_MM.php +++ b/apps/files_sharing/l10n/my_MM.php @@ -1,6 +1,5 @@ "စကားဝှက်", "Submit" => "ထည့်သွင်းမည်", -"Download" => "ဒေါင်းလုတ်", -"web services under your control" => "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services" +"Download" => "ဒေါင်းလုတ်" ); diff --git a/apps/files_sharing/l10n/nb_NO.php b/apps/files_sharing/l10n/nb_NO.php index 4934c34106..027a07babe 100644 --- a/apps/files_sharing/l10n/nb_NO.php +++ b/apps/files_sharing/l10n/nb_NO.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s delte mappen %s med deg", "%s shared the file %s with you" => "%s delte filen %s med deg", "Download" => "Last ned", -"No preview available for" => "Forhåndsvisning ikke tilgjengelig for", -"web services under your control" => "web tjenester du kontrollerer" +"No preview available for" => "Forhåndsvisning ikke tilgjengelig for" ); diff --git a/apps/files_sharing/l10n/nl.php b/apps/files_sharing/l10n/nl.php index 2cef025439..837547e16b 100644 --- a/apps/files_sharing/l10n/nl.php +++ b/apps/files_sharing/l10n/nl.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s deelt de map %s met u", "%s shared the file %s with you" => "%s deelt het bestand %s met u", "Download" => "Downloaden", -"No preview available for" => "Geen voorbeeldweergave beschikbaar voor", -"web services under your control" => "Webdiensten in eigen beheer" +"No preview available for" => "Geen voorbeeldweergave beschikbaar voor" ); diff --git a/apps/files_sharing/l10n/nn_NO.php b/apps/files_sharing/l10n/nn_NO.php index aeba545dab..328fb038b8 100644 --- a/apps/files_sharing/l10n/nn_NO.php +++ b/apps/files_sharing/l10n/nn_NO.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s delte mappa %s med deg", "%s shared the file %s with you" => "%s delte fila %s med deg", "Download" => "Last ned", -"No preview available for" => "Inga førehandsvising tilgjengeleg for", -"web services under your control" => "Vev tjenester under din kontroll" +"No preview available for" => "Inga førehandsvising tilgjengeleg for" ); diff --git a/apps/files_sharing/l10n/oc.php b/apps/files_sharing/l10n/oc.php index 07bc26ecdd..2fe0c95aa7 100644 --- a/apps/files_sharing/l10n/oc.php +++ b/apps/files_sharing/l10n/oc.php @@ -1,6 +1,5 @@ "Senhal", "Submit" => "Sosmetre", -"Download" => "Avalcarga", -"web services under your control" => "Services web jos ton contraròtle" +"Download" => "Avalcarga" ); diff --git a/apps/files_sharing/l10n/pl.php b/apps/files_sharing/l10n/pl.php index 9db5e87c9b..c85a11863b 100644 --- a/apps/files_sharing/l10n/pl.php +++ b/apps/files_sharing/l10n/pl.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s współdzieli folder z tobą %s", "%s shared the file %s with you" => "%s współdzieli z tobą plik %s", "Download" => "Pobierz", -"No preview available for" => "Podgląd nie jest dostępny dla", -"web services under your control" => "Kontrolowane serwisy" +"No preview available for" => "Podgląd nie jest dostępny dla" ); diff --git a/apps/files_sharing/l10n/pt_BR.php b/apps/files_sharing/l10n/pt_BR.php index ce4c28ddcb..a5dad793c4 100644 --- a/apps/files_sharing/l10n/pt_BR.php +++ b/apps/files_sharing/l10n/pt_BR.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s compartilhou a pasta %s com você", "%s shared the file %s with you" => "%s compartilhou o arquivo %s com você", "Download" => "Baixar", -"No preview available for" => "Nenhuma visualização disponível para", -"web services under your control" => "serviços web sob seu controle" +"No preview available for" => "Nenhuma visualização disponível para" ); diff --git a/apps/files_sharing/l10n/pt_PT.php b/apps/files_sharing/l10n/pt_PT.php index 43e8f3c4b6..de8fcbf02d 100644 --- a/apps/files_sharing/l10n/pt_PT.php +++ b/apps/files_sharing/l10n/pt_PT.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s partilhou a pasta %s consigo", "%s shared the file %s with you" => "%s partilhou o ficheiro %s consigo", "Download" => "Transferir", -"No preview available for" => "Não há pré-visualização para", -"web services under your control" => "serviços web sob o seu controlo" +"No preview available for" => "Não há pré-visualização para" ); diff --git a/apps/files_sharing/l10n/ro.php b/apps/files_sharing/l10n/ro.php index eb9977dc58..8b8eab1354 100644 --- a/apps/files_sharing/l10n/ro.php +++ b/apps/files_sharing/l10n/ro.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s a partajat directorul %s cu tine", "%s shared the file %s with you" => "%s a partajat fișierul %s cu tine", "Download" => "Descarcă", -"No preview available for" => "Nici o previzualizare disponibilă pentru ", -"web services under your control" => "servicii web controlate de tine" +"No preview available for" => "Nici o previzualizare disponibilă pentru " ); diff --git a/apps/files_sharing/l10n/ru.php b/apps/files_sharing/l10n/ru.php index 7fd116e0aa..066096f5b5 100644 --- a/apps/files_sharing/l10n/ru.php +++ b/apps/files_sharing/l10n/ru.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s открыл доступ к папке %s для Вас", "%s shared the file %s with you" => "%s открыл доступ к файлу %s для Вас", "Download" => "Скачать", -"No preview available for" => "Предпросмотр недоступен для", -"web services under your control" => "веб-сервисы под вашим управлением" +"No preview available for" => "Предпросмотр недоступен для" ); diff --git a/apps/files_sharing/l10n/si_LK.php b/apps/files_sharing/l10n/si_LK.php index 580f7b1990..b9bcab28c9 100644 --- a/apps/files_sharing/l10n/si_LK.php +++ b/apps/files_sharing/l10n/si_LK.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s ඔබව %s ෆෝල්ඩරයට හවුල් කරගත්තේය", "%s shared the file %s with you" => "%s ඔබ සමඟ %s ගොනුව බෙදාහදාගත්තේය", "Download" => "බාන්න", -"No preview available for" => "පූර්වදර්ශනයක් නොමැත", -"web services under your control" => "ඔබට පාලනය කළ හැකි වෙබ් සේවාවන්" +"No preview available for" => "පූර්වදර්ශනයක් නොමැත" ); diff --git a/apps/files_sharing/l10n/sk_SK.php b/apps/files_sharing/l10n/sk_SK.php index 14124eeb87..0907e3b451 100644 --- a/apps/files_sharing/l10n/sk_SK.php +++ b/apps/files_sharing/l10n/sk_SK.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s zdieľa s vami priečinok %s", "%s shared the file %s with you" => "%s zdieľa s vami súbor %s", "Download" => "Sťahovanie", -"No preview available for" => "Žiaden náhľad k dispozícii pre", -"web services under your control" => "webové služby pod Vašou kontrolou" +"No preview available for" => "Žiaden náhľad k dispozícii pre" ); diff --git a/apps/files_sharing/l10n/sl.php b/apps/files_sharing/l10n/sl.php index 6bcbb0070b..ae84c47289 100644 --- a/apps/files_sharing/l10n/sl.php +++ b/apps/files_sharing/l10n/sl.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "Oseba %s je določila mapo %s za souporabo", "%s shared the file %s with you" => "Oseba %s je določila datoteko %s za souporabo", "Download" => "Prejmi", -"No preview available for" => "Predogled ni na voljo za", -"web services under your control" => "spletne storitve pod vašim nadzorom" +"No preview available for" => "Predogled ni na voljo za" ); diff --git a/apps/files_sharing/l10n/sq.php b/apps/files_sharing/l10n/sq.php index 244ca87c55..7be5f560fa 100644 --- a/apps/files_sharing/l10n/sq.php +++ b/apps/files_sharing/l10n/sq.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s ndau me ju dosjen %s", "%s shared the file %s with you" => "%s ndau me ju skedarin %s", "Download" => "Shkarko", -"No preview available for" => "Shikimi paraprak nuk është i mundur për", -"web services under your control" => "shërbime web nën kontrollin tënd" +"No preview available for" => "Shikimi paraprak nuk është i mundur për" ); diff --git a/apps/files_sharing/l10n/sr.php b/apps/files_sharing/l10n/sr.php index be24c06e46..6e277f6771 100644 --- a/apps/files_sharing/l10n/sr.php +++ b/apps/files_sharing/l10n/sr.php @@ -1,6 +1,5 @@ "Лозинка", "Submit" => "Пошаљи", -"Download" => "Преузми", -"web services under your control" => "веб сервиси под контролом" +"Download" => "Преузми" ); diff --git a/apps/files_sharing/l10n/sv.php b/apps/files_sharing/l10n/sv.php index d1c9afff07..af21d869ad 100644 --- a/apps/files_sharing/l10n/sv.php +++ b/apps/files_sharing/l10n/sv.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s delade mappen %s med dig", "%s shared the file %s with you" => "%s delade filen %s med dig", "Download" => "Ladda ner", -"No preview available for" => "Ingen förhandsgranskning tillgänglig för", -"web services under your control" => "webbtjänster under din kontroll" +"No preview available for" => "Ingen förhandsgranskning tillgänglig för" ); diff --git a/apps/files_sharing/l10n/ta_LK.php b/apps/files_sharing/l10n/ta_LK.php index 6cf6f6236b..6b2ac30bcd 100644 --- a/apps/files_sharing/l10n/ta_LK.php +++ b/apps/files_sharing/l10n/ta_LK.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s கோப்புறையானது %s உடன் பகிரப்பட்டது", "%s shared the file %s with you" => "%s கோப்பானது %s உடன் பகிரப்பட்டது", "Download" => "பதிவிறக்குக", -"No preview available for" => "அதற்கு முன்னோக்கு ஒன்றும் இல்லை", -"web services under your control" => "வலைய சேவைகள் உங்களுடைய கட்டுப்பாட்டின் கீழ் உள்ளது" +"No preview available for" => "அதற்கு முன்னோக்கு ஒன்றும் இல்லை" ); diff --git a/apps/files_sharing/l10n/th_TH.php b/apps/files_sharing/l10n/th_TH.php index 9d53d65f8a..e16ecea96e 100644 --- a/apps/files_sharing/l10n/th_TH.php +++ b/apps/files_sharing/l10n/th_TH.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s ได้แชร์โฟลเดอร์ %s ให้กับคุณ", "%s shared the file %s with you" => "%s ได้แชร์ไฟล์ %s ให้กับคุณ", "Download" => "ดาวน์โหลด", -"No preview available for" => "ไม่สามารถดูตัวอย่างได้สำหรับ", -"web services under your control" => "เว็บเซอร์วิสที่คุณควบคุมการใช้งานได้" +"No preview available for" => "ไม่สามารถดูตัวอย่างได้สำหรับ" ); diff --git a/apps/files_sharing/l10n/tr.php b/apps/files_sharing/l10n/tr.php index 42dfec8cc6..4de3355738 100644 --- a/apps/files_sharing/l10n/tr.php +++ b/apps/files_sharing/l10n/tr.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s sizinle paylaşılan %s klasör", "%s shared the file %s with you" => "%s sizinle paylaşılan %s klasör", "Download" => "İndir", -"No preview available for" => "Kullanılabilir önizleme yok", -"web services under your control" => "Bilgileriniz güvenli ve şifreli" +"No preview available for" => "Kullanılabilir önizleme yok" ); diff --git a/apps/files_sharing/l10n/uk.php b/apps/files_sharing/l10n/uk.php index 8e1fa4bc98..207988ef73 100644 --- a/apps/files_sharing/l10n/uk.php +++ b/apps/files_sharing/l10n/uk.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s опублікував каталог %s для Вас", "%s shared the file %s with you" => "%s опублікував файл %s для Вас", "Download" => "Завантажити", -"No preview available for" => "Попередній перегляд недоступний для", -"web services under your control" => "підконтрольні Вам веб-сервіси" +"No preview available for" => "Попередній перегляд недоступний для" ); diff --git a/apps/files_sharing/l10n/ur_PK.php b/apps/files_sharing/l10n/ur_PK.php index f68b714350..745f2f930d 100644 --- a/apps/files_sharing/l10n/ur_PK.php +++ b/apps/files_sharing/l10n/ur_PK.php @@ -1,4 +1,3 @@ "پاسورڈ", -"web services under your control" => "آپ کے اختیار میں ویب سروسیز" +"Password" => "پاسورڈ" ); diff --git a/apps/files_sharing/l10n/vi.php b/apps/files_sharing/l10n/vi.php index afeec5c648..2a5a2ff17f 100644 --- a/apps/files_sharing/l10n/vi.php +++ b/apps/files_sharing/l10n/vi.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s đã chia sẻ thư mục %s với bạn", "%s shared the file %s with you" => "%s đã chia sẻ tập tin %s với bạn", "Download" => "Tải về", -"No preview available for" => "Không có xem trước cho", -"web services under your control" => "dịch vụ web dưới sự kiểm soát của bạn" +"No preview available for" => "Không có xem trước cho" ); diff --git a/apps/files_sharing/l10n/zh_CN.GB2312.php b/apps/files_sharing/l10n/zh_CN.GB2312.php index 117ec8f406..7df3ee8f9b 100644 --- a/apps/files_sharing/l10n/zh_CN.GB2312.php +++ b/apps/files_sharing/l10n/zh_CN.GB2312.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s 与您分享了文件夹 %s", "%s shared the file %s with you" => "%s 与您分享了文件 %s", "Download" => "下载", -"No preview available for" => "没有预览可用于", -"web services under your control" => "您控制的网络服务" +"No preview available for" => "没有预览可用于" ); diff --git a/apps/files_sharing/l10n/zh_CN.php b/apps/files_sharing/l10n/zh_CN.php index 64e7af3e0c..15c1bb5487 100644 --- a/apps/files_sharing/l10n/zh_CN.php +++ b/apps/files_sharing/l10n/zh_CN.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s与您共享了%s文件夹", "%s shared the file %s with you" => "%s与您共享了%s文件", "Download" => "下载", -"No preview available for" => "没有预览", -"web services under your control" => "您控制的web服务" +"No preview available for" => "没有预览" ); diff --git a/apps/files_sharing/l10n/zh_TW.php b/apps/files_sharing/l10n/zh_TW.php index 14e4466ecb..23b2778994 100644 --- a/apps/files_sharing/l10n/zh_TW.php +++ b/apps/files_sharing/l10n/zh_TW.php @@ -4,6 +4,5 @@ "%s shared the folder %s with you" => "%s 和您分享了資料夾 %s ", "%s shared the file %s with you" => "%s 和您分享了檔案 %s", "Download" => "下載", -"No preview available for" => "無法預覽", -"web services under your control" => "由您控制的網路服務" +"No preview available for" => "無法預覽" ); diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 88a4cc242b..adf3c3e9cc 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -46,5 +46,9 @@ -

ownCloud – -t('web services under your control')); ?>

+
+

+ '); ?> + +

+
diff --git a/apps/files_trashbin/l10n/bg_BG.php b/apps/files_trashbin/l10n/bg_BG.php index 288518e1a4..1e0953b013 100644 --- a/apps/files_trashbin/l10n/bg_BG.php +++ b/apps/files_trashbin/l10n/bg_BG.php @@ -1,5 +1,5 @@ "Невъзможно изтриване на %s завинаги", +"Couldn't delete %s permanently" => "Невъзможно перманентното изтриване на %s", "Couldn't restore %s" => "Невъзможно възтановяване на %s", "perform restore operation" => "извършване на действие по възстановяване", "Error" => "Грешка", diff --git a/apps/files_trashbin/l10n/eo.php b/apps/files_trashbin/l10n/eo.php index 3288c4fcdc..161e9c3e88 100644 --- a/apps/files_trashbin/l10n/eo.php +++ b/apps/files_trashbin/l10n/eo.php @@ -1,5 +1,6 @@ "Eraro", +"Delete permanently" => "Forigi por ĉiam", "Name" => "Nomo", "1 folder" => "1 dosierujo", "{count} folders" => "{count} dosierujoj", diff --git a/apps/files_trashbin/l10n/he.php b/apps/files_trashbin/l10n/he.php index e31fdb952e..853d4e1925 100644 --- a/apps/files_trashbin/l10n/he.php +++ b/apps/files_trashbin/l10n/he.php @@ -1,17 +1,18 @@ "בלתי אפשרי למחוק את %s לצמיתות", -"Couldn't restore %s" => "בלתי אפשרי לשחזר את %s", -"perform restore operation" => "בצע פעולת שחזור", +"Couldn't delete %s permanently" => "לא ניתן למחוק את %s לצמיתות", +"Couldn't restore %s" => "לא ניתן לשחזר את %s", +"perform restore operation" => "ביצוע פעולת שחזור", "Error" => "שגיאה", -"delete file permanently" => "מחק קובץ לצמיתות", -"Delete permanently" => "מחק לצמיתות", +"delete file permanently" => "מחיקת קובץ לצמיתות", +"Delete permanently" => "מחיקה לצמיתות", "Name" => "שם", "Deleted" => "נמחק", "1 folder" => "תיקייה אחת", "{count} folders" => "{count} תיקיות", "1 file" => "קובץ אחד", "{count} files" => "{count} קבצים", -"Nothing in here. Your trash bin is empty!" => "שום דבר כאן. סל המחזור שלך ריק!", -"Restore" => "שחזר", -"Delete" => "מחיקה" +"Nothing in here. Your trash bin is empty!" => "אין כאן שום דבר. סל המיחזור שלך ריק!", +"Restore" => "שחזור", +"Delete" => "מחיקה", +"Deleted Files" => "קבצים שנמחקו" ); diff --git a/apps/files_trashbin/l10n/lt_LT.php b/apps/files_trashbin/l10n/lt_LT.php index 011de161e4..7df63bd7f2 100644 --- a/apps/files_trashbin/l10n/lt_LT.php +++ b/apps/files_trashbin/l10n/lt_LT.php @@ -1,9 +1,18 @@ "Nepavyko negrįžtamai ištrinti %s", +"Couldn't restore %s" => "Nepavyko atkurti %s", +"perform restore operation" => "atkurti", "Error" => "Klaida", +"delete file permanently" => "failą ištrinti negrįžtamai", +"Delete permanently" => "Ištrinti negrįžtamai", "Name" => "Pavadinimas", +"Deleted" => "Ištrinti", "1 folder" => "1 aplankalas", "{count} folders" => "{count} aplankalai", "1 file" => "1 failas", "{count} files" => "{count} failai", -"Delete" => "Ištrinti" +"Nothing in here. Your trash bin is empty!" => "Nieko nėra. Jūsų šiukšliadėžė tuščia!", +"Restore" => "Atstatyti", +"Delete" => "Ištrinti", +"Deleted Files" => "Ištrinti failai" ); diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php index 2d1830a38f..1235d9d2ee 100644 --- a/apps/files_trashbin/lib/trash.php +++ b/apps/files_trashbin/lib/trash.php @@ -24,17 +24,18 @@ namespace OCA\Files_Trashbin; class Trashbin { // how long do we keep files in the trash bin if no other value is defined in the config file (unit: days) - const DEFAULT_RETENTION_OBLIGATION=180; + + const DEFAULT_RETENTION_OBLIGATION = 180; // unit: percentage; 50% of available disk space/quota - const DEFAULTMAXSIZE=50; + const DEFAULTMAXSIZE = 50; public static function getUidAndFilename($filename) { $uid = \OC\Files\Filesystem::getOwner($filename); \OC\Files\Filesystem::initMountPoints($uid); - if ( $uid != \OCP\User::getUser() ) { + if ($uid != \OCP\User::getUser()) { $info = \OC\Files\Filesystem::getFileInfo($filename); - $ownerView = new \OC\Files\View('/'.$uid.'/files'); + $ownerView = new \OC\Files\View('/' . $uid . '/files'); $filename = $ownerView->getPath($info['fileid']); } return array($uid, $filename); @@ -47,115 +48,119 @@ class Trashbin { */ public static function move2trash($file_path) { $user = \OCP\User::getUser(); - $view = new \OC\Files\View('/'. $user); + $view = new \OC\Files\View('/' . $user); if (!$view->is_dir('files_trashbin')) { $view->mkdir('files_trashbin'); - $view->mkdir('files_trashbin/files'); - $view->mkdir('files_trashbin/versions'); - $view->mkdir('files_trashbin/keyfiles'); - $view->mkdir('files_trashbin/share-keys'); } - + if (!$view->is_dir('files_trashbin/files')) { + $view->mkdir('files_trashbin/files'); + } + if (!$view->is_dir('files_trashbin/versions')) { + $view->mkdir('files_trashbin/versions'); + } + if (!$view->is_dir('files_trashbin/keyfiles')) { + $view->mkdir('files_trashbin/keyfiles'); + } + if (!$view->is_dir('files_trashbin/share-keys')) { + $view->mkdir('files_trashbin/share-keys'); + } $path_parts = pathinfo($file_path); $filename = $path_parts['basename']; $location = $path_parts['dirname']; $timestamp = time(); - $mime = $view->getMimeType('files'.$file_path); + $mime = $view->getMimeType('files' . $file_path); - if ( $view->is_dir('files'.$file_path) ) { + if ($view->is_dir('files' . $file_path)) { $type = 'dir'; } else { $type = 'file'; } - + $trashbinSize = self::getTrashbinSize($user); - if ( $trashbinSize === false || $trashbinSize < 0 ) { - $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin')); + if ($trashbinSize === false || $trashbinSize < 0) { + $trashbinSize = self::calculateSize(new \OC\Files\View('/' . $user . '/files_trashbin')); } // disable proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $sizeOfAddedFiles = self::copy_recursive($file_path, 'files_trashbin/files/'.$filename.'.d'.$timestamp, $view); + $sizeOfAddedFiles = self::copy_recursive($file_path, 'files_trashbin/files/' . $filename . '.d' . $timestamp, $view); \OC_FileProxy::$enabled = $proxyStatus; - if ( $view->file_exists('files_trashbin/files/'.$filename.'.d'.$timestamp) ) { + if ($view->file_exists('files_trashbin/files/' . $filename . '.d' . $timestamp)) { $trashbinSize += $sizeOfAddedFiles; $query = \OC_DB::prepare("INSERT INTO `*PREFIX*files_trash` (`id`,`timestamp`,`location`,`type`,`mime`,`user`) VALUES (?,?,?,?,?,?)"); $result = $query->execute(array($filename, $timestamp, $location, $type, $mime, $user)); - if ( !$result ) { // if file couldn't be added to the database than also don't store it in the trash bin. - $view->deleteAll('files_trashbin/files/'.$filename.'.d'.$timestamp); + if (!$result) { // if file couldn't be added to the database than also don't store it in the trash bin. + $view->deleteAll('files_trashbin/files/' . $filename . '.d' . $timestamp); \OC_Log::write('files_trashbin', 'trash bin database couldn\'t be updated', \OC_log::ERROR); return; } - \OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_moveToTrash', - array('filePath' => \OC\Files\Filesystem::normalizePath($file_path), - 'trashPath' => \OC\Files\Filesystem::normalizePath($filename.'.d'.$timestamp))); + \OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_moveToTrash', array('filePath' => \OC\Files\Filesystem::normalizePath($file_path), + 'trashPath' => \OC\Files\Filesystem::normalizePath($filename . '.d' . $timestamp))); $trashbinSize += self::retainVersions($view, $file_path, $filename, $timestamp); $trashbinSize += self::retainEncryptionKeys($view, $file_path, $filename, $timestamp); - } else { - \OC_Log::write('files_trashbin', 'Couldn\'t move '.$file_path.' to the trash bin', \OC_log::ERROR); + \OC_Log::write('files_trashbin', 'Couldn\'t move ' . $file_path . ' to the trash bin', \OC_log::ERROR); } $trashbinSize -= self::expire($trashbinSize); - - self::setTrashbinSize($user, $trashbinSize); + self::setTrashbinSize($user, $trashbinSize); } - /** - * Move file versions to trash so that they can be restored later - * - * @param \OC\Files\View $view - * @param $file_path path to original file - * @param $filename of deleted file - * @param $timestamp when the file was deleted - * - * @return size of stored versions - */ + /** + * Move file versions to trash so that they can be restored later + * + * @param \OC\Files\View $view + * @param $file_path path to original file + * @param $filename of deleted file + * @param $timestamp when the file was deleted + * + * @return size of stored versions + */ private static function retainVersions($view, $file_path, $filename, $timestamp) { $size = 0; - if (\OCP\App::isEnabled('files_versions')) { + if (\OCP\App::isEnabled('files_versions')) { - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // disable proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - $user = \OCP\User::getUser(); + $user = \OCP\User::getUser(); $rootView = new \OC\Files\View('/'); list($owner, $ownerPath) = self::getUidAndFilename($file_path); - if ($rootView->is_dir($owner.'/files_versions/' . $ownerPath)) { - $size += self::calculateSize(new \OC\Files\View('/' . $owner . '/files_versions/' . $ownerPath)); - $rootView->rename($owner.'/files_versions/' . $ownerPath, $user.'/files_trashbin/versions/' . $filename . '.d' . $timestamp); + if ($rootView->is_dir($owner . '/files_versions/' . $ownerPath)) { + $size += self::calculateSize(new \OC\Files\View('/' . $owner . '/files_versions/' . $ownerPath)); + $rootView->rename($owner . '/files_versions/' . $ownerPath, $user . '/files_trashbin/versions/' . $filename . '.d' . $timestamp); } else if ($versions = \OCA\Files_Versions\Storage::getVersions($owner, $ownerPath)) { - foreach ($versions as $v) { - $size += $rootView->filesize($owner.'/files_versions' . $v['path'] . '.v' . $v['version']); - $rootView->rename($owner.'/files_versions' . $v['path'] . '.v' . $v['version'], $user.'/files_trashbin/versions/' . $filename . '.v' . $v['version'] . '.d' . $timestamp); + foreach ($versions as $v) { + $size += $rootView->filesize($owner . '/files_versions' . $v['path'] . '.v' . $v['version']); + $rootView->rename($owner . '/files_versions' . $v['path'] . '.v' . $v['version'], $user . '/files_trashbin/versions/' . $filename . '.v' . $v['version'] . '.d' . $timestamp); } } - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; + // enable proxy + \OC_FileProxy::$enabled = $proxyStatus; } return $size; } - /** - * Move encryption keys to trash so that they can be restored later - * - * @param \OC\Files\View $view - * @param $file_path path to original file - * @param $filename of deleted file - * @param $timestamp when the file was deleted - * - * @return size of encryption keys - */ + /** + * Move encryption keys to trash so that they can be restored later + * + * @param \OC\Files\View $view + * @param $file_path path to original file + * @param $filename of deleted file + * @param $timestamp when the file was deleted + * + * @return size of encryption keys + */ private static function retainEncryptionKeys($view, $file_path, $filename, $timestamp) { $size = 0; @@ -167,65 +172,65 @@ class Trashbin { list($owner, $ownerPath) = self::getUidAndFilename($file_path); - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // disable proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // retain key files - $keyfile = \OC\Files\Filesystem::normalizePath($owner.'/files_encryption/keyfiles/' . $ownerPath); + // retain key files + $keyfile = \OC\Files\Filesystem::normalizePath($owner . '/files_encryption/keyfiles/' . $ownerPath); - if ($rootView->is_dir($keyfile) || $rootView->file_exists($keyfile . '.key')) { - // move keyfiles - if ($rootView->is_dir($keyfile)) { - $size += self::calculateSize(new \OC\Files\View($keyfile)); - $rootView->rename($keyfile, $user.'/files_trashbin/keyfiles/' . $filename . '.d' . $timestamp); + if ($rootView->is_dir($keyfile) || $rootView->file_exists($keyfile . '.key')) { + // move keyfiles + if ($rootView->is_dir($keyfile)) { + $size += self::calculateSize(new \OC\Files\View($keyfile)); + $rootView->rename($keyfile, $user . '/files_trashbin/keyfiles/' . $filename . '.d' . $timestamp); } else { $size += $rootView->filesize($keyfile . '.key'); - $rootView->rename($keyfile . '.key', $user.'/files_trashbin/keyfiles/' . $filename . '.key.d' . $timestamp); + $rootView->rename($keyfile . '.key', $user . '/files_trashbin/keyfiles/' . $filename . '.key.d' . $timestamp); } } - // retain share keys - $sharekeys = \OC\Files\Filesystem::normalizePath($owner.'/files_encryption/share-keys/' . $ownerPath); + // retain share keys + $sharekeys = \OC\Files\Filesystem::normalizePath($owner . '/files_encryption/share-keys/' . $ownerPath); if ($rootView->is_dir($sharekeys)) { $size += self::calculateSize(new \OC\Files\View($sharekeys)); - $rootView->rename($sharekeys, $user.'/files_trashbin/share-keys/' . $filename . '.d' . $timestamp); + $rootView->rename($sharekeys, $user . '/files_trashbin/share-keys/' . $filename . '.d' . $timestamp); } else { - // get local path to share-keys - $localShareKeysPath = $rootView->getLocalFile($sharekeys); + // get local path to share-keys + $localShareKeysPath = $rootView->getLocalFile($sharekeys); + $escapedLocalShareKeysPath = preg_replace('/(\*|\?|\[)/', '[$1]', $localShareKeysPath); - // handle share-keys - $matches = glob(preg_quote($localShareKeysPath).'*.shareKey'); - foreach ($matches as $src) { - // get source file parts - $pathinfo = pathinfo($src); + // handle share-keys + $matches = glob($escapedLocalShareKeysPath . '*.shareKey'); + foreach ($matches as $src) { + // get source file parts + $pathinfo = pathinfo($src); - // we only want to keep the owners key so we can access the private key - $ownerShareKey = $filename . '.' . $user. '.shareKey'; + // we only want to keep the owners key so we can access the private key + $ownerShareKey = $filename . '.' . $user . '.shareKey'; - // if we found the share-key for the owner, we need to move it to files_trashbin - if($pathinfo['basename'] == $ownerShareKey) { + // if we found the share-key for the owner, we need to move it to files_trashbin + if ($pathinfo['basename'] == $ownerShareKey) { - // calculate size - $size += $rootView->filesize($sharekeys. '.' . $user. '.shareKey'); + // calculate size + $size += $rootView->filesize($sharekeys . '.' . $user . '.shareKey'); - // move file - $rootView->rename($sharekeys. '.' . $user. '.shareKey', $user.'/files_trashbin/share-keys/' . $ownerShareKey . '.d' . $timestamp); - } else { + // move file + $rootView->rename($sharekeys . '.' . $user . '.shareKey', $user . '/files_trashbin/share-keys/' . $ownerShareKey . '.d' . $timestamp); + } else { - // calculate size - $size += filesize($src); - - // don't keep other share-keys - unlink($src); - } - } + // calculate size + $size += filesize($src); - } + // don't keep other share-keys + unlink($src); + } + } + } - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; + // enable proxy + \OC_FileProxy::$enabled = $proxyStatus; } return $size; } @@ -235,95 +240,94 @@ class Trashbin { * @param $file path to the deleted file * @param $filename name of the file * @param $timestamp time when the file was deleted - * - * @return bool - */ + * + * @return bool + */ public static function restore($file, $filename, $timestamp) { - $user = \OCP\User::getUser(); - $view = new \OC\Files\View('/'.$user); - + $user = \OCP\User::getUser(); + $view = new \OC\Files\View('/' . $user); + $trashbinSize = self::getTrashbinSize($user); - if ( $trashbinSize === false || $trashbinSize < 0 ) { - $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin')); + if ($trashbinSize === false || $trashbinSize < 0) { + $trashbinSize = self::calculateSize(new \OC\Files\View('/' . $user . '/files_trashbin')); } - if ( $timestamp ) { + if ($timestamp) { $query = \OC_DB::prepare('SELECT `location`,`type` FROM `*PREFIX*files_trash`' - .' WHERE `user`=? AND `id`=? AND `timestamp`=?'); - $result = $query->execute(array($user,$filename,$timestamp))->fetchAll(); - if ( count($result) != 1 ) { + . ' WHERE `user`=? AND `id`=? AND `timestamp`=?'); + $result = $query->execute(array($user, $filename, $timestamp))->fetchAll(); + if (count($result) != 1) { \OC_Log::write('files_trashbin', 'trash bin database inconsistent!', \OC_Log::ERROR); return false; } // if location no longer exists, restore file in the root directory $location = $result[0]['location']; - if ( $result[0]['location'] != '/' && - (!$view->is_dir('files'.$result[0]['location']) || - !$view->isUpdatable('files'.$result[0]['location'])) ) { + if ($result[0]['location'] != '/' && + (!$view->is_dir('files' . $result[0]['location']) || + !$view->isUpdatable('files' . $result[0]['location']))) { $location = ''; } } else { $path_parts = pathinfo($file); $result[] = array( - 'location' => $path_parts['dirname'], - 'type' => $view->is_dir('/files_trashbin/files/'.$file) ? 'dir' : 'files', - ); + 'location' => $path_parts['dirname'], + 'type' => $view->is_dir('/files_trashbin/files/' . $file) ? 'dir' : 'files', + ); $location = ''; } - - $source = \OC\Files\Filesystem::normalizePath('files_trashbin/files/'.$file); - $target = \OC\Files\Filesystem::normalizePath('files/'.$location.'/'.$filename); + + $source = \OC\Files\Filesystem::normalizePath('files_trashbin/files/' . $file); + $target = \OC\Files\Filesystem::normalizePath('files/' . $location . '/' . $filename); // we need a extension in case a file/dir with the same name already exists $ext = self::getUniqueExtension($location, $filename, $view); $mtime = $view->filemtime($source); - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // disable proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // restore file - $restoreResult = $view->rename($source, $target.$ext); + // restore file + $restoreResult = $view->rename($source, $target . $ext); - // handle the restore result - if( $restoreResult ) { + // handle the restore result + if ($restoreResult) { $fakeRoot = $view->getRoot(); - $view->chroot('/'.$user.'/files'); - $view->touch('/'.$location.'/'.$filename.$ext, $mtime); + $view->chroot('/' . $user . '/files'); + $view->touch('/' . $location . '/' . $filename . $ext, $mtime); $view->chroot($fakeRoot); - \OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', - array('filePath' => \OC\Files\Filesystem::normalizePath('/'.$location.'/'.$filename.$ext), - 'trashPath' => \OC\Files\Filesystem::normalizePath($file))); - if ($view->is_dir($target.$ext)) { - $trashbinSize -= self::calculateSize(new \OC\Files\View('/'.$user.'/'.$target.$ext)); + \OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', array('filePath' => \OC\Files\Filesystem::normalizePath('/' . $location . '/' . $filename . $ext), + 'trashPath' => \OC\Files\Filesystem::normalizePath($file))); + if ($view->is_dir($target . $ext)) { + $trashbinSize -= self::calculateSize(new \OC\Files\View('/' . $user . '/' . $target . $ext)); } else { - $trashbinSize -= $view->filesize($target.$ext); + $trashbinSize -= $view->filesize($target . $ext); } - $trashbinSize -= self::restoreVersions($view, $file, $filename, $ext, $location, $timestamp); + $trashbinSize -= self::restoreVersions($view, $file, $filename, $ext, $location, $timestamp); $trashbinSize -= self::restoreEncryptionKeys($view, $file, $filename, $ext, $location, $timestamp); - if ( $timestamp ) { + if ($timestamp) { $query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trash` WHERE `user`=? AND `id`=? AND `timestamp`=?'); - $query->execute(array($user,$filename,$timestamp)); + $query->execute(array($user, $filename, $timestamp)); } self::setTrashbinSize($user, $trashbinSize); - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; + // enable proxy + \OC_FileProxy::$enabled = $proxyStatus; return true; } - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; + // enable proxy + \OC_FileProxy::$enabled = $proxyStatus; return false; } - /** + /** * @brief restore versions from trash bin * * @param \OC\Files\View $view file view @@ -332,20 +336,20 @@ class Trashbin { * @param $ext file extension in case a file with the same $filename already exists * @param $location location if file * @param $timestamp deleteion time - * + * * @return size of restored versions */ private static function restoreVersions($view, $file, $filename, $ext, $location, $timestamp) { $size = 0; if (\OCP\App::isEnabled('files_versions')) { - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // disable proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - $user = \OCP\User::getUser(); + $user = \OCP\User::getUser(); $rootView = new \OC\Files\View('/'); - $target = \OC\Files\Filesystem::normalizePath('/'.$location.'/'.$filename.$ext); + $target = \OC\Files\Filesystem::normalizePath('/' . $location . '/' . $filename . $ext); list($owner, $ownerPath) = self::getUidAndFilename($target); @@ -355,190 +359,188 @@ class Trashbin { $versionedFile = $file; } - if ($view->is_dir('/files_trashbin/versions/'.$file)) { + if ($view->is_dir('/files_trashbin/versions/' . $file)) { $size += self::calculateSize(new \OC\Files\View('/' . $user . '/' . 'files_trashbin/versions/' . $file)); - $rootView->rename(\OC\Files\Filesystem::normalizePath($user.'/files_trashbin/versions/' . $file), \OC\Files\Filesystem::normalizePath($owner.'/files_versions/' . $ownerPath)); + $rootView->rename(\OC\Files\Filesystem::normalizePath($user . '/files_trashbin/versions/' . $file), \OC\Files\Filesystem::normalizePath($owner . '/files_versions/' . $ownerPath)); } else if ($versions = self::getVersionsFromTrash($versionedFile, $timestamp)) { - foreach ($versions as $v) { - if ($timestamp) { - $size += $view->filesize('files_trashbin/versions/' . $versionedFile . '.v' . $v . '.d' . $timestamp); - $rootView->rename($user.'/files_trashbin/versions/' . $versionedFile . '.v' . $v . '.d' . $timestamp, $owner.'/files_versions/' . $ownerPath . '.v' . $v); + foreach ($versions as $v) { + if ($timestamp) { + $size += $view->filesize('files_trashbin/versions/' . $versionedFile . '.v' . $v . '.d' . $timestamp); + $rootView->rename($user . '/files_trashbin/versions/' . $versionedFile . '.v' . $v . '.d' . $timestamp, $owner . '/files_versions/' . $ownerPath . '.v' . $v); } else { - $size += $view->filesize('files_trashbin/versions/' . $versionedFile . '.v' . $v); - $rootView->rename($user.'/files_trashbin/versions/' . $versionedFile . '.v' . $v, $owner.'/files_versions/' . $ownerPath . '.v' . $v); + $size += $view->filesize('files_trashbin/versions/' . $versionedFile . '.v' . $v); + $rootView->rename($user . '/files_trashbin/versions/' . $versionedFile . '.v' . $v, $owner . '/files_versions/' . $ownerPath . '.v' . $v); } } } - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; + // enable proxy + \OC_FileProxy::$enabled = $proxyStatus; } return $size; } - - /** - * @brief restore encryption keys from trash bin - * - * @param \OC\Files\View $view - * @param $file complete path to file - * @param $filename name of file - * @param $ext file extension in case a file with the same $filename already exists - * @param $location location of file - * @param $timestamp deleteion time - * - * @return size of restored encrypted file - */ - private static function restoreEncryptionKeys($view, $file, $filename, $ext, $location, $timestamp) { + /** + * @brief restore encryption keys from trash bin + * + * @param \OC\Files\View $view + * @param $file complete path to file + * @param $filename name of file + * @param $ext file extension in case a file with the same $filename already exists + * @param $location location of file + * @param $timestamp deleteion time + * + * @return size of restored encrypted file + */ + private static function restoreEncryptionKeys($view, $file, $filename, $ext, $location, $timestamp) { // Take care of encryption keys TODO! Get '.key' in file between file name and delete date (also for permanent delete!) $size = 0; if (\OCP\App::isEnabled('files_encryption')) { $user = \OCP\User::getUser(); $rootView = new \OC\Files\View('/'); - $target = \OC\Files\Filesystem::normalizePath('/'.$location.'/'.$filename.$ext); + $target = \OC\Files\Filesystem::normalizePath('/' . $location . '/' . $filename . $ext); list($owner, $ownerPath) = self::getUidAndFilename($target); - $path_parts = pathinfo($file); - $source_location = $path_parts['dirname']; - - if ($view->is_dir('/files_trashbin/keyfiles/'.$file)) { - if($source_location != '.') { - $keyfile = \OC\Files\Filesystem::normalizePath($user.'/files_trashbin/keyfiles/' . $source_location . '/' . $filename); - $sharekey = \OC\Files\Filesystem::normalizePath($user.'/files_trashbin/share-keys/' . $source_location . '/' . $filename); - } else { - $keyfile = \OC\Files\Filesystem::normalizePath($user.'/files_trashbin/keyfiles/' . $filename); - $sharekey = \OC\Files\Filesystem::normalizePath($user.'/files_trashbin/share-keys/' . $filename); - } - } else { - $keyfile = \OC\Files\Filesystem::normalizePath($user.'/files_trashbin/keyfiles/' . $source_location . '/' . $filename . '.key'); - } - - if ($timestamp) { - $keyfile .= '.d' . $timestamp; - } - - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - if ($rootView->file_exists($keyfile)) { - // handle directory - if ($rootView->is_dir($keyfile)) { - - // handle keyfiles - $size += self::calculateSize(new \OC\Files\View($keyfile)); - $rootView->rename($keyfile, $owner.'/files_encryption/keyfiles/' . $ownerPath); - - // handle share-keys - if ($timestamp) { - $sharekey .= '.d' . $timestamp; - } - $size += self::calculateSize(new \OC\Files\View($sharekey)); - $rootView->rename($sharekey, $owner.'/files_encryption/share-keys/' . $ownerPath); + $path_parts = pathinfo($file); + $source_location = $path_parts['dirname']; + if ($view->is_dir('/files_trashbin/keyfiles/' . $file)) { + if ($source_location != '.') { + $keyfile = \OC\Files\Filesystem::normalizePath($user . '/files_trashbin/keyfiles/' . $source_location . '/' . $filename); + $sharekey = \OC\Files\Filesystem::normalizePath($user . '/files_trashbin/share-keys/' . $source_location . '/' . $filename); } else { - // handle keyfiles + $keyfile = \OC\Files\Filesystem::normalizePath($user . '/files_trashbin/keyfiles/' . $filename); + $sharekey = \OC\Files\Filesystem::normalizePath($user . '/files_trashbin/share-keys/' . $filename); + } + } else { + $keyfile = \OC\Files\Filesystem::normalizePath($user . '/files_trashbin/keyfiles/' . $source_location . '/' . $filename . '.key'); + } + + if ($timestamp) { + $keyfile .= '.d' . $timestamp; + } + + // disable proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + if ($rootView->file_exists($keyfile)) { + // handle directory + if ($rootView->is_dir($keyfile)) { + + // handle keyfiles + $size += self::calculateSize(new \OC\Files\View($keyfile)); + $rootView->rename($keyfile, $owner . '/files_encryption/keyfiles/' . $ownerPath); + + // handle share-keys + if ($timestamp) { + $sharekey .= '.d' . $timestamp; + } + $size += self::calculateSize(new \OC\Files\View($sharekey)); + $rootView->rename($sharekey, $owner . '/files_encryption/share-keys/' . $ownerPath); + } else { + // handle keyfiles $size += $rootView->filesize($keyfile); - $rootView->rename($keyfile, $owner.'/files_encryption/keyfiles/' . $ownerPath . '.key'); + $rootView->rename($keyfile, $owner . '/files_encryption/keyfiles/' . $ownerPath . '.key'); - // handle share-keys - $ownerShareKey = \OC\Files\Filesystem::normalizePath($user.'/files_trashbin/share-keys/' . $source_location . '/' . $filename . '.' . $user. '.shareKey'); - if ($timestamp) { - $ownerShareKey .= '.d' . $timestamp; - } + // handle share-keys + $ownerShareKey = \OC\Files\Filesystem::normalizePath($user . '/files_trashbin/share-keys/' . $source_location . '/' . $filename . '.' . $user . '.shareKey'); + if ($timestamp) { + $ownerShareKey .= '.d' . $timestamp; + } - $size += $rootView->filesize($ownerShareKey); + $size += $rootView->filesize($ownerShareKey); - // move only owners key - $rootView->rename($ownerShareKey, $owner.'/files_encryption/share-keys/' . $ownerPath . '.' . $user. '.shareKey'); + // move only owners key + $rootView->rename($ownerShareKey, $owner . '/files_encryption/share-keys/' . $ownerPath . '.' . $user . '.shareKey'); - // try to re-share if file is shared - $filesystemView = new \OC_FilesystemView('/'); - $session = new \OCA\Encryption\Session($filesystemView); - $util = new \OCA\Encryption\Util($filesystemView, $user); + // try to re-share if file is shared + $filesystemView = new \OC_FilesystemView('/'); + $session = new \OCA\Encryption\Session($filesystemView); + $util = new \OCA\Encryption\Util($filesystemView, $user); - // fix the file size - $absolutePath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files/'. $ownerPath); - $util->fixFileSize($absolutePath); + // fix the file size + $absolutePath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files/' . $ownerPath); + $util->fixFileSize($absolutePath); - // get current sharing state - $sharingEnabled = \OCP\Share::isEnabled(); + // get current sharing state + $sharingEnabled = \OCP\Share::isEnabled(); - // get the final filename - $target = \OC\Files\Filesystem::normalizePath($location.'/'.$filename); + // get the final filename + $target = \OC\Files\Filesystem::normalizePath($location . '/' . $filename); - // get users sharing this file - $usersSharing = $util->getSharingUsersArray($sharingEnabled, $target.$ext, $user); + // get users sharing this file + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $target . $ext, $user); - // Attempt to set shareKey - $util->setSharedFileKeyfiles($session, $usersSharing, $target.$ext); + // Attempt to set shareKey + $util->setSharedFileKeyfiles($session, $usersSharing, $target . $ext); } } - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; + // enable proxy + \OC_FileProxy::$enabled = $proxyStatus; } return $size; } /** * @brief delete file from trash bin permanently - * + * * @param $filename path to the file * @param $timestamp of deletion time - * + * * @return size of deleted files */ - public static function delete($filename, $timestamp=null) { + public static function delete($filename, $timestamp = null) { $user = \OCP\User::getUser(); - $view = new \OC\Files\View('/'.$user); + $view = new \OC\Files\View('/' . $user); $size = 0; - + $trashbinSize = self::getTrashbinSize($user); - if ( $trashbinSize === false || $trashbinSize < 0 ) { - $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin')); + if ($trashbinSize === false || $trashbinSize < 0) { + $trashbinSize = self::calculateSize(new \OC\Files\View('/' . $user . '/files_trashbin')); } - if ( $timestamp ) { + if ($timestamp) { $query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trash` WHERE `user`=? AND `id`=? AND `timestamp`=?'); - $query->execute(array($user,$filename,$timestamp)); - $file = $filename.'.d'.$timestamp; + $query->execute(array($user, $filename, $timestamp)); + $file = $filename . '.d' . $timestamp; } else { $file = $filename; } $size += self::deleteVersions($view, $file, $filename, $timestamp); $size += self::deleteEncryptionKeys($view, $file, $filename, $timestamp); - - if ($view->is_dir('/files_trashbin/files/'.$file)) { - $size += self::calculateSize(new \OC\Files\View('/'.$user.'/files_trashbin/files/'.$file)); + + if ($view->is_dir('/files_trashbin/files/' . $file)) { + $size += self::calculateSize(new \OC\Files\View('/' . $user . '/files_trashbin/files/' . $file)); } else { - $size += $view->filesize('/files_trashbin/files/'.$file); + $size += $view->filesize('/files_trashbin/files/' . $file); } - $view->unlink('/files_trashbin/files/'.$file); + $view->unlink('/files_trashbin/files/' . $file); $trashbinSize -= $size; self::setTrashbinSize($user, $trashbinSize); - + return $size; } private static function deleteVersions($view, $file, $filename, $timestamp) { $size = 0; - if ( \OCP\App::isEnabled('files_versions') ) { + if (\OCP\App::isEnabled('files_versions')) { $user = \OCP\User::getUser(); - if ($view->is_dir('files_trashbin/versions/'.$file)) { - $size += self::calculateSize(new \OC\Files\view('/'.$user.'/files_trashbin/versions/'.$file)); - $view->unlink('files_trashbin/versions/'.$file); - } else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) { + if ($view->is_dir('files_trashbin/versions/' . $file)) { + $size += self::calculateSize(new \OC\Files\view('/' . $user . '/files_trashbin/versions/' . $file)); + $view->unlink('files_trashbin/versions/' . $file); + } else if ($versions = self::getVersionsFromTrash($filename, $timestamp)) { foreach ($versions as $v) { - if ($timestamp ) { - $size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp); - $view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp); + if ($timestamp) { + $size += $view->filesize('/files_trashbin/versions/' . $filename . '.v' . $v . '.d' . $timestamp); + $view->unlink('/files_trashbin/versions/' . $filename . '.v' . $v . '.d' . $timestamp); } else { - $size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v); - $view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v); + $size += $view->filesize('/files_trashbin/versions/' . $filename . '.v' . $v); + $view->unlink('/files_trashbin/versions/' . $filename . '.v' . $v); } } } @@ -553,10 +555,10 @@ class Trashbin { if ($view->is_dir('/files_trashbin/files/' . $file)) { $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/' . $filename); - $sharekeys = \OC\Files\Filesystem::normalizePath('files_trashbin/share-keys/' . $filename); + $sharekeys = \OC\Files\Filesystem::normalizePath('files_trashbin/share-keys/' . $filename); } else { $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/' . $filename . '.key'); - $sharekeys = \OC\Files\Filesystem::normalizePath('files_trashbin/share-keys/' . $filename . '.' . $user . '.shareKey'); + $sharekeys = \OC\Files\Filesystem::normalizePath('files_trashbin/share-keys/' . $filename . '.' . $user . '.shareKey'); } if ($timestamp) { $keyfile .= '.d' . $timestamp; @@ -583,17 +585,17 @@ class Trashbin { * @param $timestamp of deletion time * @return true if file exists, otherwise false */ - public static function file_exists($filename, $timestamp=null) { + public static function file_exists($filename, $timestamp = null) { $user = \OCP\User::getUser(); - $view = new \OC\Files\View('/'.$user); + $view = new \OC\Files\View('/' . $user); if ($timestamp) { - $filename = $filename.'.d'.$timestamp; + $filename = $filename . '.d' . $timestamp; } else { $filename = $filename; } - $target = \OC\Files\Filesystem::normalizePath('files_trashbin/files/'.$filename); + $target = \OC\Files\Filesystem::normalizePath('files_trashbin/files/' . $filename); return $view->file_exists($target); } @@ -623,11 +625,11 @@ class Trashbin { $softQuota = true; $user = \OCP\User::getUser(); $quota = \OC_Preferences::getValue($user, 'files', 'quota'); - $view = new \OC\Files\View('/'.$user); - if ( $quota === null || $quota === 'default') { + $view = new \OC\Files\View('/' . $user); + if ($quota === null || $quota === 'default') { $quota = \OC_Appconfig::getValue('files', 'default_quota'); } - if ( $quota === null || $quota === 'none' ) { + if ($quota === null || $quota === 'none') { $quota = \OC\Files\Filesystem::free_space('/'); $softQuota = false; } else { @@ -638,11 +640,11 @@ class Trashbin { // subtract size of files and current trash bin size from quota if ($softQuota) { $rootInfo = $view->getFileInfo('/files/'); - $free = $quota-$rootInfo['size']; // remaining free space for user - if ( $free > 0 ) { + $free = $quota - $rootInfo['size']; // remaining free space for user + if ($free > 0) { $availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $trashbinSize; // how much space can be used for versions } else { - $availableSpace = $free-$trashbinSize; + $availableSpace = $free - $trashbinSize; } } else { $availableSpace = $quota; @@ -658,43 +660,40 @@ class Trashbin { private static function expire($trashbinSize) { $user = \OCP\User::getUser(); - $view = new \OC\Files\View('/'.$user); + $view = new \OC\Files\View('/' . $user); $availableSpace = self::calculateFreeSpace($trashbinSize); $size = 0; $query = \OC_DB::prepare('SELECT `location`,`type`,`id`,`timestamp` FROM `*PREFIX*files_trash` WHERE `user`=?'); $result = $query->execute(array($user))->fetchAll(); - $retention_obligation = \OC_Config::getValue('trashbin_retention_obligation', - self::DEFAULT_RETENTION_OBLIGATION); + $retention_obligation = \OC_Config::getValue('trashbin_retention_obligation', self::DEFAULT_RETENTION_OBLIGATION); $limit = time() - ($retention_obligation * 86400); - foreach ( $result as $r ) { + foreach ($result as $r) { $timestamp = $r['timestamp']; $filename = $r['id']; - if ( $r['timestamp'] < $limit ) { + if ($r['timestamp'] < $limit) { $size += self::delete($filename, $timestamp); - \OC_Log::write('files_trashbin', 'remove "'.$filename.'" fom trash bin because it is older than '.$retention_obligation, \OC_log::INFO); + \OC_Log::write('files_trashbin', 'remove "' . $filename . '" fom trash bin because it is older than ' . $retention_obligation, \OC_log::INFO); } } $availableSpace = $availableSpace + $size; // if size limit for trash bin reached, delete oldest files in trash bin if ($availableSpace < 0) { $query = \OC_DB::prepare('SELECT `location`,`type`,`id`,`timestamp` FROM `*PREFIX*files_trash`' - .' WHERE `user`=? ORDER BY `timestamp` ASC'); + . ' WHERE `user`=? ORDER BY `timestamp` ASC'); $result = $query->execute(array($user))->fetchAll(); $length = count($result); $i = 0; - while ( $i < $length && $availableSpace < 0 ) { + while ($i < $length && $availableSpace < 0) { $tmp = self::delete($result[$i]['id'], $result[$i]['timestamp']); - \OC_Log::write('files_trashbin', 'remove "'.$result[$i]['id'].'" ('.$tmp.'B) to meet the limit of trash bin size (50% of available quota)', \OC_log::INFO); + \OC_Log::write('files_trashbin', 'remove "' . $result[$i]['id'] . '" (' . $tmp . 'B) to meet the limit of trash bin size (50% of available quota)', \OC_log::INFO); $availableSpace += $tmp; $size += $tmp; $i++; } - - } return $size; @@ -707,25 +706,25 @@ class Trashbin { * @param $destination destination path relative to the users root directoy * @param $view file view for the users root directory */ - private static function copy_recursive( $source, $destination, $view ) { + private static function copy_recursive($source, $destination, $view) { $size = 0; - if ( $view->is_dir( 'files'.$source ) ) { - $view->mkdir( $destination ); - $view->touch($destination, $view->filemtime('files'.$source)); - foreach ( \OC_Files::getDirectoryContent($source) as $i ) { - $pathDir = $source.'/'.$i['name']; - if ( $view->is_dir('files'.$pathDir) ) { - $size += self::copy_recursive($pathDir, $destination.'/'.$i['name'], $view); + if ($view->is_dir('files' . $source)) { + $view->mkdir($destination); + $view->touch($destination, $view->filemtime('files' . $source)); + foreach (\OC_Files::getDirectoryContent($source) as $i) { + $pathDir = $source . '/' . $i['name']; + if ($view->is_dir('files' . $pathDir)) { + $size += self::copy_recursive($pathDir, $destination . '/' . $i['name'], $view); } else { - $size += $view->filesize('files'.$pathDir); - $view->copy( 'files'.$pathDir, $destination . '/' . $i['name'] ); - $view->touch($destination . '/' . $i['name'], $view->filemtime('files'.$pathDir)); + $size += $view->filesize('files' . $pathDir); + $view->copy('files' . $pathDir, $destination . '/' . $i['name']); + $view->touch($destination . '/' . $i['name'], $view->filemtime('files' . $pathDir)); } } } else { - $size += $view->filesize('files'.$source); - $view->copy( 'files'.$source, $destination ); - $view->touch($destination, $view->filemtime('files'.$source)); + $size += $view->filesize('files' . $source); + $view->copy('files' . $source, $destination); + $view->touch($destination, $view->filemtime('files' . $source)); } return $size; } @@ -736,24 +735,25 @@ class Trashbin { * @param $timestamp timestamp when the file was deleted */ private static function getVersionsFromTrash($filename, $timestamp) { - $view = new \OC\Files\View('/'.\OCP\User::getUser().'/files_trashbin/versions'); - $versionsName = $view->getLocalFile($filename); + $view = new \OC\Files\View('/' . \OCP\User::getUser() . '/files_trashbin/versions'); + $versionsName = $view->getLocalFile($filename) . '.v'; + $escapedVersionsName = preg_replace('/(\*|\?|\[)/', '[$1]', $versionsName); $versions = array(); - if ($timestamp ) { + if ($timestamp) { // fetch for old versions - $matches = glob( $versionsName.'.v*.d'.$timestamp ); - $offset = -strlen($timestamp)-2; + $matches = glob($escapedVersionsName . '*.d' . $timestamp); + $offset = -strlen($timestamp) - 2; } else { - $matches = glob( $versionsName.'.v*' ); + $matches = glob($escapedVersionsName . '*'); } - foreach( $matches as $ma ) { - if ( $timestamp ) { - $parts = explode( '.v', substr($ma, 0, $offset) ); - $versions[] = ( end( $parts ) ); + foreach ($matches as $ma) { + if ($timestamp) { + $parts = explode('.v', substr($ma, 0, $offset)); + $versions[] = ( end($parts) ); } else { - $parts = explode( '.v', $ma ); - $versions[] = ( end( $parts ) ); + $parts = explode('.v', $ma); + $versions[] = ( end($parts) ); } } return $versions; @@ -768,12 +768,12 @@ class Trashbin { */ private static function getUniqueExtension($location, $filename, $view) { $ext = ''; - if ( $view->file_exists('files'.$location.'/'.$filename) ) { + if ($view->file_exists('files' . $location . '/' . $filename)) { $tmpext = '.restored'; $ext = $tmpext; $i = 1; - while ( $view->file_exists('files'.$location.'/'.$filename.$ext) ) { - $ext = $tmpext.$i; + while ($view->file_exists('files' . $location . '/' . $filename . $ext)) { + $ext = $tmpext . $i; $i++; } } @@ -786,17 +786,16 @@ class Trashbin { * @return size of the folder */ private static function calculateSize($view) { - $root = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath(''); + $root = \OCP\Config::getSystemValue('datadirectory') . $view->getAbsolutePath(''); if (!file_exists($root)) { return 0; } - $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($root), - \RecursiveIteratorIterator::CHILD_FIRST); + $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($root), \RecursiveIteratorIterator::CHILD_FIRST); $size = 0; foreach ($iterator as $path) { - $relpath = substr($path, strlen($root)-1); - if ( !$view->is_dir($relpath) ) { + $relpath = substr($path, strlen($root) - 1); + if (!$view->is_dir($relpath)) { $size += $view->filesize($relpath); } } @@ -818,7 +817,7 @@ class Trashbin { } return false; } - + /** * write to the database how much space is in use for the trash bin * @@ -826,9 +825,9 @@ class Trashbin { * @param $size size of the trash bin */ private static function setTrashbinSize($user, $size) { - if ( self::getTrashbinSize($user) === false) { + if (self::getTrashbinSize($user) === false) { $query = \OC_DB::prepare('INSERT INTO `*PREFIX*files_trashsize` (`size`, `user`) VALUES (?, ?)'); - }else { + } else { $query = \OC_DB::prepare('UPDATE `*PREFIX*files_trashsize` SET `size`=? WHERE `user`=?'); } $query->execute(array($size, $user)); @@ -843,4 +842,5 @@ class Trashbin { //Listen to delete user signal \OCP\Util::connectHook('OC_User', 'pre_deleteUser', "OCA\Files_Trashbin\Hooks", "deleteUser_hook"); } + } diff --git a/apps/files_versions/l10n/he.php b/apps/files_versions/l10n/he.php index ad2e261d53..577389eb08 100644 --- a/apps/files_versions/l10n/he.php +++ b/apps/files_versions/l10n/he.php @@ -1,3 +1,11 @@ "גרסאות" +"Could not revert: %s" => "לא ניתן להחזיר: %s", +"success" => "הושלם", +"File %s was reverted to version %s" => "הקובץ %s הוחזר לגרסה %s", +"failure" => "נכשל", +"File %s could not be reverted to version %s" => "לא ניתן להחזיר את הקובץ %s לגרסה %s", +"No old versions available" => "אין גרסאות ישנות זמינות", +"No path specified" => "לא צוין נתיב", +"Versions" => "גרסאות", +"Revert a file to a previous version by clicking on its revert button" => "ניתן להחזיר קובץ לגרסה קודמת על ידי לחיצה על לחצן ההחזרה שלו" ); diff --git a/apps/files_versions/l10n/ko.php b/apps/files_versions/l10n/ko.php index 994144f39e..df34e4681b 100644 --- a/apps/files_versions/l10n/ko.php +++ b/apps/files_versions/l10n/ko.php @@ -1,11 +1,11 @@ "되돌릴 수 없습니다: %s", -"success" => "완료", -"File %s was reverted to version %s" => "파일 %s를 버전 %s로 변경하였습니다.", +"success" => "성공", +"File %s was reverted to version %s" => "파일 %s을(를) 버전 %s(으)로 되돌림", "failure" => "실패", -"File %s could not be reverted to version %s" => "파일 %s를 버전 %s로 되돌리지 못했습니다.", -"No old versions available" => "오래된 버전을 사용할 수 없습니다", -"No path specified" => "경로를 알수 없습니다.", -"Versions" => "버젼", -"Revert a file to a previous version by clicking on its revert button" => "변경 버튼을 클릭하여 이전 버전의 파일로 변경할 수 있습니다." +"File %s could not be reverted to version %s" => "파일 %s을(를) 버전 %s(으)로 되돌리지 못했음", +"No old versions available" => "오래된 버전을 사용할 수 없음", +"No path specified" => "경로가 지정되지 않았음", +"Versions" => "버전", +"Revert a file to a previous version by clicking on its revert button" => "변경 단추를 눌러 이전 버전의 파일로 되돌릴 수 있습니다" ); diff --git a/apps/files_versions/l10n/sv.php b/apps/files_versions/l10n/sv.php index bcd21bc599..8317097630 100644 --- a/apps/files_versions/l10n/sv.php +++ b/apps/files_versions/l10n/sv.php @@ -7,5 +7,5 @@ "No old versions available" => "Inga gamla versioner finns tillgängliga", "No path specified" => "Ingen sökväg angiven", "Versions" => "Versioner", -"Revert a file to a previous version by clicking on its revert button" => "Återställ en fil till en tidigare version genom att klicka på knappen" +"Revert a file to a previous version by clicking on its revert button" => "Återställ en fil till en tidigare version genom att klicka på återställningsknappen" ); diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 4beb9e0fe5..2f8262475b 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -241,11 +241,12 @@ class Storage { public static function getVersions($uid, $filename, $count = 0 ) { if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { $versions_fileview = new \OC\Files\View('/' . $uid . '/files_versions'); - $versionsName = $versions_fileview->getLocalFile($filename); - + $versionsName = $versions_fileview->getLocalFile($filename).'.v'; + $escapedVersionName = preg_replace('/(\*|\?|\[)/', '[$1]', $versionsName); + $versions = array(); // fetch for old versions - $matches = glob(preg_quote($versionsName).'.v*' ); + $matches = glob($escapedVersionName.'*'); if ( !$matches ) { return $versions; diff --git a/apps/user_ldap/l10n/cs_CZ.php b/apps/user_ldap/l10n/cs_CZ.php index dd7373eb69..65c7c76b5d 100644 --- a/apps/user_ldap/l10n/cs_CZ.php +++ b/apps/user_ldap/l10n/cs_CZ.php @@ -1,4 +1,5 @@ "Selhalo zrušení mapování.", "Failed to delete the server configuration" => "Selhalo smazání nastavení serveru", "The configuration is valid and the connection could be established!" => "Nastavení je v pořádku a spojení bylo navázáno.", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte, prosím, nastavení serveru a přihlašovací údaje.", @@ -7,6 +8,7 @@ "Take over settings from recent server configuration?" => "Převzít nastavení z nedávného nastavení serveru?", "Keep settings?" => "Ponechat nastavení?", "Cannot add server configuration" => "Nelze přidat nastavení serveru", +"mappings cleared" => "mapování zrušeno", "Success" => "Úspěch", "Error" => "Chyba", "Connection test succeeded" => "Test spojení byl úspěšný", @@ -72,6 +74,13 @@ "Email Field" => "Pole e-mailu", "User Home Folder Naming Rule" => "Pravidlo pojmenování domovské složky uživatele", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Ponechte prázdné pro uživatelské jméno (výchozí). Jinak uveďte LDAP/AD parametr.", +"Internal Username" => "Interní uživatelské jméno", +"Internal Username Attribute:" => "Atribut interního uživatelského jména:", +"Override UUID detection" => "Nastavit ručně UUID atribut", +"UUID Attribute:" => "Atribut UUID:", +"Username-LDAP User Mapping" => "Mapování uživatelských jmen z LDAPu", +"Clear Username-LDAP User Mapping" => "Zrušit mapování uživatelských jmen LDAPu", +"Clear Groupname-LDAP Group Mapping" => "Zrušit mapování názvů skupin LDAPu", "Test Configuration" => "Vyzkoušet nastavení", "Help" => "Nápověda" ); diff --git a/apps/user_ldap/l10n/es_AR.php b/apps/user_ldap/l10n/es_AR.php index 98fb32b1d2..6925ea89a0 100644 --- a/apps/user_ldap/l10n/es_AR.php +++ b/apps/user_ldap/l10n/es_AR.php @@ -1,12 +1,14 @@ "Hubo un error al borrar las asignaciones.", "Failed to delete the server configuration" => "Fallo al borrar la configuración del servidor", -"The configuration is valid and the connection could be established!" => "La configuración es valida y la conexión pudo ser establecida.", +"The configuration is valid and the connection could be established!" => "La configuración es válida y la conexión pudo ser establecida.", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "La configuración es válida, pero el enlace falló. Por favor, comprobá la configuración del servidor y las credenciales.", "The configuration is invalid. Please look in the ownCloud log for further details." => "La configuración no es válida. Por favor, buscá en el log de ownCloud más detalles.", "Deletion failed" => "Error al borrar", "Take over settings from recent server configuration?" => "Tomar los valores de la anterior configuración de servidor?", "Keep settings?" => "¿Mantener preferencias?", "Cannot add server configuration" => "No se pudo añadir la configuración del servidor", +"mappings cleared" => "Asignaciones borradas", "Success" => "Éxito", "Error" => "Error", "Connection test succeeded" => "El este de conexión ha sido completado satisfactoriamente", @@ -72,6 +74,16 @@ "Email Field" => "Campo de e-mail", "User Home Folder Naming Rule" => "Regla de nombre de los directorios de usuario", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Vacío para el nombre de usuario (por defecto). En otro caso, especificá un atributo LDAP/AD.", +"Internal Username" => "Nombre interno de usuario", +"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder in ownCloud. It is also a port of remote URLs, for instance for all *DAV services. With this setting, the default behaviour can be overriden. To achieve a similar behaviour as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users." => "Por defecto, el nombre interno de usuario va a ser creado a partir del atributo UUID. Esto asegura que el nombre de usuario es único y los caracteres no necesitan ser convertidos. Para el nombre de usuario interno sólo se pueden usar estos caracteres: [a-zA-Z0-9_.@-]. Otros caracteres son sustituidos por su correspondiente en ASCII o simplemente omitidos. Si ocurrieran colisiones, un número será añadido o incrementado. El nombre interno de usuario se usa para identificar un usuario internamente. Es también el nombre por defecto para el directorio personal del usuario in ownCloud. También es un puerto de URLs remotas, por ejemplo, para todos los servicios *DAV. Con esta configuración el comportamiento por defecto puede ser cambiado. Para conseguir un comportamiento similar al anterior a ownCloud 5, ingresá el atributo del nombre en pantalla del usuario en el siguiente campo. Dejalo vacío para el comportamiento por defecto. Los cambios solo tendrán efecto para los nuevos usuarios LDAP.", +"Internal Username Attribute:" => "Atributo Nombre Interno de usuario:", +"Override UUID detection" => "Sobrescribir la detección UUID", +"By default, ownCloud autodetects the UUID attribute. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users and groups." => "Por defecto, ownCloud detecta automáticamente el atributo UUID. El atributo UUID se usa para identificar indudablemente usuarios y grupos LDAP. Además, el nombre de usuario interno va a ser creado en base al UUID, si no ha sido especificado otro comportamiento arriba. Podés sobrescribir la configuración y pasar un atributo de tu elección. Tenés que asegurarte de que el atributo de tu elección sea accesible por los usuarios y grupos y ser único. Dejalo en blanco para usar el comportamiento por defecto. Los cambios tendrán efecto sólo en los nuevos usuarios y grupos de LDAP.", +"UUID Attribute:" => "Atributo UUID:", +"Username-LDAP User Mapping" => "Asignación del Nombre de usuario de un usuario LDAP", +"ownCloud uses usernames to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have a internal username. This requires a mapping from ownCloud username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found by ownCloud. The internal ownCloud name is used all over in ownCloud. Clearing the Mappings will have leftovers everywhere. Clearing the Mappings is not configuration sensitive, it affects all LDAP configurations! Do never clear the mappings in a production environment. Only clear mappings in a testing or experimental stage." => "ownCloud usa nombres de usuario para almacenar y asignar (meta) datos. Con el fin de identificar con precisión y reconocer usuarios, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una asignación de nombre de usuario de ownCloud a usuario LDAP. El nombre de usuario creado se asigna al UUID del usuario LDAP. Además el DN se almacena en caché principalmente para reducir la interacción de LDAP, pero no se utiliza para la identificación. Si la DN cambia, los cambios serán encontrados por ownCloud. El nombre interno de ownCloud se utiliza para todo en ownCloud. Borrar las asignaciones dejará restos en distintos lugares. Borrar las asignaciones no depende de la configuración, ¡afecta a todas las configuraciones de LDAP! No borrar nunca las asignaciones en un entorno de producción. Sólo borrar asignaciones en una situación de prueba o experimental.", +"Clear Username-LDAP User Mapping" => "Borrar la asignación de los Nombres de usuario de los usuarios LDAP", +"Clear Groupname-LDAP Group Mapping" => "Borrar la asignación de los Nombres de grupo de los grupos de LDAP", "Test Configuration" => "Probar configuración", "Help" => "Ayuda" ); diff --git a/apps/user_ldap/l10n/is.php b/apps/user_ldap/l10n/is.php index dadac9eeda..6ea474f56d 100644 --- a/apps/user_ldap/l10n/is.php +++ b/apps/user_ldap/l10n/is.php @@ -1,6 +1,8 @@ "Geyma stillingar ?", "Error" => "Villa", "Host" => "Netþjónn", "Password" => "Lykilorð", +"Test Configuration" => "Prúfa uppsetningu", "Help" => "Hjálp" ); diff --git a/apps/user_ldap/l10n/pl.php b/apps/user_ldap/l10n/pl.php index 7edfe0919e..5495ab9940 100644 --- a/apps/user_ldap/l10n/pl.php +++ b/apps/user_ldap/l10n/pl.php @@ -75,6 +75,7 @@ "User Home Folder Naming Rule" => "Reguły nazewnictwa folderu domowego użytkownika", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Pozostaw puste dla user name (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.", "Internal Username" => "Wewnętrzna nazwa użytkownika", +"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder in ownCloud. It is also a port of remote URLs, for instance for all *DAV services. With this setting, the default behaviour can be overriden. To achieve a similar behaviour as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users." => "Domyślnie, wewnętrzna nazwa użytkownika zostanie utworzona z atrybutu UUID, ang. Universally unique identifier - Unikalny identyfikator użytkownika. To daje pewność, że nazwa użytkownika jest niepowtarzalna a znaki nie muszą być konwertowane. Wewnętrzna nazwa użytkownika dopuszcza jedynie znaki: [ a-zA-Z0-9_.@- ]. Pozostałe znaki zamieniane są na ich odpowiedniki ASCII lub po prostu pomijane. W przypadku, gdy nazwa się powtarza na końcu dodawana / zwiększana jest cyfra. Wewnętrzna nazwa użytkownika służy do wewnętrznej identyfikacji użytkownika. Jest to również domyślna nazwa głównego folderu w ownCloud. Jest to również klucz zdalnego URL, na przykład dla wszystkich usług *DAV. Dzięki temu ustawieniu można modyfikować domyślne zachowania. Aby osiągnąć podobny efekt jak w ownCloud 5 wpisz atrybut nazwy użytkownika w poniższym polu. Pozostaw puste dla domyślnego zachowania. Zmiany będą miały wpływ tylko na nowo stworzonych (dodane) użytkowników LDAP.", "Internal Username Attribute:" => "Wewnętrzny atrybut nazwy uzżytkownika:", "Override UUID detection" => "Zastąp wykrywanie UUID", "UUID Attribute:" => "Atrybuty UUID:", diff --git a/apps/user_ldap/l10n/pt_PT.php b/apps/user_ldap/l10n/pt_PT.php index ed1e0f376d..308fd34760 100644 --- a/apps/user_ldap/l10n/pt_PT.php +++ b/apps/user_ldap/l10n/pt_PT.php @@ -1,4 +1,5 @@ "Falhou a limpar os mapas", "Failed to delete the server configuration" => "Erro ao eliminar as configurações do servidor", "The configuration is valid and the connection could be established!" => "A configuração está correcta e foi possível estabelecer a ligação!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "A configuração está correcta, mas não foi possível estabelecer o \"laço\", por favor, verifique as configurações do servidor e as credenciais.", @@ -7,6 +8,7 @@ "Take over settings from recent server configuration?" => "Assumir as configurações da configuração do servidor mais recente?", "Keep settings?" => "Manter as definições?", "Cannot add server configuration" => "Não foi possível adicionar as configurações do servidor.", +"mappings cleared" => "Mapas limpos", "Success" => "Sucesso", "Error" => "Erro", "Connection test succeeded" => "Teste de conecção passado com sucesso.", @@ -72,6 +74,13 @@ "Email Field" => "Campo de email", "User Home Folder Naming Rule" => "Regra da pasta inicial do utilizador", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Deixe vazio para nome de utilizador (padrão). De outro modo, especifique um atributo LDAP/AD.", +"Internal Username" => "Nome de utilizador interno", +"Internal Username Attribute:" => "Atributo do nome de utilizador interno", +"Override UUID detection" => "Passar a detecção do UUID", +"UUID Attribute:" => "Atributo UUID:", +"Username-LDAP User Mapping" => "Mapeamento do utilizador LDAP", +"Clear Username-LDAP User Mapping" => "Limpar mapeamento do utilizador-LDAP", +"Clear Groupname-LDAP Group Mapping" => "Limpar o mapeamento do nome de grupo LDAP", "Test Configuration" => "Testar a configuração", "Help" => "Ajuda" ); diff --git a/apps/user_ldap/l10n/ru.php b/apps/user_ldap/l10n/ru.php index eed6d373b9..d88b20dc46 100644 --- a/apps/user_ldap/l10n/ru.php +++ b/apps/user_ldap/l10n/ru.php @@ -1,4 +1,5 @@ "Не удалось очистить соотвествия.", "Failed to delete the server configuration" => "Не удалось удалить конфигурацию сервера", "The configuration is valid and the connection could be established!" => "Конфигурация правильная и подключение может быть установлено!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Конфигурация верна, но операция подключения завершилась неудачно. Пожалуйста, проверьте настройки сервера и учетные данные.", @@ -7,6 +8,7 @@ "Take over settings from recent server configuration?" => "Принять настройки из последней конфигурации сервера?", "Keep settings?" => "Сохранить настройки?", "Cannot add server configuration" => "Не получилось добавить конфигурацию сервера", +"mappings cleared" => "Соответствия очищены", "Success" => "Успешно", "Error" => "Ошибка", "Connection test succeeded" => "Проверка соединения удалась", @@ -72,6 +74,16 @@ "Email Field" => "Поле адресса эллектронной почты", "User Home Folder Naming Rule" => "Правило именования Домашней Папки Пользователя", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Оставьте имя пользователя пустым (по умолчанию). Иначе укажите атрибут LDAP/AD.", +"Internal Username" => "Внутреннее имя пользователя", +"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder in ownCloud. It is also a port of remote URLs, for instance for all *DAV services. With this setting, the default behaviour can be overriden. To achieve a similar behaviour as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users." => "По-умолчанию внутреннее имя пользователя будет создано из атрибута UUID. Это необходимо для того, чтобы имя пользователя было уникальным и не содержало в себе запрещенных символов. Внутреннее имя пользователя может состоять только из следующих символов: [ a-zA-Z0-9_.@- ]. Остальные символы замещаются соответствиями из таблицы ASCII или же просто пропускаются. При совпадении к имени будет добавлено число. Внутреннее имя пользователя используется для внутренней идентификации пользователя. Также оно является именем по-умолчанию для папки пользователя в ownCloud. Оно также портом для удаленных ссылок, к примеру, для всех сервисов *DAV. С помощию данной настройки можно изменить поведение по-умолчанию. Чтобы достичь поведения, как было настроено до изменения, ownCloud 5 выводит атрибут имени пользователя в этом поле. Оставьте его пустым для режима по-умолчанию. Изменения будут иметь эффект только для новых подключенных (добавленных) пользователей LDAP.", +"Internal Username Attribute:" => "Аттрибут для внутреннего имени:", +"Override UUID detection" => "Переопределить нахождение UUID", +"By default, ownCloud autodetects the UUID attribute. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users and groups." => "По-умолчанию, ownCloud определяет атрибут UUID автоматически. Этот атрибут используется для того, чтобы достоверно индентифицировать пользователей и группы LDAP. Также, на основании атрибута UUID создается внутреннее имя пользователя, если выше не указано иначе. Вы можете переопределить эту настройку и указать свой атрибут по выбору. Вы должны удостовериться, что выбранный вами атрибут может быть выбран для пользователей и групп, а также то, что он уникальный. Оставьте поле пустым для поведения по-умолчанию. Изменения вступят в силу только для новых подключенных (добавленных) пользователей и групп LDAP.", +"UUID Attribute:" => "Аттрибут для UUID:", +"Username-LDAP User Mapping" => "Соответствия Имя-Пользователь LDAP", +"ownCloud uses usernames to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have a internal username. This requires a mapping from ownCloud username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found by ownCloud. The internal ownCloud name is used all over in ownCloud. Clearing the Mappings will have leftovers everywhere. Clearing the Mappings is not configuration sensitive, it affects all LDAP configurations! Do never clear the mappings in a production environment. Only clear mappings in a testing or experimental stage." => "ownCloud использует имена пользователей для хранения и назначения метаданных. Для точной идентификации и распознавания пользователей, каждый пользователь LDAP будет иметь свое внутреннее имя пользователя. Это требует наличия соответствия имени пользователя ownCloud к пользователю LDAP. При создании имя пользователя назначается идентификатору UUID пользователя LDAP. Помимо этого кэшируется доменное имя (DN) для снижения взаимодействия LDAP, однако оно не используется для идентификации. Если доменное имя было изменено, об этом станет известно ownCloud. Внутреннее имя ownCloud используется повсеместно в ownCloud. При очистке соответствий повсюду будут оставаться \"хвосты\". Очистка соответствий не привязана к конкретной конфигурации, она влияет на все конфигурации LDAP! Никогда не очищайте соответствия в рабочем окружении. Очищайте соответствия только во время тестов или в экспериментальных конфигурациях.", +"Clear Username-LDAP User Mapping" => "Очистить соответствия Имя-Пользователь LDAP", +"Clear Groupname-LDAP Group Mapping" => "Очистить соответствия Группа-Группа LDAP", "Test Configuration" => "Тестовая конфигурация", "Help" => "Помощь" ); diff --git a/apps/user_ldap/l10n/sk_SK.php b/apps/user_ldap/l10n/sk_SK.php index e36a158936..fe1e14ea6f 100644 --- a/apps/user_ldap/l10n/sk_SK.php +++ b/apps/user_ldap/l10n/sk_SK.php @@ -79,6 +79,9 @@ "Internal Username Attribute:" => "Atribút interného používateľského mena:", "Override UUID detection" => "Prepísať UUID detekciu", "UUID Attribute:" => "UUID atribút:", +"Username-LDAP User Mapping" => "Mapovanie názvov LDAP používateľských mien", +"Clear Username-LDAP User Mapping" => "Zrušiť mapovanie LDAP používateľských mien", +"Clear Groupname-LDAP Group Mapping" => "Zrušiť mapovanie názvov LDAP skupín", "Test Configuration" => "Test nastavenia", "Help" => "Pomoc" ); diff --git a/apps/user_ldap/l10n/sv.php b/apps/user_ldap/l10n/sv.php index eb30bd22f0..6ab8a9e5a6 100644 --- a/apps/user_ldap/l10n/sv.php +++ b/apps/user_ldap/l10n/sv.php @@ -1,4 +1,5 @@ "Fel vid rensning av mappningar", "Failed to delete the server configuration" => "Misslyckades med att radera serverinställningen", "The configuration is valid and the connection could be established!" => "Inställningen är giltig och anslutningen kunde upprättas!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.", @@ -7,6 +8,7 @@ "Take over settings from recent server configuration?" => "Ta över inställningar från tidigare serverkonfiguration?", "Keep settings?" => "Behåll inställningarna?", "Cannot add server configuration" => "Kunde inte lägga till serverinställning", +"mappings cleared" => "mappningar rensade", "Success" => "Lyckat", "Error" => "Fel", "Connection test succeeded" => "Anslutningstestet lyckades", @@ -72,6 +74,16 @@ "Email Field" => "E-postfält", "User Home Folder Naming Rule" => "Namnregel för hemkatalog", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Lämnas tomt för användarnamn (standard). Ange annars ett LDAP/AD-attribut.", +"Internal Username" => "Internt Användarnamn", +"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder in ownCloud. It is also a port of remote URLs, for instance for all *DAV services. With this setting, the default behaviour can be overriden. To achieve a similar behaviour as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users." => "Som standard skapas det interna användarnamnet från UUID-attributet. Det säkerställer att användarnamnet är unikt och tecken inte behöver konverteras. Det interna användarnamnet har restriktionerna att endast följande tecken är tillåtna: [ a-zA-Z0-9_.@- ]. Andra tecken blir ersatta av deras motsvarighet i ASCII eller utelämnas helt. En siffra kommer att läggas till eller ökas på vid en kollision. Det interna användarnamnet används för att identifiera användaren internt. Det är även förvalt som användarens användarnamn i ownCloud. Det är även en port för fjärråtkomst, t.ex. för alla *DAV-tjänster. Med denna inställning kan det förvalda beteendet åsidosättas. För att uppnå ett liknande beteende som innan ownCloud 5, ange attributet för användarens visningsnamn i detta fält. Lämna det tomt för förvalt beteende. Ändringarna kommer endast att påverka nyligen mappade (tillagda) LDAP-användare", +"Internal Username Attribute:" => "Internt Användarnamn Attribut:", +"Override UUID detection" => "Åsidosätt UUID detektion", +"By default, ownCloud autodetects the UUID attribute. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users and groups." => "Som standard upptäcker ownCloud automatiskt UUID-attributet. Det UUID-attributet används för att utan tvivel identifiera LDAP-användare och grupper. Dessutom kommer interna användarnamn skapas baserat på detta UUID, om inte annat anges ovan. Du kan åsidosätta inställningen och passera ett attribut som du själv väljer. Du måste se till att attributet som du väljer kan hämtas för både användare och grupper och att det är unikt. Lämna det tomt för standard beteende. Förändringar kommer endast att påverka nyligen mappade (tillagda) LDAP-användare och grupper.", +"UUID Attribute:" => "UUID Attribut:", +"Username-LDAP User Mapping" => "Användarnamn-LDAP User Mapping", +"ownCloud uses usernames to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have a internal username. This requires a mapping from ownCloud username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found by ownCloud. The internal ownCloud name is used all over in ownCloud. Clearing the Mappings will have leftovers everywhere. Clearing the Mappings is not configuration sensitive, it affects all LDAP configurations! Do never clear the mappings in a production environment. Only clear mappings in a testing or experimental stage." => "ownCloud använder sig av användarnamn för att lagra och tilldela (meta) data. För att exakt kunna identifiera och känna igen användare, kommer varje LDAP-användare ha ett internt användarnamn. Detta kräver en mappning från ownCloud-användarnamn till LDAP-användare. Det skapade användarnamnet mappas till UUID för LDAP-användaren. Dessutom cachas DN samt minska LDAP-interaktionen, men den används inte för identifiering. Om DN förändras, kommer förändringarna hittas av ownCloud. Det interna ownCloud-namnet används överallt i ownCloud. Om du rensar/raderar mappningarna kommer att lämna referenser överallt i systemet. Men den är inte konfigurationskänslig, den påverkar alla LDAP-konfigurationer! Rensa/radera aldrig mappningarna i en produktionsmiljö. Utan gör detta endast på i testmiljö!", +"Clear Username-LDAP User Mapping" => "Rensa Användarnamn-LDAP User Mapping", +"Clear Groupname-LDAP Group Mapping" => "Rensa Gruppnamn-LDAP Group Mapping", "Test Configuration" => "Testa konfigurationen", "Help" => "Hjälp" ); diff --git a/apps/user_ldap/l10n/zh_CN.php b/apps/user_ldap/l10n/zh_CN.php index 7b8389227a..675fe4dfc7 100644 --- a/apps/user_ldap/l10n/zh_CN.php +++ b/apps/user_ldap/l10n/zh_CN.php @@ -1,4 +1,5 @@ "清除映射失败。", "Failed to delete the server configuration" => "未能删除服务器配置", "The configuration is valid and the connection could be established!" => "配置有效,能够建立连接!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "配置有效但绑定失败。请检查服务器设置和认证信息。", @@ -7,6 +8,7 @@ "Take over settings from recent server configuration?" => "从近期的服务器配置中导入设置?", "Keep settings?" => "保留设置吗?", "Cannot add server configuration" => "无法添加服务器配置", +"mappings cleared" => "清除映射", "Success" => "成功", "Error" => "错误", "Connection test succeeded" => "连接测试成功", @@ -72,6 +74,16 @@ "Email Field" => "电邮字段", "User Home Folder Naming Rule" => "用户主目录命名规则", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "将用户名称留空(默认)。否则指定一个LDAP/AD属性", +"Internal Username" => "内部用户名", +"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder in ownCloud. It is also a port of remote URLs, for instance for all *DAV services. With this setting, the default behaviour can be overriden. To achieve a similar behaviour as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users." => "默认情况下内部用户名具有唯一识别属性来确保用户名的唯一性和属性不用转换。内部用户名有严格的字符限制,只允许使用 [ a-zA-Z0-9_.@- ]。其他字符会被ASCII码取代或者被活力。当冲突时会增加或者减少一个数字。内部用户名被用于内部识别用户,同时也作为ownCloud中用户根文件夹的默认名。也作为远程URLs的一部分,比如为了所有的*DAV服务。在这种设置下,默认行为可以被超越。实现一个类似的行为,owncloud 5输入用户的显示名称属性在以下领域之前。让它空着的默认行为。更改只对新映射的影响(增加)的LDAP用户。", +"Internal Username Attribute:" => "内部用户名属性:", +"Override UUID detection" => "超越UUID检测", +"By default, ownCloud autodetects the UUID attribute. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users and groups." => "默认ownCloud自动检测UUID属性。UUID属性用来无误的识别LDAP用户和组。同时内部用户名也基于UUID创建,如果没有上述的指定。也可以超越设置直接指定一种属性。但一定要确保指定的属性取得的用户和组是唯一的。默认行为空。变更基于新映射(增加)LDAP用户和组才会生效。", +"UUID Attribute:" => "UUID属性:", +"Username-LDAP User Mapping" => "用户名-LDAP用户映射", +"ownCloud uses usernames to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have a internal username. This requires a mapping from ownCloud username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found by ownCloud. The internal ownCloud name is used all over in ownCloud. Clearing the Mappings will have leftovers everywhere. Clearing the Mappings is not configuration sensitive, it affects all LDAP configurations! Do never clear the mappings in a production environment. Only clear mappings in a testing or experimental stage." => "ownCloud使用用户名存储和分配数据(元)。为了准确地识别和确认用户,每个用户都有一个内部用户名。需要从ownCloud用户名映射到LDAP用户。创建的用户名映射到LDAP用户的UUID。此外,DN是缓存以及减少LDAP交互,但它不用于识别。如果DN变化,ownCloud也会变化。内部ownCloud名在ownCloud的各处使用。清除映射将一片混乱。清除映射不是常用的配置,它影响到所有LDAP配置!千万不要在正式环境中清除映射。只有在测试或试验阶段可以清除映射。", +"Clear Username-LDAP User Mapping" => "清除用户-LDAP用户映射", +"Clear Groupname-LDAP Group Mapping" => "清除组用户-LDAP级映射", "Test Configuration" => "测试配置", "Help" => "帮助" ); diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index 409f375879..31150a5bec 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -621,6 +621,10 @@ class Connection { if(empty($host)) { return false; } + if(strpos($host, '://') !== false) { + //ldap_connect ignores port paramater when URLs are passed + $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)) { diff --git a/apps/user_webdavauth/l10n/ar.php b/apps/user_webdavauth/l10n/ar.php index c17302f7bb..78b347e51f 100644 --- a/apps/user_webdavauth/l10n/ar.php +++ b/apps/user_webdavauth/l10n/ar.php @@ -1,5 +1,4 @@ "تأكد شخصية ال WebDAV", -"URL: http://" => "الرابط: 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 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." ); diff --git a/apps/user_webdavauth/l10n/bg_BG.php b/apps/user_webdavauth/l10n/bg_BG.php index a3bd703b25..61503db839 100644 --- a/apps/user_webdavauth/l10n/bg_BG.php +++ b/apps/user_webdavauth/l10n/bg_BG.php @@ -1,5 +1,4 @@ "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. " ); diff --git a/apps/user_webdavauth/l10n/ca.php b/apps/user_webdavauth/l10n/ca.php index 7ac540f213..339e4dbe68 100644 --- a/apps/user_webdavauth/l10n/ca.php +++ b/apps/user_webdavauth/l10n/ca.php @@ -1,5 +1,5 @@ "Autenticació WebDAV", -"URL: http://" => "URL: http://", +"URL: " => "URL:", "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 enviarà les credencials d'usuari a aquesta URL. Aquest endollable en comprova la resposta i interpretarà els codis d'estat 401 i 403 com a credencials no vàlides, i qualsevol altra resposta com a credencials vàlides." ); diff --git a/apps/user_webdavauth/l10n/cs_CZ.php b/apps/user_webdavauth/l10n/cs_CZ.php index 9bd4c96a2b..e1f8d76e16 100644 --- a/apps/user_webdavauth/l10n/cs_CZ.php +++ b/apps/user_webdavauth/l10n/cs_CZ.php @@ -1,5 +1,5 @@ "Ověření WebDAV", -"URL: http://" => "URL: http://", +"URL: " => "URL: ", "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 odešle uživatelské údaje na zadanou URL. Plugin zkontroluje odpověď a považuje návratovou hodnotu HTTP 401 a 403 za neplatné údaje a všechny ostatní hodnoty jako platné přihlašovací údaje." ); diff --git a/apps/user_webdavauth/l10n/da.php b/apps/user_webdavauth/l10n/da.php index b268d3e15d..0d1190ba22 100644 --- a/apps/user_webdavauth/l10n/da.php +++ b/apps/user_webdavauth/l10n/da.php @@ -1,5 +1,4 @@ "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/de.php b/apps/user_webdavauth/l10n/de.php index c86ff44e55..e2db395b1c 100644 --- a/apps/user_webdavauth/l10n/de.php +++ b/apps/user_webdavauth/l10n/de.php @@ -1,5 +1,4 @@ "WebDAV Authentifikation", -"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 sendet die Benutzerdaten an diese URL. Dieses Plugin prüft die Antwort und wird die Statuscodes 401 und 403 als ungültige Daten und alle anderen Antworten als gültige Daten interpretieren." ); diff --git a/apps/user_webdavauth/l10n/de_DE.php b/apps/user_webdavauth/l10n/de_DE.php index 1aecfd2996..21a886343f 100644 --- a/apps/user_webdavauth/l10n/de_DE.php +++ b/apps/user_webdavauth/l10n/de_DE.php @@ -1,5 +1,5 @@ "WebDAV-Authentifizierung", -"URL: http://" => "URL: http://", +"URL: " => "URL:", "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 sendet die Benutzerdaten an diese URL. Dieses Plugin prüft die Antwort und wird die Statuscodes 401 und 403 als ungültige Daten und alle anderen Antworten als gültige Daten interpretieren." ); diff --git a/apps/user_webdavauth/l10n/el.php b/apps/user_webdavauth/l10n/el.php index 951709c4d6..79bb1d13bf 100644 --- a/apps/user_webdavauth/l10n/el.php +++ b/apps/user_webdavauth/l10n/el.php @@ -1,5 +1,5 @@ "Αυθεντικοποίηση μέσω WebDAV ", -"URL: http://" => "URL: http://", +"URL: " => "URL:", "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. Αυτό το plugin ελέγχει την απάντηση και την μετατρέπει σε HTTP κωδικό κατάστασης 401 και 403 για μη έγκυρα, όλες οι υπόλοιπες απαντήσεις είναι έγκυρες." ); diff --git a/apps/user_webdavauth/l10n/eo.php b/apps/user_webdavauth/l10n/eo.php index d945f181e6..0e1fda7c4c 100644 --- a/apps/user_webdavauth/l10n/eo.php +++ b/apps/user_webdavauth/l10n/eo.php @@ -1,4 +1,3 @@ "WebDAV-aŭtentigo", -"URL: http://" => "URL: http://" +"WebDAV Authentication" => "WebDAV-aŭtentigo" ); diff --git a/apps/user_webdavauth/l10n/es.php b/apps/user_webdavauth/l10n/es.php index 103c3738e2..18c87794d6 100644 --- a/apps/user_webdavauth/l10n/es.php +++ b/apps/user_webdavauth/l10n/es.php @@ -1,5 +1,5 @@ "Autenticación de WevDAV", -"URL: http://" => "URL: http://", +"URL: " => "URL:", "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/es_AR.php b/apps/user_webdavauth/l10n/es_AR.php index 103c3738e2..cda5d7eab0 100644 --- a/apps/user_webdavauth/l10n/es_AR.php +++ b/apps/user_webdavauth/l10n/es_AR.php @@ -1,5 +1,5 @@ "Autenticación de WevDAV", -"URL: http://" => "URL: http://", +"URL: " => "URL: ", "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/et_EE.php b/apps/user_webdavauth/l10n/et_EE.php index a3b86224ac..470cb2b0f1 100644 --- a/apps/user_webdavauth/l10n/et_EE.php +++ b/apps/user_webdavauth/l10n/et_EE.php @@ -1,5 +1,4 @@ "WebDAV autentimine", -"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 saadab kasutajatunnused sellel aadressil. See vidin kontrollib vastust ning tuvastab HTTP vastuskoodid 401 ja 403 kui vigased, ning kõik teised vastused kui korrektsed kasutajatunnused." ); diff --git a/apps/user_webdavauth/l10n/eu.php b/apps/user_webdavauth/l10n/eu.php index d792c1588b..6395d7fc1e 100644 --- a/apps/user_webdavauth/l10n/eu.php +++ b/apps/user_webdavauth/l10n/eu.php @@ -1,5 +1,4 @@ "WebDAV Autentikazioa", -"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." => "ownCloudek erabiltzailearen kredentzialak URL honetara bidaliko ditu. Plugin honek erantzuna aztertzen du eta HTTP 401 eta 403 egoera kodeak baliogabezko kredentzialtzat hartuko ditu, beste erantzunak kredentzial egokitzat hartuko dituelarik." ); diff --git a/apps/user_webdavauth/l10n/fi_FI.php b/apps/user_webdavauth/l10n/fi_FI.php index 6c67c78c81..61a848bcfe 100644 --- a/apps/user_webdavauth/l10n/fi_FI.php +++ b/apps/user_webdavauth/l10n/fi_FI.php @@ -1,4 +1,3 @@ "WebDAV-todennus", -"URL: http://" => "Osoite: http://" +"WebDAV Authentication" => "WebDAV-todennus" ); diff --git a/apps/user_webdavauth/l10n/fr.php b/apps/user_webdavauth/l10n/fr.php index 9d528a3a9d..e7fad26287 100644 --- a/apps/user_webdavauth/l10n/fr.php +++ b/apps/user_webdavauth/l10n/fr.php @@ -1,5 +1,5 @@ "Authentification WebDAV", -"URL: http://" => "URL : http://", +"URL: " => "URL: ", "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 enverra les informations de connexion à cette adresse. Ce module complémentaire analyse le code réponse HTTP et considère tout code différent des codes 401 et 403 comme associé à une authentification correcte." ); diff --git a/apps/user_webdavauth/l10n/gl.php b/apps/user_webdavauth/l10n/gl.php index f63a7cb0ce..35ed8a1969 100644 --- a/apps/user_webdavauth/l10n/gl.php +++ b/apps/user_webdavauth/l10n/gl.php @@ -1,5 +1,5 @@ "Autenticación WebDAV", -"URL: http://" => "URL: http://", +"URL: " => "URL: ", "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 enviará as credenciais do usuario a este URL. Este engadido comproba a resposta e interpretará os códigos de estado HTTP 401 e 403 como credenciais incorrectas, e todas as outras respostas como credenciais correctas." ); diff --git a/apps/user_webdavauth/l10n/he.php b/apps/user_webdavauth/l10n/he.php new file mode 100644 index 0000000000..aee7b00f18 --- /dev/null +++ b/apps/user_webdavauth/l10n/he.php @@ -0,0 +1,4 @@ + "הזדהות מול WebDAV", +"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 תשלח את פרטי המשתמש לכתובת זו. התוסף יבדוק את התגובה ויתרגם את הקודים 401 ו־403 כתגובה לציון פרטי גישה שגויים ואת כל שאר התגובות כפרטי גישה נכונים." +); diff --git a/apps/user_webdavauth/l10n/hu_HU.php b/apps/user_webdavauth/l10n/hu_HU.php index 6435280114..d7de5e57f3 100644 --- a/apps/user_webdavauth/l10n/hu_HU.php +++ b/apps/user_webdavauth/l10n/hu_HU.php @@ -1,5 +1,4 @@ "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/id.php b/apps/user_webdavauth/l10n/id.php index 4324ee8ff5..8ddf54e473 100644 --- a/apps/user_webdavauth/l10n/id.php +++ b/apps/user_webdavauth/l10n/id.php @@ -1,5 +1,4 @@ "Otentikasi 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 akan mengirimkan informasi pengguna ke URL ini. Pengaya akan mengecek respon dan menginterpretasikan kode status HTTP 401 serta 403 sebagai informasi yang keliru, sedangkan respon lainnya dianggap benar." ); diff --git a/apps/user_webdavauth/l10n/is.php b/apps/user_webdavauth/l10n/is.php index 8fe0d974b3..10dcfa6e3d 100644 --- a/apps/user_webdavauth/l10n/is.php +++ b/apps/user_webdavauth/l10n/is.php @@ -1,3 +1,3 @@ "Vefslóð: http://" +"WebDAV Authentication" => "WebDAV Auðkenni" ); diff --git a/apps/user_webdavauth/l10n/it.php b/apps/user_webdavauth/l10n/it.php index a7cd6e8e4b..1c1e0899b1 100644 --- a/apps/user_webdavauth/l10n/it.php +++ b/apps/user_webdavauth/l10n/it.php @@ -1,5 +1,5 @@ "Autenticazione WebDAV", -"URL: http://" => "URL: http://", +"URL: " => "URL:", "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 invierà le credenziali dell'utente a questo URL. Questa estensione controlla la risposta e interpreta i codici di stato 401 e 403 come credenziali non valide, e tutte le altre risposte come credenziali valide." ); diff --git a/apps/user_webdavauth/l10n/ja_JP.php b/apps/user_webdavauth/l10n/ja_JP.php index 1cd14a03c7..703cc71489 100644 --- a/apps/user_webdavauth/l10n/ja_JP.php +++ b/apps/user_webdavauth/l10n/ja_JP.php @@ -1,5 +1,5 @@ "WebDAV 認証", -"URL: http://" => "URL: http://", +"URL: " => "URL: ", "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/ka_GE.php b/apps/user_webdavauth/l10n/ka_GE.php index f475ea0b73..34c502cc5e 100644 --- a/apps/user_webdavauth/l10n/ka_GE.php +++ b/apps/user_webdavauth/l10n/ka_GE.php @@ -1,5 +1,4 @@ "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/ko.php b/apps/user_webdavauth/l10n/ko.php index 578ff35e72..e0431164a5 100644 --- a/apps/user_webdavauth/l10n/ko.php +++ b/apps/user_webdavauth/l10n/ko.php @@ -1,5 +1,4 @@ "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/lt_LT.php b/apps/user_webdavauth/l10n/lt_LT.php index 8d0492ae48..ed81efdf8b 100644 --- a/apps/user_webdavauth/l10n/lt_LT.php +++ b/apps/user_webdavauth/l10n/lt_LT.php @@ -1,5 +1,4 @@ "WebDAV autorizavimas", -"URL: http://" => "Adresas: 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 išsiųs naudotojo duomenis į šį WWW adresą. Šis įskiepis patikrins gautą atsakymą ir interpretuos HTTP būsenos kodą 401 ir 403 kaip negaliojančius duomenis, ir visus kitus gautus atsakymus kaip galiojančius duomenis. " ); diff --git a/apps/user_webdavauth/l10n/lv.php b/apps/user_webdavauth/l10n/lv.php index d0043df9f0..7f90f64d21 100644 --- a/apps/user_webdavauth/l10n/lv.php +++ b/apps/user_webdavauth/l10n/lv.php @@ -1,5 +1,4 @@ "WebDAV autentifikācija", -"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 sūtīs lietotāja akreditācijas datus uz šo URL. Šis spraudnis pārbauda atbildi un interpretē HTTP statusa kodus 401 un 403 kā nederīgus akreditācijas datus un visas citas atbildes kā derīgus akreditācijas datus." ); diff --git a/apps/user_webdavauth/l10n/nl.php b/apps/user_webdavauth/l10n/nl.php index 7d1bb33923..086f8ad2ea 100644 --- a/apps/user_webdavauth/l10n/nl.php +++ b/apps/user_webdavauth/l10n/nl.php @@ -1,5 +1,5 @@ "WebDAV authenticatie", -"URL: http://" => "URL: http://", +"URL: " => "URL: ", "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 stuurt de inloggegevens naar deze URL. Deze plugin controleert het antwoord en interpreteert de HTTP statuscodes 401 als 403 als ongeldige inloggegevens, maar alle andere antwoorden als geldige inloggegevens." ); diff --git a/apps/user_webdavauth/l10n/nn_NO.php b/apps/user_webdavauth/l10n/nn_NO.php index 772e084b63..5c4184b33a 100644 --- a/apps/user_webdavauth/l10n/nn_NO.php +++ b/apps/user_webdavauth/l10n/nn_NO.php @@ -1,5 +1,4 @@ "WebDAV-autentisering", -"URL: http://" => "Nettadresse: 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 sender brukarakkreditiv til denne nettadressa. Dette programtillegget kontrollerer svaret og tolkar HTTP-statuskodane 401 og 403 som ugyldige, og alle andre svar som gyldige." ); diff --git a/apps/user_webdavauth/l10n/pl.php b/apps/user_webdavauth/l10n/pl.php index 4887e93531..8c8116e523 100644 --- a/apps/user_webdavauth/l10n/pl.php +++ b/apps/user_webdavauth/l10n/pl.php @@ -1,5 +1,5 @@ "Uwierzytelnienie WebDAV", -"URL: http://" => "URL: http://", +"URL: " => "URL: ", "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 wyśle dane uwierzytelniające do tego URL. Ten plugin sprawdza odpowiedź i zinterpretuje kody HTTP 401 oraz 403 jako nieprawidłowe dane uwierzytelniające, a każdy inny kod odpowiedzi jako poprawne dane." ); diff --git a/apps/user_webdavauth/l10n/pt_BR.php b/apps/user_webdavauth/l10n/pt_BR.php index 6ddd00ccc3..6727219db4 100644 --- a/apps/user_webdavauth/l10n/pt_BR.php +++ b/apps/user_webdavauth/l10n/pt_BR.php @@ -1,5 +1,5 @@ "Autenticação WebDAV", -"URL: http://" => "URL: http://", +"URL: " => "URL:", "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/pt_PT.php b/apps/user_webdavauth/l10n/pt_PT.php index d7e87b5c8d..eec1a328e1 100644 --- a/apps/user_webdavauth/l10n/pt_PT.php +++ b/apps/user_webdavauth/l10n/pt_PT.php @@ -1,5 +1,4 @@ "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 vai enviar as credenciais do utilizador através deste URL. Este plugin verifica a resposta e vai interpretar os códigos de estado HTTP 401 e 403 como credenciais inválidas, e todas as outras como válidas." ); diff --git a/apps/user_webdavauth/l10n/ro.php b/apps/user_webdavauth/l10n/ro.php index 9df490e81e..bccd7d50e2 100644 --- a/apps/user_webdavauth/l10n/ro.php +++ b/apps/user_webdavauth/l10n/ro.php @@ -1,5 +1,4 @@ "Autentificare 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 va trimite datele de autentificare la acest URL. Acest modul verifică răspunsul și va interpreta codurile de status HTTP 401 sau 403 ca fiind date de autentificare invalide, și orice alt răspuns ca fiind date valide." ); diff --git a/apps/user_webdavauth/l10n/ru.php b/apps/user_webdavauth/l10n/ru.php index f12982fc40..ad3dfd2e67 100644 --- a/apps/user_webdavauth/l10n/ru.php +++ b/apps/user_webdavauth/l10n/ru.php @@ -1,5 +1,4 @@ "Идентификация 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/sk_SK.php b/apps/user_webdavauth/l10n/sk_SK.php index c4e6dfddc7..fa63b18569 100644 --- a/apps/user_webdavauth/l10n/sk_SK.php +++ b/apps/user_webdavauth/l10n/sk_SK.php @@ -1,5 +1,5 @@ "WebDAV overenie", -"URL: http://" => "URL: http://", +"URL: " => "URL: ", "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/apps/user_webdavauth/l10n/sl.php b/apps/user_webdavauth/l10n/sl.php index 7c592723af..6bae847dc3 100644 --- a/apps/user_webdavauth/l10n/sl.php +++ b/apps/user_webdavauth/l10n/sl.php @@ -1,5 +1,4 @@ "Overitev 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." => "Sistem ownCloud bo poslal uporabniška poverila na navedeni naslov URL. Ta vstavek preveri odziv in tolmači kode stanja HTTP 401 in HTTP 403 kot spodletel odgovor in vse ostale odzive kot veljavna poverila." ); diff --git a/apps/user_webdavauth/l10n/sr.php b/apps/user_webdavauth/l10n/sr.php index 518fcbe9be..44ff078493 100644 --- a/apps/user_webdavauth/l10n/sr.php +++ b/apps/user_webdavauth/l10n/sr.php @@ -1,5 +1,4 @@ "WebDAV провера идентитета", -"URL: http://" => "Адреса: 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 ће послати акредитиве корисника на ову адресу. Овај прикључак проверава одговор и тумачи HTTP статусне кодове 401 и 403 као неисправне акредитиве, а све остале одговоре као исправне." ); diff --git a/apps/user_webdavauth/l10n/sv.php b/apps/user_webdavauth/l10n/sv.php index c79b35c27c..481b771094 100644 --- a/apps/user_webdavauth/l10n/sv.php +++ b/apps/user_webdavauth/l10n/sv.php @@ -1,5 +1,5 @@ "WebDAV Autentisering", -"URL: http://" => "URL: http://", +"URL: " => "URL:", "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 kommer skicka användaruppgifterna till denna URL. Denna plugin kontrollerar svaret och tolkar HTTP-statuskoderna 401 och 403 som felaktiga uppgifter, och alla andra svar som giltiga uppgifter." ); diff --git a/apps/user_webdavauth/l10n/th_TH.php b/apps/user_webdavauth/l10n/th_TH.php index 2bd1f685e6..3c84ef7104 100644 --- a/apps/user_webdavauth/l10n/th_TH.php +++ b/apps/user_webdavauth/l10n/th_TH.php @@ -1,5 +1,4 @@ "WebDAV Authentication", -"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 statuscodes 401 และ 403 ให้เป็นข้อมูลการเข้าใช้งานที่ไม่สามารถใช้งานได้ ส่วนข้อมูลอื่นๆที่เหลือทั้งหมดจะเป็นข้อมูลการเข้าใช้งานที่สามารถใช้งานได้" ); diff --git a/apps/user_webdavauth/l10n/tr.php b/apps/user_webdavauth/l10n/tr.php index c495a39dce..06bf97c4b0 100644 --- a/apps/user_webdavauth/l10n/tr.php +++ b/apps/user_webdavauth/l10n/tr.php @@ -1,5 +1,4 @@ "WebDAV Kimlik doğrulaması", -"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 deneyme kullanicin URLe gonderecek. Bu toplan cepaplama muayene edecek ve status kodeci HTTPden 401 ve 403 deneyi gecerli ve hepsi baska cevaplamari mantekli gibi yorumlacak. " ); diff --git a/apps/user_webdavauth/l10n/ug.php b/apps/user_webdavauth/l10n/ug.php index 03ced5f4aa..7231d0c570 100644 --- a/apps/user_webdavauth/l10n/ug.php +++ b/apps/user_webdavauth/l10n/ug.php @@ -1,4 +1,3 @@ "WebDAV سالاھىيەت دەلىللەش", -"URL: http://" => "URL: http://" +"WebDAV Authentication" => "WebDAV سالاھىيەت دەلىللەش" ); diff --git a/apps/user_webdavauth/l10n/uk.php b/apps/user_webdavauth/l10n/uk.php index 66887df54b..2f4d3c95da 100644 --- a/apps/user_webdavauth/l10n/uk.php +++ b/apps/user_webdavauth/l10n/uk.php @@ -1,5 +1,4 @@ "Аутентифікація 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/vi.php b/apps/user_webdavauth/l10n/vi.php index ee2aa08912..53f1e1c420 100644 --- a/apps/user_webdavauth/l10n/vi.php +++ b/apps/user_webdavauth/l10n/vi.php @@ -1,5 +1,4 @@ "Xác thực 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 sẽ gửi chứng thư người dùng tới URL này. Tính năng này kiểm tra trả lời và sẽ hiểu mã 401 và 403 của giao thức HTTP là chứng thư không hợp lệ, và mọi trả lời khác được coi là hợp lệ." ); diff --git a/apps/user_webdavauth/l10n/zh_CN.php b/apps/user_webdavauth/l10n/zh_CN.php index 72d2a0c11d..5a935f1712 100644 --- a/apps/user_webdavauth/l10n/zh_CN.php +++ b/apps/user_webdavauth/l10n/zh_CN.php @@ -1,5 +1,4 @@ "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/zh_TW.php b/apps/user_webdavauth/l10n/zh_TW.php index 6f94b77ac5..32166b0475 100644 --- a/apps/user_webdavauth/l10n/zh_TW.php +++ b/apps/user_webdavauth/l10n/zh_TW.php @@ -1,5 +1,4 @@ "WebDAV 認證", -"URL: http://" => "網址: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 會將把用戶的登入資訊發送到這個網址以嘗試登入,並檢查回應, HTTP 狀態碼401和403視為登入失敗,所有其他回應視為登入成功。" ); diff --git a/apps/user_webdavauth/templates/settings.php b/apps/user_webdavauth/templates/settings.php index ec6524ee4f..e199c32675 100755 --- a/apps/user_webdavauth/templates/settings.php +++ b/apps/user_webdavauth/templates/settings.php @@ -1,7 +1,7 @@
t('WebDAV Authentication'));?> -

+


t('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.')); ?> diff --git a/apps/user_webdavauth/user_webdavauth.php b/apps/user_webdavauth/user_webdavauth.php index 6417e45434..86e5b916f3 100755 --- a/apps/user_webdavauth/user_webdavauth.php +++ b/apps/user_webdavauth/user_webdavauth.php @@ -41,19 +41,25 @@ class OC_USER_WEBDAVAUTH extends OC_User_Backend { } public function checkPassword( $uid, $password ) { - $url= 'http://'.urlencode($uid).':'.urlencode($password).'@'.$this->webdavauth_url; + $arr = explode('://', $this->webdavauth_url, 2); + if( ! isset($arr) OR count($arr) !== 2) { + OC_Log::write('OC_USER_WEBDAVAUTH', 'Invalid Url: "'.$this->webdavauth_url.'" ', 3); + return false; + } + list($webdavauth_protocol, $webdavauth_url_path) = $arr; + $url= $webdavauth_protocol.'://'.urlencode($uid).':'.urlencode($password).'@'.$webdavauth_url_path; $headers = get_headers($url); if($headers==false) { - OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to connect to WebDAV Url: "'.$this->webdavauth_url.'" ', 3); + OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to connect to WebDAV Url: "'.$webdavauth_protocol.'://'.$webdavauth_url_path.'" ', 3); return false; } $returncode= substr($headers[0], 9, 3); - if(($returncode=='401') or ($returncode=='403')) { - return(false); - }else{ - return($uid); + if(substr($returncode, 0, 1) === '2') { + return $uid; + } else { + return false; } } diff --git a/core/ajax/share.php b/core/ajax/share.php index 5854b65aa0..bdcb61284e 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -94,23 +94,28 @@ 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', $displayName); - if ($type === 'folder') - $subject = (string)$l->t('User %s shared a folder with you', $displayName); + $subject = (string)$l->t('%s shared »%s« with you', array($displayName, $file)); - $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 === 'folder') - $text = (string)$l->t('User %s shared the folder "%s" with you. It is available for download here: %s', - array($displayName, $file, $link)); + $content = new OC_Template("core", "mail", ""); + $content->assign ('link', $link); + $content->assign ('type', $type); + $content->assign ('user_displayname', $displayName); + $content->assign ('filename', $file); + $text = $content->fetchPage(); + $content = new OC_Template("core", "altmail", ""); + $content->assign ('link', $link); + $content->assign ('type', $type); + $content->assign ('user_displayname', $displayName); + $content->assign ('filename', $file); + $alttext = $content->fetchPage(); $default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply'); $from_address = OCP\Config::getUserValue($user, 'settings', 'email', $default_from ); // send it out now try { - OCP\Util::sendMail($to_address, $to_address, $subject, $text, $from_address, $displayName); + OCP\Util::sendMail($to_address, $to_address, $subject, $text, $from_address, $displayName, 1, $alttext); OCP\JSON::success(); } catch (Exception $exception) { OCP\JSON::error(array('data' => array('message' => OC_Util::sanitizeHTML($exception->getMessage())))); diff --git a/core/ajax/update.php b/core/ajax/update.php index 6015a901eb..db00da0223 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -5,11 +5,15 @@ require_once '../../lib/base.php'; if (OC::checkUpgrade(false)) { \OC_DB::enableCaching(false); + OC_Config::setValue('maintenance', true); + $installedVersion = OC_Config::getValue('version', '0.0.0'); + $currentVersion = implode('.', OC_Util::getVersion()); + OC_Log::write('core', 'starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, OC_Log::WARN); $updateEventSource = new OC_EventSource(); $watcher = new UpdateWatcher($updateEventSource); OC_Hook::connect('update', 'success', $watcher, 'success'); OC_Hook::connect('update', 'error', $watcher, 'error'); - OC_Hook::connect('update', 'error', $watcher, 'failure'); + OC_Hook::connect('update', 'failure', $watcher, 'failure'); $watcher->success('Turned on maintenance mode'); try { $result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml'); @@ -99,6 +103,7 @@ class UpdateWatcher { OC_Util::obEnd(); $this->eventSource->send('failure', $message); $this->eventSource->close(); + OC_Config::setValue('maintenance', false); die(); } @@ -108,4 +113,4 @@ class UpdateWatcher { $this->eventSource->close(); } -} +} \ No newline at end of file diff --git a/core/css/multiselect.css b/core/css/multiselect.css index def4e60d74..a2d1b20d3a 100644 --- a/core/css/multiselect.css +++ b/core/css/multiselect.css @@ -1,84 +1,105 @@ -/* Copyright (c) 2011, Jan-Christoph Borchardt, http://jancborchardt.net - This file is licensed under the Affero General Public License version 3 or later. - See the COPYING-README file. */ +/* Copyright (c) 2011, Jan-Christoph Borchardt, http: //jancborchardt.net +This file is licensed under the Affero General Public License version 3 or later. +See the COPYING-README file. */ - ul.multiselectoptions { - background-color:#fff; - border:1px solid #ddd; - border-top:none; - box-shadow:0 1px 1px #ddd; - padding-top:.5em; - position:absolute; - max-height: 20em; - overflow-y: auto; - z-index:49; - } +ul.multiselectoptions { + background-color: #fff; + border: 1px solid #ddd; + border-top: none; + box-shadow: 0 1px 1px #ddd; + padding-top: .5em; + position: absolute; + max-height: 20em; + overflow-y: auto; + z-index: 49; +} - ul.multiselectoptions.down { - border-bottom-left-radius:.5em; - border-bottom-right-radius:.5em; - } +ul.multiselectoptions.down { + border-bottom-left-radius: .5em; + border-bottom-right-radius: .5em; + width: 100%; /* do not cut off group names */ + -webkit-box-shadow: 0px 0px 20px rgba(29,45,68,.4); + -moz-box-shadow: 0px 0px 20px rgba(29,45,68,.4); + box-shadow: 0px 0px 20px rgba(29,45,68,.4); +} - ul.multiselectoptions.up { - border-top-left-radius:.5em; - border-top-right-radius:.5em; - } +ul.multiselectoptions.up { + border-top-left-radius: .5em; + border-top-right-radius: .5em; +} - ul.multiselectoptions>li { - overflow:hidden; - white-space:nowrap; - } +ul.multiselectoptions>li { + overflow: hidden; + white-space: nowrap; +} - ul.multiselectoptions>li>input[type="checkbox"] { - margin-top: 3px; - margin-right: 5px; - margin-left: 3px; - } +ul.multiselectoptions > li > input[type="checkbox"] { + margin: 10px 7px; + vertical-align: middle; +} +ul.multiselectoptions > li input[type='checkbox']+label { + font-weight: normal; + display: inline-block; + width: 100%; + padding: 5px 27px; + margin-left: -27px; /* to have area around checkbox clickable as well */ +} +ul.multiselectoptions > li input[type='checkbox']:checked+label { + font-weight: bold; +} - div.multiselect { - display:inline-block; - max-width:400px; - min-width:100px; - padding-right:.6em; - position:relative; - vertical-align:bottom; - } +div.multiselect { + display: inline-block; + max-width: 400px; + min-width: 150px; + padding-right: .6em; + position: relative; + vertical-align: bottom; +} - div.multiselect.active { - background-color:#fff; - position:relative; - z-index:50; - } +div.multiselect.active { + background-color: #fff; + position: relative; + z-index: 50; +} - div.multiselect.up { - border-top:0 none; - border-top-left-radius:0; - border-top-right-radius:0; - } +div.multiselect.up { + border-top: 0 none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} - div.multiselect.down { - border-bottom:none; - border-bottom-left-radius:0; - border-bottom-right-radius:0; - } +div.multiselect.down { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} - div.multiselect>span:first-child { - float:left; - margin-right:2em; - overflow:hidden; - text-overflow:ellipsis; - width:90%; - } +div.multiselect>span:first-child { + float: left; + margin-right: 2em; + overflow: hidden; + text-overflow: ellipsis; + width: 90%; +} - div.multiselect>span:last-child { - position:absolute; - right:.8em; - } +div.multiselect>span:last-child { + position: absolute; + right: .8em; +} - ul.multiselectoptions input.new { - border-top-left-radius:0; - border-top-right-radius:0; - padding-bottom:.2em; - padding-top:.2em; - margin:0; - } +ul.multiselectoptions input.new { + padding-bottom: .2em; + padding-top: .2em; + margin: 0; +} + +ul.multiselectoptions > li.creator { + padding: 10px; + font-weight: bold; +} +ul.multiselectoptions > li.creator > input { + width: 95% !important; /* do not constrain size of text input */ + padding: 5px; + margin: -5px; +} diff --git a/core/css/styles.css b/core/css/styles.css index 78671a7bc1..40a17a4287 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -37,7 +37,7 @@ filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#35537a', endC /* INPUTS */ -input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], +input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], input[type="url"], textarea, select, button, .button, #quota, div.jp-progress, .pager li a { @@ -48,11 +48,11 @@ button, .button, -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; } input[type="hidden"] { height:0; width:0; } -input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], textarea { +input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], input[type="url"], textarea { background:#f8f8f8; color:#555; cursor:text; font-family: inherit; /* use default ownCloud font instead of default textarea monospace */ } -input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"] { +input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], input[type="url"] { -webkit-appearance:textfield; -moz-appearance:textfield; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; box-sizing:content-box; } @@ -61,6 +61,7 @@ input[type="password"]:hover, input[type="password"]:focus, input[type="password input[type="number"]:hover, input[type="number"]:focus, input[type="number"]:active, .searchbox input[type="search"]:hover, .searchbox input[type="search"]:focus, .searchbox input[type="search"]:active, input[type="email"]:hover, input[type="email"]:focus, input[type="email"]:active, +input[type="url"]:hover, input[type="url"]:focus, input[type="url"]:active, textarea:hover, textarea:focus, textarea:active { background-color:#fff; color:#333; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; @@ -140,7 +141,7 @@ input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-b padding:0 70px 0 0.5em; margin:0; -moz-box-sizing:border-box; box-sizing:border-box; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000; - background:#f7f7f7; border-bottom:1px solid #eee; z-index:50; + background:#eee; border-bottom:1px solid #e7e7e7; z-index:50; } #controls .button { display:inline-block; } @@ -354,14 +355,27 @@ tr .action { width:16px; height:16px; } tr:hover .action:hover, .selectedActions a:hover, .header-action:hover { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } tbody tr:hover, tr:active { background-color:#f8f8f8; } -#body-settings .personalblock, #body-settings .helpblock { padding:.5em 1em; margin:1em; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; } +#body-settings .personalblock, #body-settings .helpblock { + padding: .5em 1em; + margin: 1em; + background-color: rgb(240,240,240); + color: #555; + text-shadow: #fff 0 1px 0; + -moz-border-radius: .5em; -webkit-border-radius: .5em; border-radius: .5em; +} #body-settings .personalblock#quota { position:relative; padding:0; } #body-settings #controls+.helpblock { position:relative; margin-top:3em; } .personalblock > legend { margin-top:2em; } .personalblock > legend, th, dt, label { font-weight:bold; } code { font-family:"Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", monospace; } -#quota div, div.jp-play-bar, div.jp-seek-bar { padding:0; background:#e6e6e6; font-weight:normal; white-space:nowrap; -moz-border-radius-bottomleft:.4em; -webkit-border-bottom-left-radius:.4em; border-bottom-left-radius:.4em; -moz-border-radius-topleft:.4em; -webkit-border-top-left-radius:.4em; border-top-left-radius:.4em; } +#quota div, div.jp-play-bar, div.jp-seek-bar { + padding: 0; + background-color: rgb(220,220,220); + font-weight: normal; + white-space: nowrap; + -moz-border-radius-bottomleft: .4em; -webkit-border-bottom-left-radius: .4em; border-bottom-left-radius:.4em; + -moz-border-radius-topleft: .4em; -webkit-border-top-left-radius: .4em; border-top-left-radius: .4em; } #quotatext {padding:.6em 1em;} div.jp-play-bar, div.jp-seek-bar { padding:0; } @@ -426,12 +440,22 @@ span.ui-icon {float: left; margin: 3px 7px 30px 0;} .help-includes {overflow: hidden; width: 100%; height: 100%; -moz-box-sizing: border-box; box-sizing: border-box; padding-top: 2.8em; } .help-iframe {width: 100%; height: 100%; margin: 0;padding: 0; border: 0; overflow: auto;} + /* ---- BREADCRUMB ---- */ div.crumb { float:left; display:block; background:url('../img/breadcrumb.svg') no-repeat right 0; padding:.75em 1.5em 0 1em; height:2.9em; -moz-box-sizing:border-box; box-sizing:border-box; } div.crumb:first-child { padding:10px 20px 10px 5px; } div.crumb.last { font-weight:bold; background:none; padding-right:10px; } div.crumb a{ padding: 0.9em 0 0.7em 0; } +/* some feedback for hover/tap on breadcrumbs */ +div.crumb:hover, +div.crumb:focus, +div.crumb:active { + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter:alpha(opacity=70); + opacity:.7; +} + /* ---- APP STYLING ---- */ @@ -640,3 +664,10 @@ button.loading { background-position: right 10px center; background-repeat: no-repeat; padding-right: 30px; } + + + +/* ---- BROWSER-SPECIFIC FIXES ---- */ +::-moz-focus-inner { + border: 0; /* remove dotted outlines in Firefox */ +} diff --git a/core/img/logo-mail.gif b/core/img/logo-mail.gif new file mode 100644 index 0000000000..6a1caaa918 Binary files /dev/null and b/core/img/logo-mail.gif differ diff --git a/core/js/config.php b/core/js/config.php index 53a8fb9638..dd46f7889d 100644 --- a/core/js/config.php +++ b/core/js/config.php @@ -26,8 +26,6 @@ $array = array( "oc_debug" => (defined('DEBUG') && DEBUG) ? 'true' : 'false', "oc_webroot" => "\"".OC::$WEBROOT."\"", "oc_appswebroots" => str_replace('\\/', '/', json_encode($apps_paths)), // Ugly unescape slashes waiting for better solution - "oc_current_user" => "document.getElementsByTagName('head')[0].getAttribute('data-user')", - "oc_requesttoken" => "document.getElementsByTagName('head')[0].getAttribute('data-requesttoken')", "datepickerFormatDate" => json_encode($l->l('jsdate', 'jsdate')), "dayNames" => json_encode( array( diff --git a/core/js/js.js b/core/js/js.js index 3cb4d3dd15..08b429a555 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -7,7 +7,10 @@ */ var oc_debug; var oc_webroot; -var oc_requesttoken; + +var oc_current_user = document.getElementsByTagName('head')[0].getAttribute('data-user'); +var oc_requesttoken = document.getElementsByTagName('head')[0].getAttribute('data-requesttoken'); + if (typeof oc_webroot === "undefined") { oc_webroot = location.pathname.substr(0, location.pathname.lastIndexOf('/')); } diff --git a/core/js/multiselect.js b/core/js/multiselect.js index 463c397d8c..48d521e185 100644 --- a/core/js/multiselect.js +++ b/core/js/multiselect.js @@ -176,10 +176,10 @@ }); button.parent().data('preventHide',false); if(settings.createText){ - var li=$('

  • + '+settings.createText+'
  • '); + var li=$('
  • + '+settings.createText+'
  • '); li.click(function(event){ li.empty(); - var input=$(''); + var input=$(''); li.append(input); input.focus(); input.css('width',button.innerWidth()); diff --git a/core/l10n/af_ZA.php b/core/l10n/af_ZA.php index f5f27d2af5..4878c75edd 100644 --- a/core/l10n/af_ZA.php +++ b/core/l10n/af_ZA.php @@ -15,6 +15,7 @@ "Admin" => "Admin", "Help" => "Hulp", "Cloud not found" => "Wolk nie gevind", +"web services under your control" => "webdienste onder jou beheer", "Create an admin account" => "Skep `n admin-rekening", "Advanced" => "Gevorderd", "Configure the database" => "Stel databasis op", @@ -23,7 +24,6 @@ "Database password" => "Databasis-wagwoord", "Database name" => "Databasis naam", "Finish setup" => "Maak opstelling klaar", -"web services under your control" => "webdienste onder jou beheer", "Log out" => "Teken uit", "Lost your password?" => "Jou wagwoord verloor?", "remember" => "onthou", diff --git a/core/l10n/ar.php b/core/l10n/ar.php index 8bd4429338..7ac7a564c3 100644 --- a/core/l10n/ar.php +++ b/core/l10n/ar.php @@ -1,8 +1,4 @@ "المستخدم %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: %s" => "هذا التصنيف موجود مسبقا : %s", @@ -102,6 +98,7 @@ "Help" => "المساعدة", "Access forbidden" => "التوصّل محظور", "Cloud not found" => "لم يتم إيجاد", +"web services under your control" => "خدمات الشبكة تحت سيطرتك", "Edit categories" => "عدل الفئات", "Add" => "اضف", "Security Warning" => "تحذير أمان", @@ -122,7 +119,6 @@ "Database tablespace" => "مساحة جدول قاعدة البيانات", "Database host" => "خادم قاعدة البيانات", "Finish setup" => "انهاء التعديلات", -"web services under your control" => "خدمات الشبكة تحت سيطرتك", "Log out" => "الخروج", "Automatic logon rejected!" => "تم رفض تسجيل الدخول التلقائي!", "If you did not change your password recently, your account may be compromised!" => "قد يكون حسابك في خطر إن لم تقم بإعادة تعيين كلمة السر حديثاً", diff --git a/core/l10n/bg_BG.php b/core/l10n/bg_BG.php index 6c04907e15..490bea9b17 100644 --- a/core/l10n/bg_BG.php +++ b/core/l10n/bg_BG.php @@ -50,6 +50,7 @@ "Help" => "Помощ", "Access forbidden" => "Достъпът е забранен", "Cloud not found" => "облакът не намерен", +"web services under your control" => "уеб услуги под Ваш контрол", "Edit categories" => "Редактиране на категориите", "Add" => "Добавяне", "Create an admin account" => "Създаване на админ профил", @@ -62,7 +63,6 @@ "Database name" => "Име на базата", "Database host" => "Хост за базата", "Finish setup" => "Завършване на настройките", -"web services under your control" => "уеб услуги под Ваш контрол", "Log out" => "Изход", "Lost your password?" => "Забравена парола?", "remember" => "запомни", diff --git a/core/l10n/bn_BD.php b/core/l10n/bn_BD.php index 218bbce04a..c775d2fb6a 100644 --- a/core/l10n/bn_BD.php +++ b/core/l10n/bn_BD.php @@ -1,8 +1,4 @@ "%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?" => "যোগ করার মত কোন ক্যাটেগরি নেই ?", "Object type not provided." => "অবজেক্টের ধরণটি প্রদান করা হয় নি।", @@ -99,6 +95,7 @@ "Help" => "সহায়িকা", "Access forbidden" => "অধিগমনের অনুমতি নেই", "Cloud not found" => "ক্লাউড খুঁজে পাওয়া গেল না", +"web services under your control" => "ওয়েব সার্ভিস আপনার হাতের মুঠোয়", "Edit categories" => "ক্যাটেগরি সম্পাদনা", "Add" => "যোগ কর", "Security Warning" => "নিরাপত্তাজনিত সতর্কতা", @@ -113,7 +110,6 @@ "Database tablespace" => "ডাটাবেজ টেবলস্পেস", "Database host" => "ডাটাবেজ হোস্ট", "Finish setup" => "সেটআপ সুসম্পন্ন কর", -"web services under your control" => "ওয়েব সার্ভিস আপনার হাতের মুঠোয়", "Log out" => "প্রস্থান", "Lost your password?" => "কূটশব্দ হারিয়েছেন?", "remember" => "মনে রাখ", diff --git a/core/l10n/bs.php b/core/l10n/bs.php new file mode 100644 index 0000000000..6b65cf81f2 --- /dev/null +++ b/core/l10n/bs.php @@ -0,0 +1,4 @@ + "Podijeli", +"Add" => "Dodaj" +); diff --git a/core/l10n/ca.php b/core/l10n/ca.php index dad970d417..e66571fc75 100644 --- a/core/l10n/ca.php +++ b/core/l10n/ca.php @@ -1,8 +1,5 @@ "L'usuari %s ha compartit un fitxer amb vós", -"User %s shared a folder with you" => "L'usuari %s ha compartit una carpeta amb vós", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "L'usuari %s ha compartit el fitxer \"%s\" amb vós. Està disponible per a la descàrrega a: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "L'usuari %s ha compartit la carpeta \"%s\" amb vós. Està disponible per a la descàrrega a: %s", +"%s shared »%s« with you" => "%s ha compartit »%s« amb tu", "Category type not provided." => "No s'ha especificat el tipus de categoria.", "No category to add?" => "No voleu afegir cap categoria?", "This category already exists: %s" => "Aquesta categoria ja existeix: %s", @@ -93,6 +90,8 @@ "Request failed!
    Did you make sure your email/username was right?" => "La petició ha fallat!
    Esteu segur que el correu/nom d'usuari és correcte?", "You will receive a link to reset your password via Email." => "Rebreu un enllaç al correu electrònic per reiniciar la contrasenya.", "Username" => "Nom d'usuari", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya. Si sabeu què fer, contacteu amb l'administrador abans de continuar. Voleu continuar?", +"Yes, I really want to reset my password now" => "Sí, vull restablir ara la contrasenya", "Request reset" => "Sol·licita reinicialització", "Your password was reset" => "La vostra contrasenya s'ha reinicialitzat", "To login page" => "A la pàgina d'inici de sessió", @@ -105,6 +104,8 @@ "Help" => "Ajuda", "Access forbidden" => "Accés prohibit", "Cloud not found" => "No s'ha trobat el núvol", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Ei,\n\nnomés fer-te saber que %s ha compartit %s amb tu.\nMira-ho: %s\n\nSalut!", +"web services under your control" => "controleu els vostres serveis web", "Edit categories" => "Edita les categories", "Add" => "Afegeix", "Security Warning" => "Avís de seguretat", @@ -125,7 +126,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ó", -"web services under your control" => "controleu els vostres serveis web", "%s is available. Get more information on how to update." => "%s està disponible. Obtingueu més informació de com actualitzar.", "Log out" => "Surt", "Automatic logon rejected!" => "L'ha rebutjat l'acceditació automàtica!", @@ -135,6 +135,7 @@ "remember" => "recorda'm", "Log in" => "Inici de sessió", "Alternative Logins" => "Acreditacions alternatives", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Ei,

    només fer-te saber que %s ha compartit %s amb tu.
    Mira-ho:

    Salut!", "prev" => "anterior", "next" => "següent", "Updating ownCloud to version %s, this may take a while." => "S'està actualitzant ownCloud a la versió %s, pot trigar una estona." diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php index 06cf7c214b..9eca3af105 100644 --- a/core/l10n/cs_CZ.php +++ b/core/l10n/cs_CZ.php @@ -1,8 +1,5 @@ "Uživatel %s s vámi sdílí soubor", -"User %s shared a folder with you" => "Uživatel %s s vámi sdílí složku", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Uživatel %s s vámi sdílí soubor \"%s\". Můžete jej stáhnout zde: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Uživatel %s s vámi sdílí složku \"%s\". Můžete ji stáhnout zde: %s", +"%s shared »%s« with you" => "%s s vámi sdílí »%s«", "Category type not provided." => "Nezadán typ kategorie.", "No category to add?" => "Žádná kategorie k přidání?", "This category already exists: %s" => "Kategorie již existuje: %s", @@ -46,6 +43,7 @@ "years ago" => "před lety", "Choose" => "Vybrat", "Cancel" => "Zrušit", +"Error loading file picker template" => "Chyba při načítání šablony výběru souborů", "Yes" => "Ano", "No" => "Ne", "Ok" => "Ok", @@ -92,6 +90,7 @@ "Request failed!
    Did you make sure your email/username was right?" => "Požadavek selhal.
    Ujistili jste se, že vaše uživatelské jméno a e-mail jsou správně?", "You will receive a link to reset your password via Email." => "Bude Vám e-mailem zaslán odkaz pro obnovu hesla.", "Username" => "Uživatelské jméno", +"Yes, I really want to reset my password now" => "Ano, opravdu si nyní přeji obnovit své heslo", "Request reset" => "Vyžádat obnovu", "Your password was reset" => "Vaše heslo bylo obnoveno", "To login page" => "Na stránku přihlášení", @@ -104,6 +103,8 @@ "Help" => "Nápověda", "Access forbidden" => "Přístup zakázán", "Cloud not found" => "Cloud nebyl nalezen", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Ahoj,\n\njenom vám chci oznámit že %s s vámi sdílí %s.\nPodívat se můžete zde: %s\n\nDíky", +"web services under your control" => "služby webu pod Vaší kontrolou", "Edit categories" => "Upravit kategorie", "Add" => "Přidat", "Security Warning" => "Bezpečnostní upozornění", @@ -124,7 +125,6 @@ "Database tablespace" => "Tabulkový prostor databáze", "Database host" => "Hostitel databáze", "Finish setup" => "Dokončit nastavení", -"web services under your control" => "služby webu pod Vaší kontrolou", "%s is available. Get more information on how to update." => "%s je dostupná. Získejte více informací k postupu aktualizace.", "Log out" => "Odhlásit se", "Automatic logon rejected!" => "Automatické přihlášení odmítnuto.", @@ -134,6 +134,7 @@ "remember" => "zapamatovat", "Log in" => "Přihlásit", "Alternative Logins" => "Alternativní přihlášení", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Ahoj,

    jenom vám chci oznámit že %s s vámi sdílí %s.\nPodívat se můžete
    zde.

    Díky", "prev" => "předchozí", "next" => "následující", "Updating ownCloud to version %s, this may take a while." => "Aktualizuji ownCloud na verzi %s, bude to chvíli trvat." diff --git a/core/l10n/cy_GB.php b/core/l10n/cy_GB.php index cdb2576d45..6158a356dc 100644 --- a/core/l10n/cy_GB.php +++ b/core/l10n/cy_GB.php @@ -1,8 +1,4 @@ "Rhannodd defnyddiwr %s ffeil â chi", -"User %s shared a folder with you" => "Rhannodd defnyddiwr %s blygell â chi", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Rhannodd defnyddiwr %s ffeil \"%s\" â chi. Gellir ei llwytho lawr o fan hyn: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Rhannodd defnyddiwr %s blygell \"%s\" â chi. Gellir ei llwytho lawr o fan hyn: %s", "Category type not provided." => "Math o gategori heb ei ddarparu.", "No category to add?" => "Dim categori i'w ychwanegu?", "This category already exists: %s" => "Mae'r categori hwn eisoes yn bodoli: %s", @@ -104,6 +100,7 @@ "Help" => "Cymorth", "Access forbidden" => "Mynediad wedi'i wahardd", "Cloud not found" => "Methwyd canfod cwmwl", +"web services under your control" => "gwasanaethau gwe a reolir gennych", "Edit categories" => "Golygu categorïau", "Add" => "Ychwanegu", "Security Warning" => "Rhybudd Diogelwch", @@ -124,7 +121,6 @@ "Database tablespace" => "Tablespace cronfa ddata", "Database host" => "Gwesteiwr cronfa ddata", "Finish setup" => "Gorffen sefydlu", -"web services under your control" => "gwasanaethau gwe a reolir gennych", "%s is available. Get more information on how to update." => "%s ar gael. Mwy o wybodaeth am sut i ddiweddaru.", "Log out" => "Allgofnodi", "Automatic logon rejected!" => "Gwrthodwyd mewngofnodi awtomatig!", diff --git a/core/l10n/da.php b/core/l10n/da.php index 4e9f742e80..b3da17ba79 100644 --- a/core/l10n/da.php +++ b/core/l10n/da.php @@ -1,8 +1,4 @@ "Bruger %s delte en fil med dig", -"User %s shared a folder with you" => "Bruger %s delte en mappe med dig", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Bruger %s delte filen \"%s\" med dig. Den kan hentes her: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Bruger %s delte mappe \"%s\" med dig. Det kan hentes her: %s", "Category type not provided." => "Kategori typen ikke er fastsat.", "No category to add?" => "Ingen kategori at tilføje?", "This category already exists: %s" => "Kategorien eksisterer allerede: %s", @@ -46,6 +42,7 @@ "years ago" => "år siden", "Choose" => "Vælg", "Cancel" => "Annuller", +"Error loading file picker template" => "Fejl ved indlæsning af filvælger skabelon", "Yes" => "Ja", "No" => "Nej", "Ok" => "OK", @@ -88,6 +85,8 @@ "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}", +"The link to reset your password has been sent to your email.
    If you do not receive it within a reasonable amount of time, check your spam/junk folders.
    If it is not there ask your local administrator ." => "Linket til at nulstille dit kodeord er blevet sendt til din e-post.
    Hvis du ikke modtager den inden for en rimelig tid, så tjek dine spam / junk mapper.
    Hvis det ikke er der, så spørg din lokale administrator.", +"Request failed!
    Did you make sure your email/username was right?" => "Anmodning mislykkedes!
    Er du sikker på at din e-post / brugernavn var korrekt?", "You will receive a link to reset your password via Email." => "Du vil modtage et link til at nulstille dit kodeord via email.", "Username" => "Brugernavn", "Request reset" => "Anmod om nulstilling", @@ -102,6 +101,7 @@ "Help" => "Hjælp", "Access forbidden" => "Adgang forbudt", "Cloud not found" => "Sky ikke fundet", +"web services under your control" => "Webtjenester under din kontrol", "Edit categories" => "Rediger kategorier", "Add" => "Tilføj", "Security Warning" => "Sikkerhedsadvarsel", @@ -122,7 +122,7 @@ "Database tablespace" => "Database tabelplads", "Database host" => "Databasehost", "Finish setup" => "Afslut opsætning", -"web services under your control" => "Webtjenester under din kontrol", +"%s is available. Get more information on how to update." => "%s er tilgængelig. Få mere information om, hvordan du opdaterer.", "Log out" => "Log ud", "Automatic logon rejected!" => "Automatisk login afvist!", "If you did not change your password recently, your account may be compromised!" => "Hvis du ikke har ændret din adgangskode for nylig, har nogen muligvis tiltvunget sig adgang til din konto!", diff --git a/core/l10n/de.php b/core/l10n/de.php index 62e9925b94..bf301b1179 100644 --- a/core/l10n/de.php +++ b/core/l10n/de.php @@ -1,8 +1,4 @@ "Der Nutzer %s hat eine Datei mit Dir geteilt", -"User %s shared a folder with you" => "%s hat ein Verzeichnis mit Dir geteilt", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s hat die Datei \"%s\" mit Dir geteilt. Sie ist hier zum Download verfügbar: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s hat den Ordner \"%s\" mit Dir geteilt. Er ist hier zum Download verfügbar: %s", "Category type not provided." => "Kategorie nicht angegeben.", "No category to add?" => "Keine Kategorie hinzuzufügen?", "This category already exists: %s" => "Die Kategorie '%s' existiert bereits.", @@ -46,6 +42,7 @@ "years ago" => "Vor Jahren", "Choose" => "Auswählen", "Cancel" => "Abbrechen", +"Error loading file picker template" => "Dateiauswahltemplate konnte nicht geladen werden", "Yes" => "Ja", "No" => "Nein", "Ok" => "OK", @@ -104,6 +101,7 @@ "Help" => "Hilfe", "Access forbidden" => "Zugriff verboten", "Cloud not found" => "Cloud nicht gefunden", +"web services under your control" => "Web-Services unter Deiner Kontrolle", "Edit categories" => "Kategorien bearbeiten", "Add" => "Hinzufügen", "Security Warning" => "Sicherheitswarnung", @@ -124,7 +122,6 @@ "Database tablespace" => "Datenbank-Tablespace", "Database host" => "Datenbank-Host", "Finish setup" => "Installation abschließen", -"web services under your control" => "Web-Services unter Deiner Kontrolle", "%s is available. Get more information on how to update." => "%s ist verfügbar. Holen Sie weitere Informationen zu Aktualisierungen ein.", "Log out" => "Abmelden", "Automatic logon rejected!" => "Automatischer Login zurückgewiesen!", diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php index ea8a4e5adc..e7842eb157 100644 --- a/core/l10n/de_DE.php +++ b/core/l10n/de_DE.php @@ -1,8 +1,5 @@ "Der Nutzer %s hat eine Datei mit Ihnen geteilt", -"User %s shared a folder with you" => "%s hat einen Ordner mit Ihnen geteilt", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s hat die Datei \"%s\" mit Ihnen geteilt. Sie ist hier zum Download verfügbar: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s hat den Ordner \"%s\" mit Ihnen geteilt. Er ist hier zum Download verfügbar: %s", +"%s shared »%s« with you" => "%s geteilt »%s« mit Ihnen", "Category type not provided." => "Kategorie nicht angegeben.", "No category to add?" => "Keine Kategorie hinzuzufügen?", "This category already exists: %s" => "Die nachfolgende Kategorie existiert bereits: %s", @@ -93,6 +90,8 @@ "Request failed!
    Did you make sure your email/username was right?" => "Anfrage fehlgeschlagen!
    Haben Sie darauf geachtet, dass E-Mail-Adresse/Nutzername korrekt waren?", "You will receive a link to reset your password via Email." => "Sie erhalten einen Link per E-Mail, um Ihr Passwort zurückzusetzen.", "Username" => "Benutzername", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Ihre Dateien sind verschlüsselt. Wenn Sie den Wiederherstellungsschlüssel nicht aktiviert haben, wird es keinen Weg geben, um Ihre Daten wieder zu bekommen, nachdem Ihr Passwort zurückgesetzt wurde. Wenn Sie sich nicht sicher sind, was Sie tun sollen, wenden Sie sich bitte an Ihren Administrator, bevor Sie fortfahren. Wollen Sie wirklich fortfahren?", +"Yes, I really want to reset my password now" => "Ja, ich möchte jetzt mein Passwort wirklich zurücksetzen.", "Request reset" => "Zurücksetzung anfordern", "Your password was reset" => "Ihr Passwort wurde zurückgesetzt.", "To login page" => "Zur Login-Seite", @@ -105,6 +104,8 @@ "Help" => "Hilfe", "Access forbidden" => "Zugriff verboten", "Cloud not found" => "Cloud wurde nicht gefunden", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Hallo,\n\nich wollte Sie nur wissen lassen, dass %s %s mit Ihnen teilt.\nSchauen Sie es sich an: %s\n\nViele Grüße!", +"web services under your control" => "Web-Services unter Ihrer Kontrolle", "Edit categories" => "Kategorien ändern", "Add" => "Hinzufügen", "Security Warning" => "Sicherheitshinweis", @@ -125,7 +126,6 @@ "Database tablespace" => "Datenbank-Tablespace", "Database host" => "Datenbank-Host", "Finish setup" => "Installation abschließen", -"web services under your control" => "Web-Services unter Ihrer Kontrolle", "%s is available. Get more information on how to update." => "%s ist verfügbar. Holen Sie weitere Informationen zu Aktualisierungen ein.", "Log out" => "Abmelden", "Automatic logon rejected!" => "Automatische Anmeldung verweigert!", @@ -135,6 +135,7 @@ "remember" => "merken", "Log in" => "Einloggen", "Alternative Logins" => "Alternative Logins", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Hallo,

    ich wollte Sie nur wissen lassen, dass %s %s mit Ihnen teilt.
    Schauen Sie es sich an!

    Viele Grüße!", "prev" => "Zurück", "next" => "Weiter", "Updating ownCloud to version %s, this may take a while." => "Aktualisiere ownCloud auf Version %s. Dies könnte eine Weile dauern." diff --git a/core/l10n/el.php b/core/l10n/el.php index 11295105e3..022d9d9003 100644 --- a/core/l10n/el.php +++ b/core/l10n/el.php @@ -1,8 +1,5 @@ "Ο χρήστης %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", +"%s shared »%s« with you" => "Ο %s διαμοιράστηκε μαζί σας το »%s«", "Category type not provided." => "Δεν δώθηκε τύπος κατηγορίας.", "No category to add?" => "Δεν έχετε κατηγορία να προσθέσετε;", "This category already exists: %s" => "Αυτή η κατηγορία υπάρχει ήδη: %s", @@ -92,6 +89,8 @@ "Request failed!
    Did you make sure your email/username was right?" => "Η αίτηση απέτυχε! Βεβαιωθηκατε ότι το email σας / username ειναι σωστο? ", "You will receive a link to reset your password via Email." => "Θα λάβετε ένα σύνδεσμο για να επαναφέρετε τον κωδικό πρόσβασής σας μέσω ηλεκτρονικού ταχυδρομείου.", "Username" => "Όνομα χρήστη", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί ανάκτησης, δεν υπάρχει περίπτωση να έχετε πρόσβαση στα δεδομένα σας μετά την επαναφορά του συνθηματικού. Εάν δεν είστε σίγουροι τι να κάνετε, παρακαλώ επικοινωνήστε με τον διαχειριστή πριν συνεχίσετε. Θέλετε να συνεχίσετε;", +"Yes, I really want to reset my password now" => "Ναι, θέλω να επαναφέρω το συνθηματικό μου τώρα.", "Request reset" => "Επαναφορά αίτησης", "Your password was reset" => "Ο κωδικός πρόσβασής σας επαναφέρθηκε", "To login page" => "Σελίδα εισόδου", @@ -104,6 +103,8 @@ "Help" => "Βοήθεια", "Access forbidden" => "Δεν επιτρέπεται η πρόσβαση", "Cloud not found" => "Δεν βρέθηκε νέφος", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Γεια σας,\n\nσας ενημερώνουμε ότι ο %s διαμοιράστηκε μαζί σας το %s.\nΔείτε το: %s\n\nΓεια χαρά!", +"web services under your control" => "υπηρεσίες δικτύου υπό τον έλεγχό σας", "Edit categories" => "Επεξεργασία κατηγοριών", "Add" => "Προσθήκη", "Security Warning" => "Προειδοποίηση Ασφαλείας", @@ -124,7 +125,7 @@ "Database tablespace" => "Κενά Πινάκων Βάσης Δεδομένων", "Database host" => "Διακομιστής βάσης δεδομένων", "Finish setup" => "Ολοκλήρωση εγκατάστασης", -"web services under your control" => "υπηρεσίες δικτύου υπό τον έλεγχό σας", +"%s is available. Get more information on how to update." => "%s είναι διαθέσιμη. Δείτε περισσότερες πληροφορίες στο πώς να αναβαθμίσετε.", "Log out" => "Αποσύνδεση", "Automatic logon rejected!" => "Απορρίφθηκε η αυτόματη σύνδεση!", "If you did not change your password recently, your account may be compromised!" => "Εάν δεν αλλάξατε το συνθηματικό σας προσφάτως, ο λογαριασμός μπορεί να έχει διαρρεύσει!", @@ -133,6 +134,7 @@ "remember" => "απομνημόνευση", "Log in" => "Είσοδος", "Alternative Logins" => "Εναλλακτικές Συνδέσεις", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Γεια σας,

    σας ενημερώνουμε ότι ο %s διαμοιράστηκε μαζί σας το »%s«.
    Δείτε το!

    Γεια χαρά!", "prev" => "προηγούμενο", "next" => "επόμενο", "Updating ownCloud to version %s, this may take a while." => "Ενημερώνοντας το ownCloud στην έκδοση %s,μπορεί να πάρει λίγο χρόνο." diff --git a/core/l10n/en@pirate.php b/core/l10n/en@pirate.php index 981d9a1ca0..0c590d0b75 100644 --- a/core/l10n/en@pirate.php +++ b/core/l10n/en@pirate.php @@ -1,5 +1,4 @@ "User %s shared a file with you", "Password" => "Passcode", "web services under your control" => "web services under your control" ); diff --git a/core/l10n/eo.php b/core/l10n/eo.php index 72cdf90c61..2adf09d3a0 100644 --- a/core/l10n/eo.php +++ b/core/l10n/eo.php @@ -1,10 +1,8 @@ "La uzanto %s kunhavigis dosieron kun vi", -"User %s shared a folder with you" => "La uzanto %s kunhavigis dosierujon kun vi", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "La uzanto %s kunhavigis la dosieron “%s” kun vi. Ĝi elŝuteblas el tie ĉi: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "La uzanto %s kunhavigis la dosierujon “%s” kun vi. Ĝi elŝuteblas el tie ĉi: %s", +"%s shared »%s« with you" => "%s kunhavigis “%s” kun vi", "Category type not provided." => "Ne proviziĝis tipon de kategorio.", "No category to add?" => "Ĉu neniu kategorio estas aldonota?", +"This category already exists: %s" => "Tiu kategorio jam ekzistas: %s", "Object type not provided." => "Ne proviziĝis tipon de objekto.", "%s ID not provided." => "Ne proviziĝis ID-on de %s.", "Error adding %s to favorites." => "Eraro dum aldono de %s al favoratoj.", @@ -52,6 +50,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!", +"Shared" => "Dividita", "Share" => "Kunhavigi", "Error while sharing" => "Eraro dum kunhavigo", "Error while unsharing" => "Eraro dum malkunhavigo", @@ -82,10 +81,14 @@ "Error setting expiration date" => "Eraro dum agordado de limdato", "Sending ..." => "Sendante...", "Email sent" => "La retpoŝtaĵo sendiĝis", +"The update was unsuccessful. Please report this issue to the ownCloud community." => "La ĝisdatigo estis malsukcese. Bonvolu raporti tiun problemon al la ownClouda komunumo.", +"The update was successful. Redirecting you to ownCloud now." => "La ĝisdatigo estis sukcesa. Alidirektante nun al ownCloud.", "ownCloud password reset" => "La pasvorto de ownCloud restariĝis.", "Use the following link to reset your password: {link}" => "Uzu la jenan ligilon por restarigi vian pasvorton: {link}", +"Request failed!
    Did you make sure your email/username was right?" => "La peto malsukcesis!
    Ĉu vi certiĝis, ke via retpoŝto/uzantonomo ĝustas?", "You will receive a link to reset your password via Email." => "Vi ricevos ligilon retpoŝte por rekomencigi vian pasvorton.", "Username" => "Uzantonomo", +"Yes, I really want to reset my password now" => "Jes, mi vere volas restarigi mian pasvorton nun", "Request reset" => "Peti rekomencigon", "Your password was reset" => "Via pasvorto rekomencis", "To login page" => "Al la ensaluta paĝo", @@ -98,9 +101,13 @@ "Help" => "Helpo", "Access forbidden" => "Aliro estas malpermesata", "Cloud not found" => "La nubo ne estas trovita", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Saluton:\n\nNi nur sciigas vin, ke %s kunhavigis %s kun vi.\nVidu ĝin: %s\n\nĜis!", +"web services under your control" => "TTT-servoj regataj de vi", "Edit categories" => "Redakti kategoriojn", "Add" => "Aldoni", "Security Warning" => "Sekureca averto", +"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Via PHP versio estas sendefenda je la NULL bajto atako (CVE-2006-7243)", +"Please update your PHP installation to use ownCloud securely." => "Bonvolu ĝisdatigi vian instalon de PHP por uzi ownCloud-on sekure.", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Ne disponeblas sekura generilo de hazardaj numeroj; bonvolu kapabligi la OpenSSL-kromaĵon por PHP.", "Create an admin account" => "Krei administran konton", "Advanced" => "Progresinta", @@ -113,13 +120,17 @@ "Database tablespace" => "Datumbaza tabelospaco", "Database host" => "Datumbaza gastigo", "Finish setup" => "Fini la instalon", -"web services under your control" => "TTT-servoj regataj de vi", +"%s is available. Get more information on how to update." => "%s haveblas. Ekhavi pli da informo pri kiel ĝisdatigi.", "Log out" => "Elsaluti", +"Automatic logon rejected!" => "La aŭtomata ensaluto malakceptiĝis!", "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!", "Please change your password to secure your account again." => "Bonvolu ŝanĝi vian pasvorton por sekurigi vian konton ree.", "Lost your password?" => "Ĉu vi perdis vian pasvorton?", "remember" => "memori", "Log in" => "Ensaluti", +"Alternative Logins" => "Alternativaj ensalutoj", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Saluton:

    Ni nur sciigas vin, ke %s kunhavigis “%s” kun vi.
    Vidu ĝin

    Ĝis!", "prev" => "maljena", -"next" => "jena" +"next" => "jena", +"Updating ownCloud to version %s, this may take a while." => "ownCloud ĝisdatiĝas al eldono %s, tio ĉi povas daŭri je iom da tempo." ); diff --git a/core/l10n/es.php b/core/l10n/es.php index 4b8d5c7b18..f5caa232dc 100644 --- a/core/l10n/es.php +++ b/core/l10n/es.php @@ -1,14 +1,11 @@ "El usuario %s ha compartido un archivo contigo.", -"User %s shared a folder with you" => "El usuario %s ha compartido una carpeta contigo.", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "El usuario %s ha compartido el archivo \"%s\" contigo. Puedes descargarlo aquí: %s.", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "El usuario %s ha compartido la carpeta \"%s\" contigo. Puedes descargarla aquí: %s.", +"%s shared »%s« with you" => "%s compatido »%s« contigo", "Category type not provided." => "Tipo de categoría no proporcionado.", "No category to add?" => "¿Ninguna categoría para añadir?", -"This category already exists: %s" => "Ya existe esta categoría: %s", +"This category already exists: %s" => "Esta categoría ya existe: %s", "Object type not provided." => "Tipo de objeto no proporcionado.", "%s ID not provided." => "ID de %s no proporcionado.", -"Error adding %s to favorites." => "Error añadiendo %s a los favoritos.", +"Error adding %s to favorites." => "Error añadiendo %s a 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", @@ -50,9 +47,9 @@ "Yes" => "Sí", "No" => "No", "Ok" => "Aceptar", -"The object type is not specified." => "No se ha especificado el tipo de objeto", +"The object type is not specified." => "El tipo de objeto no está especificado.", "Error" => "Error", -"The app name is not specified." => "No se ha especificado el nombre de la aplicación.", +"The app name is not specified." => "El nombre de la aplicación no está especificado.", "The required file {file} is not installed!" => "¡El fichero requerido {file} no está instalado!", "Shared" => "Compartido", "Share" => "Compartir", @@ -86,13 +83,15 @@ "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 de este problema a la Comunidad de ownCloud.", -"The update was successful. Redirecting you to ownCloud now." => "La actualización se ha realizado correctamente. Redireccionando a ownCloud ahora.", -"ownCloud password reset" => "Restablecer contraseña de ownCloud", -"Use the following link to reset your password: {link}" => "Utiliza el siguiente enlace para restablecer tu contraseña: {link}", +"The update was successful. Redirecting you to ownCloud now." => "La actualización se ha realizado con éxito. Redireccionando a ownCloud ahora.", +"ownCloud password reset" => "Reseteo contraseña de ownCloud", +"Use the following link to reset your password: {link}" => "Utilice el siguiente enlace para restablecer tu contraseña: {link}", "The link to reset your password has been sent to your email.
    If you do not receive it within a reasonable amount of time, check your spam/junk folders.
    If it is not there ask your local administrator ." => "El enlace para restablecer la contraseña ha sido enviada a su correo electrónico.
    Si no lo recibe en un plazo razonable de tiempo, revise su carpeta de spam / correo no deseado.
    Si no está allí, pregunte a su administrador local.", "Request failed!
    Did you make sure your email/username was right?" => "La petición ha fallado!
    ¿Está seguro de que su dirección de correo electrónico o nombre de usuario era correcto?", "You will receive a link to reset your password via Email." => "Recibirá un enlace por correo electrónico para restablecer su contraseña", "Username" => "Nombre de usuario", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Sus archivos están cifrados. Si no ha habilitado la clave de recurperación, no habrá forma de recuperar sus datos luego de que la contraseña sea reseteada. Si no está seguro de qué hacer, contacte a su administrador antes de continuar. ¿Realmente desea continuar?", +"Yes, I really want to reset my password now" => "Sí. Realmente deseo resetear mi contraseña ahora", "Request reset" => "Solicitar restablecimiento", "Your password was reset" => "Su contraseña ha sido establecida", "To login page" => "A la página de inicio de sesión", @@ -103,20 +102,22 @@ "Apps" => "Aplicaciones", "Admin" => "Administración", "Help" => "Ayuda", -"Access forbidden" => "Acceso denegado", -"Cloud not found" => "No se ha encontrado la nube", +"Access forbidden" => "Acceso prohibido", +"Cloud not found" => "No se ha encuentra la nube", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Oye,⏎ sólo te hago saber que %s compartido %s contigo.⏎ Míralo: %s ⏎Disfrutalo!", +"web services under your control" => "Servicios web bajo su control", "Edit categories" => "Editar categorías", "Add" => "Agregar", "Security Warning" => "Advertencia de seguridad", -"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "La versión de PHP es vulnerable al ataque de Byte NULL (CVE-2006-7243)", +"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Su versión de PHP es vulnerable al ataque de Byte NULL (CVE-2006-7243)", "Please update your PHP installation to use ownCloud securely." => "Por favor, actualice su instalación de PHP para utilizar ownCloud de manera segura.", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "No está disponible un generador de números aleatorios seguro, por favor habilite la extensión OpenSSL de PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Sin un generador de números aleatorios seguro, un atacante podría predecir los tokens de restablecimiento de contraseñas y tomar el control de su cuenta.", -"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Probablemente su directorio de datos y sus archivos sean accesibles a través de internet ya que el archivo .htaccess no funciona.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Su directorio de datos y sus archivos probablemente sean accesibles a través de internet ya que el archivo .htaccess no funciona.", "For information how to properly configure your server, please see the
    documentation." => "Para información sobre cómo configurar adecuadamente su servidor, por favor vea la documentación.", "Create an admin account" => "Crear una cuenta de administrador", "Advanced" => "Avanzado", -"Data folder" => "Directorio de almacenamiento", +"Data folder" => "Directorio de datos", "Configure the database" => "Configurar la base de datos", "will be used" => "se utilizarán", "Database user" => "Usuario de la base de datos", @@ -125,16 +126,16 @@ "Database tablespace" => "Espacio de tablas de la base de datos", "Database host" => "Host de la base de datos", "Finish setup" => "Completar la instalación", -"web services under your control" => "Servicios web bajo su control", "%s is available. Get more information on how to update." => "%s esta disponible. Obtener mas información de como actualizar.", "Log out" => "Salir", "Automatic logon rejected!" => "¡Inicio de sesión automático rechazado!", "If you did not change your password recently, your account may be compromised!" => "Si usted no ha cambiado su contraseña recientemente, ¡puede que su cuenta esté comprometida!", "Please change your password to secure your account again." => "Por favor cambie su contraseña para asegurar su cuenta nuevamente.", "Lost your password?" => "¿Ha perdido su contraseña?", -"remember" => "recordarme", +"remember" => "recordar", "Log in" => "Entrar", -"Alternative Logins" => "Nombre de usuarios alternativos", +"Alternative Logins" => "Inicios de sesión alternativos", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Oye,

    sólo te hago saber que %s compartido %s contigo,
    \nMíralo!

    Disfrutalo!", "prev" => "anterior", "next" => "siguiente", "Updating ownCloud to version %s, this may take a while." => "Actualizando ownCloud a la versión %s, esto puede demorar un tiempo." diff --git a/core/l10n/es_AR.php b/core/l10n/es_AR.php index 38b0791b94..77c3fb854b 100644 --- a/core/l10n/es_AR.php +++ b/core/l10n/es_AR.php @@ -1,8 +1,5 @@ "El usurario %s compartió un archivo con vos.", -"User %s shared a folder with you" => "El usurario %s compartió una carpeta con vos.", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "El usuario %s compartió el archivo \"%s\" con vos. Está disponible para su descarga aquí: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "El usuario %s compartió el archivo \"%s\" con vos. Está disponible para su descarga aquí: %s", +"%s shared »%s« with you" => "%s compartió \"%s\" con vos", "Category type not provided." => "Tipo de categoría no provisto. ", "No category to add?" => "¿Ninguna categoría para añadir?", "This category already exists: %s" => "Esta categoría ya existe: %s", @@ -46,6 +43,7 @@ "years ago" => "años atrás", "Choose" => "Elegir", "Cancel" => "Cancelar", +"Error loading file picker template" => "Error al cargar la plantilla del seleccionador de archivos", "Yes" => "Sí", "No" => "No", "Ok" => "Aceptar", @@ -88,8 +86,12 @@ "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}", +"The link to reset your password has been sent to your email.
    If you do not receive it within a reasonable amount of time, check your spam/junk folders.
    If it is not there ask your local administrator ." => "El enlace para restablecer la contraseña fue enviada a tu correo electrónico.
    Si no lo recibís en un plazo de tiempo razonable, revisá tu carpeta de spam / correo no deseado.
    Si no está ahí, preguntale a tu administrador.", +"Request failed!
    Did you make sure your email/username was right?" => "¡Error en el pedido!
    ¿Estás seguro de que tu dirección de correo electrónico o nombre de usuario son correcto?", "You will receive a link to reset your password via Email." => "Vas a recibir un enlace por e-mail para restablecer tu contraseña", "Username" => "Nombre de usuario", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Tus archivos están encriptados. Si no habilitaste la clave de recuperación, no vas a tener manera de obtener nuevamente tus datos después que se resetee tu contraseña. Si no estás seguro sobre qué hacer, ponete en contacto con el administrador antes de seguir. ¿Estás seguro/a de querer continuar?", +"Yes, I really want to reset my password now" => "Sí, definitivamente quiero resetear mi contraseña ahora", "Request reset" => "Solicitar restablecimiento", "Your password was reset" => "Tu contraseña fue restablecida", "To login page" => "A la página de inicio de sesión", @@ -102,6 +104,8 @@ "Help" => "Ayuda", "Access forbidden" => "Acceso denegado", "Cloud not found" => "No se encontró ownCloud", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Hola,\n\nSimplemente te informo que %s compartió %s con vos.\nMiralo acá: %s\n\n¡Chau!", +"web services under your control" => "servicios web controlados por vos", "Edit categories" => "Editar categorías", "Add" => "Agregar", "Security Warning" => "Advertencia de seguridad", @@ -122,7 +126,7 @@ "Database tablespace" => "Espacio de tablas de la base de datos", "Database host" => "Host de la base de datos", "Finish setup" => "Completar la instalación", -"web services under your control" => "servicios web controlados por vos", +"%s is available. Get more information on how to update." => "%s está disponible. Obtené más información sobre cómo actualizar.", "Log out" => "Cerrar la sesión", "Automatic logon rejected!" => "¡El inicio de sesión automático fue rechazado!", "If you did not change your password recently, your account may be compromised!" => "¡Si no cambiaste tu contraseña recientemente, puede ser que tu cuenta esté comprometida!", @@ -131,6 +135,7 @@ "remember" => "recordame", "Log in" => "Entrar", "Alternative Logins" => "Nombre alternativos de usuarios", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Hola,

    Simplemente te informo que %s compartió %s con vos.
    Miralo acá:

    ¡Chau!", "prev" => "anterior", "next" => "siguiente", "Updating ownCloud to version %s, this may take a while." => "Actualizando ownCloud a la versión %s, puede domorar un rato." diff --git a/core/l10n/et_EE.php b/core/l10n/et_EE.php index 803b36e1c3..4c0a41c508 100644 --- a/core/l10n/et_EE.php +++ b/core/l10n/et_EE.php @@ -1,8 +1,4 @@ "Kasutaja %s jagas sinuga faili", -"User %s shared a folder with you" => "Kasutaja %s jagas Sinuga kausta.", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Kasutaja %s jagas sinuga faili \"%s\". See on allalaadimiseks saadaval siin: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Kasutaja %s jagas sinuga kausta \"%s\". See on allalaadimiseks saadaval siin: %s", "Category type not provided." => "Kategooria tüüp puudub.", "No category to add?" => "Pole kategooriat, mida lisada?", "This category already exists: %s" => "See kategooria on juba olemas: %s", @@ -105,6 +101,7 @@ "Help" => "Abiinfo", "Access forbidden" => "Ligipääs on keelatud", "Cloud not found" => "Pilve ei leitud", +"web services under your control" => "veebitenused sinu kontrolli all", "Edit categories" => "Muuda kategooriaid", "Add" => "Lisa", "Security Warning" => "Turvahoiatus", @@ -125,7 +122,6 @@ "Database tablespace" => "Andmebaasi tabeliruum", "Database host" => "Andmebaasi host", "Finish setup" => "Lõpeta seadistamine", -"web services under your control" => "veebiteenused sinu kontrolli all", "%s is available. Get more information on how to update." => "%s on saadaval. Vaata lähemalt kuidas uuendada.", "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 1ec4ee8f5c..117c010575 100644 --- a/core/l10n/eu.php +++ b/core/l10n/eu.php @@ -1,8 +1,4 @@ "%s erabiltzaileak zurekin fitxategi bat elkarbanatu du ", -"User %s shared a folder with you" => "%s erabiltzaileak zurekin karpeta bat elkarbanatu du ", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s erabiltzaileak \"%s\" fitxategia zurekin elkarbanatu du. Hemen duzu eskuragarri: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s erabiltzaileak \"%s\" karpeta zurekin elkarbanatu du. Hemen duzu eskuragarri: %s", "Category type not provided." => "Kategoria mota ez da zehaztu.", "No category to add?" => "Ez dago gehitzeko kategoriarik?", "This category already exists: %s" => "Kategoria hau dagoeneko existitzen da: %s", @@ -102,6 +98,7 @@ "Help" => "Laguntza", "Access forbidden" => "Sarrera debekatuta", "Cloud not found" => "Ez da hodeia aurkitu", +"web services under your control" => "web zerbitzuak zure kontrolpean", "Edit categories" => "Editatu kategoriak", "Add" => "Gehitu", "Security Warning" => "Segurtasun abisua", @@ -122,7 +119,6 @@ "Database tablespace" => "Datu basearen taula-lekua", "Database host" => "Datubasearen hostalaria", "Finish setup" => "Bukatu konfigurazioa", -"web services under your control" => "web zerbitzuak zure kontrolpean", "Log out" => "Saioa bukatu", "Automatic logon rejected!" => "Saio hasiera automatikoa ez onartuta!", "If you did not change your password recently, your account may be compromised!" => "Zure pasahitza orain dela gutxi ez baduzu aldatu, zure kontua arriskuan egon daiteke!", diff --git a/core/l10n/fa.php b/core/l10n/fa.php index fb8a312587..338b3ad4b2 100644 --- a/core/l10n/fa.php +++ b/core/l10n/fa.php @@ -1,8 +1,4 @@ "کاربر %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: %s" => "این دسته هم اکنون وجود دارد: %s", @@ -102,6 +98,7 @@ "Help" => "راه‌نما", "Access forbidden" => "اجازه دسترسی به مناطق ممنوعه را ندارید", "Cloud not found" => "پیدا نشد", +"web services under your control" => "سرویس های تحت وب در کنترل شما", "Edit categories" => "ویرایش گروه", "Add" => "افزودن", "Security Warning" => "اخطار امنیتی", @@ -122,7 +119,6 @@ "Database tablespace" => "جدول پایگاه داده", "Database host" => "هاست پایگاه داده", "Finish setup" => "اتمام نصب", -"web services under your control" => "سرویس های تحت وب در کنترل شما", "Log out" => "خروج", "Automatic logon rejected!" => "ورود به سیستم اتوماتیک ردشد!", "If you did not change your password recently, your account may be compromised!" => "اگر شما اخیرا رمزعبور را تغییر نداده اید، حساب شما در معرض خطر می باشد !", diff --git a/core/l10n/fi_FI.php b/core/l10n/fi_FI.php index 1f7a01e0e0..3e471ad194 100644 --- a/core/l10n/fi_FI.php +++ b/core/l10n/fi_FI.php @@ -1,8 +1,5 @@ "Käyttäjä %s jakoi tiedoston kanssasi", -"User %s shared a folder with you" => "Käyttäjä %s jakoi kansion kanssasi", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Käyttäjä %s jakoi tiedoston \"%s\" kanssasi. Se on ladattavissa täältä: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Käyttäjä %s jakoi kansion \"%s\" kanssasi. Se on ladattavissa täältä: %s", +"%s shared »%s« with you" => "%s jakoi kohteen »%s« kanssasi", "Category type not provided." => "Luokan tyyppiä ei määritelty.", "No category to add?" => "Ei lisättävää luokkaa?", "This category already exists: %s" => "Luokka on jo olemassa: %s", @@ -87,6 +84,7 @@ "Request failed!
    Did you make sure your email/username was right?" => "Pyyntö epäonnistui!
    Olihan sähköpostiosoitteesi/käyttäjätunnuksesi oikein?", "You will receive a link to reset your password via Email." => "Saat sähköpostitse linkin nollataksesi salasanan.", "Username" => "Käyttäjätunnus", +"Yes, I really want to reset my password now" => "Kyllä, haluan nollata salasanani nyt", "Request reset" => "Tilaus lähetetty", "Your password was reset" => "Salasanasi nollattiin", "To login page" => "Kirjautumissivulle", @@ -99,6 +97,8 @@ "Help" => "Ohje", "Access forbidden" => "Pääsy estetty", "Cloud not found" => "Pilveä ei löydy", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Hei!\n\n%s jakoi kohteen %s kanssasi.\nKatso se tästä: %s\n\nNäkemiin!", +"web services under your control" => "verkkopalvelut hallinnassasi", "Edit categories" => "Muokkaa luokkia", "Add" => "Lisää", "Security Warning" => "Turvallisuusvaroitus", @@ -118,7 +118,6 @@ "Database tablespace" => "Tietokannan taulukkotila", "Database host" => "Tietokantapalvelin", "Finish setup" => "Viimeistele asennus", -"web services under your control" => "verkkopalvelut hallinnassasi", "%s is available. Get more information on how to update." => "%s on saatavilla. Lue lisätietoja, miten päivitys asennetaan.", "Log out" => "Kirjaudu ulos", "Automatic logon rejected!" => "Automaattinen sisäänkirjautuminen hylättiin!", @@ -128,6 +127,7 @@ "remember" => "muista", "Log in" => "Kirjaudu sisään", "Alternative Logins" => "Vaihtoehtoiset kirjautumiset", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Hei!

    %s jakoi kohteen »%s« kanssasi.
    Katso se tästä!

    Näkemiin!", "prev" => "edellinen", "next" => "seuraava", "Updating ownCloud to version %s, this may take a while." => "Päivitetään ownCloud versioon %s, tämä saattaa kestää hetken." diff --git a/core/l10n/fr.php b/core/l10n/fr.php index b01625a887..2d1181bfec 100644 --- a/core/l10n/fr.php +++ b/core/l10n/fr.php @@ -1,8 +1,5 @@ "L'utilisateur %s a partagé un fichier avec vous", -"User %s shared a folder with you" => "L'utilsateur %s a partagé un dossier avec vous", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "L'utilisateur %s a partagé le fichier \"%s\" avec vous. Vous pouvez le télécharger ici : %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "L'utilisateur %s a partagé le dossier \"%s\" avec vous. Il est disponible au téléchargement ici : %s", +"%s shared »%s« with you" => "%s partagé »%s« avec vous", "Category type not provided." => "Type de catégorie non spécifié.", "No category to add?" => "Pas de catégorie à ajouter ?", "This category already exists: %s" => "Cette catégorie existe déjà : %s", @@ -46,6 +43,7 @@ "years ago" => "il y a plusieurs années", "Choose" => "Choisir", "Cancel" => "Annuler", +"Error loading file picker template" => "Erreur de chargement du modèle du sélecteur de fichier", "Yes" => "Oui", "No" => "Non", "Ok" => "Ok", @@ -92,6 +90,8 @@ "Request failed!
    Did you make sure your email/username was right?" => "Requête en échec!
    Avez-vous vérifié vos courriel/nom d'utilisateur?", "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.", "Username" => "Nom d'utilisateur", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Vos fichiers sont chiffrés. Si vous n'avez pas activé la clef de récupération, il n'y aura plus aucun moyen de récupérer vos données une fois le mot de passe réinitialisé. Si vous n'êtes pas sûr de ce que vous faites, veuillez contacter votre administrateur avant de continuer. Voulez-vous vraiment continuer ?", +"Yes, I really want to reset my password now" => "Oui, je veux vraiment réinitialiser mon mot de passe maintenant", "Request reset" => "Demander la réinitialisation", "Your password was reset" => "Votre mot de passe a été réinitialisé", "To login page" => "Retour à la page d'authentification", @@ -104,6 +104,8 @@ "Help" => "Aide", "Access forbidden" => "Accès interdit", "Cloud not found" => "Introuvable", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Salut,\n\nje veux juste vous signaler %s partagé %s avec vous.\nVoyez-le: %s\n\nBonne continuation!", +"web services under your control" => "services web sous votre contrôle", "Edit categories" => "Editer les catégories", "Add" => "Ajouter", "Security Warning" => "Avertissement de sécurité", @@ -124,7 +126,6 @@ "Database tablespace" => "Tablespaces de la base de données", "Database host" => "Serveur de la base de données", "Finish setup" => "Terminer l'installation", -"web services under your control" => "services web sous votre contrôle", "%s is available. Get more information on how to update." => "%s est disponible. Obtenez plus d'informations sur la façon de mettre à jour.", "Log out" => "Se déconnecter", "Automatic logon rejected!" => "Connexion automatique rejetée !", @@ -134,6 +135,7 @@ "remember" => "se souvenir de moi", "Log in" => "Connexion", "Alternative Logins" => "Logins alternatifs", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Salut,

    je veux juste vous signaler %s partagé »%s« avec vous.
    Voyez-le!

    Bonne continuation!", "prev" => "précédent", "next" => "suivant", "Updating ownCloud to version %s, this may take a while." => "Mise à jour en cours d'ownCloud vers la version %s, cela peut prendre du temps." diff --git a/core/l10n/gl.php b/core/l10n/gl.php index 9865269544..db53a3e8a4 100644 --- a/core/l10n/gl.php +++ b/core/l10n/gl.php @@ -1,8 +1,5 @@ "O usuario %s compartíu un ficheiro con vostede", -"User %s shared a folder with you" => "O usuario %s compartíu un cartafol con vostede", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "O usuario %s compartiu o ficheiro «%s» con vostede. Teno dispoñíbel en: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "O usuario %s compartiu o cartafol «%s» con vostede. Teno dispoñíbel en: %s", +"%s shared »%s« with you" => "%s compartiu «%s» con vostede", "Category type not provided." => "Non se indicou o tipo de categoría", "No category to add?" => "Sen categoría que engadir?", "This category already exists: %s" => "Esta categoría xa existe: %s", @@ -93,6 +90,8 @@ "Request failed!
    Did you make sure your email/username was right?" => "Non foi posíbel facer a petición!
    Asegúrese de que o seu enderezo de correo ou nome de usuario é correcto.", "You will receive a link to reset your password via Email." => "Recibirá unha ligazón por correo para restabelecer o contrasinal", "Username" => "Nome de usuario", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Os ficheiros están cifrados. Se aínda non activou a chave de recuperación non haberá xeito de recuperar os datos unha vez que se teña restabelecido o contrasinal. Se non ten certeza do que ten que facer, póñase en contacto co administrador antes de continuar. Confirma que quere continuar?", +"Yes, I really want to reset my password now" => "Si, confirmo que quero restabelecer agora o meu contrasinal", "Request reset" => "Petición de restabelecemento", "Your password was reset" => "O contrasinal foi restabelecido", "To login page" => "A páxina de conexión", @@ -105,6 +104,8 @@ "Help" => "Axuda", "Access forbidden" => "Acceso denegado", "Cloud not found" => "Nube non atopada", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Ola,\n\nsó facerlle saber que %s compartiu %s con vostede.\nVéxao en: %s\n\nSaúdos!", +"web services under your control" => "servizos web baixo o seu control", "Edit categories" => "Editar as categorías", "Add" => "Engadir", "Security Warning" => "Aviso de seguranza", @@ -125,7 +126,6 @@ "Database tablespace" => "Táboa de espazos da base de datos", "Database host" => "Servidor da base de datos", "Finish setup" => "Rematar a configuración", -"web services under your control" => "servizos web baixo o seu control", "%s is available. Get more information on how to update." => "%s está dispoñíbel. Obteña máis información sobre como actualizar.", "Log out" => "Desconectar", "Automatic logon rejected!" => "Rexeitouse a entrada automática", @@ -135,6 +135,7 @@ "remember" => "lembrar", "Log in" => "Conectar", "Alternative Logins" => "Accesos alternativos", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Ola,

    só facerlle saber que %s compartiu «%s» con vostede.
    Véxao!

    Saúdos!", "prev" => "anterior", "next" => "seguinte", "Updating ownCloud to version %s, this may take a while." => "Actualizando ownCloud a versión %s, esto pode levar un anaco." diff --git a/core/l10n/he.php b/core/l10n/he.php index eb2c3f3d15..1095507673 100644 --- a/core/l10n/he.php +++ b/core/l10n/he.php @@ -1,8 +1,4 @@ "המשתמש %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: %s" => "הקטגוריה הבאה כבר קיימת: %s", @@ -46,6 +42,7 @@ "years ago" => "שנים", "Choose" => "בחירה", "Cancel" => "ביטול", +"Error loading file picker template" => "שגיאה בטעינת תבנית בחירת הקבצים", "Yes" => "כן", "No" => "לא", "Ok" => "בסדר", @@ -88,6 +85,8 @@ "The update was successful. Redirecting you to ownCloud now." => "תהליך העדכון הסתיים בהצלחה. עכשיו מנתב אותך אל ownCloud.", "ownCloud password reset" => "איפוס הססמה של ownCloud", "Use the following link to reset your password: {link}" => "יש להשתמש בקישור הבא כדי לאפס את הססמה שלך: {link}", +"The link to reset your password has been sent to your email.
    If you do not receive it within a reasonable amount of time, check your spam/junk folders.
    If it is not there ask your local administrator ." => "הקישור לאיפוס הססמה שלך נשלח אליך בדוא״ל.
    אם לא קיבלת את הקישור תוך זמן סביר, מוטב לבדוק את תיבת הזבל שלך.
    אם ההודעה לא שם, כדאי לשאול את מנהל הרשת שלך .", +"Request failed!
    Did you make sure your email/username was right?" => "הבקשה נכשלה!
    האם כתובת הדוא״ל/שם המשתמש שלך נכונים?", "You will receive a link to reset your password via Email." => "יישלח לתיבת הדוא״ל שלך קישור לאיפוס הססמה.", "Username" => "שם משתמש", "Request reset" => "בקשת איפוס", @@ -102,10 +101,12 @@ "Help" => "עזרה", "Access forbidden" => "הגישה נחסמה", "Cloud not found" => "ענן לא נמצא", +"web services under your control" => "שירותי רשת תחת השליטה שלך", "Edit categories" => "ערוך קטגוריות", "Add" => "הוספה", "Security Warning" => "אזהרת אבטחה", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "גרסת ה־PHP פגיעה בפני התקפת בית NULL/ריק (CVE-2006-7243)", +"Please update your PHP installation to use ownCloud securely." => "נא לעדכן את התקנת ה־PHP שלך כדי להשתמש ב־PHP בבטחה.", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "אין מחולל מספרים אקראיים מאובטח, נא להפעיל את ההרחבה OpenSSL ב־PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "ללא מחולל מספרים אקראיים מאובטח תוקף יכול לנבא את מחרוזות איפוס הססמה ולהשתלט על החשבון שלך.", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד.", @@ -121,7 +122,7 @@ "Database tablespace" => "מרחב הכתובות של מסד הנתונים", "Database host" => "שרת בסיס נתונים", "Finish setup" => "סיום התקנה", -"web services under your control" => "שירותי רשת תחת השליטה שלך", +"%s is available. Get more information on how to update." => "%s זמינה להורדה. ניתן ללחוץ כדי לקבל מידע נוסף כיצד לעדכן.", "Log out" => "התנתקות", "Automatic logon rejected!" => "בקשת הכניסה האוטומטית נדחתה!", "If you did not change your password recently, your account may be compromised!" => "אם לא שינית את ססמתך לאחרונה, יתכן שחשבונך נפגע!", diff --git a/core/l10n/hi.php b/core/l10n/hi.php index 7d55c5b6b2..afdd91d5f8 100644 --- a/core/l10n/hi.php +++ b/core/l10n/hi.php @@ -1,5 +1,19 @@ "जनवरी", +"February" => "फरवरी", +"March" => "मार्च", +"April" => "अप्रैल", +"May" => "मई", +"June" => "जून", +"July" => "जुलाई", +"August" => "अगस्त", +"September" => "सितम्बर", +"October" => "अक्टूबर", +"November" => "नवंबर", +"December" => "दिसम्बर", "Settings" => "सेटिंग्स", +"Share" => "साझा करें", +"Share with" => "के साथ साझा", "Password" => "पासवर्ड", "Use the following link to reset your password: {link}" => "आगे दिये गये लिंक का उपयोग पासवर्ड बदलने के लिये किजीये: {link}", "You will receive a link to reset your password via Email." => "पासवर्ड बदलने कि लिंक आपको ई-मेल द्वारा भेजी जायेगी|", diff --git a/core/l10n/hr.php b/core/l10n/hr.php index 660b47c54f..80a34094b2 100644 --- a/core/l10n/hr.php +++ b/core/l10n/hr.php @@ -73,6 +73,7 @@ "Help" => "Pomoć", "Access forbidden" => "Pristup zabranjen", "Cloud not found" => "Cloud nije pronađen", +"web services under your control" => "web usluge pod vašom kontrolom", "Edit categories" => "Uredi kategorije", "Add" => "Dodaj", "Create an admin account" => "Stvori administratorski račun", @@ -86,7 +87,6 @@ "Database tablespace" => "Database tablespace", "Database host" => "Poslužitelj baze podataka", "Finish setup" => "Završi postavljanje", -"web services under your control" => "web usluge pod vašom kontrolom", "Log out" => "Odjava", "Lost your password?" => "Izgubili ste lozinku?", "remember" => "zapamtiti", diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php index 766e1bfc7e..a0b6979c4b 100644 --- a/core/l10n/hu_HU.php +++ b/core/l10n/hu_HU.php @@ -1,8 +1,5 @@ "%s felhasználó megosztott Önnel egy fájlt", -"User %s shared a folder with you" => "%s felhasználó megosztott Önnel egy mappát", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s felhasználó megosztotta ezt az állományt Önnel: %s. A fájl innen tölthető le: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s felhasználó megosztotta ezt a mappát Önnel: %s. A mappa innen tölthető le: %s", +"%s shared »%s« with you" => "%s megosztotta Önnel ezt: »%s«", "Category type not provided." => "Nincs megadva a kategória típusa.", "No category to add?" => "Nincs hozzáadandó kategória?", "This category already exists: %s" => "Ez a kategória már létezik: %s", @@ -93,6 +90,7 @@ "Request failed!
    Did you make sure your email/username was right?" => "A kérést nem sikerült teljesíteni!
    Biztos, hogy jó emailcímet/felhasználónevet adott meg?", "You will receive a link to reset your password via Email." => "Egy emailben fog értesítést kapni a jelszóbeállítás módjáról.", "Username" => "Felhasználónév", +"Yes, I really want to reset my password now" => "Igen, tényleg meg akarom változtatni a jelszavam", "Request reset" => "Visszaállítás igénylése", "Your password was reset" => "Jelszó megváltoztatva", "To login page" => "A bejelentkező ablakhoz", @@ -105,6 +103,8 @@ "Help" => "Súgó", "Access forbidden" => "A hozzáférés nem engedélyezett", "Cloud not found" => "A felhő nem található", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Üdv!\n\nÚj hír: %s megosztotta Önnel ezt: %s.\nItt nézhető meg: %s\n\nMinden jót!", +"web services under your control" => "webszolgáltatások saját kézben", "Edit categories" => "Kategóriák szerkesztése", "Add" => "Hozzáadás", "Security Warning" => "Biztonsági figyelmeztetés", @@ -125,7 +125,6 @@ "Database tablespace" => "Az adatbázis táblázattér (tablespace)", "Database host" => "Adatbázis szerver", "Finish setup" => "A beállítások befejezése", -"web services under your control" => "webszolgáltatások saját kézben", "%s is available. Get more information on how to update." => "%s rendelkezésre áll. További információ a frissítéshez.", "Log out" => "Kilépés", "Automatic logon rejected!" => "Az automatikus bejelentkezés sikertelen!", @@ -135,6 +134,7 @@ "remember" => "emlékezzen", "Log in" => "Bejelentkezés", "Alternative Logins" => "Alternatív bejelentkezés", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Üdv!

    Új hír: %s megosztotta Önnel ezt: »%s«.
    Itt nézhető meg!

    Minden jót!", "prev" => "előző", "next" => "következő", "Updating ownCloud to version %s, this may take a while." => "Owncloud frissítés a %s verzióra folyamatban. Kis türelmet." diff --git a/core/l10n/ia.php b/core/l10n/ia.php index b6bb75f2b3..9df7eda1da 100644 --- a/core/l10n/ia.php +++ b/core/l10n/ia.php @@ -38,6 +38,7 @@ "Help" => "Adjuta", "Access forbidden" => "Accesso prohibite", "Cloud not found" => "Nube non trovate", +"web services under your control" => "servicios web sub tu controlo", "Edit categories" => "Modificar categorias", "Add" => "Adder", "Create an admin account" => "Crear un conto de administration", @@ -49,7 +50,6 @@ "Database password" => "Contrasigno de base de datos", "Database name" => "Nomine de base de datos", "Database host" => "Hospite de base de datos", -"web services under your control" => "servicios web sub tu controlo", "Log out" => "Clauder le session", "Lost your password?" => "Tu perdeva le contrasigno?", "remember" => "memora", diff --git a/core/l10n/id.php b/core/l10n/id.php index 065a4f2e72..5fe8b54222 100644 --- a/core/l10n/id.php +++ b/core/l10n/id.php @@ -1,8 +1,4 @@ "%s berbagi berkas dengan Anda", -"User %s shared a folder with you" => "%s berbagi folder dengan Anda", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s berbagi berkas \"%s\" dengan Anda. Silakan unduh di sini: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s berbagi folder \"%s\" dengan Anda. Silakan unduh di sini: %s", "Category type not provided." => "Tipe kategori tidak diberikan.", "No category to add?" => "Tidak ada kategori yang akan ditambahkan?", "This category already exists: %s" => "Kategori ini sudah ada: %s", @@ -102,6 +98,7 @@ "Help" => "Bantuan", "Access forbidden" => "Akses ditolak", "Cloud not found" => "Cloud tidak ditemukan", +"web services under your control" => "layanan web dalam kontrol Anda", "Edit categories" => "Edit kategori", "Add" => "Tambah", "Security Warning" => "Peringatan Keamanan", @@ -122,7 +119,6 @@ "Database tablespace" => "Tablespace basis data", "Database host" => "Host basis data", "Finish setup" => "Selesaikan instalasi", -"web services under your control" => "layanan web dalam kontrol Anda", "Log out" => "Keluar", "Automatic logon rejected!" => "Masuk otomatis ditolak!", "If you did not change your password recently, your account may be compromised!" => "Jika tidak pernah mengubah sandi Anda baru-baru ini, akun Anda mungkin dalam bahaya!", diff --git a/core/l10n/is.php b/core/l10n/is.php index bd8b58b290..b8573b3624 100644 --- a/core/l10n/is.php +++ b/core/l10n/is.php @@ -1,8 +1,4 @@ "Notandinn %s deildi skrá með þér", -"User %s shared a folder with you" => "Notandinn %s deildi möppu með þér", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Notandinn %s deildi skránni \"%s\" með þér. Hægt er að hlaða henni niður hér: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Notandinn %s deildi möppunni \"%s\" með þér. Hægt er að hlaða henni niður hér: %s", "Category type not provided." => "Flokkur ekki gefin", "No category to add?" => "Enginn flokkur til að bæta við?", "Object type not provided." => "Tegund ekki í boði.", @@ -52,6 +48,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!", +"Shared" => "Deilt", "Share" => "Deila", "Error while sharing" => "Villa við deilingu", "Error while unsharing" => "Villa við að hætta deilingu", @@ -82,6 +79,7 @@ "Error setting expiration date" => "Villa við að setja gildistíma", "Sending ..." => "Sendi ...", "Email sent" => "Tölvupóstur sendur", +"The update was successful. Redirecting you to ownCloud now." => "Uppfærslan heppnaðist. Beini þér til ownCloud nú.", "ownCloud password reset" => "endursetja ownCloud lykilorð", "Use the following link to reset your password: {link}" => "Notað eftirfarandi veftengil til að endursetja lykilorðið þitt: {link}", "You will receive a link to reset your password via Email." => "Þú munt fá veftengil í tölvupósti til að endursetja lykilorðið.", @@ -98,6 +96,7 @@ "Help" => "Hjálp", "Access forbidden" => "Aðgangur bannaður", "Cloud not found" => "Ský finnst ekki", +"web services under your control" => "vefþjónusta undir þinni stjórn", "Edit categories" => "Breyta flokkum", "Add" => "Bæta við", "Security Warning" => "Öryggis aðvörun", @@ -114,7 +113,7 @@ "Database tablespace" => "Töflusvæði gagnagrunns", "Database host" => "Netþjónn gagnagrunns", "Finish setup" => "Virkja uppsetningu", -"web services under your control" => "vefþjónusta undir þinni stjórn", +"%s is available. Get more information on how to update." => "%s er til boða. Fáðu meiri upplýsingar um hvernig þú uppfærir.", "Log out" => "Útskrá", "Automatic logon rejected!" => "Sjálfvirkri innskráningu hafnað!", "If you did not change your password recently, your account may be compromised!" => "Ef þú breyttir ekki lykilorðinu þínu fyrir skömmu, er mögulegt að einhver annar hafi komist inn á aðganginn þinn.", diff --git a/core/l10n/it.php b/core/l10n/it.php index ce8f641129..f14e4fbb31 100644 --- a/core/l10n/it.php +++ b/core/l10n/it.php @@ -1,8 +1,5 @@ "L'utente %s ha condiviso un file con te", -"User %s shared a folder with you" => "L'utente %s ha condiviso una cartella con te", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "L'utente %s ha condiviso il file \"%s\" con te. È disponibile per lo scaricamento qui: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "L'utente %s ha condiviso la cartella \"%s\" con te. È disponibile per lo scaricamento qui: %s", +"%s shared »%s« with you" => "%s ha condiviso »%s« con te", "Category type not provided." => "Tipo di categoria non fornito.", "No category to add?" => "Nessuna categoria da aggiungere?", "This category already exists: %s" => "Questa categoria esiste già: %s", @@ -93,6 +90,8 @@ "Request failed!
    Did you make sure your email/username was right?" => "Richiesta non riuscita!
    Sei sicuro che l'indirizzo di posta/nome utente fosse corretto?", "You will receive a link to reset your password via Email." => "Riceverai un collegamento per ripristinare la tua password via email", "Username" => "Nome utente", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "I file sono cifrati. Se non hai precedentemente abilitato la chiave di recupero, non sarà più possibile ritrovare i tuoi dati una volta che la password sarà ripristinata. Se non sei sicuro, per favore contatta l'amministratore prima di proseguire. Vuoi davvero continuare?", +"Yes, I really want to reset my password now" => "Sì, voglio davvero ripristinare la mia password adesso", "Request reset" => "Richiesta di ripristino", "Your password was reset" => "La password è stata ripristinata", "To login page" => "Alla pagina di accesso", @@ -105,6 +104,8 @@ "Help" => "Aiuto", "Access forbidden" => "Accesso negato", "Cloud not found" => "Nuvola non trovata", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Ehilà,\n\nvolevo solamente farti sapere che %s ha condiviso %s con te.\nGuarda: %s\n\nSaluti!", +"web services under your control" => "servizi web nelle tue mani", "Edit categories" => "Modifica categorie", "Add" => "Aggiungi", "Security Warning" => "Avviso di sicurezza", @@ -125,7 +126,6 @@ "Database tablespace" => "Spazio delle tabelle del database", "Database host" => "Host del database", "Finish setup" => "Termina la configurazione", -"web services under your control" => "servizi web nelle tue mani", "%s is available. Get more information on how to update." => "%s è disponibile. Ottieni ulteriori informazioni sull'aggiornamento.", "Log out" => "Esci", "Automatic logon rejected!" => "Accesso automatico rifiutato.", @@ -135,6 +135,7 @@ "remember" => "ricorda", "Log in" => "Accedi", "Alternative Logins" => "Accessi alternativi", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Ehilà,

    volevo solamente farti sapere che %s ha condiviso »%s« con te.
    Guarda!

    Saluti!", "prev" => "precedente", "next" => "successivo", "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 8395a1d272..b1c8b9a438 100644 --- a/core/l10n/ja_JP.php +++ b/core/l10n/ja_JP.php @@ -1,8 +1,5 @@ "ユーザ %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", +"%s shared »%s« with you" => "%sが あなたと »%s«を共有しました", "Category type not provided." => "カテゴリタイプは提供されていません。", "No category to add?" => "追加するカテゴリはありませんか?", "This category already exists: %s" => "このカテゴリはすでに存在します: %s", @@ -93,6 +90,8 @@ "Request failed!
    Did you make sure your email/username was right?" => "リクエストに失敗しました!
    あなたのメール/ユーザ名が正しいことを確認しましたか?", "You will receive a link to reset your password via Email." => "メールでパスワードをリセットするリンクが届きます。", "Username" => "ユーザー名", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "ファイルが暗号化されています。復旧キーを有効にしていなかった場合、パスワードをリセットしてからデータを復旧する方法はありません。何をすべきかよくわからないなら、続ける前にまず管理者に連絡しましょう。本当に続けますか?", +"Yes, I really want to reset my password now" => "はい、今すぐパスワードをリセットします。", "Request reset" => "リセットを要求します。", "Your password was reset" => "あなたのパスワードはリセットされました。", "To login page" => "ログインページへ戻る", @@ -105,6 +104,8 @@ "Help" => "ヘルプ", "Access forbidden" => "アクセスが禁止されています", "Cloud not found" => "見つかりません", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "こんにちは、\n\n%s があなたと %s を共有したことをお知らせします。\nそれを表示: %s\n\nそれでは。", +"web services under your control" => "管理下のウェブサービス", "Edit categories" => "カテゴリを編集", "Add" => "追加", "Security Warning" => "セキュリティ警告", @@ -125,7 +126,6 @@ "Database tablespace" => "データベースの表領域", "Database host" => "データベースのホスト名", "Finish setup" => "セットアップを完了します", -"web services under your control" => "管理下のウェブサービス", "%s is available. Get more information on how to update." => "%s が利用可能です。更新方法に関してさらに情報を取得して下さい。", "Log out" => "ログアウト", "Automatic logon rejected!" => "自動ログインは拒否されました!", @@ -135,6 +135,7 @@ "remember" => "パスワードを記憶する", "Log in" => "ログイン", "Alternative Logins" => "代替ログイン", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "こんにちは、

    %sがあなたと »%s« を共有したことをお知らせします。
    それを表示

    それでは。", "prev" => "前", "next" => "次", "Updating ownCloud to version %s, this may take a while." => "ownCloud をバージョン %s に更新しています、しばらくお待ち下さい。" diff --git a/core/l10n/ka_GE.php b/core/l10n/ka_GE.php index b474548eae..6674106f1d 100644 --- a/core/l10n/ka_GE.php +++ b/core/l10n/ka_GE.php @@ -1,8 +1,4 @@ "მომხმარებელმა %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: %s" => "კატეგორია უკვე არსებობს: %s", @@ -102,6 +98,7 @@ "Help" => "დახმარება", "Access forbidden" => "წვდომა აკრძალულია", "Cloud not found" => "ღრუბელი არ არსებობს", +"web services under your control" => "web services under your control", "Edit categories" => "კატეგორიების რედაქტირება", "Add" => "დამატება", "Security Warning" => "უსაფრთხოების გაფრთხილება", @@ -122,7 +119,6 @@ "Database tablespace" => "ბაზის ცხრილის ზომა", "Database host" => "მონაცემთა ბაზის ჰოსტი", "Finish setup" => "კონფიგურაციის დასრულება", -"web services under your control" => "web services under your control", "Log out" => "გამოსვლა", "Automatic logon rejected!" => "ავტომატური შესვლა უარყოფილია!", "If you did not change your password recently, your account may be compromised!" => "თუ თქვენ არ შეცვლით პაროლს, თქვენი ანგარიში შეიძლება იყოს დაშვებადი სხვებისთვის", diff --git a/core/l10n/ko.php b/core/l10n/ko.php index 6b97d672cf..d95daaa3a7 100644 --- a/core/l10n/ko.php +++ b/core/l10n/ko.php @@ -1,8 +1,4 @@ "%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: %s" => "분류가 이미 존재합니다: %s", @@ -102,6 +98,7 @@ "Help" => "도움말", "Access forbidden" => "접근 금지됨", "Cloud not found" => "클라우드를 찾을 수 없습니다", +"web services under your control" => "내가 관리하는 웹 서비스", "Edit categories" => "분류 수정", "Add" => "추가", "Security Warning" => "보안 경고", @@ -122,7 +119,6 @@ "Database tablespace" => "데이터베이스 테이블 공간", "Database host" => "데이터베이스 호스트", "Finish setup" => "설치 완료", -"web services under your control" => "내가 관리하는 웹 서비스", "Log out" => "로그아웃", "Automatic logon rejected!" => "자동 로그인이 거부되었습니다!", "If you did not change your password recently, your account may be compromised!" => "최근에 암호를 변경하지 않았다면 계정이 탈취되었을 수도 있습니다!", diff --git a/core/l10n/ku_IQ.php b/core/l10n/ku_IQ.php index 3c223bad02..ab46b13a50 100644 --- a/core/l10n/ku_IQ.php +++ b/core/l10n/ku_IQ.php @@ -10,6 +10,7 @@ "Admin" => "به‌ڕێوه‌به‌ری سه‌ره‌كی", "Help" => "یارمەتی", "Cloud not found" => "هیچ نه‌دۆزرایه‌وه‌", +"web services under your control" => "ڕاژه‌ی وێب له‌ژێر چاودێریت دایه", "Add" => "زیادکردن", "Advanced" => "هه‌ڵبژاردنی پیشكه‌وتوو", "Data folder" => "زانیاری فۆڵده‌ر", @@ -18,7 +19,6 @@ "Database name" => "ناوی داتابه‌یس", "Database host" => "هۆستی داتابه‌یس", "Finish setup" => "كۆتایی هات ده‌ستكاریه‌كان", -"web services under your control" => "ڕاژه‌ی وێب له‌ژێر چاودێریت دایه", "Log out" => "چوونەدەرەوە", "prev" => "پێشتر", "next" => "دواتر" diff --git a/core/l10n/lb.php b/core/l10n/lb.php index 4c312df661..dbe7a34de3 100644 --- a/core/l10n/lb.php +++ b/core/l10n/lb.php @@ -56,6 +56,7 @@ "Help" => "Hëllef", "Access forbidden" => "Access net erlaabt", "Cloud not found" => "Cloud net fonnt", +"web services under your control" => "Web Servicer ënnert denger Kontroll", "Edit categories" => "Kategorien editéieren", "Add" => "Dobäisetzen", "Security Warning" => "Sécherheets Warnung", @@ -70,7 +71,6 @@ "Database tablespace" => "Datebank Tabelle-Gréisst", "Database host" => "Datebank Server", "Finish setup" => "Installatioun ofschléissen", -"web services under your control" => "Web Servicer ënnert denger Kontroll", "Log out" => "Ausloggen", "Lost your password?" => "Passwuert vergiess?", "remember" => "verhalen", diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php index 1cd400117c..673ee83dca 100644 --- a/core/l10n/lt_LT.php +++ b/core/l10n/lt_LT.php @@ -1,8 +1,12 @@ "Vartotojas %s pasidalino su jumis failu", -"User %s shared a folder with you" => "Vartotojas %s su jumis pasidalino aplanku", +"Category type not provided." => "Kategorija nenurodyta.", "No category to add?" => "Nepridėsite jokios kategorijos?", +"This category already exists: %s" => "Ši kategorija jau egzistuoja: %s", +"Object type not provided." => "Objekto tipas nenurodytas.", +"%s ID not provided." => "%s ID nenurodytas.", +"Error adding %s to favorites." => "Klaida perkeliant %s į jūsų mėgstamiausius.", "No categories selected for deletion." => "Trynimui nepasirinkta jokia kategorija.", +"Error removing %s from favorites." => "Klaida ištrinant %s iš jūsų mėgstamiausius.", "Sunday" => "Sekmadienis", "Monday" => "Pirmadienis", "Tuesday" => "Antradienis", @@ -26,19 +30,27 @@ "seconds ago" => "prieš sekundę", "1 minute ago" => "Prieš 1 minutę", "{minutes} minutes ago" => "Prieš {count} minutes", +"1 hour ago" => "prieš 1 valandą", +"{hours} hours ago" => "prieš {hours} valandas", "today" => "šiandien", "yesterday" => "vakar", "{days} days ago" => "Prieš {days} dienas", "last month" => "praeitą mėnesį", +"{months} months ago" => "prieš {months} mėnesių", "months ago" => "prieš mėnesį", "last year" => "praeitais metais", "years ago" => "prieš metus", "Choose" => "Pasirinkite", "Cancel" => "Atšaukti", +"Error loading file picker template" => "Klaida pakraunant failų naršyklę", "Yes" => "Taip", "No" => "Ne", "Ok" => "Gerai", +"The object type is not specified." => "Objekto tipas nenurodytas.", "Error" => "Klaida", +"The app name is not specified." => "Nenurodytas programos pavadinimas.", +"The required file {file} is not installed!" => "Reikalingas {file} failas nėra įrašytas!", +"Shared" => "Dalinamasi", "Share" => "Dalintis", "Error while sharing" => "Klaida, dalijimosi metu", "Error while unsharing" => "Klaida, kai atšaukiamas dalijimasis", @@ -49,6 +61,8 @@ "Share with link" => "Dalintis nuoroda", "Password protect" => "Apsaugotas slaptažodžiu", "Password" => "Slaptažodis", +"Email link to person" => "Nusiųsti nuorodą paštu", +"Send" => "Siųsti", "Set expiration date" => "Nustatykite galiojimo laiką", "Expiration date" => "Galiojimo laikas", "Share via email:" => "Dalintis per el. paštą:", @@ -65,8 +79,14 @@ "Password protected" => "Apsaugota slaptažodžiu", "Error unsetting expiration date" => "Klaida nuimant galiojimo laiką", "Error setting expiration date" => "Klaida nustatant galiojimo laiką", +"Sending ..." => "Siunčiama...", +"Email sent" => "Laiškas išsiųstas", +"The update was unsuccessful. Please report this issue to the ownCloud community." => "Atnaujinimas buvo nesėkmingas. PApie tai prašome pranešti the ownCloud bendruomenei.", +"The update was successful. Redirecting you to ownCloud now." => "Atnaujinimas buvo sėkmingas. Nukreipiame į jūsų ownCloud.", "ownCloud password reset" => "ownCloud slaptažodžio atkūrimas", "Use the following link to reset your password: {link}" => "Slaptažodio atkūrimui naudokite šią nuorodą: {link}", +"The link to reset your password has been sent to your email.
    If you do not receive it within a reasonable amount of time, check your spam/junk folders.
    If it is not there ask your local administrator ." => "Nuorodą su jūsų slaptažodžio atkūrimu buvo nusiųsta jums į paštą.
    Jei jo negausite per atitinkamą laiką, pasižiūrėkite brukalo aplankale.
    Jei jo ir ten nėra, teiraukitės administratoriaus.", +"Request failed!
    Did you make sure your email/username was right?" => "Klaida!
    Ar tikrai jūsų el paštas/vartotojo vardas buvo teisingi?", "You will receive a link to reset your password via Email." => "Elektroniniu paštu gausite nuorodą, su kuria galėsite iš naujo nustatyti slaptažodį.", "Username" => "Prisijungimo vardas", "Request reset" => "Prašyti nustatymo iš najo", @@ -81,11 +101,16 @@ "Help" => "Pagalba", "Access forbidden" => "Priėjimas draudžiamas", "Cloud not found" => "Negalima rasti", +"web services under your control" => "jūsų valdomos web paslaugos", "Edit categories" => "Redaguoti kategorijas", "Add" => "Pridėti", "Security Warning" => "Saugumo pranešimas", +"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Jūsų PHP versija yra pažeidžiama prieš NULL Byte ataką (CVE-2006-7243)", +"Please update your PHP installation to use ownCloud securely." => "Prašome atnaujinti savo PHP norint naudotis savo ownCloud saugiai.", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Saugaus atsitiktinių skaičių generatoriaus nėra, prašome įjungti PHP OpenSSL modulį.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Be saugaus atsitiktinių skaičių generatoriaus, piktavaliai gali atspėti Jūsų slaptažodį ir pasisavinti paskyrą.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Jūsų failai yra tikriausiai prieinami per internetą nes .htaccess failas neveikia.", +"For information how to properly configure your server, please see the documentation." => "Norint gauti daugiau informacijos apie tai kaip tinkamai nustatyit savo serverį, prašome perskaityti dokumentaciją.", "Create an admin account" => "Sukurti administratoriaus paskyrą", "Advanced" => "Išplėstiniai", "Data folder" => "Duomenų katalogas", @@ -97,7 +122,7 @@ "Database tablespace" => "Duomenų bazės loginis saugojimas", "Database host" => "Duomenų bazės serveris", "Finish setup" => "Baigti diegimą", -"web services under your control" => "jūsų valdomos web paslaugos", +"%s is available. Get more information on how to update." => "%s yra prieinama. Gaukite daugiau informacijos apie atnaujinimą.", "Log out" => "Atsijungti", "Automatic logon rejected!" => "Automatinis prisijungimas atmestas!", "If you did not change your password recently, your account may be compromised!" => "Jei paskutinių metu nekeitėte savo slaptažodžio, Jūsų paskyra gali būti pavojuje!", @@ -105,6 +130,8 @@ "Lost your password?" => "Pamiršote slaptažodį?", "remember" => "prisiminti", "Log in" => "Prisijungti", +"Alternative Logins" => "Alternatyvūs prisijungimai", "prev" => "atgal", -"next" => "kitas" +"next" => "kitas", +"Updating ownCloud to version %s, this may take a while." => "Atnaujinama ownCloud į %s versiją. tai gali šiek tiek užtrukti." ); diff --git a/core/l10n/lv.php b/core/l10n/lv.php index e3d668d018..b8bfe74c37 100644 --- a/core/l10n/lv.php +++ b/core/l10n/lv.php @@ -1,8 +1,4 @@ "Lietotājs %s ar jums dalījās ar datni.", -"User %s shared a folder with you" => "Lietotājs %s ar jums dalījās ar mapi.", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Lietotājs %s ar jums dalījās ar datni “%s”. To var lejupielādēt šeit — %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Lietotājs %s ar jums dalījās ar mapi “%s”. To var lejupielādēt šeit — %s", "Category type not provided." => "Kategorijas tips nav norādīts.", "No category to add?" => "Nav kategoriju, ko pievienot?", "This category already exists: %s" => "Šāda kategorija jau eksistē — %s", @@ -102,6 +98,7 @@ "Help" => "Palīdzība", "Access forbidden" => "Pieeja ir liegta", "Cloud not found" => "Mākonis netika atrasts", +"web services under your control" => "tīmekļa servisi tavā varā", "Edit categories" => "Rediģēt kategoriju", "Add" => "Pievienot", "Security Warning" => "Brīdinājums par drošību", @@ -120,7 +117,6 @@ "Database tablespace" => "Datubāzes tabulas telpa", "Database host" => "Datubāzes serveris", "Finish setup" => "Pabeigt iestatīšanu", -"web services under your control" => "tīmekļa servisi tavā varā", "Log out" => "Izrakstīties", "Automatic logon rejected!" => "Automātiskā ierakstīšanās ir noraidīta!", "If you did not change your password recently, your account may be compromised!" => "Ja neesat pēdējā laikā mainījis paroli, iespējams, ka jūsu konts ir kompromitēts.", diff --git a/core/l10n/mk.php b/core/l10n/mk.php index b0c39debb8..de89403ee3 100644 --- a/core/l10n/mk.php +++ b/core/l10n/mk.php @@ -1,8 +1,4 @@ "Корисникот %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?" => "Нема категорија да се додаде?", "Object type not provided." => "Не беше доставен тип на објект.", @@ -98,6 +94,7 @@ "Help" => "Помош", "Access forbidden" => "Забранет пристап", "Cloud not found" => "Облакот не е најден", +"web services under your control" => "веб сервиси под Ваша контрола", "Edit categories" => "Уреди категории", "Add" => "Додади", "Security Warning" => "Безбедносно предупредување", @@ -114,7 +111,6 @@ "Database tablespace" => "Табела во базата на податоци", "Database host" => "Сервер со база", "Finish setup" => "Заврши го подесувањето", -"web services under your control" => "веб сервиси под Ваша контрола", "Log out" => "Одјава", "Automatic logon rejected!" => "Одбиена автоматска најава!", "If you did not change your password recently, your account may be compromised!" => "Ако не сте ја промениле лозинката во скоро време, вашата сметка може да е компромитирана", diff --git a/core/l10n/ms_MY.php b/core/l10n/ms_MY.php index e7dc73a32c..7a18acea7c 100644 --- a/core/l10n/ms_MY.php +++ b/core/l10n/ms_MY.php @@ -44,6 +44,7 @@ "Help" => "Bantuan", "Access forbidden" => "Larangan akses", "Cloud not found" => "Awan tidak dijumpai", +"web services under your control" => "Perkhidmatan web di bawah kawalan anda", "Edit categories" => "Ubah kategori", "Add" => "Tambah", "Security Warning" => "Amaran keselamatan", @@ -57,7 +58,6 @@ "Database name" => "Nama pangkalan data", "Database host" => "Hos pangkalan data", "Finish setup" => "Setup selesai", -"web services under your control" => "Perkhidmatan web di bawah kawalan anda", "Log out" => "Log keluar", "Lost your password?" => "Hilang kata laluan?", "remember" => "ingat", diff --git a/core/l10n/my_MM.php b/core/l10n/my_MM.php index 6ea6a2c7bb..614c353929 100644 --- a/core/l10n/my_MM.php +++ b/core/l10n/my_MM.php @@ -46,6 +46,7 @@ "Admin" => "အက်ဒမင်", "Help" => "အကူအညီ", "Cloud not found" => "မတွေ့ရှိမိပါ", +"web services under your control" => "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services", "Add" => "ပေါင်းထည့်", "Security Warning" => "လုံခြုံရေးသတိပေးချက်", "Create an admin account" => "အက်ဒမင်အကောင့်တစ်ခုဖန်တီးမည်", @@ -55,7 +56,6 @@ "Database password" => "Database စကားဝှက်", "Database name" => "Database အမည်", "Finish setup" => "တပ်ဆင်ခြင်းပြီးပါပြီ။", -"web services under your control" => "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services", "Lost your password?" => "သင်၏စကားဝှက်ပျောက်သွားပြီလား။", "remember" => "မှတ်မိစေသည်", "Log in" => "ဝင်ရောက်ရန်", diff --git a/core/l10n/nb_NO.php b/core/l10n/nb_NO.php index 30d3f91df2..d6d9675d32 100644 --- a/core/l10n/nb_NO.php +++ b/core/l10n/nb_NO.php @@ -78,6 +78,7 @@ "Help" => "Hjelp", "Access forbidden" => "Tilgang nektet", "Cloud not found" => "Sky ikke funnet", +"web services under your control" => "web tjenester du kontrollerer", "Edit categories" => "Rediger kategorier", "Add" => "Legg til", "Security Warning" => "Sikkerhetsadvarsel", @@ -92,7 +93,6 @@ "Database tablespace" => "Database tabellområde", "Database host" => "Databasevert", "Finish setup" => "Fullfør oppsetting", -"web services under your control" => "web tjenester du kontrollerer", "Log out" => "Logg ut", "Automatic logon rejected!" => "Automatisk pålogging avvist!", "If you did not change your password recently, your account may be compromised!" => "Hvis du ikke har endret passordet ditt nylig kan kontoen din være kompromitert", diff --git a/core/l10n/nl.php b/core/l10n/nl.php index 0f30a2f49a..1905092886 100644 --- a/core/l10n/nl.php +++ b/core/l10n/nl.php @@ -1,23 +1,20 @@ "Gebruiker %s deelde een bestand met u", -"User %s shared a folder with you" => "Gebruiker %s deelde een map met u", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Gebruiker %s deelde bestand \"%s\" met u. Het is hier te downloaden: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Gebruiker %s deelde de map \"%s\" met u. De map is hier beschikbaar voor download: %s", +"%s shared »%s« with you" => "%s deelde »%s« met jou", "Category type not provided." => "Categorie type niet opgegeven.", -"No category to add?" => "Geen categorie toevoegen?", +"No category to add?" => "Geen categorie om toe te voegen?", "This category already exists: %s" => "Deze categorie bestaat al: %s", "Object type not provided." => "Object type niet opgegeven.", "%s ID not provided." => "%s ID niet opgegeven.", "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", +"Sunday" => "zondag", +"Monday" => "maandag", +"Tuesday" => "dinsdag", +"Wednesday" => "woensdag", +"Thursday" => "donderdag", +"Friday" => "vrijdag", +"Saturday" => "zaterdag", "January" => "januari", "February" => "februari", "March" => "maart", @@ -63,13 +60,13 @@ "Shared with you by {owner}" => "Gedeeld met u door {owner}", "Share with" => "Deel met", "Share with link" => "Deel met link", -"Password protect" => "Wachtwoord beveiliging", +"Password protect" => "Wachtwoord beveiligd", "Password" => "Wachtwoord", "Email link to person" => "E-mail link naar persoon", "Send" => "Versturen", "Set expiration date" => "Stel vervaldatum in", "Expiration date" => "Vervaldatum", -"Share via email:" => "Deel via email:", +"Share via email:" => "Deel via e-mail:", "No people found" => "Geen mensen gevonden", "Resharing is not allowed" => "Verder delen is niet toegestaan", "Shared in {item} with {user}" => "Gedeeld in {item} met {user}", @@ -86,17 +83,19 @@ "Sending ..." => "Versturen ...", "Email sent" => "E-mail verzonden", "The update was unsuccessful. Please report this issue to the ownCloud community." => "De update is niet geslaagd. Meld dit probleem aan bij de ownCloud community.", -"The update was successful. Redirecting you to ownCloud now." => "De update is geslaagd. U wordt teruggeleid naar uw eigen ownCloud.", -"ownCloud password reset" => "ownCloud wachtwoord herstellen", +"The update was successful. Redirecting you to ownCloud now." => "De update is geslaagd. Je wordt teruggeleid naar je eigen ownCloud.", +"ownCloud password reset" => "ownCloud-wachtwoord herstellen", "Use the following link to reset your password: {link}" => "Gebruik de volgende link om je wachtwoord te resetten: {link}", -"The link to reset your password has been sent to your email.
    If you do not receive it within a reasonable amount of time, check your spam/junk folders.
    If it is not there ask your local administrator ." => "De link voor het resetten van uw wachtwoord is verzonden naar uw e-mailadres.
    Als u dat bericht niet snel ontvangen hebt, controleer dan uw spambakje.
    Als het daar ook niet is, vraag dan uw beheerder om te helpen.", -"Request failed!
    Did you make sure your email/username was right?" => "Aanvraag mislukt!
    Weet u zeker dat uw gebruikersnaam en/of wachtwoord goed waren?", -"You will receive a link to reset your password via Email." => "U ontvangt een link om uw wachtwoord opnieuw in te stellen via e-mail.", +"The link to reset your password has been sent to your email.
    If you do not receive it within a reasonable amount of time, check your spam/junk folders.
    If it is not there ask your local administrator ." => "De link voor het resetten van je wachtwoord is verzonden naar je e-mailadres.
    Als je dat bericht niet snel ontvangen hebt, controleer dan uw spambakje.
    Als het daar ook niet is, vraag dan je beheerder om te helpen.", +"Request failed!
    Did you make sure your email/username was right?" => "Aanvraag mislukt!
    Weet je zeker dat je gebruikersnaam en/of wachtwoord goed waren?", +"You will receive a link to reset your password via Email." => "Je ontvangt een link om je wachtwoord opnieuw in te stellen via e-mail.", "Username" => "Gebruikersnaam", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Je bestanden zijn versleuteld. Als je geen recoverykey hebt ingeschakeld is er geen manier om je data terug te krijgen indien je je wachtwoord reset!\nAls je niet weet wat te doen, neem dan alsjeblieft contact op met je administrator eer je doorgaat.\nWil je echt doorgaan?", +"Yes, I really want to reset my password now" => "Ja, ik wil mijn wachtwoord nu echt resetten", "Request reset" => "Resetaanvraag", "Your password was reset" => "Je wachtwoord is gewijzigd", "To login page" => "Naar de login-pagina", -"New password" => "Nieuw", +"New password" => "Nieuw wachtwoord", "Reset password" => "Reset wachtwoord", "Personal" => "Persoonlijk", "Users" => "Gebruikers", @@ -105,15 +104,17 @@ "Help" => "Help", "Access forbidden" => "Toegang verboden", "Cloud not found" => "Cloud niet gevonden", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Hallo daar,\n\n%s deelde %s met jou.\nBekijk: %s\n\nVeel plezier!", +"web services under your control" => "Webdiensten in eigen beheer", "Edit categories" => "Wijzig categorieën", "Add" => "Toevoegen", "Security Warning" => "Beveiligingswaarschuwing", -"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Uw PHP versie is kwetsbaar voor de NULL byte aanval (CVE-2006-7243)", -"Please update your PHP installation to use ownCloud securely." => "Werk uw PHP installatie bij om ownCloud veilig te kunnen gebruiken.", -"No secure random number generator is available, please enable the PHP OpenSSL extension." => "Er kon geen willekeurig nummer worden gegenereerd. Zet de PHP OpenSSL extentie aan.", -"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Zonder random nummer generator is het mogelijk voor een aanvaller om de reset tokens van wachtwoorden te voorspellen. Dit kan leiden tot het inbreken op uw account.", -"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Uw gegevensdirectory en bestanden zijn vermoedelijk bereikbaar vanaf het internet omdat het .htaccess bestand niet werkt.", -"For information how to properly configure your server, please see the documentation." => "Informatie over het configureren van uw server is hier te vinden documentatie.", +"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Je PHP-versie is kwetsbaar voor de NULL byte aanval (CVE-2006-7243)", +"Please update your PHP installation to use ownCloud securely." => "Werk je PHP-installatie bij om ownCloud veilig te kunnen gebruiken.", +"No secure random number generator is available, please enable the PHP OpenSSL extension." => "Er kon geen willekeurig nummer worden gegenereerd. Zet de PHP OpenSSL-extentie aan.", +"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Zonder random nummer generator is het mogelijk voor een aanvaller om de resettokens van wachtwoorden te voorspellen. Dit kan leiden tot het inbreken op uw account.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Je gegevensdirectory en bestanden zijn vermoedelijk bereikbaar vanaf het internet omdat het .htaccess-bestand niet werkt.", +"For information how to properly configure your server, please see the documentation." => "Informatie over het configureren van uw server is hier te vinden.", "Create an admin account" => "Maak een beheerdersaccount aan", "Advanced" => "Geavanceerd", "Data folder" => "Gegevensmap", @@ -123,19 +124,19 @@ "Database password" => "Wachtwoord database", "Database name" => "Naam database", "Database tablespace" => "Database tablespace", -"Database host" => "Database server", +"Database host" => "Databaseserver", "Finish setup" => "Installatie afronden", -"web services under your control" => "Webdiensten in eigen beheer", "%s is available. Get more information on how to update." => "%s is beschikbaar. Verkrijg meer informatie over het bijwerken.", "Log out" => "Afmelden", "Automatic logon rejected!" => "Automatische aanmelding geweigerd!", -"If you did not change your password recently, your account may be compromised!" => "Als u uw wachtwoord niet onlangs heeft aangepast, kan uw account overgenomen zijn!", -"Please change your password to secure your account again." => "Wijzig uw wachtwoord zodat uw account weer beveiligd is.", -"Lost your password?" => "Uw wachtwoord vergeten?", +"If you did not change your password recently, your account may be compromised!" => "Als je je wachtwoord niet onlangs heeft aangepast, kan je account overgenomen zijn!", +"Please change your password to secure your account again." => "Wijzig je wachtwoord zodat je account weer beveiligd is.", +"Lost your password?" => "Wachtwoord vergeten?", "remember" => "onthoud gegevens", "Log in" => "Meld je aan", "Alternative Logins" => "Alternatieve inlogs", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Hallo daar,

    %s deelde »%s« met jou.
    Bekijk!

    Veel plezier!", "prev" => "vorige", "next" => "volgende", -"Updating ownCloud to version %s, this may take a while." => "Updaten ownCloud naar versie %s, dit kan even duren." +"Updating ownCloud to version %s, this may take a while." => "Updaten ownCloud naar versie %s, dit kan even duren..." ); diff --git a/core/l10n/nn_NO.php b/core/l10n/nn_NO.php index de181ccc7a..67dbe32ff6 100644 --- a/core/l10n/nn_NO.php +++ b/core/l10n/nn_NO.php @@ -1,8 +1,4 @@ "Brukaren %s delte ei fil med deg", -"User %s shared a folder with you" => "Brukaren %s delte ei mappe med deg", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Brukaren %s delte fila «%s» med deg. Du kan lasta ho ned her: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Brukaren %s delte mappa «%s» med deg. Du kan lasta ho ned her: %s", "Category type not provided." => "Ingen kategoritype.", "No category to add?" => "Ingen kategori å leggja til?", "This category already exists: %s" => "Denne kategorien finst alt: %s", @@ -104,6 +100,7 @@ "Help" => "Hjelp", "Access forbidden" => "Tilgang forbudt", "Cloud not found" => "Fann ikkje skyen", +"web services under your control" => "Vev tjenester under din kontroll", "Edit categories" => "Endra kategoriar", "Add" => "Legg til", "Security Warning" => "Tryggleiksåtvaring", @@ -124,7 +121,6 @@ "Database tablespace" => "Tabellnamnrom for database", "Database host" => "Databasetenar", "Finish setup" => "Fullfør oppsettet", -"web services under your control" => "Vevtenester under din kontroll", "%s is available. Get more information on how to update." => "%s er tilgjengeleg. Få meir informasjon om korleis du oppdaterer.", "Log out" => "Logg ut", "Automatic logon rejected!" => "Automatisk innlogging avvist!", diff --git a/core/l10n/oc.php b/core/l10n/oc.php index 1d14428f18..4440444885 100644 --- a/core/l10n/oc.php +++ b/core/l10n/oc.php @@ -74,6 +74,7 @@ "Help" => "Ajuda", "Access forbidden" => "Acces enebit", "Cloud not found" => "Nívol pas trobada", +"web services under your control" => "Services web jos ton contraròtle", "Edit categories" => "Edita categorias", "Add" => "Ajusta", "Security Warning" => "Avertiment de securitat", @@ -88,7 +89,6 @@ "Database tablespace" => "Espandi de taula de basa de donadas", "Database host" => "Òste de basa de donadas", "Finish setup" => "Configuracion acabada", -"web services under your control" => "Services web jos ton contraròtle", "Log out" => "Sortida", "Lost your password?" => "L'as perdut lo senhal ?", "remember" => "bremba-te", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 045da821f2..4d05e4fcd5 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -1,8 +1,5 @@ "Użytkownik %s udostępnił ci plik", -"User %s shared a folder with you" => "Użytkownik %s udostępnił ci folder", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Użytkownik %s udostępnił ci plik „%s”. Możesz pobrać go stąd: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Użytkownik %s udostępnił ci folder „%s”. Możesz pobrać go stąd: %s", +"%s shared »%s« with you" => "%s Współdzielone »%s« z tobą", "Category type not provided." => "Nie podano typu kategorii.", "No category to add?" => "Brak kategorii do dodania?", "This category already exists: %s" => "Ta kategoria już istnieje: %s", @@ -93,6 +90,7 @@ "Request failed!
    Did you make sure your email/username was right?" => "Żądanie niepowiodło się!
    Czy Twój email/nazwa użytkownika są poprawne?", "You will receive a link to reset your password via Email." => "Odnośnik służący do resetowania hasła zostanie wysłany na adres e-mail.", "Username" => "Nazwa użytkownika", +"Yes, I really want to reset my password now" => "Tak, naprawdę chcę zresetować hasło teraz", "Request reset" => "Żądanie resetowania", "Your password was reset" => "Zresetowano hasło", "To login page" => "Do strony logowania", @@ -105,6 +103,7 @@ "Help" => "Pomoc", "Access forbidden" => "Dostęp zabroniony", "Cloud not found" => "Nie odnaleziono chmury", +"web services under your control" => "Kontrolowane serwisy", "Edit categories" => "Edytuj kategorie", "Add" => "Dodaj", "Security Warning" => "Ostrzeżenie o zabezpieczeniach", @@ -125,7 +124,6 @@ "Database tablespace" => "Obszar tabel bazy danych", "Database host" => "Komputer bazy danych", "Finish setup" => "Zakończ konfigurowanie", -"web services under your control" => "Kontrolowane serwisy", "%s is available. Get more information on how to update." => "%s jest dostępna. Dowiedz się więcej na temat aktualizacji.", "Log out" => "Wyloguj", "Automatic logon rejected!" => "Automatyczne logowanie odrzucone!", diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php index 59c8f69aee..f57c0a2929 100644 --- a/core/l10n/pt_BR.php +++ b/core/l10n/pt_BR.php @@ -1,8 +1,5 @@ "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", +"%s shared »%s« with you" => "%s compartilhou »%s« com você", "Category type not provided." => "Tipo de categoria não fornecido.", "No category to add?" => "Nenhuma categoria a adicionar?", "This category already exists: %s" => "Esta categoria já existe: %s", @@ -93,6 +90,8 @@ "Request failed!
    Did you make sure your email/username was right?" => "O pedido falhou!
    Certifique-se que seu e-mail/username estavam corretos?", "You will receive a link to reset your password via Email." => "Você receberá um link para redefinir sua senha por e-mail.", "Username" => "Nome de usuário", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Seus arquivos estão encriptados. Se você não habilitou a chave de recuperação, não haverá maneira de recuperar seus dados após criar uma nova senha. Se você não tem certeza do que fazer, por favor entre em contato com o administrador antes de continuar. Tem certeza que realmente quer continuar?", +"Yes, I really want to reset my password now" => "Sim, realmente quero criar uma nova senha.", "Request reset" => "Pedir redefinição", "Your password was reset" => "Sua senha foi redefinida", "To login page" => "Para a página de login", @@ -105,6 +104,8 @@ "Help" => "Ajuda", "Access forbidden" => "Acesso proibido", "Cloud not found" => "Cloud não encontrado", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Olá,\n\napenas para você saber que %s compartilhou %s com você.\nVeja: %s\n\nAbraços!", +"web services under your control" => "serviços web sob seu controle", "Edit categories" => "Editar categorias", "Add" => "Adicionar", "Security Warning" => "Aviso de Segurança", @@ -125,7 +126,6 @@ "Database tablespace" => "Espaço de tabela do banco de dados", "Database host" => "Host do banco de dados", "Finish setup" => "Concluir configuração", -"web services under your control" => "serviços web sob seu controle", "%s is available. Get more information on how to update." => "%s está disponível. Obtenha mais informações sobre como atualizar.", "Log out" => "Sair", "Automatic logon rejected!" => "Entrada Automática no Sistema Rejeitada!", @@ -135,6 +135,7 @@ "remember" => "lembrar", "Log in" => "Fazer login", "Alternative Logins" => "Logins alternativos", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Olá,

    apenas para você saber que %s compartilhou %s com você.
    Veja:

    Abraços!", "prev" => "anterior", "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 f6de2db4fb..77c27b641d 100644 --- a/core/l10n/pt_PT.php +++ b/core/l10n/pt_PT.php @@ -1,8 +1,4 @@ "O utilizador %s partilhou um ficheiro consigo.", -"User %s shared a folder with you" => "O utilizador %s partilhou uma pasta consigo.", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "O utilizador %s partilhou o ficheiro \"%s\" consigo. Está disponível para download aqui: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "O utilizador %s partilhou a pasta \"%s\" consigo. Está disponível para download aqui: %s", "Category type not provided." => "Tipo de categoria não fornecido", "No category to add?" => "Nenhuma categoria para adicionar?", "This category already exists: %s" => "A categoria já existe: %s", @@ -105,6 +101,7 @@ "Help" => "Ajuda", "Access forbidden" => "Acesso interdito", "Cloud not found" => "Cloud nao encontrada", +"web services under your control" => "serviços web sob o seu controlo", "Edit categories" => "Editar categorias", "Add" => "Adicionar", "Security Warning" => "Aviso de Segurança", @@ -125,7 +122,6 @@ "Database tablespace" => "Tablespace da base de dados", "Database host" => "Anfitrião da base de dados", "Finish setup" => "Acabar instalação", -"web services under your control" => "serviços web sob o seu controlo", "%s is available. Get more information on how to update." => "%s está disponível. Tenha mais informações como actualizar.", "Log out" => "Sair", "Automatic logon rejected!" => "Login automático rejeitado!", diff --git a/core/l10n/ro.php b/core/l10n/ro.php index 3d25a5f042..327fb72f43 100644 --- a/core/l10n/ro.php +++ b/core/l10n/ro.php @@ -1,9 +1,6 @@ "Utilizatorul %s a partajat un fișier cu tine", -"User %s shared a folder with you" => "Utilizatorul %s a partajat un dosar cu tine", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Utilizatorul %s a partajat fișierul \"%s\" cu tine. Îl poți descărca de aici: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Utilizatorul %s a partajat dosarul \"%s\" cu tine. Îl poți descărca de aici: %s ", -"Category type not provided." => "Tipul de categorie nu este prevazut", +"%s shared »%s« with you" => "%s Partajat »%s« cu tine de", +"Category type not provided." => "Tipul de categorie nu a fost specificat.", "No category to add?" => "Nici o categorie de adăugat?", "This category already exists: %s" => "Această categorie deja există: %s", "Object type not provided." => "Tipul obiectului nu este prevazut", @@ -46,6 +43,7 @@ "years ago" => "ani în urmă", "Choose" => "Alege", "Cancel" => "Anulare", +"Error loading file picker template" => "Eroare la încărcarea șablonului selectorului de fișiere", "Yes" => "Da", "No" => "Nu", "Ok" => "Ok", @@ -92,6 +90,8 @@ "Request failed!
    Did you make sure your email/username was right?" => "Cerere esuata!
    Esti sigur ca email-ul/numele de utilizator sunt corecte?", "You will receive a link to reset your password via Email." => "Vei primi un mesaj prin care vei putea reseta parola via email", "Username" => "Nume utilizator", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Fișierele tale sunt criptate. Dacă nu ai activat o cheie de recuperare, nu va mai exista nici o metodă prin care să îți recuperezi datele după resetarea parole. Dacă nu ești sigur în privința la ce ai de făcut, contactează un administrator înainte să continuii. Chiar vrei să continui?", +"Yes, I really want to reset my password now" => "Da, eu chiar doresc să îmi resetez parola acum", "Request reset" => "Cerere trimisă", "Your password was reset" => "Parola a fost resetată", "To login page" => "Spre pagina de autentificare", @@ -104,6 +104,8 @@ "Help" => "Ajutor", "Access forbidden" => "Acces interzis", "Cloud not found" => "Nu s-a găsit", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Salutare,\n\nVă aduc la cunoștință că %s a partajat %s cu tine.\nAccesează la: %s\n\nNumai bine!", +"web services under your control" => "servicii web controlate de tine", "Edit categories" => "Editează categorii", "Add" => "Adaugă", "Security Warning" => "Avertisment de securitate", @@ -124,7 +126,7 @@ "Database tablespace" => "Tabela de spațiu a bazei de date", "Database host" => "Bază date", "Finish setup" => "Finalizează instalarea", -"web services under your control" => "servicii web controlate de tine", +"%s is available. Get more information on how to update." => "%s este disponibil. Vezi mai multe informații despre procesul de actualizare.", "Log out" => "Ieșire", "Automatic logon rejected!" => "Logare automata respinsa", "If you did not change your password recently, your account may be compromised!" => "Daca nu schimbi parola cand de curand , contul tau poate fi conpromis", @@ -133,6 +135,7 @@ "remember" => "amintește", "Log in" => "Autentificare", "Alternative Logins" => "Conectări alternative", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Salutare,

    Vă aduc la cunoștință că %s a partajat %s cu tine.
    Accesează-l!

    Numai bine!", "prev" => "precedentul", "next" => "următorul", "Updating ownCloud to version %s, this may take a while." => "Actualizăm ownCloud la versiunea %s, aceasta poate dura câteva momente." diff --git a/core/l10n/ru.php b/core/l10n/ru.php index 608b9271df..17e6150f90 100644 --- a/core/l10n/ru.php +++ b/core/l10n/ru.php @@ -1,8 +1,5 @@ "Пользователь %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", +"%s shared »%s« with you" => "%s поделился »%s« с вами", "Category type not provided." => "Тип категории не предоставлен", "No category to add?" => "Нет категорий для добавления?", "This category already exists: %s" => "Эта категория уже существует: %s", @@ -93,6 +90,7 @@ "Request failed!
    Did you make sure your email/username was right?" => "Что-то не так. Вы уверены что Email / Имя пользователя указаны верно?", "You will receive a link to reset your password via Email." => "На ваш адрес Email выслана ссылка для сброса пароля.", "Username" => "Имя пользователя", +"Yes, I really want to reset my password now" => "Да, я действительно хочу сбросить свой пароль", "Request reset" => "Запросить сброс", "Your password was reset" => "Ваш пароль был сброшен", "To login page" => "На страницу авторизации", @@ -105,6 +103,8 @@ "Help" => "Помощь", "Access forbidden" => "Доступ запрещён", "Cloud not found" => "Облако не найдено", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Приветствую,⏎\n⏎\nпросто даю знать, что %s поделился %s с вами.⏎\nПосмотреть: %s⏎\n⏎\nУдачи!", +"web services under your control" => "веб-сервисы под вашим управлением", "Edit categories" => "Редактировать категрии", "Add" => "Добавить", "Security Warning" => "Предупреждение безопасности", @@ -125,7 +125,6 @@ "Database tablespace" => "Табличое пространство базы данных", "Database host" => "Хост базы данных", "Finish setup" => "Завершить установку", -"web services under your control" => "веб-сервисы под вашим управлением", "%s is available. Get more information on how to update." => "%s доступно. Получить дополнительную информацию о порядке обновления.", "Log out" => "Выйти", "Automatic logon rejected!" => "Автоматический вход в систему отключен!", @@ -135,6 +134,7 @@ "remember" => "запомнить", "Log in" => "Войти", "Alternative Logins" => "Альтернативные имена пользователя", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Приветствую,

    просто даю знать, что %s поделился »%s« с вами.
    Посмотреть!

    Удачи!", "prev" => "пред", "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 be7c1a24aa..b27f1c6c98 100644 --- a/core/l10n/si_LK.php +++ b/core/l10n/si_LK.php @@ -66,6 +66,7 @@ "Help" => "උදව්", "Access forbidden" => "ඇතුල් වීම තහනම්", "Cloud not found" => "සොයා ගත නොහැක", +"web services under your control" => "ඔබට පාලනය කළ හැකි වෙබ් සේවාවන්", "Edit categories" => "ප්‍රභේදයන් සංස්කරණය", "Add" => "එකතු කරන්න", "Security Warning" => "ආරක්ෂක නිවේදනයක්", @@ -79,7 +80,6 @@ "Database name" => "දත්තගබඩාවේ නම", "Database host" => "දත්තගබඩා සේවාදායකයා", "Finish setup" => "ස්ථාපනය කිරීම අවසන් කරන්න", -"web services under your control" => "ඔබට පාලනය කළ හැකි වෙබ් සේවාවන්", "Log out" => "නික්මීම", "Lost your password?" => "මුරපදය අමතකද?", "remember" => "මතක තබාගන්න", diff --git a/core/l10n/sk_SK.php b/core/l10n/sk_SK.php index 2dfaa01b5a..ead3842e45 100644 --- a/core/l10n/sk_SK.php +++ b/core/l10n/sk_SK.php @@ -1,8 +1,5 @@ "Používateľ %s zdieľa s Vami súbor", -"User %s shared a folder with you" => "Používateľ %s zdieľa s Vami priečinok", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Používateľ %s zdieľa s Vami súbor \"%s\". Môžete si ho stiahnuť tu: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Používateľ %s zdieľa s Vami priečinok \"%s\". Môžete si ho stiahnuť tu: %s", +"%s shared »%s« with you" => "%s s Vami zdieľa »%s«", "Category type not provided." => "Neposkytnutý typ kategórie.", "No category to add?" => "Žiadna kategória pre pridanie?", "This category already exists: %s" => "Kategória: %s už existuje.", @@ -46,6 +43,7 @@ "years ago" => "pred rokmi", "Choose" => "Výber", "Cancel" => "Zrušiť", +"Error loading file picker template" => "Chyba pri načítaní šablóny výberu súborov", "Yes" => "Áno", "No" => "Nie", "Ok" => "Ok", @@ -92,6 +90,7 @@ "Request failed!
    Did you make sure your email/username was right?" => "Požiadavka zlyhala.
    Uistili ste sa, že Vaše používateľské meno a email sú správne?", "You will receive a link to reset your password via Email." => "Odkaz pre obnovenie hesla obdržíte e-mailom.", "Username" => "Meno používateľa", +"Yes, I really want to reset my password now" => "Áno, želám si teraz obnoviť svoje heslo", "Request reset" => "Požiadať o obnovenie", "Your password was reset" => "Vaše heslo bolo obnovené", "To login page" => "Na prihlasovaciu stránku", @@ -104,6 +103,8 @@ "Help" => "Pomoc", "Access forbidden" => "Prístup odmietnutý", "Cloud not found" => "Nenájdené", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Ahoj,\n\nChcem Vám oznámiť, že %s s Vami zdieľa %s.\nPozrieť si to môžete tu: %s\n\nVďaka", +"web services under your control" => "webové služby pod Vašou kontrolou", "Edit categories" => "Upraviť kategórie", "Add" => "Pridať", "Security Warning" => "Bezpečnostné varovanie", @@ -124,7 +125,6 @@ "Database tablespace" => "Tabuľkový priestor databázy", "Database host" => "Server databázy", "Finish setup" => "Dokončiť inštaláciu", -"web services under your control" => "webové služby pod Vašou kontrolou", "%s is available. Get more information on how to update." => "%s je dostupná. Získajte viac informácií k postupu aktualizáce.", "Log out" => "Odhlásiť", "Automatic logon rejected!" => "Automatické prihlásenie bolo zamietnuté!", @@ -134,6 +134,7 @@ "remember" => "zapamätať", "Log in" => "Prihlásiť sa", "Alternative Logins" => "Alternatívne prihlasovanie", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Ahoj,

    chcem Vám oznámiť, že %s s Vami zdieľa %s.\nPozrieť si to môžete tu:
    zde.

    Vďaka", "prev" => "späť", "next" => "ďalej", "Updating ownCloud to version %s, this may take a while." => "Aktualizujem ownCloud na verziu %s, môže to chvíľu trvať." diff --git a/core/l10n/sl.php b/core/l10n/sl.php index a433aa2cc4..3b539f7fe2 100644 --- a/core/l10n/sl.php +++ b/core/l10n/sl.php @@ -1,8 +1,4 @@ "Uporabnik %s je omogočil souporabo datoteke", -"User %s shared a folder with you" => "Uporabnik %s je omogočil souporabo mape", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Uporabnik %s je omogočil souporabo datoteke \"%s\". Prejmete jo lahko preko povezave: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Uporabnik %s je omogočil souporabo mape \"%s\". Prejmete jo lahko preko povezave: %s", "Category type not provided." => "Vrsta kategorije ni podana.", "No category to add?" => "Ali ni kategorije za dodajanje?", "This category already exists: %s" => "Kategorija že obstaja: %s", @@ -104,6 +100,7 @@ "Help" => "Pomoč", "Access forbidden" => "Dostop je prepovedan", "Cloud not found" => "Oblaka ni mogoče najti", +"web services under your control" => "spletne storitve pod vašim nadzorom", "Edit categories" => "Uredi kategorije", "Add" => "Dodaj", "Security Warning" => "Varnostno opozorilo", @@ -124,7 +121,6 @@ "Database tablespace" => "Razpredelnica podatkovne zbirke", "Database host" => "Gostitelj podatkovne zbirke", "Finish setup" => "Končaj namestitev", -"web services under your control" => "spletne storitve pod vašim nadzorom", "%s is available. Get more information on how to update." => "%s je na voljo. Pridobite več podrobnosti za posodobitev.", "Log out" => "Odjava", "Automatic logon rejected!" => "Samodejno prijavljanje je zavrnjeno!", diff --git a/core/l10n/sq.php b/core/l10n/sq.php index 40562add93..f5d7d93376 100644 --- a/core/l10n/sq.php +++ b/core/l10n/sq.php @@ -1,8 +1,4 @@ "Përdoruesi %s ndau me ju një skedar", -"User %s shared a folder with you" => "Përdoruesi %s ndau me ju një dosje", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Përdoruesi %s ndau me ju skedarin \"%s\". Ky skedar është gati për shkarkim nga këtu: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Përdoruesi %s ndau me ju dosjen \"%s\". Kjo dosje është gati për shkarkim nga këto: %s", "Category type not provided." => "Mungon tipi i kategorisë.", "No category to add?" => "Asnjë kategori për të shtuar?", "This category already exists: %s" => "Kjo kategori tashmë ekziston: %s", @@ -104,6 +100,7 @@ "Help" => "Ndihmë", "Access forbidden" => "Ndalohet hyrja", "Cloud not found" => "Cloud-i nuk u gjet", +"web services under your control" => "shërbime web nën kontrollin tënd", "Edit categories" => "Ndrysho kategoritë", "Add" => "Shto", "Security Warning" => "Paralajmërim sigurie", @@ -124,7 +121,6 @@ "Database tablespace" => "Tablespace-i i database-it", "Database host" => "Pozicioni (host) i database-it", "Finish setup" => "Mbaro setup-in", -"web services under your control" => "shërbime web nën kontrollin tënd", "Log out" => "Dalje", "Automatic logon rejected!" => "Hyrja automatike u refuzua!", "If you did not change your password recently, your account may be compromised!" => "Nqse nuk keni ndryshuar kodin kohët e fundit, llogaria juaj mund të jetë komprometuar.", diff --git a/core/l10n/sr.php b/core/l10n/sr.php index 49664f19f3..a85e1bfb7e 100644 --- a/core/l10n/sr.php +++ b/core/l10n/sr.php @@ -1,6 +1,4 @@ "Корисник %s дели са вама датотеку", -"User %s shared a folder with you" => "Корисник %s дели са вама директоријум", "Category type not provided." => "Врста категорије није унет.", "No category to add?" => "Додати још неку категорију?", "Object type not provided." => "Врста објекта није унета.", @@ -95,6 +93,7 @@ "Help" => "Помоћ", "Access forbidden" => "Забрањен приступ", "Cloud not found" => "Облак није нађен", +"web services under your control" => "веб сервиси под контролом", "Edit categories" => "Измени категорије", "Add" => "Додај", "Security Warning" => "Сигурносно упозорење", @@ -111,7 +110,6 @@ "Database tablespace" => "Радни простор базе података", "Database host" => "Домаћин базе", "Finish setup" => "Заврши подешавање", -"web services under your control" => "веб сервиси под контролом", "Log out" => "Одјава", "Automatic logon rejected!" => "Аутоматска пријава је одбијена!", "If you did not change your password recently, your account may be compromised!" => "Ако ускоро не промените лозинку ваш налог може бити компромитован!", diff --git a/core/l10n/sv.php b/core/l10n/sv.php index d4154678b6..492af2cff3 100644 --- a/core/l10n/sv.php +++ b/core/l10n/sv.php @@ -1,8 +1,5 @@ "Användare %s delade en fil med dig", -"User %s shared a folder with you" => "Användare %s delade en mapp med dig", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Användare %s delade filen \"%s\" med dig. Den finns att ladda ner här: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Användare %s delade mappen \"%s\" med dig. Den finns att ladda ner här: %s", +"%s shared »%s« with you" => "%s delade »%s« med dig", "Category type not provided." => "Kategorityp inte angiven.", "No category to add?" => "Ingen kategori att lägga till?", "This category already exists: %s" => "Denna kategori finns redan: %s", @@ -46,6 +43,7 @@ "years ago" => "år sedan", "Choose" => "Välj", "Cancel" => "Avbryt", +"Error loading file picker template" => "Fel vid inläsning av filväljarens mall", "Yes" => "Ja", "No" => "Nej", "Ok" => "Ok", @@ -85,11 +83,14 @@ "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", +"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}", +"The link to reset your password has been sent to your email.
    If you do not receive it within a reasonable amount of time, check your spam/junk folders.
    If it is not there ask your local administrator ." => "Länken för att återställa ditt lösenorden har skickats till din e-postadress
    Om du inte har erhållit meddelandet inom kort, vänligen kontrollera din skräppost-mapp
    Om den inte finns där, vänligen kontakta din administratör.", +"Request failed!
    Did you make sure your email/username was right?" => "Begäran misslyckades!
    Är du helt säker på att din e-postadress/användarnamn är korrekt?", "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.", "Username" => "Användarnamn", +"Yes, I really want to reset my password now" => "Ja, jag vill verkligen återställa mitt lösenord nu", "Request reset" => "Begär återställning", "Your password was reset" => "Ditt lösenord har återställts", "To login page" => "Till logginsidan", @@ -102,6 +103,8 @@ "Help" => "Hjälp", "Access forbidden" => "Åtkomst förbjuden", "Cloud not found" => "Hittade inget moln", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Hej där,⏎\n⏎\nville bara meddela dig att %s delade %s med dig.⏎\nTitta på den: %s⏎\n⏎\nVi hörs!", +"web services under your control" => "webbtjänster under din kontroll", "Edit categories" => "Editera kategorier", "Add" => "Lägg till", "Security Warning" => "Säkerhetsvarning", @@ -122,7 +125,7 @@ "Database tablespace" => "Databas tabellutrymme", "Database host" => "Databasserver", "Finish setup" => "Avsluta installation", -"web services under your control" => "webbtjänster under din kontroll", +"%s is available. Get more information on how to update." => "%s är tillgänglig. Få mer information om hur du går tillväga för att uppdatera.", "Log out" => "Logga ut", "Automatic logon rejected!" => "Automatisk inloggning inte tillåten!", "If you did not change your password recently, your account may be compromised!" => "Om du inte har ändrat ditt lösenord nyligen så kan ditt konto vara manipulerat!", @@ -131,6 +134,7 @@ "remember" => "kom ihåg", "Log in" => "Logga in", "Alternative Logins" => "Alternativa inloggningar", +"Hey there,

    just letting you know that %s shared »%s« with you.
    View it!

    Cheers!" => "Hej där,

    ville bara informera dig om att %s delade »%s« med dig.
    Titta på den!

    Hörs!", "prev" => "föregående", "next" => "nästa", "Updating ownCloud to version %s, this may take a while." => "Uppdaterar ownCloud till version %s, detta kan ta en stund." diff --git a/core/l10n/ta_LK.php b/core/l10n/ta_LK.php index b67f5e967e..0770805ddf 100644 --- a/core/l10n/ta_LK.php +++ b/core/l10n/ta_LK.php @@ -90,6 +90,7 @@ "Help" => "உதவி", "Access forbidden" => "அணுக தடை", "Cloud not found" => "Cloud காணப்படவில்லை", +"web services under your control" => "வலைய சேவைகள் உங்களுடைய கட்டுப்பாட்டின் கீழ் உள்ளது", "Edit categories" => "வகைகளை தொகுக்க", "Add" => "சேர்க்க", "Security Warning" => "பாதுகாப்பு எச்சரிக்கை", @@ -106,7 +107,6 @@ "Database tablespace" => "தரவுத்தள அட்டவணை", "Database host" => "தரவுத்தள ஓம்புனர்", "Finish setup" => "அமைப்பை முடிக்க", -"web services under your control" => "வலைய சேவைகள் உங்களுடைய கட்டுப்பாட்டின் கீழ் உள்ளது", "Log out" => "விடுபதிகை செய்க", "Automatic logon rejected!" => "தன்னிச்சையான புகுபதிகை நிராகரிப்பட்டது!", "If you did not change your password recently, your account may be compromised!" => "உங்களுடைய கடவுச்சொல்லை அண்மையில் மாற்றவில்லையின், உங்களுடைய கணக்கு சமரசமாகிவிடும்!", diff --git a/core/l10n/th_TH.php b/core/l10n/th_TH.php index 66f5629b93..83642ed89c 100644 --- a/core/l10n/th_TH.php +++ b/core/l10n/th_TH.php @@ -1,8 +1,4 @@ "ผู้ใช้งาน %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?" => "ไม่มีหมวดหมู่ที่ต้องการเพิ่ม?", "Object type not provided." => "ชนิดของวัตถุยังไม่ได้ถูกระบุ", @@ -101,6 +97,7 @@ "Help" => "ช่วยเหลือ", "Access forbidden" => "การเข้าถึงถูกหวงห้าม", "Cloud not found" => "ไม่พบ Cloud", +"web services under your control" => "เว็บเซอร์วิสที่คุณควบคุมการใช้งานได้", "Edit categories" => "แก้ไขหมวดหมู่", "Add" => "เพิ่ม", "Security Warning" => "คำเตือนเกี่ยวกับความปลอดภัย", @@ -117,7 +114,6 @@ "Database tablespace" => "พื้นที่ตารางในฐานข้อมูล", "Database host" => "Database host", "Finish setup" => "ติดตั้งเรียบร้อยแล้ว", -"web services under your control" => "เว็บเซอร์วิสที่คุณควบคุมการใช้งานได้", "Log out" => "ออกจากระบบ", "Automatic logon rejected!" => "การเข้าสู่ระบบอัตโนมัติถูกปฏิเสธแล้ว", "If you did not change your password recently, your account may be compromised!" => "หากคุณยังไม่ได้เปลี่ยนรหัสผ่านของคุณเมื่อเร็วๆนี้, บัญชีของคุณอาจถูกบุกรุกโดยผู้อื่น", diff --git a/core/l10n/tr.php b/core/l10n/tr.php index 47574a0125..f6112040c5 100644 --- a/core/l10n/tr.php +++ b/core/l10n/tr.php @@ -1,8 +1,4 @@ "%s kullanıcısı sizinle bir dosyayı paylaştı", -"User %s shared a folder with you" => "%s kullanıcısı sizinle bir dizini paylaştı", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s kullanıcısı \"%s\" dosyasını sizinle paylaştı. %s adresinden indirilebilir", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s kullanıcısı \"%s\" dizinini sizinle paylaştı. %s adresinden indirilebilir", "Category type not provided." => "Kategori türü desteklenmemektedir.", "No category to add?" => "Eklenecek kategori yok?", "This category already exists: %s" => "Bu kategori zaten mevcut: %s", @@ -46,6 +42,7 @@ "years ago" => "yıl önce", "Choose" => "seç", "Cancel" => "İptal", +"Error loading file picker template" => "Seçici şablon dosya yüklemesinde hata", "Yes" => "Evet", "No" => "Hayır", "Ok" => "Tamam", @@ -104,6 +101,7 @@ "Help" => "Yardım", "Access forbidden" => "Erişim yasaklı", "Cloud not found" => "Bulut bulunamadı", +"web services under your control" => "Bilgileriniz güvenli ve şifreli", "Edit categories" => "Kategorileri düzenle", "Add" => "Ekle", "Security Warning" => "Güvenlik Uyarisi", @@ -124,7 +122,6 @@ "Database tablespace" => "Veritabanı tablo alanı", "Database host" => "Veritabanı sunucusu", "Finish setup" => "Kurulumu tamamla", -"web services under your control" => "Bilgileriniz güvenli ve şifreli", "%s is available. Get more information on how to update." => "%s mevcuttur. Güncelleştirme hakkında daha fazla bilgi alın.", "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 65577297c3..11ebda3af8 100644 --- a/core/l10n/uk.php +++ b/core/l10n/uk.php @@ -1,8 +1,4 @@ "Користувач %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: %s" => "Ця категорія вже існує: %s", @@ -102,6 +98,7 @@ "Help" => "Допомога", "Access forbidden" => "Доступ заборонено", "Cloud not found" => "Cloud не знайдено", +"web services under your control" => "підконтрольні Вам веб-сервіси", "Edit categories" => "Редагувати категорії", "Add" => "Додати", "Security Warning" => "Попередження про небезпеку", @@ -122,7 +119,6 @@ "Database tablespace" => "Таблиця бази даних", "Database host" => "Хост бази даних", "Finish setup" => "Завершити налаштування", -"web services under your control" => "підконтрольні Вам веб-сервіси", "Log out" => "Вихід", "Automatic logon rejected!" => "Автоматичний вхід в систему відхилений!", "If you did not change your password recently, your account may be compromised!" => "Якщо Ви не міняли пароль останнім часом, Ваш обліковий запис може бути скомпрометованим!", diff --git a/core/l10n/ur_PK.php b/core/l10n/ur_PK.php index cf26212c25..0e0489bf33 100644 --- a/core/l10n/ur_PK.php +++ b/core/l10n/ur_PK.php @@ -55,6 +55,7 @@ "Help" => "مدد", "Access forbidden" => "پہنچ کی اجازت نہیں", "Cloud not found" => "نہیں مل سکا", +"web services under your control" => "آپ کے اختیار میں ویب سروسیز", "Edit categories" => "زمرہ جات کی تدوین کریں", "Add" => "شامل کریں", "Create an admin account" => "ایک ایڈمن اکاؤنٹ بنائیں", @@ -68,7 +69,6 @@ "Database tablespace" => "ڈیٹابیس ٹیبل سپیس", "Database host" => "ڈیٹابیس ہوسٹ", "Finish setup" => "سیٹ اپ ختم کریں", -"web services under your control" => "آپ کے اختیار میں ویب سروسیز", "Log out" => "لاگ آؤٹ", "Lost your password?" => "کیا آپ پاسورڈ بھول گئے ہیں؟", "remember" => "یاد رکھیں", diff --git a/core/l10n/vi.php b/core/l10n/vi.php index 3e320ecf80..ebe6c7006f 100644 --- a/core/l10n/vi.php +++ b/core/l10n/vi.php @@ -1,8 +1,4 @@ "%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: %s" => "Danh mục này đã tồn tại: %s", @@ -104,6 +100,7 @@ "Help" => "Giúp đỡ", "Access forbidden" => "Truy cập bị cấm", "Cloud not found" => "Không tìm thấy Clound", +"web services under your control" => "dịch vụ web dưới sự kiểm soát của bạn", "Edit categories" => "Sửa chuyên mục", "Add" => "Thêm", "Security Warning" => "Cảnh bảo bảo mật", @@ -124,7 +121,6 @@ "Database tablespace" => "Cơ sở dữ liệu tablespace", "Database host" => "Database host", "Finish setup" => "Cài đặt hoàn tất", -"web services under your control" => "dịch vụ web dưới sự kiểm soát của bạn", "%s is available. Get more information on how to update." => "%s còn trống. Xem thêm thông tin cách cập nhật.", "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 2e0d0da6f2..b4cc129964 100644 --- a/core/l10n/zh_CN.GB2312.php +++ b/core/l10n/zh_CN.GB2312.php @@ -1,13 +1,11 @@ "用户 %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: %s" => "此分类已存在:%s", "Object type not provided." => "未选择对象类型。", +"Error adding %s to favorites." => "在添加 %s 到收藏夹时发生错误。", "No categories selected for deletion." => "没有选中要删除的分类。", +"Error removing %s from favorites." => "在移除收藏夹中的 %s 时发生错误。", "Sunday" => "星期天", "Monday" => "星期一", "Tuesday" => "星期二", @@ -99,6 +97,7 @@ "Help" => "帮助", "Access forbidden" => "禁止访问", "Cloud not found" => "云 没有被找到", +"web services under your control" => "您控制的网络服务", "Edit categories" => "编辑分类", "Add" => "添加", "Security Warning" => "安全警告", @@ -118,13 +117,12 @@ "Database tablespace" => "数据库表格空间", "Database host" => "数据库主机", "Finish setup" => "完成安装", -"web services under your control" => "您控制的网络服务", "Log out" => "注销", "Automatic logon rejected!" => "自动登录被拒绝!", "If you did not change your password recently, your account may be compromised!" => "如果您最近没有修改您的密码,那您的帐号可能被攻击了!", "Please change your password to secure your account again." => "请修改您的密码以保护账户。", "Lost your password?" => "忘记密码?", -"remember" => "备忘", +"remember" => "记住登录", "Log in" => "登陆", "Alternative Logins" => "备选登录", "prev" => "后退", diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php index 016a136256..29fef5ff22 100644 --- a/core/l10n/zh_CN.php +++ b/core/l10n/zh_CN.php @@ -1,8 +1,4 @@ "用户 %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: %s" => "此分类已存在:%s", @@ -105,6 +101,7 @@ "Help" => "帮助", "Access forbidden" => "访问禁止", "Cloud not found" => "未找到云", +"web services under your control" => "您控制的web服务", "Edit categories" => "编辑分类", "Add" => "增加", "Security Warning" => "安全警告", @@ -125,7 +122,6 @@ "Database tablespace" => "数据库表空间", "Database host" => "数据库主机", "Finish setup" => "安装完成", -"web services under your control" => "您控制的web服务", "%s is available. Get more information on how to update." => "%s 可用。获取更多关于如何升级的信息。", "Log out" => "注销", "Automatic logon rejected!" => "自动登录被拒绝!", diff --git a/core/l10n/zh_TW.php b/core/l10n/zh_TW.php index 10279c7ba1..306ae7acb8 100644 --- a/core/l10n/zh_TW.php +++ b/core/l10n/zh_TW.php @@ -1,8 +1,4 @@ "用戶 %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: %s" => "分類已經存在: %s", @@ -93,6 +89,7 @@ "Request failed!
    Did you make sure your email/username was right?" => "請求失敗!
    您確定填入的電子郵件地址或是帳號名稱是正確的嗎?", "You will receive a link to reset your password via Email." => "重設密碼的連結將會寄到你的電子郵件信箱。", "Username" => "使用者名稱", +"Yes, I really want to reset my password now" => "對,我現在想要重設我的密碼。", "Request reset" => "請求重設", "Your password was reset" => "您的密碼已重設", "To login page" => "至登入頁面", @@ -105,6 +102,7 @@ "Help" => "說明", "Access forbidden" => "存取被拒", "Cloud not found" => "未發現雲端", +"web services under your control" => "由您控制的網路服務", "Edit categories" => "編輯分類", "Add" => "增加", "Security Warning" => "安全性警告", @@ -125,7 +123,6 @@ "Database tablespace" => "資料庫 tablespace", "Database host" => "資料庫主機", "Finish setup" => "完成設定", -"web services under your control" => "由您控制的網路服務", "%s is available. Get more information on how to update." => "%s 已經釋出,瞭解更多資訊以進行更新。", "Log out" => "登出", "Automatic logon rejected!" => "自動登入被拒!", diff --git a/core/lostpassword/controller.php b/core/lostpassword/controller.php index fbcf4a87f2..2f99636521 100644 --- a/core/lostpassword/controller.php +++ b/core/lostpassword/controller.php @@ -8,8 +8,11 @@ class OC_Core_LostPassword_Controller { protected static function displayLostPasswordPage($error, $requested) { + $isEncrypted = OC_App::isEnabled('files_encryption'); OC_Template::printGuestPage('core/lostpassword', 'lostpassword', - array('error' => $error, 'requested' => $requested)); + array('error' => $error, + 'requested' => $requested, + 'isEncrypted' => $isEncrypted)); } protected static function displayResetPasswordPage($success, $args) { @@ -29,7 +32,16 @@ class OC_Core_LostPassword_Controller { } public static function sendEmail($args) { - if (OC_User::userExists($_POST['user'])) { + + $isEncrypted = OC_App::isEnabled('files_encryption'); + + if(!$isEncrypted || isset($_POST['continue'])) { + $continue = true; + } else { + $continue = false; + } + + if (OC_User::userExists($_POST['user']) && $continue) { $token = hash('sha256', OC_Util::generate_random_bytes(30).OC_Config::getValue('passwordsalt', '')); OC_Preferences::setValue($_POST['user'], 'owncloud', 'lostpassword', hash('sha256', $token)); // Hash the token again to prevent timing attacks diff --git a/core/lostpassword/templates/lostpassword.php b/core/lostpassword/templates/lostpassword.php index c19c6893f1..f5fdb1fb2b 100644 --- a/core/lostpassword/templates/lostpassword.php +++ b/core/lostpassword/templates/lostpassword.php @@ -17,6 +17,12 @@ + +

    + t("Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?")); ?>
    + + t('Yes, I really want to reset my password now')); ?>

    +

    diff --git a/core/templates/altmail.php b/core/templates/altmail.php new file mode 100644 index 0000000000..37dc8eee94 --- /dev/null +++ b/core/templates/altmail.php @@ -0,0 +1,9 @@ +t("Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!", array($_['user_displayname'], $_['filename'], $_['link']))); +?> + +-- +ownCloud - t("web services under your control")); +?> +http://ownCloud.org diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php index 336df27ef1..163e8e3ae7 100644 --- a/core/templates/layout.base.php +++ b/core/templates/layout.base.php @@ -6,7 +6,9 @@ - ownCloud + + <?php p(OC_Defaults::getName()); ?> + diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index a3a8dc5f7b..4173212dfa 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -6,7 +6,9 @@ - ownCloud + + <?php p(OC_Defaults::getName()); ?> + @@ -33,10 +35,18 @@
    -

    ownCloud – - t( 'web services under your control' )); ?>

    +
    +

    + + + + '); ?> +

    diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index a3ebf3abd0..8c82a5c028 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -6,8 +6,11 @@ - <?php p(!empty($_['application'])?$_['application'].' | ':'') ?>ownCloud - <?php p(trim($_['user_displayname']) != '' ?' ('.$_['user_displayname'].') ':'') ?> + + <?php p(!empty($_['application'])?$_['application'].' | ':''); + p(OC_Defaults::getName()); + p(trim($_['user_displayname']) != '' ?' ('.$_['user_displayname'].') ':'') ?> + @@ -40,7 +43,9 @@