diff --git a/apps/files/ajax/move.php b/apps/files/ajax/move.php index 78ed218c13..93063e52eb 100644 --- a/apps/files/ajax/move.php +++ b/apps/files/ajax/move.php @@ -11,8 +11,10 @@ $dir = stripslashes($_POST["dir"]); $file = stripslashes($_POST["file"]); $target = stripslashes(rawurldecode($_POST["target"])); +$l = OC_L10N::get('files'); + if(\OC\Files\Filesystem::file_exists($target . '/' . $file)) { - OCP\JSON::error(array("data" => array( "message" => "Could not move $file - File with this name already exists" ))); + OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s - File with this name already exists", array($file)) ))); exit; } @@ -22,8 +24,8 @@ if ($dir != '' || $file != 'Shared') { if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) { OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file ))); } else { - OCP\JSON::error(array("data" => array( "message" => "Could not move $file" ))); + OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) ))); } }else{ - OCP\JSON::error(array("data" => array( "message" => "Could not move $file" ))); + OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) ))); } diff --git a/apps/files/ajax/rename.php b/apps/files/ajax/rename.php index 970aaa638d..9fd2ce3ad4 100644 --- a/apps/files/ajax/rename.php +++ b/apps/files/ajax/rename.php @@ -11,14 +11,16 @@ $dir = stripslashes($_GET["dir"]); $file = stripslashes($_GET["file"]); $newname = stripslashes($_GET["newname"]); +$l = OC_L10N::get('files'); + if ( $newname !== '.' and ($dir != '' || $file != 'Shared') and $newname !== '.') { $targetFile = \OC\Files\Filesystem::normalizePath($dir . '/' . $newname); $sourceFile = \OC\Files\Filesystem::normalizePath($dir . '/' . $file); if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) { OCP\JSON::success(array("data" => array( "dir" => $dir, "file" => $file, "newname" => $newname ))); } else { - OCP\JSON::error(array("data" => array( "message" => "Unable to rename file" ))); + OCP\JSON::error(array("data" => array( "message" => $l->t("Unable to rename file") ))); } }else{ - OCP\JSON::error(array("data" => array( "message" => "Unable to rename file" ))); + OCP\JSON::error(array("data" => array( "message" => $l->t("Unable to rename file") ))); } diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index 676612c0e4..07977f5ddf 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -49,7 +49,7 @@ foreach ($files['size'] as $size) { $totalSize += $size; } if ($totalSize > \OC\Files\Filesystem::free_space($dir)) { - OCP\JSON::error(array('data' => array('message' => $l->t('Not enough space available'), + OCP\JSON::error(array('data' => array('message' => $l->t('Not enough storage available'), 'uploadMaxFilesize' => $maxUploadFilesize, 'maxHumanFilesize' => $maxHumanFilesize))); exit(); diff --git a/apps/files/css/files.css b/apps/files/css/files.css index f37ac4c262..1dae49c1cf 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -3,7 +3,7 @@ See the COPYING-README file. */ /* FILE MENU */ -.actions { padding:.3em; float:left; height:2em; width: 100%; } +.actions { padding:.3em; height:2em; width: 100%; } .actions input, .actions button, .actions .button { margin:0; float:left; } #new { @@ -25,7 +25,7 @@ #trash { height:17px; margin: 0 1em; z-index:1010; float: right; } -#upload { +#upload { height:27px; padding:0; margin-left:0.2em; overflow:hidden; } #upload a { @@ -55,7 +55,7 @@ font-size:1.5em; font-weight:bold; color:#888; text-shadow:#fff 0 1px 0; } -table { position:relative; width:100%; } +table { 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; } @@ -74,9 +74,9 @@ table th#headerDate, table td.date { min-width:11em; padding:0 .1em 0 1em; text- /* Multiselect bar */ table.multiselect { top:63px; } -table.multiselect thead { position:fixed; top:82px; z-index:1; } +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 #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; } table tr[data-type="dir"] td.filename a.name span.nametext {font-weight:bold; } diff --git a/apps/files/index.php b/apps/files/index.php index 104cf1a55d..434e98c6ea 100644 --- a/apps/files/index.php +++ b/apps/files/index.php @@ -92,7 +92,7 @@ foreach (explode('/', $dir) as $i) { $list = new OCP\Template('files', 'part.list', ''); $list->assign('files', $files, false); $list->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir=', false); -$list->assign('downloadURL', OCP\Util::linkTo('files', 'download.php') . '?file=', false); +$list->assign('downloadURL', OCP\Util::linkToRoute('download', array('file' => '/')), false); $list->assign('disableSharing', false); $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index af3fc48391..38f5bab6f7 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -81,7 +81,7 @@ var FileActions = { event.data.actionFunc(file); }; - $.each(actions, function (name, action) { + var addAction = function (name, action) { // NOTE: Temporary fix to prevent rename action in root of Shared directory if (name === 'Rename' && $('#dir').val() === '/Shared') { return true; @@ -92,7 +92,7 @@ var FileActions = { if (img.call) { img = img(file); } - var html = ''; + var html = ''; if (img) { html += ' '; } @@ -101,21 +101,27 @@ var FileActions = { var element = $(html); element.data('action', name); //alert(element); - element.on('click',{a:null, elem:parent, actionFunc:actions[name]},actionHandler); + element.on('click', {a: null, elem: parent, actionFunc: actions[name]}, actionHandler); parent.find('a.name>span.fileactions').append(element); } + }; + + $.each(actions, function (name, action) { + if (name !== 'Share') { + addAction(name, action); + } }); + if(actions.Share){ + addAction('Share', actions.Share); + } if (actions['Delete']) { var img = FileActions.icons['Delete']; if (img.call) { img = img(file); } - // NOTE: Temporary fix to allow unsharing of files in root of Shared folder - if ($('#dir').val() == '/Shared') { - var html = ''; - } else if (typeof trashBinApp !== 'undefined' && trashBinApp) { + if (typeof trashBinApp !== 'undefined' && trashBinApp) { var html = ''; } else { var html = ''; @@ -125,7 +131,7 @@ var FileActions = { element.append($('')); } element.data('action', actions['Delete']); - element.on('click',{a:null, elem:parent, actionFunc:actions['Delete']},actionHandler); + element.on('click', {a: null, elem: parent, actionFunc: actions['Delete']}, actionHandler); parent.parent().children().last().append(element); } }, @@ -149,7 +155,7 @@ $(document).ready(function () { } else { var downloadScope = 'file'; } - + if (typeof disableDownloadActions == 'undefined' || !disableDownloadActions) { FileActions.register(downloadScope, 'Download', OC.PERMISSION_READ, function () { return OC.imagePath('core', 'actions/download'); @@ -157,11 +163,11 @@ $(document).ready(function () { window.location = OC.filePath('files', 'ajax', 'download.php') + '?files=' + encodeURIComponent(filename) + '&dir=' + encodeURIComponent($('#dir').val()); }); } - - $('#fileList tr').each(function(){ + + $('#fileList tr').each(function () { FileActions.display($(this).children('td.filename')); }); - + }); FileActions.register('all', 'Delete', OC.PERMISSION_DELETE, function () { diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 72b353b48c..cc107656da 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -3,35 +3,92 @@ var FileList={ update:function(fileListHtml) { $('#fileList').empty().html(fileListHtml); }, - addFile:function(name,size,lastModified,loading,hidden){ - var basename, extension, simpleSize, sizeColor, lastModifiedTime, modifiedColor, - img=(loading)?OC.imagePath('core', 'loading.gif'):OC.imagePath('core', 'filetypes/file.png'), - html=''; - if(name.indexOf('.')!=-1){ + createRow:function(type, name, iconurl, linktarget, size, lastModified, permissions){ + var td, simpleSize, basename, extension; + //containing tr + var tr = $('').attr({ + "data-type": type, + "data-size": size, + "data-file": name, + "data-permissions": permissions + }); + // filename td + td = $('').attr({ + "class": "filename", + "style": 'background-image:url('+iconurl+')' + }); + td.append(''); + var link_elem = $('').attr({ + "class": "name", + "href": linktarget + }); + //split extension from filename for non dirs + if (type != 'dir' && name.indexOf('.')!=-1) { basename=name.substr(0,name.lastIndexOf('.')); extension=name.substr(name.lastIndexOf('.')); - }else{ + } else { basename=name; extension=false; } - html+=''; - html+=''+escapeHTML(basename); + var name_span=$('').addClass('nametext').text(basename); + link_elem.append(name_span); if(extension){ - html+=''+escapeHTML(extension)+''; + name_span.append($('').addClass('extension').text(extension)); } - html+=''; - if(size!='Pending'){ + //dirs can show the number of uploaded files + if (type == 'dir') { + link_elem.append($('').attr({ + 'class': 'uploadtext', + 'currentUploads': 0 + })); + } + td.append(link_elem); + tr.append(td); + + //size column + if(size!=t('files', 'Pending')){ simpleSize=simpleFileSize(size); }else{ - simpleSize='Pending'; + simpleSize=t('files', 'Pending'); } - sizeColor = Math.round(200-size/(1024*1024)*2); - lastModifiedTime=Math.round(lastModified.getTime() / 1000); - modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*14); - html+=''+simpleSize+''; - html+=''+relative_modified_date(lastModified.getTime() / 1000)+''; - html+=''; - FileList.insertElement(name,'file',$(html).attr('data-file',name)); + var sizeColor = Math.round(200-Math.pow((size/(1024*1024)),2)); + var lastModifiedTime = Math.round(lastModified.getTime() / 1000); + td = $('').attr({ + "class": "filesize", + "title": humanFileSize(size), + "style": 'color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')' + }).text(simpleSize); + tr.append(td); + + // date column + var modifiedColor = Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*5); + td = $('').attr({ "class": "date" }); + td.append($('').attr({ + "class": "modified", + "title": formatDate(lastModified), + "style": 'color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')' + }).text( relative_modified_date(lastModified.getTime() / 1000) )); + tr.append(td); + return tr; + }, + addFile:function(name,size,lastModified,loading,hidden){ + var imgurl; + if (loading) { + imgurl = OC.imagePath('core', 'loading.gif'); + } else { + imgurl = OC.imagePath('core', 'filetypes/file.png'); + } + var tr = this.createRow( + 'file', + name, + imgurl, + OC.Router.generate('download', { file: $('#dir').val()+'/'+name }), + size, + lastModified, + $('#permissions').val() + ); + + FileList.insertElement(name, 'file', tr.attr('data-file',name)); var row = $('tr').filterAttr('data-file',name); if(loading){ row.data('loading',true); @@ -44,30 +101,18 @@ var FileList={ FileActions.display(row.find('td.filename')); }, addDir:function(name,size,lastModified,hidden){ - var html, td, link_elem, sizeColor, lastModifiedTime, modifiedColor; - html = $('').attr({ "data-type": "dir", "data-size": size, "data-file": name, "data-permissions": $('#permissions').val()}); - td = $('').attr({"class": "filename", "style": 'background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')' }); - td.append(''); - link_elem = $('').attr({ "class": "name", "href": OC.linkTo('files', 'index.php')+"?dir="+ encodeURIComponent($('#dir').val()+'/'+name).replace(/%2F/g, '/') }); - link_elem.append($('').addClass('nametext').text(name)); - link_elem.append($('').attr({'class': 'uploadtext', 'currentUploads': 0})); - td.append(link_elem); - html.append(td); - if(size!='Pending'){ - simpleSize=simpleFileSize(size); - }else{ - simpleSize='Pending'; - } - sizeColor = Math.round(200-Math.pow((size/(1024*1024)),2)); - lastModifiedTime=Math.round(lastModified.getTime() / 1000); - modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*5); - td = $('').attr({ "class": "filesize", "title": humanFileSize(size), "style": 'color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')'}).text(simpleSize); - html.append(td); - - td = $('').attr({ "class": "date" }); - td.append($('').attr({ "class": "modified", "title": formatDate(lastModified), "style": 'color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')' }).text( relative_modified_date(lastModified.getTime() / 1000) )); - html.append(td); - FileList.insertElement(name,'dir',html); + + var tr = this.createRow( + 'dir', + name, + OC.imagePath('core', 'filetypes/folder.png'), + OC.linkTo('files', 'index.php')+"?dir="+ encodeURIComponent($('#dir').val()+'/'+name).replace(/%2F/g, '/'), + size, + lastModified, + $('#permissions').val() + ); + + FileList.insertElement(name,'dir',tr); var row = $('tr').filterAttr('data-file',name); row.find('td.filename').draggable(dragOptions); row.find('td.filename').droppable(folderDropOptions); @@ -216,9 +261,6 @@ var FileList={ }, replace:function(oldName, newName, isNewFile) { // Finish any existing actions - if (FileList.lastAction || !FileList.useUndo) { - FileList.lastAction(); - } $('tr').filterAttr('data-file', oldName).hide(); $('tr').filterAttr('data-file', newName).hide(); var tr = $('tr').filterAttr('data-file', oldName).clone(); @@ -321,7 +363,6 @@ $(document).ready(function(){ // Delete the new uploaded file FileList.deleteCanceled = false; FileList.deleteFiles = [FileList.replaceOldName]; - FileList.finishDelete(null, true); } else { $('tr').filterAttr('data-file', FileList.replaceOldName).show(); } @@ -348,7 +389,6 @@ $(document).ready(function(){ if ($('#notification').data('isNewFile')) { FileList.deleteCanceled = false; FileList.deleteFiles = [$('#notification').data('oldName')]; - FileList.finishDelete(null, true); } }); FileList.useUndo=(window.onbeforeunload)?true:false; diff --git a/apps/files/js/files.js b/apps/files/js/files.js index 7c377afc62..918182162d 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -262,12 +262,6 @@ $(document).ready(function() { return; } totalSize+=files[i].size; - if(FileList.deleteFiles && FileList.deleteFiles.indexOf(files[i].name)!=-1){//finish delete if we are uploading a deleted file - FileList.finishDelete(function(){ - $('#file_upload_start').change(); - }); - return; - } } } if(totalSize>$('#max_upload').val()){ @@ -691,9 +685,10 @@ $(document).ready(function() { breadcrumbsWidth += $(breadcrumb).get(0).offsetWidth; }); - if ($('#controls .actions').length > 0) { - breadcrumbsWidth += $('#controls .actions').get(0).offsetWidth; - } + + $.each($('#controls .actions>div'), function(index, action) { + breadcrumbsWidth += $(action).get(0).offsetWidth; + }); function resizeBreadcrumbs(firstRun) { var width = $(this).width(); diff --git a/apps/files/l10n/ar.php b/apps/files/l10n/ar.php index b741815be4..ce8a34aced 100644 --- a/apps/files/l10n/ar.php +++ b/apps/files/l10n/ar.php @@ -5,7 +5,6 @@ "No file was uploaded" => "لم يتم ترفيع أي من الملفات", "Missing a temporary folder" => "المجلد المؤقت غير موجود", "Files" => "الملفات", -"Unshare" => "إلغاء مشاركة", "Delete" => "محذوف", "Close" => "إغلق", "Name" => "الاسم", @@ -19,6 +18,7 @@ "Folder" => "مجلد", "Nothing in here. Upload something!" => "لا يوجد شيء هنا. إرفع بعض الملفات!", "Download" => "تحميل", +"Unshare" => "إلغاء مشاركة", "Upload too large" => "حجم الترفيع أعلى من المسموح", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "حجم الملفات التي تريد ترفيعها أعلى من المسموح على الخادم." ); diff --git a/apps/files/l10n/bg_BG.php b/apps/files/l10n/bg_BG.php index ae49f51699..632b574545 100644 --- a/apps/files/l10n/bg_BG.php +++ b/apps/files/l10n/bg_BG.php @@ -6,6 +6,7 @@ "replace" => "препокриване", "cancel" => "отказ", "undo" => "възтановяване", +"Close" => "Затвори", "Upload cancelled." => "Качването е спряно.", "Name" => "Име", "Size" => "Размер", diff --git a/apps/files/l10n/bn_BD.php b/apps/files/l10n/bn_BD.php index 3d676810c7..05cfb9f138 100644 --- a/apps/files/l10n/bn_BD.php +++ b/apps/files/l10n/bn_BD.php @@ -1,4 +1,7 @@ "%s কে স্থানান্তর করা সম্ভব হলো না - এই নামের ফাইল বিদ্যমান", +"Could not move %s" => "%s কে স্থানান্তর করা সম্ভব হলো না", +"Unable to rename file" => "ফাইলের নাম পরিবর্তন করা সম্ভব হলো না", "No file was uploaded. Unknown error" => "কোন ফাইল আপলোড করা হয় নি। সমস্যা অজ্ঞাত।", "There is no error, the file uploaded with success" => "কোন সমস্যা নেই, ফাইল আপলোড সুসম্পন্ন হয়েছে", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "আপলোড করা ফাইলটি php.ini তে বর্ণিত upload_max_filesize নির্দেশিত আয়তন অতিক্রম করছেঃ", @@ -7,12 +10,11 @@ "No file was uploaded" => "কোন ফাইল আপলোড করা হয় নি", "Missing a temporary folder" => "অস্থায়ী ফোল্ডার খোয়া গিয়েছে", "Failed to write to disk" => "ডিস্কে লিখতে ব্যর্থ", -"Not enough space available" => "যথেষ্ঠ পরিমাণ স্থান নেই", "Invalid directory." => "ভুল ডিরেক্টরি", "Files" => "ফাইল", -"Unshare" => "ভাগাভাগি বাতিল ", "Delete" => "মুছে ফেল", "Rename" => "পূনঃনামকরণ", +"Pending" => "মুলতুবি", "{new_name} already exists" => "{new_name} টি বিদ্যমান", "replace" => "প্রতিস্থাপন", "suggest name" => "নাম সুপারিশ করুন", @@ -26,7 +28,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "আপনার ফাইলটি আপলোড করা সম্ভব হলো না, কেননা এটি হয় একটি ফোল্ডার কিংবা এর আকার ০ বাইট", "Upload Error" => "আপলোড করতে সমস্যা ", "Close" => "বন্ধ", -"Pending" => "মুলতুবি", "1 file uploading" => "১টি ফাইল আপলোড করা হচ্ছে", "{count} files uploading" => "{count} টি ফাইল আপলোড করা হচ্ছে", "Upload cancelled." => "আপলোড বাতিল করা হয়েছে।", @@ -56,6 +57,7 @@ "Cancel upload" => "আপলোড বাতিল কর", "Nothing in here. Upload something!" => "এখানে কিছুই নেই। কিছু আপলোড করুন !", "Download" => "ডাউনলোড", +"Unshare" => "ভাগাভাগি বাতিল ", "Upload too large" => "আপলোডের আকারটি অনেক বড়", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "আপনি এই সার্ভারে আপলোড করার জন্য অনুমোদিত ফাইলের সর্বোচ্চ আকারের চেয়ে বৃহদাকার ফাইল আপলোড করার চেষ্টা করছেন ", "Files are being scanned, please wait." => "ফাইলগুলো স্ক্যান করা হচ্ছে, দয়া করে অপেক্ষা করুন।", diff --git a/apps/files/l10n/ca.php b/apps/files/l10n/ca.php index 22b684fcfd..6655633bbd 100644 --- a/apps/files/l10n/ca.php +++ b/apps/files/l10n/ca.php @@ -1,4 +1,7 @@ "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom", +"Could not move %s" => " No s'ha pogut moure %s", +"Unable to rename file" => "No es pot canviar el nom del fitxer", "No file was uploaded. Unknown error" => "No s'ha carregat cap fitxer. Error desconegut", "There is no error, the file uploaded with success" => "El fitxer s'ha pujat correctament", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "L’arxiu que voleu carregar supera el màxim definit en la directiva upload_max_filesize del php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "El fitxer no s'ha pujat", "Missing a temporary folder" => "S'ha perdut un fitxer temporal", "Failed to write to disk" => "Ha fallat en escriure al disc", -"Not enough space available" => "No hi ha prou espai disponible", +"Not enough storage available" => "No hi ha prou espai disponible", "Invalid directory." => "Directori no vàlid.", "Files" => "Fitxers", -"Unshare" => "Deixa de compartir", +"Delete permanently" => "Esborra permanentment", "Delete" => "Suprimeix", "Rename" => "Reanomena", +"Pending" => "Pendents", "{new_name} already exists" => "{new_name} ja existeix", "replace" => "substitueix", "suggest name" => "sugereix un nom", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "No es pot pujar el fitxer perquè és una carpeta o té 0 bytes", "Upload Error" => "Error en la pujada", "Close" => "Tanca", -"Pending" => "Pendents", "1 file uploading" => "1 fitxer pujant", "{count} files uploading" => "{count} fitxers en pujada", "Upload cancelled." => "La pujada s'ha cancel·lat.", @@ -57,10 +60,11 @@ "Text file" => "Fitxer de text", "Folder" => "Carpeta", "From link" => "Des d'enllaç", -"Trash" => "Esborra", +"Trash bin" => "Paperera", "Cancel upload" => "Cancel·la la pujada", "Nothing in here. Upload something!" => "Res per aquí. Pugeu alguna cosa!", "Download" => "Baixa", +"Unshare" => "Deixa de compartir", "Upload too large" => "La pujada és massa gran", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Els fitxers que esteu intentant pujar excedeixen la mida màxima de pujada del servidor", "Files are being scanned, please wait." => "S'estan escanejant els fitxers, espereu", diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php index f0beda9f55..d2306838bd 100644 --- a/apps/files/l10n/cs_CZ.php +++ b/apps/files/l10n/cs_CZ.php @@ -1,4 +1,7 @@ "Nelze přesunout %s - existuje soubor se stejným názvem", +"Could not move %s" => "Nelze přesunout %s", +"Unable to rename file" => "Nelze přejmenovat soubor", "No file was uploaded. Unknown error" => "Soubor nebyl odeslán. Neznámá chyba", "There is no error, the file uploaded with success" => "Soubor byl odeslán úspěšně", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Odesílaný soubor přesahuje velikost upload_max_filesize povolenou v php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Žádný soubor nebyl odeslán", "Missing a temporary folder" => "Chybí adresář pro dočasné soubory", "Failed to write to disk" => "Zápis na disk selhal", -"Not enough space available" => "Nedostatek dostupného místa", +"Not enough storage available" => "Nedostatek dostupného úložného prostoru", "Invalid directory." => "Neplatný adresář", "Files" => "Soubory", -"Unshare" => "Zrušit sdílení", +"Delete permanently" => "Trvale odstranit", "Delete" => "Smazat", "Rename" => "Přejmenovat", +"Pending" => "Čekající", "{new_name} already exists" => "{new_name} již existuje", "replace" => "nahradit", "suggest name" => "navrhnout název", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Nelze odeslat Váš soubor, protože je to adresář nebo má velikost 0 bajtů", "Upload Error" => "Chyba odesílání", "Close" => "Zavřít", -"Pending" => "Čekající", "1 file uploading" => "odesílá se 1 soubor", "{count} files uploading" => "odesílám {count} souborů", "Upload cancelled." => "Odesílání zrušeno.", @@ -57,10 +60,11 @@ "Text file" => "Textový soubor", "Folder" => "Složka", "From link" => "Z odkazu", -"Trash" => "Koš", +"Trash bin" => "Koš", "Cancel upload" => "Zrušit odesílání", "Nothing in here. Upload something!" => "Žádný obsah. Nahrajte něco.", "Download" => "Stáhnout", +"Unshare" => "Zrušit sdílení", "Upload too large" => "Odeslaný soubor je příliš velký", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Soubory, které se snažíte odeslat, překračují limit velikosti odesílání na tomto serveru.", "Files are being scanned, please wait." => "Soubory se prohledávají, prosím čekejte.", diff --git a/apps/files/l10n/da.php b/apps/files/l10n/da.php index 71a5a56de5..6588281462 100644 --- a/apps/files/l10n/da.php +++ b/apps/files/l10n/da.php @@ -1,4 +1,7 @@ "Kunne ikke flytte %s - der findes allerede en fil med dette navn", +"Could not move %s" => "Kunne ikke flytte %s", +"Unable to rename file" => "Kunne ikke omdøbe fil", "No file was uploaded. Unknown error" => "Ingen fil blev uploadet. Ukendt fejl.", "There is no error, the file uploaded with success" => "Der er ingen fejl, filen blev uploadet med success", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Den uploadede fil overstiger upload_max_filesize direktivet i php.ini", @@ -7,11 +10,13 @@ "No file was uploaded" => "Ingen fil blev uploadet", "Missing a temporary folder" => "Mangler en midlertidig mappe", "Failed to write to disk" => "Fejl ved skrivning til disk.", +"Not enough storage available" => "Der er ikke nok plads til rådlighed", "Invalid directory." => "Ugyldig mappe.", "Files" => "Filer", -"Unshare" => "Fjern deling", +"Delete permanently" => "Slet permanent", "Delete" => "Slet", "Rename" => "Omdøb", +"Pending" => "Afventer", "{new_name} already exists" => "{new_name} eksisterer allerede", "replace" => "erstat", "suggest name" => "foreslå navn", @@ -19,6 +24,7 @@ "replaced {new_name}" => "erstattede {new_name}", "undo" => "fortryd", "replaced {new_name} with {old_name}" => "erstattede {new_name} med {old_name}", +"perform delete operation" => "udfør slet operation", "'.' is an invalid file name." => "'.' er et ugyldigt filnavn.", "File name cannot be empty." => "Filnavnet kan ikke stå tomt.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ugyldigt navn, '\\', '/', '<', '>', ':' | '?', '\"', '', og '*' er ikke tilladt.", @@ -28,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Kunne ikke uploade din fil, da det enten er en mappe eller er tom", "Upload Error" => "Fejl ved upload", "Close" => "Luk", -"Pending" => "Afventer", "1 file uploading" => "1 fil uploades", "{count} files uploading" => "{count} filer uploades", "Upload cancelled." => "Upload afbrudt.", @@ -55,11 +60,14 @@ "Text file" => "Tekstfil", "Folder" => "Mappe", "From link" => "Fra link", +"Trash bin" => "Papirkurv", "Cancel upload" => "Fortryd upload", "Nothing in here. Upload something!" => "Her er tomt. Upload noget!", "Download" => "Download", +"Unshare" => "Fjern deling", "Upload too large" => "Upload for stor", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filerne, du prøver at uploade, er større end den maksimale størrelse for fil-upload på denne server.", "Files are being scanned, please wait." => "Filerne bliver indlæst, vent venligst.", -"Current scanning" => "Indlæser" +"Current scanning" => "Indlæser", +"Upgrading filesystem cache..." => "Opgraderer filsystems cachen..." ); diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php index 55ea24baa2..fa202c8c2b 100644 --- a/apps/files/l10n/de.php +++ b/apps/files/l10n/de.php @@ -1,4 +1,7 @@ "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits.", +"Could not move %s" => "Konnte %s nicht verschieben", +"Unable to rename file" => "Konnte Datei nicht umbenennen", "No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler", "There is no error, the file uploaded with success" => "Datei fehlerfrei hochgeladen.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini", @@ -7,12 +10,12 @@ "No file was uploaded" => "Es wurde keine Datei hochgeladen.", "Missing a temporary folder" => "Temporärer Ordner fehlt.", "Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte", -"Not enough space available" => "Nicht genug Speicherplatz verfügbar", +"Not enough storage available" => "Nicht genug Speicherplatz verfügbar", "Invalid directory." => "Ungültiges Verzeichnis.", "Files" => "Dateien", -"Unshare" => "Nicht mehr freigeben", "Delete" => "Löschen", "Rename" => "Umbenennen", +"Pending" => "Ausstehend", "{new_name} already exists" => "{new_name} existiert bereits", "replace" => "ersetzen", "suggest name" => "Name vorschlagen", @@ -30,7 +33,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.", "Upload Error" => "Fehler beim Upload", "Close" => "Schließen", -"Pending" => "Ausstehend", "1 file uploading" => "Eine Datei wird hoch geladen", "{count} files uploading" => "{count} Dateien werden hochgeladen", "Upload cancelled." => "Upload abgebrochen.", @@ -57,10 +59,10 @@ "Text file" => "Textdatei", "Folder" => "Ordner", "From link" => "Von einem Link", -"Trash" => "Papierkorb", "Cancel upload" => "Upload abbrechen", "Nothing in here. Upload something!" => "Alles leer. Lade etwas hoch!", "Download" => "Herunterladen", +"Unshare" => "Nicht mehr freigeben", "Upload too large" => "Upload zu groß", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server.", "Files are being scanned, please wait." => "Dateien werden gescannt, bitte warten.", diff --git a/apps/files/l10n/de_DE.php b/apps/files/l10n/de_DE.php index 18f3ee3802..0dfc19ff01 100644 --- a/apps/files/l10n/de_DE.php +++ b/apps/files/l10n/de_DE.php @@ -1,4 +1,7 @@ "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits", +"Could not move %s" => "Konnte %s nicht verschieben", +"Unable to rename file" => "Konnte Datei nicht umbenennen", "No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler", "There is no error, the file uploaded with success" => "Es sind keine Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini", @@ -7,12 +10,13 @@ "No file was uploaded" => "Es wurde keine Datei hochgeladen.", "Missing a temporary folder" => "Der temporäre Ordner fehlt.", "Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte", -"Not enough space available" => "Nicht genügend Speicherplatz verfügbar", +"Not enough storage available" => "Nicht genug Speicher vorhanden.", "Invalid directory." => "Ungültiges Verzeichnis.", "Files" => "Dateien", -"Unshare" => "Nicht mehr freigeben", +"Delete permanently" => "Entgültig löschen", "Delete" => "Löschen", "Rename" => "Umbenennen", +"Pending" => "Ausstehend", "{new_name} already exists" => "{new_name} existiert bereits", "replace" => "ersetzen", "suggest name" => "Name vorschlagen", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.", "Upload Error" => "Fehler beim Upload", "Close" => "Schließen", -"Pending" => "Ausstehend", "1 file uploading" => "1 Datei wird hochgeladen", "{count} files uploading" => "{count} Dateien wurden hochgeladen", "Upload cancelled." => "Upload abgebrochen.", @@ -57,10 +60,10 @@ "Text file" => "Textdatei", "Folder" => "Ordner", "From link" => "Von einem Link", -"Trash" => "Abfall", "Cancel upload" => "Upload abbrechen", "Nothing in here. Upload something!" => "Alles leer. Bitte laden Sie etwas hoch!", "Download" => "Herunterladen", +"Unshare" => "Nicht mehr freigeben", "Upload too large" => "Der Upload ist zu groß", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server.", "Files are being scanned, please wait." => "Dateien werden gescannt, bitte warten.", diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php index 7b458bf35d..2a110afa96 100644 --- a/apps/files/l10n/el.php +++ b/apps/files/l10n/el.php @@ -1,4 +1,7 @@ "Αδυναμία μετακίνησης του %s - υπάρχει ήδη αρχείο με αυτό το όνομα", +"Could not move %s" => "Αδυναμία μετακίνησης του %s", +"Unable to rename file" => "Αδυναμία μετονομασίας αρχείου", "No file was uploaded. Unknown error" => "Δεν ανέβηκε κάποιο αρχείο. Άγνωστο σφάλμα", "There is no error, the file uploaded with success" => "Δεν υπάρχει σφάλμα, το αρχείο εστάλει επιτυχώς", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Το απεσταλμένο αρχείο ξεπερνά την οδηγία upload_max_filesize στο php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Κανένα αρχείο δεν στάλθηκε", "Missing a temporary folder" => "Λείπει ο προσωρινός φάκελος", "Failed to write to disk" => "Αποτυχία εγγραφής στο δίσκο", -"Not enough space available" => "Δεν υπάρχει αρκετός διαθέσιμος χώρος", +"Not enough storage available" => "Μη επαρκής διαθέσιμος αποθηκευτικός χώρος", "Invalid directory." => "Μη έγκυρος φάκελος.", "Files" => "Αρχεία", -"Unshare" => "Διακοπή κοινής χρήσης", +"Delete permanently" => "Μόνιμη διαγραφή", "Delete" => "Διαγραφή", "Rename" => "Μετονομασία", +"Pending" => "Εκκρεμεί", "{new_name} already exists" => "{new_name} υπάρχει ήδη", "replace" => "αντικατέστησε", "suggest name" => "συνιστώμενο όνομα", @@ -20,6 +24,7 @@ "replaced {new_name}" => "{new_name} αντικαταστάθηκε", "undo" => "αναίρεση", "replaced {new_name} with {old_name}" => "αντικαταστάθηκε το {new_name} με {old_name}", +"perform delete operation" => "εκτέλεση διαδικασία διαγραφής", "'.' is an invalid file name." => "'.' είναι μη έγκυρο όνομα αρχείου.", "File name cannot be empty." => "Το όνομα αρχείου δεν πρέπει να είναι κενό.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Μη έγκυρο όνομα, '\\', '/', '<', '>', ':', '\"', '|', '?' και '*' δεν επιτρέπονται.", @@ -29,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Αδυναμία στην αποστολή του αρχείου σας αφού είναι φάκελος ή έχει 0 bytes", "Upload Error" => "Σφάλμα Αποστολής", "Close" => "Κλείσιμο", -"Pending" => "Εκκρεμεί", "1 file uploading" => "1 αρχείο ανεβαίνει", "{count} files uploading" => "{count} αρχεία ανεβαίνουν", "Upload cancelled." => "Η αποστολή ακυρώθηκε.", @@ -59,8 +63,10 @@ "Cancel upload" => "Ακύρωση αποστολής", "Nothing in here. Upload something!" => "Δεν υπάρχει τίποτα εδώ. Ανέβασε κάτι!", "Download" => "Λήψη", +"Unshare" => "Διακοπή κοινής χρήσης", "Upload too large" => "Πολύ μεγάλο αρχείο προς αποστολή", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Τα αρχεία που προσπαθείτε να ανεβάσετε υπερβαίνουν το μέγιστο μέγεθος αποστολής αρχείων σε αυτόν τον διακομιστή.", "Files are being scanned, please wait." => "Τα αρχεία σαρώνονται, παρακαλώ περιμένετε", -"Current scanning" => "Τρέχουσα αναζήτηση " +"Current scanning" => "Τρέχουσα αναζήτηση ", +"Upgrading filesystem cache..." => "Αναβάθμιση μνήμης cache του συστήματος αρχείων..." ); diff --git a/apps/files/l10n/eo.php b/apps/files/l10n/eo.php index a510d47ad6..b943244f1a 100644 --- a/apps/files/l10n/eo.php +++ b/apps/files/l10n/eo.php @@ -1,4 +1,7 @@ "Ne eblis movi %s: dosiero kun ĉi tiu nomo jam ekzistas", +"Could not move %s" => "Ne eblis movi %s", +"Unable to rename file" => "Ne eblis alinomigi dosieron", "No file was uploaded. Unknown error" => "Neniu dosiero alŝutiĝis. Nekonata eraro.", "There is no error, the file uploaded with success" => "Ne estas eraro, la dosiero alŝutiĝis sukcese", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "La dosiero alŝutita superas la regulon upload_max_filesize el php.ini: ", @@ -7,12 +10,11 @@ "No file was uploaded" => "Neniu dosiero estas alŝutita", "Missing a temporary folder" => "Mankas tempa dosierujo", "Failed to write to disk" => "Malsukcesis skribo al disko", -"Not enough space available" => "Ne haveblas sufiĉa spaco", "Invalid directory." => "Nevalida dosierujo.", "Files" => "Dosieroj", -"Unshare" => "Malkunhavigi", "Delete" => "Forigi", "Rename" => "Alinomigi", +"Pending" => "Traktotaj", "{new_name} already exists" => "{new_name} jam ekzistas", "replace" => "anstataŭigi", "suggest name" => "sugesti nomon", @@ -27,7 +29,6 @@ "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", "Upload Error" => "Alŝuta eraro", "Close" => "Fermi", -"Pending" => "Traktotaj", "1 file uploading" => "1 dosiero estas alŝutata", "{count} files uploading" => "{count} dosieroj alŝutatas", "Upload cancelled." => "La alŝuto nuliĝis.", @@ -57,6 +58,7 @@ "Cancel upload" => "Nuligi alŝuton", "Nothing in here. Upload something!" => "Nenio estas ĉi tie. Alŝutu ion!", "Download" => "Elŝuti", +"Unshare" => "Malkunhavigi", "Upload too large" => "Elŝ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.", diff --git a/apps/files/l10n/es.php b/apps/files/l10n/es.php index 201e731179..4ebbdb21e3 100644 --- a/apps/files/l10n/es.php +++ b/apps/files/l10n/es.php @@ -1,4 +1,7 @@ "No se puede mover %s - Ya existe un archivo con ese nombre", +"Could not move %s" => "No se puede mover %s", +"Unable to rename file" => "No se puede renombrar el archivo", "No file was uploaded. Unknown error" => "Fallo no se subió el fichero", "There is no error, the file uploaded with success" => "No se ha producido ningún error, el archivo se ha subido con éxito", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini", @@ -7,12 +10,13 @@ "No file was uploaded" => "No se ha subido ningún archivo", "Missing a temporary folder" => "Falta un directorio temporal", "Failed to write to disk" => "La escritura en disco ha fallado", -"Not enough space available" => "No hay suficiente espacio disponible", +"Not enough storage available" => "No hay suficiente espacio disponible", "Invalid directory." => "Directorio invalido.", "Files" => "Archivos", -"Unshare" => "Dejar de compartir", +"Delete permanently" => "Eliminar permanentemente", "Delete" => "Eliminar", "Rename" => "Renombrar", +"Pending" => "Pendiente", "{new_name} already exists" => "{new_name} ya existe", "replace" => "reemplazar", "suggest name" => "sugerir nombre", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "No ha sido posible subir tu archivo porque es un directorio o tiene 0 bytes", "Upload Error" => "Error al subir el archivo", "Close" => "cerrrar", -"Pending" => "Pendiente", "1 file uploading" => "subiendo 1 archivo", "{count} files uploading" => "Subiendo {count} archivos", "Upload cancelled." => "Subida cancelada.", @@ -57,10 +60,11 @@ "Text file" => "Archivo de texto", "Folder" => "Carpeta", "From link" => "Desde el enlace", -"Trash" => "Basura", +"Trash bin" => "Papelera de reciclaje", "Cancel upload" => "Cancelar subida", "Nothing in here. Upload something!" => "Aquí no hay nada. ¡Sube algo!", "Download" => "Descargar", +"Unshare" => "Dejar de compartir", "Upload too large" => "El archivo es demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido por este servidor.", "Files are being scanned, please wait." => "Se están escaneando los archivos, por favor espere.", diff --git a/apps/files/l10n/es_AR.php b/apps/files/l10n/es_AR.php index 7c4e8220c7..e7c9dfe9d5 100644 --- a/apps/files/l10n/es_AR.php +++ b/apps/files/l10n/es_AR.php @@ -1,4 +1,7 @@ "No se pudo mover %s - Un archivo con este nombre ya existe", +"Could not move %s" => "No se pudo mover %s ", +"Unable to rename file" => "No fue posible cambiar el nombre al archivo", "No file was uploaded. Unknown error" => "El archivo no fue subido. Error desconocido", "There is no error, the file uploaded with success" => "No se han producido errores, el archivo se ha subido con éxito", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentás subir excede el tamaño definido por upload_max_filesize en el php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "El archivo no fue subido", "Missing a temporary folder" => "Falta un directorio temporal", "Failed to write to disk" => "Error al escribir en el disco", -"Not enough space available" => "No hay suficiente espacio disponible", +"Not enough storage available" => "No hay suficiente capacidad de almacenamiento", "Invalid directory." => "Directorio invalido.", "Files" => "Archivos", -"Unshare" => "Dejar de compartir", +"Delete permanently" => "Borrar de manera permanente", "Delete" => "Borrar", "Rename" => "Cambiar nombre", +"Pending" => "Pendiente", "{new_name} already exists" => "{new_name} ya existe", "replace" => "reemplazar", "suggest name" => "sugerir nombre", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "No fue posible subir el archivo porque es un directorio o porque su tamaño es 0 bytes", "Upload Error" => "Error al subir el archivo", "Close" => "Cerrar", -"Pending" => "Pendiente", "1 file uploading" => "Subiendo 1 archivo", "{count} files uploading" => "Subiendo {count} archivos", "Upload cancelled." => "La subida fue cancelada", @@ -57,10 +60,11 @@ "Text file" => "Archivo de texto", "Folder" => "Carpeta", "From link" => "Desde enlace", -"Trash" => "Papelera", +"Trash bin" => "Papelera", "Cancel upload" => "Cancelar subida", "Nothing in here. Upload something!" => "No hay nada. ¡Subí contenido!", "Download" => "Descargar", +"Unshare" => "Dejar de compartir", "Upload too large" => "El archivo es demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los archivos que intentás subir sobrepasan el tamaño máximo ", "Files are being scanned, please wait." => "Se están escaneando los archivos, por favor esperá.", diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php index 54dd7cfdc5..98af371e07 100644 --- a/apps/files/l10n/et_EE.php +++ b/apps/files/l10n/et_EE.php @@ -7,9 +7,9 @@ "Missing a temporary folder" => "Ajutiste failide kaust puudub", "Failed to write to disk" => "Kettale kirjutamine ebaõnnestus", "Files" => "Failid", -"Unshare" => "Lõpeta jagamine", "Delete" => "Kustuta", "Rename" => "ümber", +"Pending" => "Ootel", "{new_name} already exists" => "{new_name} on juba olemas", "replace" => "asenda", "suggest name" => "soovita nime", @@ -21,7 +21,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Sinu faili üleslaadimine ebaõnnestus, kuna see on kaust või selle suurus on 0 baiti", "Upload Error" => "Üleslaadimise viga", "Close" => "Sulge", -"Pending" => "Ootel", "1 file uploading" => "1 faili üleslaadimisel", "{count} files uploading" => "{count} faili üleslaadimist", "Upload cancelled." => "Üleslaadimine tühistati.", @@ -50,6 +49,7 @@ "Cancel upload" => "Tühista üleslaadimine", "Nothing in here. Upload something!" => "Siin pole midagi. Lae midagi üles!", "Download" => "Lae alla", +"Unshare" => "Lõpeta jagamine", "Upload too large" => "Üleslaadimine on liiga suur", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Failid, mida sa proovid üles laadida, ületab serveri poolt üleslaetavatele failidele määratud maksimaalse suuruse.", "Files are being scanned, please wait." => "Faile skannitakse, palun oota", diff --git a/apps/files/l10n/eu.php b/apps/files/l10n/eu.php index 6f4c55f484..b62b1c7bf7 100644 --- a/apps/files/l10n/eu.php +++ b/apps/files/l10n/eu.php @@ -1,4 +1,7 @@ "Ezin da %s mugitu - Izen hau duen fitxategia dagoeneko existitzen da", +"Could not move %s" => "Ezin dira fitxategiak mugitu %s", +"Unable to rename file" => "Ezin izan da fitxategia berrizendatu", "No file was uploaded. Unknown error" => "Ez da fitxategirik igo. Errore ezezaguna", "There is no error, the file uploaded with success" => "Ez da arazorik izan, fitxategia ongi igo da", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Igotako fitxategiak php.ini fitxategian ezarritako upload_max_filesize muga gainditu du:", @@ -7,12 +10,12 @@ "No file was uploaded" => "Ez da fitxategirik igo", "Missing a temporary folder" => "Aldi baterako karpeta falta da", "Failed to write to disk" => "Errore bat izan da diskoan idazterakoan", -"Not enough space available" => "Ez dago leku nahikorik.", +"Not enough storage available" => "Ez dago behar aina leku erabilgarri,", "Invalid directory." => "Baliogabeko karpeta.", "Files" => "Fitxategiak", -"Unshare" => "Ez elkarbanatu", "Delete" => "Ezabatu", "Rename" => "Berrizendatu", +"Pending" => "Zain", "{new_name} already exists" => "{new_name} dagoeneko existitzen da", "replace" => "ordeztu", "suggest name" => "aholkatu izena", @@ -29,7 +32,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Ezin da zure fitxategia igo, karpeta bat da edo 0 byt ditu", "Upload Error" => "Igotzean errore bat suertatu da", "Close" => "Itxi", -"Pending" => "Zain", "1 file uploading" => "fitxategi 1 igotzen", "{count} files uploading" => "{count} fitxategi igotzen", "Upload cancelled." => "Igoera ezeztatuta", @@ -59,6 +61,7 @@ "Cancel upload" => "Ezeztatu igoera", "Nothing in here. Upload something!" => "Ez dago ezer. Igo zerbait!", "Download" => "Deskargatu", +"Unshare" => "Ez elkarbanatu", "Upload too large" => "Igotakoa handiegia da", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Igotzen saiatzen ari zaren fitxategiak zerbitzari honek igotzeko onartzen duena baino handiagoak dira.", "Files are being scanned, please wait." => "Fitxategiak eskaneatzen ari da, itxoin mezedez.", diff --git a/apps/files/l10n/fa.php b/apps/files/l10n/fa.php index a4181c6ff5..d4cbb99e10 100644 --- a/apps/files/l10n/fa.php +++ b/apps/files/l10n/fa.php @@ -1,4 +1,7 @@ "%s نمی تواند حرکت کند - در حال حاضر پرونده با این نام وجود دارد. ", +"Could not move %s" => "%s نمی تواند حرکت کند ", +"Unable to rename file" => "قادر به تغییر نام پرونده نیست.", "No file was uploaded. Unknown error" => "هیچ فایلی آپلود نشد.خطای ناشناس", "There is no error, the file uploaded with success" => "هیچ خطایی وجود ندارد فایل با موفقیت بار گذاری شد", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "پرونده آپلود شده بیش ازدستور ماکزیمم_حجم فایل_برای آپلود در php.ini استفاده کرده است.", @@ -7,12 +10,11 @@ "No file was uploaded" => "هیچ فایلی بارگذاری نشده", "Missing a temporary folder" => "یک پوشه موقت گم شده است", "Failed to write to disk" => "نوشتن بر روی دیسک سخت ناموفق بود", -"Not enough space available" => "فضای کافی در دسترس نیست", "Invalid directory." => "فهرست راهنما نامعتبر می باشد.", "Files" => "فایل ها", -"Unshare" => "لغو اشتراک", "Delete" => "پاک کردن", "Rename" => "تغییرنام", +"Pending" => "در انتظار", "{new_name} already exists" => "{نام _جدید} در حال حاضر وجود دارد.", "replace" => "جایگزین", "suggest name" => "پیشنهاد نام", @@ -27,7 +29,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "ناتوان در بارگذاری یا فایل یک پوشه است یا 0بایت دارد", "Upload Error" => "خطا در بار گذاری", "Close" => "بستن", -"Pending" => "در انتظار", "1 file uploading" => "1 پرونده آپلود شد.", "{count} files uploading" => "{ شمار } فایل های در حال آپلود", "Upload cancelled." => "بار گذاری لغو شد", @@ -57,6 +58,7 @@ "Cancel upload" => "متوقف کردن بار گذاری", "Nothing in here. Upload something!" => "اینجا هیچ چیز نیست.", "Download" => "بارگیری", +"Unshare" => "لغو اشتراک", "Upload too large" => "حجم بارگذاری بسیار زیاد است", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "فایلها بیش از حد تعیین شده در این سرور هستند\nمترجم:با تغییر فایل php,ini میتوان این محدودیت را برطرف کرد", "Files are being scanned, please wait." => "پرونده ها در حال بازرسی هستند لطفا صبر کنید", diff --git a/apps/files/l10n/fi_FI.php b/apps/files/l10n/fi_FI.php index 809a5e5c55..cd7ce66dc4 100644 --- a/apps/files/l10n/fi_FI.php +++ b/apps/files/l10n/fi_FI.php @@ -1,4 +1,7 @@ "Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa", +"Could not move %s" => "Kohteen %s siirto ei onnistunut", +"Unable to rename file" => "Tiedoston nimeäminen uudelleen ei onnistunut", "No file was uploaded. Unknown error" => "Tiedostoa ei lähetetty. Tuntematon virhe", "There is no error, the file uploaded with success" => "Ei virheitä, tiedosto lähetettiin onnistuneesti", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Lähetetty tiedosto ylittää HTML-lomakkeessa määritetyn MAX_FILE_SIZE-arvon ylärajan", @@ -6,12 +9,13 @@ "No file was uploaded" => "Yhtäkään tiedostoa ei lähetetty", "Missing a temporary folder" => "Väliaikaiskansiota ei ole olemassa", "Failed to write to disk" => "Levylle kirjoitus epäonnistui", -"Not enough space available" => "Tilaa ei ole riittävästi", +"Not enough storage available" => "Tallennustilaa ei ole riittävästi käytettävissä", "Invalid directory." => "Virheellinen kansio.", "Files" => "Tiedostot", -"Unshare" => "Peru jakaminen", +"Delete permanently" => "Poista pysyvästi", "Delete" => "Poista", "Rename" => "Nimeä uudelleen", +"Pending" => "Odottaa", "{new_name} already exists" => "{new_name} on jo olemassa", "replace" => "korvaa", "suggest name" => "ehdota nimeä", @@ -27,7 +31,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Tiedoston lähetys epäonnistui, koska sen koko on 0 tavua tai kyseessä on kansio", "Upload Error" => "Lähetysvirhe.", "Close" => "Sulje", -"Pending" => "Odottaa", "Upload cancelled." => "Lähetys peruttu.", "File upload is in progress. Leaving the page now will cancel the upload." => "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.", "URL cannot be empty." => "Verkko-osoite ei voi olla tyhjä", @@ -51,10 +54,11 @@ "Text file" => "Tekstitiedosto", "Folder" => "Kansio", "From link" => "Linkistä", -"Trash" => "Roskakori", +"Trash bin" => "Roskakori", "Cancel upload" => "Peru lähetys", "Nothing in here. Upload something!" => "Täällä ei ole mitään. Lähetä tänne jotakin!", "Download" => "Lataa", +"Unshare" => "Peru jakaminen", "Upload too large" => "Lähetettävä tiedosto on liian suuri", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Lähetettäväksi valitsemasi tiedostot ylittävät palvelimen salliman tiedostokoon rajan.", "Files are being scanned, please wait." => "Tiedostoja tarkistetaan, odota hetki.", diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php index 4be699c001..3e8945f345 100644 --- a/apps/files/l10n/fr.php +++ b/apps/files/l10n/fr.php @@ -1,4 +1,7 @@ "Impossible de déplacer %s - Un fichier possédant ce nom existe déjà", +"Could not move %s" => "Impossible de déplacer %s", +"Unable to rename file" => "Impossible de renommer le fichier", "No file was uploaded. Unknown error" => "Aucun fichier n'a été chargé. Erreur inconnue", "There is no error, the file uploaded with success" => "Aucune erreur, le fichier a été téléversé avec succès", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Le fichier envoyé dépasse la valeur upload_max_filesize située dans le fichier php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Aucun fichier n'a été téléversé", "Missing a temporary folder" => "Il manque un répertoire temporaire", "Failed to write to disk" => "Erreur d'écriture sur le disque", -"Not enough space available" => "Espace disponible insuffisant", +"Not enough storage available" => "Plus assez d'espace de stockage disponible", "Invalid directory." => "Dossier invalide.", "Files" => "Fichiers", -"Unshare" => "Ne plus partager", +"Delete permanently" => "Supprimer de façon définitive", "Delete" => "Supprimer", "Rename" => "Renommer", +"Pending" => "En cours", "{new_name} already exists" => "{new_name} existe déjà", "replace" => "remplacer", "suggest name" => "Suggérer un nom", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Impossible de charger vos fichiers car il s'agit d'un dossier ou le fichier fait 0 octet.", "Upload Error" => "Erreur de chargement", "Close" => "Fermer", -"Pending" => "En cours", "1 file uploading" => "1 fichier en cours de téléchargement", "{count} files uploading" => "{count} fichiers téléversés", "Upload cancelled." => "Chargement annulé.", @@ -57,10 +60,11 @@ "Text file" => "Fichier texte", "Folder" => "Dossier", "From link" => "Depuis le lien", -"Trash" => "Corbeille", +"Trash bin" => "Corbeille", "Cancel upload" => "Annuler l'envoi", "Nothing in here. Upload something!" => "Il n'y a rien ici ! Envoyez donc quelque chose :)", "Download" => "Télécharger", +"Unshare" => "Ne plus partager", "Upload too large" => "Fichier trop volumineux", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Les fichiers que vous essayez d'envoyer dépassent la taille maximale permise par ce serveur.", "Files are being scanned, please wait." => "Les fichiers sont en cours d'analyse, veuillez patienter.", diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php index a1c0f0a5dd..e2a4c2f592 100644 --- a/apps/files/l10n/gl.php +++ b/apps/files/l10n/gl.php @@ -1,38 +1,45 @@ "Non se subiu ningún ficheiro. Erro descoñecido.", -"There is no error, the file uploaded with success" => "Non hai erros. O ficheiro enviouse correctamente", -"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro subido excede a directiva indicada polo tamaño_máximo_de_subida de php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro enviado supera a directiva MAX_FILE_SIZE que foi indicada no formulario HTML", +"Could not move %s - File with this name already exists" => "Non se moveu %s - Xa existe un ficheiro con ese nome.", +"Could not move %s" => "Non foi posíbel mover %s", +"Unable to rename file" => "Non é posíbel renomear o ficheiro", +"No file was uploaded. Unknown error" => "Non foi enviado ningún ficheiro. Produciuse un erro descoñecido.", +"There is no error, the file uploaded with success" => "Non se produciu ningún erro. O ficheiro enviouse correctamente", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro enviado excede a directiva indicada por upload_max_filesize de php.ini:", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro enviado excede a directiva MAX_FILE_SIZE que foi indicada no formulario HTML", "The uploaded file was only partially uploaded" => "O ficheiro enviado foi só parcialmente enviado", "No file was uploaded" => "Non se enviou ningún ficheiro", "Missing a temporary folder" => "Falta un cartafol temporal", -"Failed to write to disk" => "Erro ao escribir no disco", -"Not enough space available" => "O espazo dispoñíbel é insuficiente", +"Failed to write to disk" => "Produciuse un erro ao escribir no disco", +"Not enough storage available" => "Non hai espazo de almacenamento abondo", "Invalid directory." => "O directorio é incorrecto.", "Files" => "Ficheiros", -"Unshare" => "Deixar de compartir", +"Delete permanently" => "Eliminar permanentemente", "Delete" => "Eliminar", -"Rename" => "Mudar o nome", +"Rename" => "Renomear", +"Pending" => "Pendentes", "{new_name} already exists" => "xa existe un {new_name}", "replace" => "substituír", "suggest name" => "suxerir nome", "cancel" => "cancelar", "replaced {new_name}" => "substituír {new_name}", "undo" => "desfacer", -"replaced {new_name} with {old_name}" => "substituír {new_name} polo {old_name}", -"'.' is an invalid file name." => "'.' é un nonme de ficheiro non válido", -"File name cannot be empty." => "O nome de ficheiro non pode estar baldeiro", -"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non válido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Non se puido subir o ficheiro pois ou é un directorio ou ten 0 bytes", -"Upload Error" => "Erro na subida", +"replaced {new_name} with {old_name}" => "substituír {new_name} por {old_name}", +"perform delete operation" => "realizar a operación de eliminación", +"'.' is an invalid file name." => "«.» é un nome de ficheiro incorrecto", +"File name cannot be empty." => "O nome de ficheiro non pode estar baleiro", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome incorrecto, non se permite «\\», «/», «<», «>», «:», «\"», «|», «?» e «*».", +"Your storage is full, files can not be updated or synced anymore!" => "O seu espazo de almacenamento está cheo, non é posíbel actualizar ou sincronizar máis os ficheiros!", +"Your storage is almost full ({usedSpacePercent}%)" => "O seu espazo de almacenamento está case cheo ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "Está a prepararse a súa descarga. Isto pode levar bastante tempo se os ficheiros son grandes.", +"Unable to upload your file as it is a directory or has 0 bytes" => "Non foi posíbel enviar o ficheiro pois ou é un directorio ou ten 0 bytes", +"Upload Error" => "Produciuse un erro no envío", "Close" => "Pechar", -"Pending" => "Pendentes", -"1 file uploading" => "1 ficheiro subíndose", -"{count} files uploading" => "{count} ficheiros subíndose", -"Upload cancelled." => "Subida cancelada.", -"File upload is in progress. Leaving the page now will cancel the upload." => "A subida do ficheiro está en curso. Saír agora da páxina cancelará a subida.", -"URL cannot be empty." => "URL non pode quedar baleiro.", -"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de cartafol non válido. O uso de 'Shared' está reservado por Owncloud", +"1 file uploading" => "Enviándose 1 ficheiro", +"{count} files uploading" => "Enviandose {count} ficheiros", +"Upload cancelled." => "Envío cancelado.", +"File upload is in progress. Leaving the page now will cancel the upload." => "O envío do ficheiro está en proceso. Saír agora da páxina cancelará o envío.", +"URL cannot be empty." => "O URL non pode quedar baleiro.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de cartafol incorrecto. O uso de «Shared» está reservado por Owncloud", "Name" => "Nome", "Size" => "Tamaño", "Modified" => "Modificado", @@ -42,22 +49,25 @@ "{count} files" => "{count} ficheiros", "Upload" => "Enviar", "File handling" => "Manexo de ficheiro", -"Maximum upload size" => "Tamaño máximo de envío", -"max. possible: " => "máx. posible: ", +"Maximum upload size" => "Tamaño máximo do envío", +"max. possible: " => "máx. posíbel: ", "Needed for multi-file and folder downloads." => "Precísase para a descarga de varios ficheiros e cartafoles.", "Enable ZIP-download" => "Habilitar a descarga-ZIP", "0 is unlimited" => "0 significa ilimitado", -"Maximum input size for ZIP files" => "Tamaño máximo de descarga para os ZIP", +"Maximum input size for ZIP files" => "Tamaño máximo de descarga para os ficheiros ZIP", "Save" => "Gardar", "New" => "Novo", "Text file" => "Ficheiro de texto", "Folder" => "Cartafol", -"From link" => "Dende a ligazón", -"Cancel upload" => "Cancelar a subida", -"Nothing in here. Upload something!" => "Nada por aquí. Envía algo.", +"From link" => "Desde a ligazón", +"Trash bin" => "Cesto do lixo", +"Cancel upload" => "Cancelar o envío", +"Nothing in here. Upload something!" => "Aquí non hai nada por aquí. Envíe algo.", "Download" => "Descargar", +"Unshare" => "Deixar de compartir", "Upload too large" => "Envío demasiado grande", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiros que trata de subir superan o tamaño máximo permitido neste servidor", -"Files are being scanned, please wait." => "Estanse analizando os ficheiros. Agarda.", -"Current scanning" => "Análise actual" +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiros que tenta enviar exceden do tamaño máximo permitido neste servidor", +"Files are being scanned, please wait." => "Estanse analizando os ficheiros. Agarde.", +"Current scanning" => "Análise actual", +"Upgrading filesystem cache..." => "Anovando a caché do sistema de ficheiros..." ); diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php index 94cddca000..442eafe1c0 100644 --- a/apps/files/l10n/he.php +++ b/apps/files/l10n/he.php @@ -8,9 +8,9 @@ "Missing a temporary folder" => "תיקייה זמנית חסרה", "Failed to write to disk" => "הכתיבה לכונן נכשלה", "Files" => "קבצים", -"Unshare" => "הסר שיתוף", "Delete" => "מחיקה", "Rename" => "שינוי שם", +"Pending" => "ממתין", "{new_name} already exists" => "{new_name} כבר קיים", "replace" => "החלפה", "suggest name" => "הצעת שם", @@ -22,7 +22,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "לא יכול להעלות את הקובץ מכיוון שזו תקיה או שמשקל הקובץ 0 בתים", "Upload Error" => "שגיאת העלאה", "Close" => "סגירה", -"Pending" => "ממתין", "1 file uploading" => "קובץ אחד נשלח", "{count} files uploading" => "{count} קבצים נשלחים", "Upload cancelled." => "ההעלאה בוטלה.", @@ -51,6 +50,7 @@ "Cancel upload" => "ביטול ההעלאה", "Nothing in here. Upload something!" => "אין כאן שום דבר. אולי ברצונך להעלות משהו?", "Download" => "הורדה", +"Unshare" => "הסר שיתוף", "Upload too large" => "העלאה גדולה מידי", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "הקבצים שניסית להעלות חרגו מהגודל המקסימלי להעלאת קבצים על שרת זה.", "Files are being scanned, please wait." => "הקבצים נסרקים, נא להמתין.", diff --git a/apps/files/l10n/hr.php b/apps/files/l10n/hr.php index 4f4546aaf0..3516ab8c1e 100644 --- a/apps/files/l10n/hr.php +++ b/apps/files/l10n/hr.php @@ -6,9 +6,9 @@ "Missing a temporary folder" => "Nedostaje privremena mapa", "Failed to write to disk" => "Neuspjelo pisanje na disk", "Files" => "Datoteke", -"Unshare" => "Prekini djeljenje", "Delete" => "Briši", "Rename" => "Promjeni ime", +"Pending" => "U tijeku", "replace" => "zamjeni", "suggest name" => "predloži ime", "cancel" => "odustani", @@ -16,7 +16,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Nemoguće poslati datoteku jer je prazna ili je direktorij", "Upload Error" => "Pogreška pri slanju", "Close" => "Zatvori", -"Pending" => "U tijeku", "1 file uploading" => "1 datoteka se učitava", "Upload cancelled." => "Slanje poništeno.", "File upload is in progress. Leaving the page now will cancel the upload." => "Učitavanje datoteke. Napuštanjem stranice će prekinuti učitavanje.", @@ -38,6 +37,7 @@ "Cancel upload" => "Prekini upload", "Nothing in here. Upload something!" => "Nema ničega u ovoj mapi. Pošalji nešto!", "Download" => "Preuzmi", +"Unshare" => "Prekini djeljenje", "Upload too large" => "Prijenos je preobiman", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteke koje pokušavate prenijeti prelaze maksimalnu veličinu za prijenos datoteka na ovom poslužitelju.", "Files are being scanned, please wait." => "Datoteke se skeniraju, molimo pričekajte.", diff --git a/apps/files/l10n/hu_HU.php b/apps/files/l10n/hu_HU.php index 86fc0f223f..eaec8d24b7 100644 --- a/apps/files/l10n/hu_HU.php +++ b/apps/files/l10n/hu_HU.php @@ -1,4 +1,7 @@ "%s áthelyezése nem sikerült - már létezik másik fájl ezzel a névvel", +"Could not move %s" => "Nem sikerült %s áthelyezése", +"Unable to rename file" => "Nem lehet átnevezni a fájlt", "No file was uploaded. Unknown error" => "Nem történt feltöltés. Ismeretlen hiba", "There is no error, the file uploaded with success" => "A fájlt sikerült feltölteni", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "A feltöltött fájl mérete meghaladja a php.ini állományban megadott upload_max_filesize paraméter értékét.", @@ -7,12 +10,12 @@ "No file was uploaded" => "Nem töltődött fel semmi", "Missing a temporary folder" => "Hiányzik egy ideiglenes mappa", "Failed to write to disk" => "Nem sikerült a lemezre történő írás", -"Not enough space available" => "Nincs elég szabad hely", +"Not enough storage available" => "Nincs elég szabad hely.", "Invalid directory." => "Érvénytelen mappa.", "Files" => "Fájlok", -"Unshare" => "Megosztás visszavonása", "Delete" => "Törlés", "Rename" => "Átnevezés", +"Pending" => "Folyamatban", "{new_name} already exists" => "{new_name} már létezik", "replace" => "írjuk fölül", "suggest name" => "legyen más neve", @@ -29,7 +32,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Nem tölthető fel, mert mappa volt, vagy 0 byte méretű", "Upload Error" => "Feltöltési hiba", "Close" => "Bezárás", -"Pending" => "Folyamatban", "1 file uploading" => "1 fájl töltődik föl", "{count} files uploading" => "{count} fájl töltődik föl", "Upload cancelled." => "A feltöltést megszakítottuk.", @@ -59,6 +61,7 @@ "Cancel upload" => "A feltöltés megszakítása", "Nothing in here. Upload something!" => "Itt nincs semmi. Töltsön fel valamit!", "Download" => "Letöltés", +"Unshare" => "Megosztás visszavonása", "Upload too large" => "A feltöltés túl nagy", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "A feltöltendő állományok mérete meghaladja a kiszolgálón megengedett maximális méretet.", "Files are being scanned, please wait." => "A fájllista ellenőrzése zajlik, kis türelmet!", diff --git a/apps/files/l10n/id.php b/apps/files/l10n/id.php index 3ebb998329..4c4e2e0f71 100644 --- a/apps/files/l10n/id.php +++ b/apps/files/l10n/id.php @@ -6,15 +6,14 @@ "Missing a temporary folder" => "Kehilangan folder temporer", "Failed to write to disk" => "Gagal menulis ke disk", "Files" => "Berkas", -"Unshare" => "batalkan berbagi", "Delete" => "Hapus", +"Pending" => "Menunggu", "replace" => "mengganti", "cancel" => "batalkan", "undo" => "batal dikerjakan", "Unable to upload your file as it is a directory or has 0 bytes" => "Gagal mengunggah berkas anda karena berupa direktori atau mempunyai ukuran 0 byte", "Upload Error" => "Terjadi Galat Pengunggahan", "Close" => "tutup", -"Pending" => "Menunggu", "Upload cancelled." => "Pengunggahan dibatalkan.", "URL cannot be empty." => "tautan tidak boleh kosong", "Name" => "Nama", @@ -35,6 +34,7 @@ "Cancel upload" => "Batal mengunggah", "Nothing in here. Upload something!" => "Tidak ada apa-apa di sini. Unggah sesuatu!", "Download" => "Unduh", +"Unshare" => "batalkan berbagi", "Upload too large" => "Unggahan terlalu besar", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Berkas yang anda coba unggah melebihi ukuran maksimum untuk pengunggahan berkas di server ini.", "Files are being scanned, please wait." => "Berkas sedang dipindai, silahkan tunggu.", diff --git a/apps/files/l10n/is.php b/apps/files/l10n/is.php index 43c10ef236..c0898c555b 100644 --- a/apps/files/l10n/is.php +++ b/apps/files/l10n/is.php @@ -1,4 +1,7 @@ "Gat ekki fært %s - Skrá með þessu nafni er þegar til", +"Could not move %s" => "Gat ekki fært %s", +"Unable to rename file" => "Gat ekki endurskýrt skrá", "No file was uploaded. Unknown error" => "Engin skrá var send inn. Óþekkt villa.", "There is no error, the file uploaded with success" => "Engin villa, innsending heppnaðist", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Innsend skrá er stærri en upload_max stillingin í php.ini:", @@ -7,12 +10,11 @@ "No file was uploaded" => "Engin skrá skilaði sér", "Missing a temporary folder" => "Vantar bráðabirgðamöppu", "Failed to write to disk" => "Tókst ekki að skrifa á disk", -"Not enough space available" => "Ekki nægt pláss tiltækt", "Invalid directory." => "Ógild mappa.", "Files" => "Skrár", -"Unshare" => "Hætta deilingu", "Delete" => "Eyða", "Rename" => "Endurskýra", +"Pending" => "Bíður", "{new_name} already exists" => "{new_name} er þegar til", "replace" => "yfirskrifa", "suggest name" => "stinga upp á nafni", @@ -26,7 +28,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Innsending á skrá mistókst, hugsanlega sendir þú möppu eða skráin er 0 bæti.", "Upload Error" => "Villa við innsendingu", "Close" => "Loka", -"Pending" => "Bíður", "1 file uploading" => "1 skrá innsend", "{count} files uploading" => "{count} skrár innsendar", "Upload cancelled." => "Hætt við innsendingu.", @@ -56,6 +57,7 @@ "Cancel upload" => "Hætta við innsendingu", "Nothing in here. Upload something!" => "Ekkert hér. Settu eitthvað inn!", "Download" => "Niðurhal", +"Unshare" => "Hætta deilingu", "Upload too large" => "Innsend skrá er of stór", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.", "Files are being scanned, please wait." => "Verið er að skima skrár, vinsamlegast hinkraðu.", diff --git a/apps/files/l10n/it.php b/apps/files/l10n/it.php index bb3a5bdf05..23372439a2 100644 --- a/apps/files/l10n/it.php +++ b/apps/files/l10n/it.php @@ -1,4 +1,7 @@ "Impossibile spostare %s - un file con questo nome esiste già", +"Could not move %s" => "Impossibile spostare %s", +"Unable to rename file" => "Impossibile rinominare il file", "No file was uploaded. Unknown error" => "Nessun file è stato inviato. Errore sconosciuto", "There is no error, the file uploaded with success" => "Non ci sono errori, file caricato con successo", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Il file caricato supera la direttiva upload_max_filesize in php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Nessun file è stato caricato", "Missing a temporary folder" => "Cartella temporanea mancante", "Failed to write to disk" => "Scrittura su disco non riuscita", -"Not enough space available" => "Spazio disponibile insufficiente", +"Not enough storage available" => "Spazio di archiviazione insufficiente", "Invalid directory." => "Cartella non valida.", "Files" => "File", -"Unshare" => "Rimuovi condivisione", +"Delete permanently" => "Elimina definitivamente", "Delete" => "Elimina", "Rename" => "Rinomina", +"Pending" => "In corso", "{new_name} already exists" => "{new_name} esiste già", "replace" => "sostituisci", "suggest name" => "suggerisci nome", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Impossibile inviare il file poiché è una cartella o ha dimensione 0 byte", "Upload Error" => "Errore di invio", "Close" => "Chiudi", -"Pending" => "In corso", "1 file uploading" => "1 file in fase di caricamento", "{count} files uploading" => "{count} file in fase di caricamentoe", "Upload cancelled." => "Invio annullato", @@ -57,10 +60,11 @@ "Text file" => "File di testo", "Folder" => "Cartella", "From link" => "Da collegamento", -"Trash" => "Cestino", +"Trash bin" => "Cestino", "Cancel upload" => "Annulla invio", "Nothing in here. Upload something!" => "Non c'è niente qui. Carica qualcosa!", "Download" => "Scarica", +"Unshare" => "Rimuovi condivisione", "Upload too large" => "Il file caricato è troppo grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "I file che stai provando a caricare superano la dimensione massima consentita su questo server.", "Files are being scanned, please wait." => "Scansione dei file in corso, attendi", diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php index c8b1054f30..85ec6b6e95 100644 --- a/apps/files/l10n/ja_JP.php +++ b/apps/files/l10n/ja_JP.php @@ -1,4 +1,7 @@ "%s を移動できませんでした ― この名前のファイルはすでに存在します", +"Could not move %s" => "%s を移動できませんでした", +"Unable to rename file" => "ファイル名の変更ができません", "No file was uploaded. Unknown error" => "ファイルは何もアップロードされていません。不明なエラー", "There is no error, the file uploaded with success" => "エラーはありません。ファイルのアップロードは成功しました", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "アップロードされたファイルはphp.ini の upload_max_filesize に設定されたサイズを超えています:", @@ -7,12 +10,13 @@ "No file was uploaded" => "ファイルはアップロードされませんでした", "Missing a temporary folder" => "テンポラリフォルダが見つかりません", "Failed to write to disk" => "ディスクへの書き込みに失敗しました", -"Not enough space available" => "利用可能なスペースが十分にありません", +"Not enough storage available" => "ストレージに十分な空き容量がありません", "Invalid directory." => "無効なディレクトリです。", "Files" => "ファイル", -"Unshare" => "共有しない", +"Delete permanently" => "完全に削除する", "Delete" => "削除", "Rename" => "名前の変更", +"Pending" => "保留", "{new_name} already exists" => "{new_name} はすでに存在しています", "replace" => "置き換え", "suggest name" => "推奨名称", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "ディレクトリもしくは0バイトのファイルはアップロードできません", "Upload Error" => "アップロードエラー", "Close" => "閉じる", -"Pending" => "保留", "1 file uploading" => "ファイルを1つアップロード中", "{count} files uploading" => "{count} ファイルをアップロード中", "Upload cancelled." => "アップロードはキャンセルされました。", @@ -57,10 +60,10 @@ "Text file" => "テキストファイル", "Folder" => "フォルダ", "From link" => "リンク", -"Trash" => "ゴミ箱", "Cancel upload" => "アップロードをキャンセル", "Nothing in here. Upload something!" => "ここには何もありません。何かアップロードしてください。", "Download" => "ダウンロード", +"Unshare" => "共有しない", "Upload too large" => "ファイルサイズが大きすぎます", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "アップロードしようとしているファイルは、サーバで規定された最大サイズを超えています。", "Files are being scanned, please wait." => "ファイルをスキャンしています、しばらくお待ちください。", diff --git a/apps/files/l10n/ka_GE.php b/apps/files/l10n/ka_GE.php index 7ab6122c65..a7b58f02d2 100644 --- a/apps/files/l10n/ka_GE.php +++ b/apps/files/l10n/ka_GE.php @@ -6,9 +6,9 @@ "Missing a temporary folder" => "დროებითი საქაღალდე არ არსებობს", "Failed to write to disk" => "შეცდომა დისკზე ჩაწერისას", "Files" => "ფაილები", -"Unshare" => "გაზიარების მოხსნა", "Delete" => "წაშლა", "Rename" => "გადარქმევა", +"Pending" => "მოცდის რეჟიმში", "{new_name} already exists" => "{new_name} უკვე არსებობს", "replace" => "შეცვლა", "suggest name" => "სახელის შემოთავაზება", @@ -19,7 +19,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "თქვენი ფაილის ატვირთვა ვერ მოხერხდა. ის არის საქაღალდე და შეიცავს 0 ბაიტს", "Upload Error" => "შეცდომა ატვირთვისას", "Close" => "დახურვა", -"Pending" => "მოცდის რეჟიმში", "1 file uploading" => "1 ფაილის ატვირთვა", "{count} files uploading" => "{count} ფაილი იტვირთება", "Upload cancelled." => "ატვირთვა შეჩერებულ იქნა.", @@ -46,6 +45,7 @@ "Cancel upload" => "ატვირთვის გაუქმება", "Nothing in here. Upload something!" => "აქ არაფერი არ არის. ატვირთე რამე!", "Download" => "ჩამოტვირთვა", +"Unshare" => "გაზიარების მოხსნა", "Upload too large" => "ასატვირთი ფაილი ძალიან დიდია", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "ფაილის ზომა რომლის ატვირთვასაც თქვენ აპირებთ, აჭარბებს სერვერზე დაშვებულ მაქსიმუმს.", "Files are being scanned, please wait." => "მიმდინარეობს ფაილების სკანირება, გთხოვთ დაელოდოთ.", diff --git a/apps/files/l10n/ko.php b/apps/files/l10n/ko.php index 7774aeea31..d483f8061a 100644 --- a/apps/files/l10n/ko.php +++ b/apps/files/l10n/ko.php @@ -1,4 +1,7 @@ "%s 항목을 이동시키지 못하였음 - 파일 이름이 이미 존재함", +"Could not move %s" => "%s 항목을 이딩시키지 못하였음", +"Unable to rename file" => "파일 이름바꾸기 할 수 없음", "No file was uploaded. Unknown error" => "파일이 업로드되지 않았습니다. 알 수 없는 오류입니다", "There is no error, the file uploaded with success" => "업로드에 성공하였습니다.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "업로드한 파일이 php.ini의 upload_max_filesize보다 큽니다:", @@ -7,12 +10,11 @@ "No file was uploaded" => "업로드된 파일 없음", "Missing a temporary folder" => "임시 폴더가 사라짐", "Failed to write to disk" => "디스크에 쓰지 못했습니다", -"Not enough space available" => "여유 공간이 부족합니다", "Invalid directory." => "올바르지 않은 디렉터리입니다.", "Files" => "파일", -"Unshare" => "공유 해제", "Delete" => "삭제", "Rename" => "이름 바꾸기", +"Pending" => "보류 중", "{new_name} already exists" => "{new_name}이(가) 이미 존재함", "replace" => "바꾸기", "suggest name" => "이름 제안", @@ -29,7 +31,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "이 파일은 디렉터리이거나 비어 있기 때문에 업로드할 수 없습니다", "Upload Error" => "업로드 오류", "Close" => "닫기", -"Pending" => "보류 중", "1 file uploading" => "파일 1개 업로드 중", "{count} files uploading" => "파일 {count}개 업로드 중", "Upload cancelled." => "업로드가 취소되었습니다.", @@ -59,6 +60,7 @@ "Cancel upload" => "업로드 취소", "Nothing in here. Upload something!" => "내용이 없습니다. 업로드할 수 있습니다!", "Download" => "다운로드", +"Unshare" => "공유 해제", "Upload too large" => "업로드 용량 초과", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "이 파일이 서버에서 허용하는 최대 업로드 가능 용량보다 큽니다.", "Files are being scanned, please wait." => "파일을 검색하고 있습니다. 기다려 주십시오.", diff --git a/apps/files/l10n/lb.php b/apps/files/l10n/lb.php index 79ef4bc941..b052da3a02 100644 --- a/apps/files/l10n/lb.php +++ b/apps/files/l10n/lb.php @@ -6,7 +6,6 @@ "Missing a temporary folder" => "Et feelt en temporären Dossier", "Failed to write to disk" => "Konnt net op den Disk schreiwen", "Files" => "Dateien", -"Unshare" => "Net méi deelen", "Delete" => "Läschen", "replace" => "ersetzen", "cancel" => "ofbriechen", @@ -34,6 +33,7 @@ "Cancel upload" => "Upload ofbriechen", "Nothing in here. Upload something!" => "Hei ass näischt. Lued eppes rop!", "Download" => "Eroflueden", +"Unshare" => "Net méi deelen", "Upload too large" => "Upload ze grouss", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass.", "Files are being scanned, please wait." => "Fichieren gi gescannt, war weg.", diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php index f4ad655f42..70296b5db9 100644 --- a/apps/files/l10n/lt_LT.php +++ b/apps/files/l10n/lt_LT.php @@ -6,9 +6,9 @@ "Missing a temporary folder" => "Nėra laikinojo katalogo", "Failed to write to disk" => "Nepavyko įrašyti į diską", "Files" => "Failai", -"Unshare" => "Nebesidalinti", "Delete" => "Ištrinti", "Rename" => "Pervadinti", +"Pending" => "Laukiantis", "{new_name} already exists" => "{new_name} jau egzistuoja", "replace" => "pakeisti", "suggest name" => "pasiūlyti pavadinimą", @@ -19,7 +19,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Neįmanoma įkelti failo - jo dydis gali būti 0 bitų arba tai katalogas", "Upload Error" => "Įkėlimo klaida", "Close" => "Užverti", -"Pending" => "Laukiantis", "1 file uploading" => "įkeliamas 1 failas", "{count} files uploading" => "{count} įkeliami failai", "Upload cancelled." => "Įkėlimas atšauktas.", @@ -46,6 +45,7 @@ "Cancel upload" => "Atšaukti siuntimą", "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ų leidžiamą šiame serveryje", "Files are being scanned, please wait." => "Skenuojami failai, prašome palaukti.", diff --git a/apps/files/l10n/lv.php b/apps/files/l10n/lv.php index 25c1da73be..b7d0073562 100644 --- a/apps/files/l10n/lv.php +++ b/apps/files/l10n/lv.php @@ -1,4 +1,7 @@ "Nevarēja pārvietot %s — jau eksistē datne ar tādu nosaukumu", +"Could not move %s" => "Nevarēja pārvietot %s", +"Unable to rename file" => "Nevarēja pārsaukt datni", "No file was uploaded. Unknown error" => "Netika augšupielādēta neviena datne. Nezināma kļūda", "There is no error, the file uploaded with success" => "Augšupielāde pabeigta bez kļūdām", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Augšupielādētā datne pārsniedz upload_max_filesize norādījumu php.ini datnē:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Neviena datne netika augšupielādēta", "Missing a temporary folder" => "Trūkst pagaidu mapes", "Failed to write to disk" => "Neizdevās saglabāt diskā", -"Not enough space available" => "Nepietiek brīvas vietas", +"Not enough storage available" => "Nav pietiekami daudz vietas", "Invalid directory." => "Nederīga direktorija.", "Files" => "Datnes", -"Unshare" => "Pārtraukt dalīšanos", +"Delete permanently" => "Dzēst pavisam", "Delete" => "Dzēst", "Rename" => "Pārsaukt", +"Pending" => "Gaida savu kārtu", "{new_name} already exists" => "{new_name} jau eksistē", "replace" => "aizvietot", "suggest name" => "ieteiktais nosaukums", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Nevar augšupielādēt jūsu datni, jo tā ir direktorija vai arī tās izmērs ir 0 baiti", "Upload Error" => "Kļūda augšupielādējot", "Close" => "Aizvērt", -"Pending" => "Gaida savu kārtu", "1 file uploading" => "Augšupielādē 1 datni", "{count} files uploading" => "augšupielādē {count} datnes", "Upload cancelled." => "Augšupielāde ir atcelta.", @@ -57,10 +60,11 @@ "Text file" => "Teksta datne", "Folder" => "Mape", "From link" => "No saites", -"Trash" => "Miskaste", +"Trash bin" => "Miskaste", "Cancel upload" => "Atcelt augšupielādi", "Nothing in here. Upload something!" => "Te vēl nekas nav. Rīkojies, sāc augšupielādēt!", "Download" => "Lejupielādēt", +"Unshare" => "Pārtraukt dalīšanos", "Upload too large" => "Datne ir par lielu, lai to augšupielādētu", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Augšupielādējamās datnes pārsniedz servera pieļaujamo datņu augšupielādes apjomu", "Files are being scanned, please wait." => "Datnes šobrīd tiek caurskatītas, lūdzu, uzgaidiet.", diff --git a/apps/files/l10n/mk.php b/apps/files/l10n/mk.php index 2580d1e6a9..5cb7e72058 100644 --- a/apps/files/l10n/mk.php +++ b/apps/files/l10n/mk.php @@ -8,9 +8,9 @@ "Missing a temporary folder" => "Не постои привремена папка", "Failed to write to disk" => "Неуспеав да запишам на диск", "Files" => "Датотеки", -"Unshare" => "Не споделувај", "Delete" => "Избриши", "Rename" => "Преименувај", +"Pending" => "Чека", "{new_name} already exists" => "{new_name} веќе постои", "replace" => "замени", "suggest name" => "предложи име", @@ -22,7 +22,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Не може да се преземе вашата датотека бидејќи фолдерот во кој се наоѓа фајлот има големина од 0 бајти", "Upload Error" => "Грешка при преземање", "Close" => "Затвои", -"Pending" => "Чека", "1 file uploading" => "1 датотека се подига", "{count} files uploading" => "{count} датотеки се подигаат", "Upload cancelled." => "Преземањето е прекинато.", @@ -51,6 +50,7 @@ "Cancel upload" => "Откажи прикачување", "Nothing in here. Upload something!" => "Тука нема ништо. Снимете нешто!", "Download" => "Преземи", +"Unshare" => "Не споделувај", "Upload too large" => "Датотеката е премногу голема", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Датотеките кои се обидувате да ги подигнете ја надминуваат максималната големина за подигнување датотеки на овој сервер.", "Files are being scanned, please wait." => "Се скенираат датотеки, ве молам почекајте.", diff --git a/apps/files/l10n/ms_MY.php b/apps/files/l10n/ms_MY.php index 4ac26d8091..b15a9111e7 100644 --- a/apps/files/l10n/ms_MY.php +++ b/apps/files/l10n/ms_MY.php @@ -8,12 +8,12 @@ "Failed to write to disk" => "Gagal untuk disimpan", "Files" => "fail", "Delete" => "Padam", +"Pending" => "Dalam proses", "replace" => "ganti", "cancel" => "Batal", "Unable to upload your file as it is a directory or has 0 bytes" => "Tidak boleh memuatnaik fail anda kerana mungkin ianya direktori atau saiz fail 0 bytes", "Upload Error" => "Muat naik ralat", "Close" => "Tutup", -"Pending" => "Dalam proses", "Upload cancelled." => "Muatnaik dibatalkan.", "Name" => "Nama ", "Size" => "Saiz", diff --git a/apps/files/l10n/nb_NO.php b/apps/files/l10n/nb_NO.php index a6ba6e9c03..2609923cbf 100644 --- a/apps/files/l10n/nb_NO.php +++ b/apps/files/l10n/nb_NO.php @@ -7,9 +7,9 @@ "Missing a temporary folder" => "Mangler en midlertidig mappe", "Failed to write to disk" => "Klarte ikke å skrive til disk", "Files" => "Filer", -"Unshare" => "Avslutt deling", "Delete" => "Slett", "Rename" => "Omdøp", +"Pending" => "Ventende", "{new_name} already exists" => "{new_name} finnes allerede", "replace" => "erstatt", "suggest name" => "foreslå navn", @@ -21,7 +21,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes", "Upload Error" => "Opplasting feilet", "Close" => "Lukk", -"Pending" => "Ventende", "1 file uploading" => "1 fil lastes opp", "{count} files uploading" => "{count} filer laster opp", "Upload cancelled." => "Opplasting avbrutt.", @@ -50,6 +49,7 @@ "Cancel upload" => "Avbryt opplasting", "Nothing in here. Upload something!" => "Ingenting her. Last opp noe!", "Download" => "Last ned", +"Unshare" => "Avslutt deling", "Upload too large" => "Opplasting for stor", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver å laste opp er for store for å laste opp til denne serveren.", "Files are being scanned, please wait." => "Skanner etter filer, vennligst vent.", diff --git a/apps/files/l10n/nl.php b/apps/files/l10n/nl.php index addd3a9372..ddac77dc87 100644 --- a/apps/files/l10n/nl.php +++ b/apps/files/l10n/nl.php @@ -1,4 +1,7 @@ "Kon %s niet verplaatsen - Er bestaat al een bestand met deze naam", +"Could not move %s" => "Kon %s niet verplaatsen", +"Unable to rename file" => "Kan bestand niet hernoemen", "No file was uploaded. Unknown error" => "Er was geen bestand geladen. Onbekende fout", "There is no error, the file uploaded with success" => "Geen fout opgetreden, bestand successvol geupload.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Het geüploade bestand overscheidt de upload_max_filesize optie in php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Geen bestand geüpload", "Missing a temporary folder" => "Een tijdelijke map mist", "Failed to write to disk" => "Schrijven naar schijf mislukt", -"Not enough space available" => "Niet genoeg ruimte beschikbaar", +"Not enough storage available" => "Niet genoeg opslagruimte beschikbaar", "Invalid directory." => "Ongeldige directory.", "Files" => "Bestanden", -"Unshare" => "Stop delen", +"Delete permanently" => "Verwijder definitief", "Delete" => "Verwijder", "Rename" => "Hernoem", +"Pending" => "Wachten", "{new_name} already exists" => "{new_name} bestaat al", "replace" => "vervang", "suggest name" => "Stel een naam voor", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "uploaden van de file mislukt, het is of een directory of de bestandsgrootte is 0 bytes", "Upload Error" => "Upload Fout", "Close" => "Sluit", -"Pending" => "Wachten", "1 file uploading" => "1 bestand wordt ge-upload", "{count} files uploading" => "{count} bestanden aan het uploaden", "Upload cancelled." => "Uploaden geannuleerd.", @@ -57,10 +60,11 @@ "Text file" => "Tekstbestand", "Folder" => "Map", "From link" => "Vanaf link", -"Trash" => "Verwijderen", +"Trash bin" => "Prullenbak", "Cancel upload" => "Upload afbreken", "Nothing in here. Upload something!" => "Er bevindt zich hier niets. Upload een bestand!", "Download" => "Download", +"Unshare" => "Stop delen", "Upload too large" => "Bestanden te groot", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "De bestanden die u probeert te uploaden zijn groter dan de maximaal toegestane bestandsgrootte voor deze server.", "Files are being scanned, please wait." => "Bestanden worden gescand, even wachten.", diff --git a/apps/files/l10n/oc.php b/apps/files/l10n/oc.php index 78045b299e..7a39e9399f 100644 --- a/apps/files/l10n/oc.php +++ b/apps/files/l10n/oc.php @@ -6,16 +6,15 @@ "Missing a temporary folder" => "Un dorsièr temporari manca", "Failed to write to disk" => "L'escriptura sul disc a fracassat", "Files" => "Fichièrs", -"Unshare" => "Non parteja", "Delete" => "Escafa", "Rename" => "Torna nomenar", +"Pending" => "Al esperar", "replace" => "remplaça", "suggest name" => "nom prepausat", "cancel" => "anulla", "undo" => "defar", "Unable to upload your file as it is a directory or has 0 bytes" => "Impossible d'amontcargar lo teu fichièr qu'es un repertòri o que ten pas que 0 octet.", "Upload Error" => "Error d'amontcargar", -"Pending" => "Al esperar", "1 file uploading" => "1 fichièr al amontcargar", "Upload cancelled." => "Amontcargar anullat.", "File upload is in progress. Leaving the page now will cancel the upload." => "Un amontcargar es a se far. Daissar aquesta pagina ara tamparà lo cargament. ", @@ -37,6 +36,7 @@ "Cancel upload" => " Anulla l'amontcargar", "Nothing in here. Upload something!" => "Pas res dedins. Amontcarga qualquaren", "Download" => "Avalcarga", +"Unshare" => "Non parteja", "Upload too large" => "Amontcargament tròp gròs", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los fichièrs que sias a amontcargar son tròp pesucs per la talha maxi pel servidor.", "Files are being scanned, please wait." => "Los fiichièrs son a èsser explorats, ", diff --git a/apps/files/l10n/pl.php b/apps/files/l10n/pl.php index 6855850f0d..83091bad18 100644 --- a/apps/files/l10n/pl.php +++ b/apps/files/l10n/pl.php @@ -1,4 +1,7 @@ "Nie można było przenieść %s - Plik o takiej nazwie już istnieje", +"Could not move %s" => "Nie można było przenieść %s", +"Unable to rename file" => "Nie można zmienić nazwy pliku", "No file was uploaded. Unknown error" => "Plik nie został załadowany. Nieznany błąd", "There is no error, the file uploaded with success" => "Przesłano plik", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Wgrany plik przekracza wartość upload_max_filesize zdefiniowaną w php.ini: ", @@ -7,12 +10,11 @@ "No file was uploaded" => "Nie przesłano żadnego pliku", "Missing a temporary folder" => "Brak katalogu tymczasowego", "Failed to write to disk" => "Błąd zapisu na dysk", -"Not enough space available" => "Za mało miejsca", "Invalid directory." => "Zła ścieżka.", "Files" => "Pliki", -"Unshare" => "Nie udostępniaj", "Delete" => "Usuwa element", "Rename" => "Zmień nazwę", +"Pending" => "Oczekujące", "{new_name} already exists" => "{new_name} już istnieje", "replace" => "zastap", "suggest name" => "zasugeruj nazwę", @@ -26,7 +28,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Nie można wczytać pliku jeśli jest katalogiem lub ma 0 bajtów", "Upload Error" => "Błąd wczytywania", "Close" => "Zamknij", -"Pending" => "Oczekujące", "1 file uploading" => "1 plik wczytany", "{count} files uploading" => "{count} przesyłanie plików", "Upload cancelled." => "Wczytywanie anulowane.", @@ -56,6 +57,7 @@ "Cancel upload" => "Przestań wysyłać", "Nothing in here. Upload something!" => "Brak zawartości. Proszę wysłać pliki!", "Download" => "Pobiera element", +"Unshare" => "Nie udostępniaj", "Upload too large" => "Wysyłany plik ma za duży rozmiar", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Pliki które próbujesz przesłać, przekraczają maksymalną, dopuszczalną wielkość.", "Files are being scanned, please wait." => "Skanowanie plików, proszę czekać.", diff --git a/apps/files/l10n/pt_BR.php b/apps/files/l10n/pt_BR.php index 361e81052b..7d834b8f30 100644 --- a/apps/files/l10n/pt_BR.php +++ b/apps/files/l10n/pt_BR.php @@ -1,4 +1,7 @@ "Não possível mover %s - Um arquivo com este nome já existe", +"Could not move %s" => "Não possível mover %s", +"Unable to rename file" => "Impossível renomear arquivo", "No file was uploaded. Unknown error" => "Nenhum arquivo foi transferido. Erro desconhecido", "There is no error, the file uploaded with success" => "Não houve nenhum erro, o arquivo foi transferido com sucesso", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O arquivo enviado excede a diretiva upload_max_filesize no php.ini: ", @@ -7,11 +10,12 @@ "No file was uploaded" => "Nenhum arquivo foi transferido", "Missing a temporary folder" => "Pasta temporária não encontrada", "Failed to write to disk" => "Falha ao escrever no disco", +"Not enough storage available" => "Espaço de armazenamento insuficiente", "Invalid directory." => "Diretório inválido.", "Files" => "Arquivos", -"Unshare" => "Descompartilhar", "Delete" => "Excluir", "Rename" => "Renomear", +"Pending" => "Pendente", "{new_name} already exists" => "{new_name} já existe", "replace" => "substituir", "suggest name" => "sugerir nome", @@ -26,7 +30,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Impossível enviar seus arquivo como diretório ou ele tem 0 bytes.", "Upload Error" => "Erro de envio", "Close" => "Fechar", -"Pending" => "Pendente", "1 file uploading" => "enviando 1 arquivo", "{count} files uploading" => "Enviando {count} arquivos", "Upload cancelled." => "Envio cancelado.", @@ -56,6 +59,7 @@ "Cancel upload" => "Cancelar upload", "Nothing in here. Upload something!" => "Nada aqui.Carrege alguma coisa!", "Download" => "Baixar", +"Unshare" => "Descompartilhar", "Upload too large" => "Arquivo muito grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os arquivos que você está tentando carregar excedeu o tamanho máximo para arquivos no servidor.", "Files are being scanned, please wait." => "Arquivos sendo escaneados, por favor aguarde.", diff --git a/apps/files/l10n/pt_PT.php b/apps/files/l10n/pt_PT.php index b1d7385bc5..80dc774d65 100644 --- a/apps/files/l10n/pt_PT.php +++ b/apps/files/l10n/pt_PT.php @@ -1,4 +1,7 @@ "Não foi possível mover o ficheiro %s - Já existe um ficheiro com esse nome", +"Could not move %s" => "Não foi possível move o ficheiro %s", +"Unable to rename file" => "Não foi possível renomear o ficheiro", "No file was uploaded. Unknown error" => "Nenhum ficheiro foi carregado. Erro desconhecido", "There is no error, the file uploaded with success" => "Sem erro, ficheiro enviado com sucesso", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro enviado excede o limite permitido na directiva do php.ini upload_max_filesize", @@ -7,12 +10,13 @@ "No file was uploaded" => "Não foi enviado nenhum ficheiro", "Missing a temporary folder" => "Falta uma pasta temporária", "Failed to write to disk" => "Falhou a escrita no disco", -"Not enough space available" => "Espaço em disco insuficiente!", +"Not enough storage available" => "Não há espaço suficiente em disco", "Invalid directory." => "Directório Inválido", "Files" => "Ficheiros", -"Unshare" => "Deixar de partilhar", +"Delete permanently" => "Eliminar permanentemente", "Delete" => "Apagar", "Rename" => "Renomear", +"Pending" => "Pendente", "{new_name} already exists" => "O nome {new_name} já existe", "replace" => "substituir", "suggest name" => "sugira um nome", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Não é possível fazer o envio do ficheiro devido a ser uma pasta ou ter 0 bytes", "Upload Error" => "Erro no envio", "Close" => "Fechar", -"Pending" => "Pendente", "1 file uploading" => "A enviar 1 ficheiro", "{count} files uploading" => "A carregar {count} ficheiros", "Upload cancelled." => "Envio cancelado.", @@ -57,10 +60,11 @@ "Text file" => "Ficheiro de texto", "Folder" => "Pasta", "From link" => "Da ligação", -"Trash" => "Lixo", +"Trash bin" => "Reciclagem", "Cancel upload" => "Cancelar envio", "Nothing in here. Upload something!" => "Vazio. Envie alguma coisa!", "Download" => "Transferir", +"Unshare" => "Deixar de partilhar", "Upload too large" => "Envio muito grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiros que está a tentar enviar excedem o tamanho máximo de envio permitido neste servidor.", "Files are being scanned, please wait." => "Os ficheiros estão a ser analisados, por favor aguarde.", diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php index 7837b1f5b3..79604f56ad 100644 --- a/apps/files/l10n/ro.php +++ b/apps/files/l10n/ro.php @@ -1,4 +1,7 @@ "Nu se poate de mutat %s - Fișier cu acest nume deja există", +"Could not move %s" => "Nu s-a putut muta %s", +"Unable to rename file" => "Nu s-a putut redenumi fișierul", "No file was uploaded. Unknown error" => "Nici un fișier nu a fost încărcat. Eroare necunoscută", "There is no error, the file uploaded with success" => "Nicio eroare, fișierul a fost încărcat cu succes", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Fisierul incarcat depaseste upload_max_filesize permisi in php.ini: ", @@ -7,12 +10,11 @@ "No file was uploaded" => "Niciun fișier încărcat", "Missing a temporary folder" => "Lipsește un dosar temporar", "Failed to write to disk" => "Eroare la scriere pe disc", -"Not enough space available" => "Nu este suficient spațiu disponibil", "Invalid directory." => "Director invalid.", "Files" => "Fișiere", -"Unshare" => "Anulează partajarea", "Delete" => "Șterge", "Rename" => "Redenumire", +"Pending" => "În așteptare", "{new_name} already exists" => "{new_name} deja exista", "replace" => "înlocuire", "suggest name" => "sugerează nume", @@ -27,7 +29,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Nu s-a putut încărca fișierul tău deoarece pare să fie un director sau are 0 bytes.", "Upload Error" => "Eroare la încărcare", "Close" => "Închide", -"Pending" => "În așteptare", "1 file uploading" => "un fișier se încarcă", "{count} files uploading" => "{count} fisiere incarcate", "Upload cancelled." => "Încărcare anulată.", @@ -57,6 +58,7 @@ "Cancel upload" => "Anulează încărcarea", "Nothing in here. Upload something!" => "Nimic aici. Încarcă ceva!", "Download" => "Descarcă", +"Unshare" => "Anulează partajarea", "Upload too large" => "Fișierul încărcat este prea mare", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Fișierul care l-ai încărcat a depășită limita maximă admisă la încărcare pe acest server.", "Files are being scanned, please wait." => "Fișierele sunt scanate, te rog așteptă.", diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php index 52bc439512..6590f193f8 100644 --- a/apps/files/l10n/ru.php +++ b/apps/files/l10n/ru.php @@ -1,4 +1,7 @@ "Невозможно переместить %s - файл с таким именем уже существует", +"Could not move %s" => "Невозможно переместить %s", +"Unable to rename file" => "Невозможно переименовать файл", "No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка", "There is no error, the file uploaded with success" => "Файл успешно загружен", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Файл превышает размер установленный upload_max_filesize в php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Файл не был загружен", "Missing a temporary folder" => "Невозможно найти временную папку", "Failed to write to disk" => "Ошибка записи на диск", -"Not enough space available" => "Недостаточно свободного места", +"Not enough storage available" => "Недостаточно доступного места в хранилище", "Invalid directory." => "Неправильный каталог.", "Files" => "Файлы", -"Unshare" => "Отменить публикацию", +"Delete permanently" => "Удалено навсегда", "Delete" => "Удалить", "Rename" => "Переименовать", +"Pending" => "Ожидание", "{new_name} already exists" => "{new_name} уже существует", "replace" => "заменить", "suggest name" => "предложить название", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Не удается загрузить файл размером 0 байт в каталог", "Upload Error" => "Ошибка загрузки", "Close" => "Закрыть", -"Pending" => "Ожидание", "1 file uploading" => "загружается 1 файл", "{count} files uploading" => "{count} файлов загружается", "Upload cancelled." => "Загрузка отменена.", @@ -57,10 +60,11 @@ "Text file" => "Текстовый файл", "Folder" => "Папка", "From link" => "Из ссылки", -"Trash" => "Корзина", +"Trash bin" => "Корзина", "Cancel upload" => "Отмена загрузки", "Nothing in here. Upload something!" => "Здесь ничего нет. Загрузите что-нибудь!", "Download" => "Скачать", +"Unshare" => "Отменить публикацию", "Upload too large" => "Файл слишком большой", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файлы, которые Вы пытаетесь загрузить, превышают лимит для файлов на этом сервере.", "Files are being scanned, please wait." => "Подождите, файлы сканируются.", diff --git a/apps/files/l10n/ru_RU.php b/apps/files/l10n/ru_RU.php index e1952567d3..b635444212 100644 --- a/apps/files/l10n/ru_RU.php +++ b/apps/files/l10n/ru_RU.php @@ -1,4 +1,7 @@ "Неполучается перенести %s - Файл с таким именем уже существует", +"Could not move %s" => "Неполучается перенести %s ", +"Unable to rename file" => "Невозможно переименовать файл", "No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка", "There is no error, the file uploaded with success" => "Ошибка отсутствует, файл загружен успешно.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Размер загружаемого файла превышает upload_max_filesize директиву в php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Файл не был загружен", "Missing a temporary folder" => "Отсутствует временная папка", "Failed to write to disk" => "Не удалось записать на диск", -"Not enough space available" => "Не достаточно свободного места", +"Not enough storage available" => "Недостаточно места в хранилище", "Invalid directory." => "Неверный каталог.", "Files" => "Файлы", -"Unshare" => "Скрыть", +"Delete permanently" => "Удалить навсегда", "Delete" => "Удалить", "Rename" => "Переименовать", +"Pending" => "Ожидающий решения", "{new_name} already exists" => "{новое_имя} уже существует", "replace" => "отмена", "suggest name" => "подобрать название", @@ -20,13 +24,16 @@ "replaced {new_name}" => "заменено {новое_имя}", "undo" => "отменить действие", "replaced {new_name} with {old_name}" => "заменено {новое_имя} с {старое_имя}", +"perform delete operation" => "выполняется процесс удаления", "'.' is an invalid file name." => "'.' является неверным именем файла.", "File name cannot be empty." => "Имя файла не может быть пустым.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Некорректное имя, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не допустимы.", +"Your storage is full, files can not be updated or synced anymore!" => "Ваше хранилище переполнено, фалы больше не могут быть обновлены или синхронизированы!", +"Your storage is almost full ({usedSpacePercent}%)" => "Ваше хранилище почти полно ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "Идёт подготовка к скачке Вашего файла. Это может занять некоторое время, если фалы большие.", "Unable to upload your file as it is a directory or has 0 bytes" => "Невозможно загрузить файл,\n так как он имеет нулевой размер или является директорией", "Upload Error" => "Ошибка загрузки", "Close" => "Закрыть", -"Pending" => "Ожидающий решения", "1 file uploading" => "загрузка 1 файла", "{count} files uploading" => "{количество} загружено файлов", "Upload cancelled." => "Загрузка отменена", @@ -53,9 +60,11 @@ "Text file" => "Текстовый файл", "Folder" => "Папка", "From link" => "По ссылке", +"Trash bin" => "Корзина", "Cancel upload" => "Отмена загрузки", "Nothing in here. Upload something!" => "Здесь ничего нет. Загрузите что-нибудь!", "Download" => "Загрузить", +"Unshare" => "Скрыть", "Upload too large" => "Загрузка слишком велика", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Размер файлов, которые Вы пытаетесь загрузить, превышает максимально допустимый размер для загрузки на данный сервер.", "Files are being scanned, please wait." => "Файлы сканируются, пожалуйста, подождите.", diff --git a/apps/files/l10n/si_LK.php b/apps/files/l10n/si_LK.php index 316470d839..de2b890684 100644 --- a/apps/files/l10n/si_LK.php +++ b/apps/files/l10n/si_LK.php @@ -7,7 +7,6 @@ "Missing a temporary folder" => "තාවකාලික ෆොල්ඩරයක් සොයාගත නොහැක", "Failed to write to disk" => "තැටිගත කිරීම අසාර්ථකයි", "Files" => "ගොනු", -"Unshare" => "නොබෙදු", "Delete" => "මකන්න", "Rename" => "නැවත නම් කරන්න", "replace" => "ප්‍රතිස්ථාපනය කරන්න", @@ -41,6 +40,7 @@ "Cancel upload" => "උඩුගත කිරීම අත් හරින්න", "Nothing in here. Upload something!" => "මෙහි කිසිවක් නොමැත. යමක් උඩුගත කරන්න", "Download" => "බාගත කිරීම", +"Unshare" => "නොබෙදු", "Upload too large" => "උඩුගත කිරීම විශාල වැඩිය", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "ඔබ උඩුගත කිරීමට තැත් කරන ගොනු මෙම සේවාදායකයා උඩුගත කිරීමට ඉඩදී ඇති උපරිම ගොනු විශාලත්වයට වඩා වැඩිය", "Files are being scanned, please wait." => "ගොනු පරික්ෂා කෙරේ. මඳක් රැඳී සිටින්න", diff --git a/apps/files/l10n/sk_SK.php b/apps/files/l10n/sk_SK.php index 9c27e21539..64ba7420d3 100644 --- a/apps/files/l10n/sk_SK.php +++ b/apps/files/l10n/sk_SK.php @@ -1,4 +1,7 @@ "Nie je možné presunúť %s - súbor s týmto menom už existuje", +"Could not move %s" => "Nie je možné presunúť %s", +"Unable to rename file" => "Nemožno premenovať súbor", "No file was uploaded. Unknown error" => "Žiaden súbor nebol odoslaný. Neznáma chyba", "There is no error, the file uploaded with success" => "Nenastala žiadna chyba, súbor bol úspešne nahraný", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Nahraný súbor predčil konfiguračnú direktívu upload_max_filesize v súbore php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Žiaden súbor nebol nahraný", "Missing a temporary folder" => "Chýbajúci dočasný priečinok", "Failed to write to disk" => "Zápis na disk sa nepodaril", -"Not enough space available" => "Nie je k dispozícii dostatok miesta", -"Invalid directory." => "Neplatný adresár", +"Not enough storage available" => "Nedostatok dostupného úložného priestoru", +"Invalid directory." => "Neplatný priečinok", "Files" => "Súbory", -"Unshare" => "Nezdielať", +"Delete permanently" => "Zmazať trvalo", "Delete" => "Odstrániť", "Rename" => "Premenovať", +"Pending" => "Čaká sa", "{new_name} already exists" => "{new_name} už existuje", "replace" => "nahradiť", "suggest name" => "pomôcť s menom", @@ -30,13 +34,12 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Nemôžem nahrať súbor lebo je to priečinok alebo má 0 bajtov.", "Upload Error" => "Chyba odosielania", "Close" => "Zavrieť", -"Pending" => "Čaká sa", "1 file uploading" => "1 súbor sa posiela ", "{count} files uploading" => "{count} súborov odosielaných", "Upload cancelled." => "Odosielanie zrušené", "File upload is in progress. Leaving the page now will cancel the upload." => "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.", "URL cannot be empty." => "URL nemôže byť prázdne", -"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Neplatné meno adresára. Používanie mena 'Shared' je vyhradené len pre Owncloud", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Neplatné meno priečinka. Používanie mena 'Shared' je vyhradené len pre Owncloud", "Name" => "Meno", "Size" => "Veľkosť", "Modified" => "Upravené", @@ -45,10 +48,10 @@ "1 file" => "1 súbor", "{count} files" => "{count} súborov", "Upload" => "Odoslať", -"File handling" => "Nastavenie správanie k súborom", +"File handling" => "Nastavenie správania sa k súborom", "Maximum upload size" => "Maximálna veľkosť odosielaného súboru", "max. possible: " => "najväčšie možné:", -"Needed for multi-file and folder downloads." => "Vyžadované pre sťahovanie viacerých súborov a adresárov.", +"Needed for multi-file and folder downloads." => "Vyžadované pre sťahovanie viacerých súborov a priečinkov.", "Enable ZIP-download" => "Povoliť sťahovanie ZIP súborov", "0 is unlimited" => "0 znamená neobmedzené", "Maximum input size for ZIP files" => "Najväčšia veľkosť ZIP súborov", @@ -57,13 +60,14 @@ "Text file" => "Textový súbor", "Folder" => "Priečinok", "From link" => "Z odkazu", -"Trash" => "Kôš", +"Trash bin" => "Kôš", "Cancel upload" => "Zrušiť odosielanie", "Nothing in here. Upload something!" => "Žiadny súbor. Nahrajte niečo!", "Download" => "Stiahnuť", +"Unshare" => "Nezdielať", "Upload too large" => "Odosielaný súbor je príliš veľký", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Súbory, ktoré sa snažíte nahrať, presahujú maximálnu veľkosť pre nahratie súborov na tento server.", "Files are being scanned, please wait." => "Čakajte, súbory sú prehľadávané.", -"Current scanning" => "Práve prehliadané", +"Current scanning" => "Práve prezerané", "Upgrading filesystem cache..." => "Aktualizujem medzipamäť súborového systému..." ); diff --git a/apps/files/l10n/sl.php b/apps/files/l10n/sl.php index d55b4207d2..6a379459f0 100644 --- a/apps/files/l10n/sl.php +++ b/apps/files/l10n/sl.php @@ -8,9 +8,9 @@ "Missing a temporary folder" => "Manjka začasna mapa", "Failed to write to disk" => "Pisanje na disk je spodletelo", "Files" => "Datoteke", -"Unshare" => "Odstrani iz souporabe", "Delete" => "Izbriši", "Rename" => "Preimenuj", +"Pending" => "V čakanju ...", "{new_name} already exists" => "{new_name} že obstaja", "replace" => "zamenjaj", "suggest name" => "predlagaj ime", @@ -22,7 +22,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Pošiljanje ni mogoče, saj gre za mapo, ali pa je datoteka velikosti 0 bajtov.", "Upload Error" => "Napaka med nalaganjem", "Close" => "Zapri", -"Pending" => "V čakanju ...", "1 file uploading" => "Pošiljanje 1 datoteke", "{count} files uploading" => "nalagam {count} datotek", "Upload cancelled." => "Pošiljanje je preklicano.", @@ -51,6 +50,7 @@ "Cancel upload" => "Prekliči pošiljanje", "Nothing in here. Upload something!" => "Tukaj ni ničesar. Naložite kaj!", "Download" => "Prejmi", +"Unshare" => "Odstrani iz souporabe", "Upload too large" => "Nalaganje ni mogoče, ker je preveliko", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteke, ki jih želite naložiti, presegajo največjo dovoljeno velikost na tem strežniku.", "Files are being scanned, please wait." => "Poteka preučevanje datotek, počakajte ...", diff --git a/apps/files/l10n/sr.php b/apps/files/l10n/sr.php index 188c8fc0da..e50d6612c4 100644 --- a/apps/files/l10n/sr.php +++ b/apps/files/l10n/sr.php @@ -7,9 +7,9 @@ "Missing a temporary folder" => "Недостаје привремена фасцикла", "Failed to write to disk" => "Не могу да пишем на диск", "Files" => "Датотеке", -"Unshare" => "Укини дељење", "Delete" => "Обриши", "Rename" => "Преименуј", +"Pending" => "На чекању", "{new_name} already exists" => "{new_name} већ постоји", "replace" => "замени", "suggest name" => "предложи назив", @@ -21,7 +21,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Не могу да отпремим датотеку као фасциклу или она има 0 бајтова", "Upload Error" => "Грешка при отпремању", "Close" => "Затвори", -"Pending" => "На чекању", "1 file uploading" => "Отпремам 1 датотеку", "{count} files uploading" => "Отпремам {count} датотеке/а", "Upload cancelled." => "Отпремање је прекинуто.", @@ -49,6 +48,7 @@ "Cancel upload" => "Прекини отпремање", "Nothing in here. Upload something!" => "Овде нема ничег. Отпремите нешто!", "Download" => "Преузми", +"Unshare" => "Укини дељење", "Upload too large" => "Датотека је превелика", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Датотеке које желите да отпремите прелазе ограничење у величини.", "Files are being scanned, please wait." => "Скенирам датотеке…", diff --git a/apps/files/l10n/sv.php b/apps/files/l10n/sv.php index 55493e2494..5e484ec130 100644 --- a/apps/files/l10n/sv.php +++ b/apps/files/l10n/sv.php @@ -1,4 +1,7 @@ "Kunde inte flytta %s - Det finns redan en fil med detta namn", +"Could not move %s" => "Kan inte flytta %s", +"Unable to rename file" => "Kan inte byta namn på filen", "No file was uploaded. Unknown error" => "Ingen fil uppladdad. Okänt fel", "There is no error, the file uploaded with success" => "Inga fel uppstod. Filen laddades upp utan problem", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Den uppladdade filen överskrider upload_max_filesize direktivet php.ini:", @@ -7,12 +10,13 @@ "No file was uploaded" => "Ingen fil blev uppladdad", "Missing a temporary folder" => "Saknar en tillfällig mapp", "Failed to write to disk" => "Misslyckades spara till disk", -"Not enough space available" => "Inte tillräckligt med utrymme tillgängligt", +"Not enough storage available" => "Inte tillräckligt med lagringsutrymme tillgängligt", "Invalid directory." => "Felaktig mapp.", "Files" => "Filer", -"Unshare" => "Sluta dela", +"Delete permanently" => "Radera permanent", "Delete" => "Radera", "Rename" => "Byt namn", +"Pending" => "Väntar", "{new_name} already exists" => "{new_name} finns redan", "replace" => "ersätt", "suggest name" => "föreslå namn", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Kunde inte ladda upp dina filer eftersom det antingen är en mapp eller har 0 bytes.", "Upload Error" => "Uppladdningsfel", "Close" => "Stäng", -"Pending" => "Väntar", "1 file uploading" => "1 filuppladdning", "{count} files uploading" => "{count} filer laddas upp", "Upload cancelled." => "Uppladdning avbruten.", @@ -57,10 +60,11 @@ "Text file" => "Textfil", "Folder" => "Mapp", "From link" => "Från länk", -"Trash" => "Papperskorgen", +"Trash bin" => "Papperskorg", "Cancel upload" => "Avbryt uppladdning", "Nothing in here. Upload something!" => "Ingenting här. Ladda upp något!", "Download" => "Ladda ner", +"Unshare" => "Sluta dela", "Upload too large" => "För stor uppladdning", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar på servern.", "Files are being scanned, please wait." => "Filer skannas, var god vänta", diff --git a/apps/files/l10n/ta_LK.php b/apps/files/l10n/ta_LK.php index 383b4ef6f8..069a2ac582 100644 --- a/apps/files/l10n/ta_LK.php +++ b/apps/files/l10n/ta_LK.php @@ -7,9 +7,9 @@ "Missing a temporary folder" => "ஒரு தற்காலிகமான கோப்புறையை காணவில்லை", "Failed to write to disk" => "வட்டில் எழுத முடியவில்லை", "Files" => "கோப்புகள்", -"Unshare" => "பகிரப்படாதது", "Delete" => "அழிக்க", "Rename" => "பெயர்மாற்றம்", +"Pending" => "நிலுவையிலுள்ள", "{new_name} already exists" => "{new_name} ஏற்கனவே உள்ளது", "replace" => "மாற்றிடுக", "suggest name" => "பெயரை பரிந்துரைக்க", @@ -21,7 +21,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "அடைவு அல்லது 0 bytes ஐ கொண்டுள்ளதால் உங்களுடைய கோப்பை பதிவேற்ற முடியவில்லை", "Upload Error" => "பதிவேற்றல் வழு", "Close" => "மூடுக", -"Pending" => "நிலுவையிலுள்ள", "1 file uploading" => "1 கோப்பு பதிவேற்றப்படுகிறது", "{count} files uploading" => "{எண்ணிக்கை} கோப்புகள் பதிவேற்றப்படுகின்றது", "Upload cancelled." => "பதிவேற்றல் இரத்து செய்யப்பட்டுள்ளது", @@ -50,6 +49,7 @@ "Cancel upload" => "பதிவேற்றலை இரத்து செய்க", "Nothing in here. Upload something!" => "இங்கு ஒன்றும் இல்லை. ஏதாவது பதிவேற்றுக!", "Download" => "பதிவிறக்குக", +"Unshare" => "பகிரப்படாதது", "Upload too large" => "பதிவேற்றல் மிகப்பெரியது", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "நீங்கள் பதிவேற்ற முயற்சிக்கும் கோப்புகளானது இந்த சேவையகத்தில் கோப்பு பதிவேற்றக்கூடிய ஆகக்கூடிய அளவிலும் கூடியது.", "Files are being scanned, please wait." => "கோப்புகள் வருடப்படுகின்றன, தயவுசெய்து காத்திருங்கள்.", diff --git a/apps/files/l10n/th_TH.php b/apps/files/l10n/th_TH.php index 06dab9d8e6..fce74874f1 100644 --- a/apps/files/l10n/th_TH.php +++ b/apps/files/l10n/th_TH.php @@ -1,4 +1,7 @@ "ไม่สามารถย้าย %s ได้ - ไฟล์ที่ใช้ชื่อนี้มีอยู่แล้ว", +"Could not move %s" => "ไม่สามารถย้าย %s ได้", +"Unable to rename file" => "ไม่สามารถเปลี่ยนชื่อไฟล์ได้", "No file was uploaded. Unknown error" => "ยังไม่มีไฟล์ใดที่ถูกอัพโหลด เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ", "There is no error, the file uploaded with success" => "ไม่มีข้อผิดพลาดใดๆ ไฟล์ถูกอัพโหลดเรียบร้อยแล้ว", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "ขนาดไฟล์ที่อัพโหลดมีขนาดเกิน upload_max_filesize ที่ระบุไว้ใน php.ini", @@ -7,12 +10,12 @@ "No file was uploaded" => "ยังไม่มีไฟล์ที่ถูกอัพโหลด", "Missing a temporary folder" => "แฟ้มเอกสารชั่วคราวเกิดการสูญหาย", "Failed to write to disk" => "เขียนข้อมูลลงแผ่นดิสก์ล้มเหลว", -"Not enough space available" => "มีพื้นที่เหลือไม่เพียงพอ", +"Not enough storage available" => "เหลือพื้นที่ไม่เพียงสำหรับใช้งาน", "Invalid directory." => "ไดเร็กทอรี่ไม่ถูกต้อง", "Files" => "ไฟล์", -"Unshare" => "ยกเลิกการแชร์ข้อมูล", "Delete" => "ลบ", "Rename" => "เปลี่ยนชื่อ", +"Pending" => "อยู่ระหว่างดำเนินการ", "{new_name} already exists" => "{new_name} มีอยู่แล้วในระบบ", "replace" => "แทนที่", "suggest name" => "แนะนำชื่อ", @@ -30,7 +33,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "ไม่สามารถอัพโหลดไฟล์ของคุณได้ เนื่องจากไฟล์ดังกล่าวเป็นไดเร็กทอรี่หรือมีขนาด 0 ไบต์", "Upload Error" => "เกิดข้อผิดพลาดในการอัพโหลด", "Close" => "ปิด", -"Pending" => "อยู่ระหว่างดำเนินการ", "1 file uploading" => "กำลังอัพโหลดไฟล์ 1 ไฟล์", "{count} files uploading" => "กำลังอัพโหลด {count} ไฟล์", "Upload cancelled." => "การอัพโหลดถูกยกเลิก", @@ -57,10 +59,10 @@ "Text file" => "ไฟล์ข้อความ", "Folder" => "แฟ้มเอกสาร", "From link" => "จากลิงก์", -"Trash" => "ถังขยะ", "Cancel upload" => "ยกเลิกการอัพโหลด", "Nothing in here. Upload something!" => "ยังไม่มีไฟล์ใดๆอยู่ที่นี่ กรุณาอัพโหลดไฟล์!", "Download" => "ดาวน์โหลด", +"Unshare" => "ยกเลิกการแชร์ข้อมูล", "Upload too large" => "ไฟล์ที่อัพโหลดมีขนาดใหญ่เกินไป", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "ไฟล์ที่คุณพยายามที่จะอัพโหลดมีขนาดเกินกว่าขนาดสูงสุดที่กำหนดไว้ให้อัพโหลดได้สำหรับเซิร์ฟเวอร์นี้", "Files are being scanned, please wait." => "ไฟล์กำลังอยู่ระหว่างการสแกน, กรุณารอสักครู่.", diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php index 3412d8ad44..f6943f1f4d 100644 --- a/apps/files/l10n/tr.php +++ b/apps/files/l10n/tr.php @@ -1,4 +1,7 @@ "%s taşınamadı. Bu isimde dosya zaten var.", +"Could not move %s" => "%s taşınamadı", +"Unable to rename file" => "Dosya adı değiştirilemedi", "No file was uploaded. Unknown error" => "Dosya yüklenmedi. Bilinmeyen hata", "There is no error, the file uploaded with success" => "Bir hata yok, dosya başarıyla yüklendi", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "php.ini dosyasında upload_max_filesize ile belirtilen dosya yükleme sınırı aşıldı.", @@ -7,12 +10,11 @@ "No file was uploaded" => "Hiç dosya yüklenmedi", "Missing a temporary folder" => "Geçici bir klasör eksik", "Failed to write to disk" => "Diske yazılamadı", -"Not enough space available" => "Yeterli disk alanı yok", "Invalid directory." => "Geçersiz dizin.", "Files" => "Dosyalar", -"Unshare" => "Paylaşılmayan", "Delete" => "Sil", "Rename" => "İsim değiştir.", +"Pending" => "Bekliyor", "{new_name} already exists" => "{new_name} zaten mevcut", "replace" => "değiştir", "suggest name" => "Öneri ad", @@ -27,7 +29,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Dosyanızın boyutu 0 byte olduğundan veya bir dizin olduğundan yüklenemedi", "Upload Error" => "Yükleme hatası", "Close" => "Kapat", -"Pending" => "Bekliyor", "1 file uploading" => "1 dosya yüklendi", "{count} files uploading" => "{count} dosya yükleniyor", "Upload cancelled." => "Yükleme iptal edildi.", @@ -57,6 +58,7 @@ "Cancel upload" => "Yüklemeyi iptal et", "Nothing in here. Upload something!" => "Burada hiçbir şey yok. Birşeyler yükleyin!", "Download" => "İndir", +"Unshare" => "Paylaşılmayan", "Upload too large" => "Yüklemeniz çok büyük", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Yüklemeye çalıştığınız dosyalar bu sunucudaki maksimum yükleme boyutunu aşıyor.", "Files are being scanned, please wait." => "Dosyalar taranıyor, lütfen bekleyin.", diff --git a/apps/files/l10n/uk.php b/apps/files/l10n/uk.php index 9831dfe0f8..7e499e6c2c 100644 --- a/apps/files/l10n/uk.php +++ b/apps/files/l10n/uk.php @@ -7,10 +7,12 @@ "No file was uploaded" => "Не відвантажено жодного файлу", "Missing a temporary folder" => "Відсутній тимчасовий каталог", "Failed to write to disk" => "Невдалося записати на диск", +"Invalid directory." => "Невірний каталог.", "Files" => "Файли", -"Unshare" => "Заборонити доступ", +"Delete permanently" => "Видалити назавжди", "Delete" => "Видалити", "Rename" => "Перейменувати", +"Pending" => "Очікування", "{new_name} already exists" => "{new_name} вже існує", "replace" => "заміна", "suggest name" => "запропонуйте назву", @@ -18,16 +20,22 @@ "replaced {new_name}" => "замінено {new_name}", "undo" => "відмінити", "replaced {new_name} with {old_name}" => "замінено {new_name} на {old_name}", +"perform delete operation" => "виконати операцію видалення", +"'.' is an invalid file name." => "'.' це невірне ім'я файлу.", +"File name cannot be empty." => " Ім'я файлу не може бути порожнім.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Невірне ім'я, '\\', '/', '<', '>', ':', '\"', '|', '?' та '*' не дозволені.", +"Your storage is full, files can not be updated or synced anymore!" => "Ваше сховище переповнене, файли більше не можуть бути оновлені або синхронізовані !", +"Your storage is almost full ({usedSpacePercent}%)" => "Ваше сховище майже повне ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "Ваше завантаження готується. Це може зайняти деякий час, якщо файли завеликі.", "Unable to upload your file as it is a directory or has 0 bytes" => "Неможливо завантажити ваш файл тому, що він тека або файл розміром 0 байт", "Upload Error" => "Помилка завантаження", "Close" => "Закрити", -"Pending" => "Очікування", "1 file uploading" => "1 файл завантажується", "{count} files uploading" => "{count} файлів завантажується", "Upload cancelled." => "Завантаження перервано.", "File upload is in progress. Leaving the page now will cancel the upload." => "Виконується завантаження файлу. Закриття цієї сторінки приведе до відміни завантаження.", "URL cannot be empty." => "URL не може бути пустим.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Невірне ім'я теки. Використання \"Shared\" зарезервовано Owncloud", "Name" => "Ім'я", "Size" => "Розмір", "Modified" => "Змінено", @@ -51,8 +59,10 @@ "Cancel upload" => "Перервати завантаження", "Nothing in here. Upload something!" => "Тут нічого немає. Відвантажте що-небудь!", "Download" => "Завантажити", +"Unshare" => "Заборонити доступ", "Upload too large" => "Файл занадто великий", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файли,що ви намагаєтесь відвантажити перевищують максимальний дозволений розмір файлів на цьому сервері.", "Files are being scanned, please wait." => "Файли скануються, зачекайте, будь-ласка.", -"Current scanning" => "Поточне сканування" +"Current scanning" => "Поточне сканування", +"Upgrading filesystem cache..." => "Оновлення кеша файлової системи..." ); diff --git a/apps/files/l10n/vi.php b/apps/files/l10n/vi.php index 0daf580a2f..b069246f01 100644 --- a/apps/files/l10n/vi.php +++ b/apps/files/l10n/vi.php @@ -1,15 +1,22 @@ "Không thể di chuyển %s - Đã có tên file này trên hệ thống", +"Could not move %s" => "Không thể di chuyển %s", +"Unable to rename file" => "Không thể đổi tên file", "No file was uploaded. Unknown error" => "Không có tập tin nào được tải lên. Lỗi không xác định", "There is no error, the file uploaded with success" => "Không có lỗi, các tập tin đã được tải lên thành công", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "The uploaded file exceeds the upload_max_filesize directive in php.ini: ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Kích thước những tập tin tải lên vượt quá MAX_FILE_SIZE đã được quy định", "The uploaded file was only partially uploaded" => "Tập tin tải lên mới chỉ tải lên được một phần", "No file was uploaded" => "Không có tập tin nào được tải lên", "Missing a temporary folder" => "Không tìm thấy thư mục tạm", "Failed to write to disk" => "Không thể ghi ", +"Not enough storage available" => "Không đủ không gian lưu trữ", +"Invalid directory." => "Thư mục không hợp lệ", "Files" => "Tập tin", -"Unshare" => "Không chia sẽ", +"Delete permanently" => "Xóa vĩnh vễn", "Delete" => "Xóa", "Rename" => "Sửa tên", +"Pending" => "Chờ", "{new_name} already exists" => "{new_name} đã tồn tại", "replace" => "thay thế", "suggest name" => "tên gợi ý", @@ -17,16 +24,22 @@ "replaced {new_name}" => "đã thay thế {new_name}", "undo" => "lùi lại", "replaced {new_name} with {old_name}" => "đã thay thế {new_name} bằng {old_name}", +"perform delete operation" => "thực hiện việc xóa", +"'.' is an invalid file name." => "'.' là một tên file không hợp lệ", +"File name cannot be empty." => "Tên file không được rỗng", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Tên không hợp lệ, '\\', '/', '<', '>', ':', '\"', '|', '?' và '*' thì không được phép dùng.", +"Your storage is full, files can not be updated or synced anymore!" => "Your storage is full, files can not be updated or synced anymore!", +"Your storage is almost full ({usedSpacePercent}%)" => "Your storage is almost full ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "Your download is being prepared. This might take some time if the files are big.", "Unable to upload your file as it is a directory or has 0 bytes" => "Không thể tải lên tập tin này do nó là một thư mục hoặc kích thước tập tin bằng 0 byte", "Upload Error" => "Tải lên lỗi", "Close" => "Đóng", -"Pending" => "Chờ", "1 file uploading" => "1 tệp tin đang được tải lên", "{count} files uploading" => "{count} tập tin đang tải lên", "Upload cancelled." => "Hủy tải lên", "File upload is in progress. Leaving the page now will cancel the upload." => "Tập tin tải lên đang được xử lý. Nếu bạn rời khỏi trang bây giờ sẽ hủy quá trình này.", "URL cannot be empty." => "URL không được để trống.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Invalid folder name. Usage of 'Shared' is reserved by Owncloud", "Name" => "Tên", "Size" => "Kích cỡ", "Modified" => "Thay đổi", @@ -50,8 +63,10 @@ "Cancel upload" => "Hủy upload", "Nothing in here. Upload something!" => "Không có gì ở đây .Hãy tải lên một cái gì đó !", "Download" => "Tải xuống", +"Unshare" => "Không chia sẽ", "Upload too large" => "Tập tin tải lên quá lớn", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Các tập tin bạn đang tải lên vượt quá kích thước tối đa cho phép trên máy chủ .", "Files are being scanned, please wait." => "Tập tin đang được quét ,vui lòng chờ.", -"Current scanning" => "Hiện tại đang quét" +"Current scanning" => "Hiện tại đang quét", +"Upgrading filesystem cache..." => "Upgrading filesystem cache..." ); diff --git a/apps/files/l10n/zh_CN.GB2312.php b/apps/files/l10n/zh_CN.GB2312.php index a38e2d3bc6..727b803800 100644 --- a/apps/files/l10n/zh_CN.GB2312.php +++ b/apps/files/l10n/zh_CN.GB2312.php @@ -7,9 +7,9 @@ "Missing a temporary folder" => "丢失了一个临时文件夹", "Failed to write to disk" => "写磁盘失败", "Files" => "文件", -"Unshare" => "取消共享", "Delete" => "删除", "Rename" => "重命名", +"Pending" => "Pending", "{new_name} already exists" => "{new_name} 已存在", "replace" => "替换", "suggest name" => "推荐名称", @@ -20,7 +20,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "不能上传你指定的文件,可能因为它是个文件夹或者大小为0", "Upload Error" => "上传错误", "Close" => "关闭", -"Pending" => "Pending", "1 file uploading" => "1 个文件正在上传", "{count} files uploading" => "{count} 个文件正在上传", "Upload cancelled." => "上传取消了", @@ -49,6 +48,7 @@ "Cancel upload" => "取消上传", "Nothing in here. Upload something!" => "这里没有东西.上传点什么!", "Download" => "下载", +"Unshare" => "取消共享", "Upload too large" => "上传的文件太大了", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "你正在试图上传的文件超过了此服务器支持的最大的文件大小.", "Files are being scanned, please wait." => "正在扫描文件,请稍候.", diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php index 2491d64534..569aaf1b0a 100644 --- a/apps/files/l10n/zh_CN.php +++ b/apps/files/l10n/zh_CN.php @@ -1,4 +1,7 @@ "无法移动 %s - 同名文件已存在", +"Could not move %s" => "无法移动 %s", +"Unable to rename file" => "无法重命名文件", "No file was uploaded. Unknown error" => "没有文件被上传。未知错误", "There is no error, the file uploaded with success" => "没有发生错误,文件上传成功。", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "上传文件大小已超过php.ini中upload_max_filesize所规定的值", @@ -7,12 +10,11 @@ "No file was uploaded" => "文件没有上传", "Missing a temporary folder" => "缺少临时目录", "Failed to write to disk" => "写入磁盘失败", -"Not enough space available" => "没有足够可用空间", "Invalid directory." => "无效文件夹。", "Files" => "文件", -"Unshare" => "取消分享", "Delete" => "删除", "Rename" => "重命名", +"Pending" => "操作等待中", "{new_name} already exists" => "{new_name} 已存在", "replace" => "替换", "suggest name" => "建议名称", @@ -27,7 +29,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "无法上传文件,因为它是一个目录或者大小为 0 字节", "Upload Error" => "上传错误", "Close" => "关闭", -"Pending" => "操作等待中", "1 file uploading" => "1个文件上传中", "{count} files uploading" => "{count} 个文件上传中", "Upload cancelled." => "上传已取消", @@ -57,6 +58,7 @@ "Cancel upload" => "取消上传", "Nothing in here. Upload something!" => "这里还什么都没有。上传些东西吧!", "Download" => "下载", +"Unshare" => "取消分享", "Upload too large" => "上传文件过大", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "您正尝试上传的文件超过了此服务器可以上传的最大容量限制", "Files are being scanned, please wait." => "文件正在被扫描,请稍候。", diff --git a/apps/files/l10n/zh_TW.php b/apps/files/l10n/zh_TW.php index 104cb3a619..5249dfdbc5 100644 --- a/apps/files/l10n/zh_TW.php +++ b/apps/files/l10n/zh_TW.php @@ -1,4 +1,7 @@ "無法移動 %s - 同名的檔案已經存在", +"Could not move %s" => "無法移動 %s", +"Unable to rename file" => "無法重新命名檔案", "No file was uploaded. Unknown error" => "沒有檔案被上傳。未知的錯誤。", "There is no error, the file uploaded with success" => "無錯誤,檔案上傳成功", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "上傳的檔案大小超過 php.ini 當中 upload_max_filesize 參數的設定:", @@ -7,12 +10,13 @@ "No file was uploaded" => "無已上傳檔案", "Missing a temporary folder" => "遺失暫存資料夾", "Failed to write to disk" => "寫入硬碟失敗", -"Not enough space available" => "沒有足夠的可用空間", +"Not enough storage available" => "儲存空間不足", "Invalid directory." => "無效的資料夾。", "Files" => "檔案", -"Unshare" => "取消共享", +"Delete permanently" => "永久刪除", "Delete" => "刪除", "Rename" => "重新命名", +"Pending" => "等候中", "{new_name} already exists" => "{new_name} 已經存在", "replace" => "取代", "suggest name" => "建議檔名", @@ -30,7 +34,6 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "無法上傳您的檔案因為它可能是一個目錄或檔案大小為0", "Upload Error" => "上傳發生錯誤", "Close" => "關閉", -"Pending" => "等候中", "1 file uploading" => "1 個檔案正在上傳", "{count} files uploading" => "{count} 個檔案正在上傳", "Upload cancelled." => "上傳取消", @@ -57,10 +60,11 @@ "Text file" => "文字檔", "Folder" => "資料夾", "From link" => "從連結", -"Trash" => "回收筒", +"Trash bin" => "回收筒", "Cancel upload" => "取消上傳", "Nothing in here. Upload something!" => "沒有任何東西。請上傳內容!", "Download" => "下載", +"Unshare" => "取消共享", "Upload too large" => "上傳過大", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "您試圖上傳的檔案已超過伺服器的最大檔案大小限制。 ", "Files are being scanned, please wait." => "正在掃描檔案,請稍等。", diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index 0b4aa21eac..60756db401 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -37,7 +37,7 @@
- t('Trash');?> + t('Trash bin');?>
@@ -59,7 +59,7 @@
t('Nothing in here. Upload something!')?>
- +
diff --git a/apps/files/templates/part.breadcrumb.php b/apps/files/templates/part.breadcrumb.php index 8778915be8..4cc2c4dce9 100644 --- a/apps/files/templates/part.breadcrumb.php +++ b/apps/files/templates/part.breadcrumb.php @@ -1,7 +1,7 @@ diff --git a/apps/files_encryption/ajax/mode.php b/apps/files_encryption/ajax/mode.php deleted file mode 100644 index 64c5be9440..0000000000 --- a/apps/files_encryption/ajax/mode.php +++ /dev/null @@ -1,38 +0,0 @@ - - * This file is licensed under the Affero General Public License version 3 or later. - * See the COPYING-README file. - */ - -use OCA\Encryption\Keymanager; - -OCP\JSON::checkAppEnabled('files_encryption'); -OCP\JSON::checkLoggedIn(); -OCP\JSON::callCheck(); - -$mode = $_POST['mode']; -$changePasswd = false; -$passwdChanged = false; - -if ( isset($_POST['newpasswd']) && isset($_POST['oldpasswd']) ) { - $oldpasswd = $_POST['oldpasswd']; - $newpasswd = $_POST['newpasswd']; - $changePasswd = true; - $passwdChanged = Keymanager::changePasswd($oldpasswd, $newpasswd); -} - -$query = \OC_DB::prepare( "SELECT mode FROM *PREFIX*encryption WHERE uid = ?" ); -$result = $query->execute(array(\OCP\User::getUser())); - -if ($result->fetchRow()){ - $query = OC_DB::prepare( 'UPDATE *PREFIX*encryption SET mode = ? WHERE uid = ?' ); -} else { - $query = OC_DB::prepare( 'INSERT INTO *PREFIX*encryption ( mode, uid ) VALUES( ?, ? )' ); -} - -if ( (!$changePasswd || $passwdChanged) && $query->execute(array($mode, \OCP\User::getUser())) ) { - OCP\JSON::success(); -} else { - OCP\JSON::error(); -} \ No newline at end of file diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index f83109a18e..0872862252 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -43,6 +43,6 @@ if ( } -// Reguster settings scripts +// Register settings scripts OCP\App::registerAdmin( 'files_encryption', 'settings' ); -OCP\App::registerPersonal( 'files_encryption', 'settings-personal' ); \ No newline at end of file +OCP\App::registerPersonal( 'files_encryption', 'settings-personal' ); diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 8bdeee0937..2731d5a92f 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -40,7 +40,7 @@ class Hooks { // Manually initialise Filesystem{} singleton with correct // fake root path, in order to avoid fatal webdav errors - \OC\Files\Filesystem::init( $params['uid'] . '/' . 'files' . '/' ); + \OC\Files\Filesystem::init( $params['uid'], $params['uid'] . '/' . 'files' . '/' ); $view = new \OC_FilesystemView( '/' ); @@ -165,16 +165,6 @@ class Hooks { * @brief */ public static function postShared( $params ) { - - // Delete existing catfile - Keymanager::deleteFileKey( ); - - // Generate new catfile and env keys - Crypt::multiKeyEncrypt( $plainContent, $publicKeys ); - - // Save env keys to user folders - - } /** diff --git a/apps/files_encryption/js/settings-personal.js b/apps/files_encryption/js/settings-personal.js deleted file mode 100644 index 1a53e99d2b..0000000000 --- a/apps/files_encryption/js/settings-personal.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright (c) 2012, Bjoern Schiessle - * This file is licensed under the Affero General Public License version 3 or later. - * See the COPYING-README file. - */ - -$(document).ready(function(){ - $('input[name=encryption_mode]').change(function(){ - var prevmode = document.getElementById('prev_encryption_mode').value - var client=$('input[value="client"]:checked').val() - ,server=$('input[value="server"]:checked').val() - ,user=$('input[value="user"]:checked').val() - ,none=$('input[value="none"]:checked').val() - if (client) { - $.post(OC.filePath('files_encryption', 'ajax', 'mode.php'), { mode: 'client' }); - if (prevmode == 'server') { - OC.dialogs.info(t('encryption', 'Please switch to your ownCloud client and change your encryption password to complete the conversion.'), t('encryption', 'switched to client side encryption')); - } - } else if (server) { - if (prevmode == 'client') { - OC.dialogs.form([{text:'Login password', name:'newpasswd', type:'password'},{text:'Encryption password used on the client', name:'oldpasswd', type:'password'}],t('encryption', 'Change encryption password to login password'), function(data) { - $.post(OC.filePath('files_encryption', 'ajax', 'mode.php'), { mode: 'server', newpasswd: data[0].value, oldpasswd: data[1].value }, function(result) { - if (result.status != 'success') { - document.getElementById(prevmode+'_encryption').checked = true; - OC.dialogs.alert(t('encryption', 'Please check your passwords and try again.'), t('encryption', 'Could not change your file encryption password to your login password')) - } else { - console.log("alles super"); - } - }, true); - }); - } else { - $.post(OC.filePath('files_encryption', 'ajax', 'mode.php'), { mode: 'server' }); - } - } else { - $.post(OC.filePath('files_encryption', 'ajax', 'mode.php'), { mode: 'none' }); - } - }) -}) \ No newline at end of file diff --git a/apps/files_encryption/js/settings.js b/apps/files_encryption/js/settings.js index 60563bde85..0be857bb73 100644 --- a/apps/files_encryption/js/settings.js +++ b/apps/files_encryption/js/settings.js @@ -9,38 +9,11 @@ $(document).ready(function(){ $('#encryption_blacklist').multiSelect({ oncheck:blackListChange, onuncheck:blackListChange, - createText:'...', + createText:'...' }); function blackListChange(){ var blackList=$('#encryption_blacklist').val().join(','); OC.AppConfig.setValue('files_encryption','type_blacklist',blackList); } - - //TODO: Handle switch between client and server side encryption - $('input[name=encryption_mode]').change(function(){ - var client=$('input[value="client"]:checked').val() - ,server=$('input[value="server"]:checked').val() - ,user=$('input[value="user"]:checked').val() - ,none=$('input[value="none"]:checked').val() - ,disable=false - if (client) { - OC.AppConfig.setValue('files_encryption','mode','client'); - disable = true; - } else if (server) { - OC.AppConfig.setValue('files_encryption','mode','server'); - disable = true; - } else if (user) { - OC.AppConfig.setValue('files_encryption','mode','user'); - disable = true; - } else { - OC.AppConfig.setValue('files_encryption','mode','none'); - } - if (disable) { - document.getElementById('server_encryption').disabled = true; - document.getElementById('client_encryption').disabled = true; - document.getElementById('user_encryption').disabled = true; - document.getElementById('none_encryption').disabled = true; - } - }) }) \ No newline at end of file diff --git a/apps/files_encryption/l10n/ca.php b/apps/files_encryption/l10n/ca.php index 1b888f7714..0c661353a7 100644 --- a/apps/files_encryption/l10n/ca.php +++ b/apps/files_encryption/l10n/ca.php @@ -1,9 +1,4 @@ "Connecteu-vos al client ownCloud i canvieu la contrasenya d'encriptació per completar la conversió.", -"switched to client side encryption" => "s'ha commutat a l'encriptació per part del client", -"Change encryption password to login password" => "Canvia la contrasenya d'encriptació per la d'accés", -"Please check your passwords and try again." => "Comproveu les contrasenyes i proveu-ho de nou.", -"Could not change your file encryption password to your login password" => "No s'ha pogut canviar la contrasenya d'encriptació de fitxers per la d'accés", "Encryption" => "Encriptatge", "File encryption is enabled." => "L'encriptació de fitxers està activada.", "The following file types will not be encrypted:" => "Els tipus de fitxers següents no s'encriptaran:", diff --git a/apps/files_encryption/l10n/cs_CZ.php b/apps/files_encryption/l10n/cs_CZ.php index 3278f13920..d225688a07 100644 --- a/apps/files_encryption/l10n/cs_CZ.php +++ b/apps/files_encryption/l10n/cs_CZ.php @@ -1,9 +1,4 @@ "Prosím přejděte na svého klienta ownCloud a nastavte šifrovací heslo pro dokončení konverze.", -"switched to client side encryption" => "přepnuto na šifrování na straně klienta", -"Change encryption password to login password" => "Změnit šifrovací heslo na přihlašovací", -"Please check your passwords and try again." => "Zkontrolujte, prosím, své heslo a zkuste to znovu.", -"Could not change your file encryption password to your login password" => "Nelze změnit šifrovací heslo na přihlašovací.", "Encryption" => "Šifrování", "File encryption is enabled." => "Šifrování je povoleno.", "The following file types will not be encrypted:" => "Následující typy souborů nebudou šifrovány:", diff --git a/apps/files_encryption/l10n/da.php b/apps/files_encryption/l10n/da.php index c9255759cb..b085381ea7 100644 --- a/apps/files_encryption/l10n/da.php +++ b/apps/files_encryption/l10n/da.php @@ -1,9 +1,7 @@ "Skift venligst til din ownCloud-klient og skift krypteringskoden for at fuldføre konverteringen.", -"switched to client side encryption" => "skiftet til kryptering på klientsiden", -"Change encryption password to login password" => "Udskift krypteringskode til login-adgangskode", -"Please check your passwords and try again." => "Check adgangskoder og forsøg igen.", -"Could not change your file encryption password to your login password" => "Kunne ikke udskifte krypteringskode med login-adgangskode", "Encryption" => "Kryptering", +"File encryption is enabled." => "Fil kryptering aktiveret.", +"The following file types will not be encrypted:" => "De følgende filtyper vil ikke blive krypteret:", +"Exclude the following file types from encryption:" => "Ekskluder de følgende fil typer fra kryptering:", "None" => "Ingen" ); diff --git a/apps/files_encryption/l10n/de.php b/apps/files_encryption/l10n/de.php index c3c69e0900..3dc586fe06 100644 --- a/apps/files_encryption/l10n/de.php +++ b/apps/files_encryption/l10n/de.php @@ -1,9 +1,4 @@ "Bitte wechseln Sie nun zum ownCloud Client und ändern Sie ihr Verschlüsselungspasswort um die Konvertierung abzuschließen.", -"switched to client side encryption" => "Zur Clientseitigen Verschlüsselung gewechselt", -"Change encryption password to login password" => "Ändern des Verschlüsselungspasswortes zum Anmeldepasswort", -"Please check your passwords and try again." => "Bitte überprüfen sie Ihr Passwort und versuchen Sie es erneut.", -"Could not change your file encryption password to your login password" => "Ihr Verschlüsselungspasswort konnte nicht als Anmeldepasswort gesetzt werden.", "Encryption" => "Verschlüsselung", "None" => "Keine" ); diff --git a/apps/files_encryption/l10n/de_DE.php b/apps/files_encryption/l10n/de_DE.php index c3c69e0900..b942c659f9 100644 --- a/apps/files_encryption/l10n/de_DE.php +++ b/apps/files_encryption/l10n/de_DE.php @@ -1,9 +1,7 @@ "Bitte wechseln Sie nun zum ownCloud Client und ändern Sie ihr Verschlüsselungspasswort um die Konvertierung abzuschließen.", -"switched to client side encryption" => "Zur Clientseitigen Verschlüsselung gewechselt", -"Change encryption password to login password" => "Ändern des Verschlüsselungspasswortes zum Anmeldepasswort", -"Please check your passwords and try again." => "Bitte überprüfen sie Ihr Passwort und versuchen Sie es erneut.", -"Could not change your file encryption password to your login password" => "Ihr Verschlüsselungspasswort konnte nicht als Anmeldepasswort gesetzt werden.", "Encryption" => "Verschlüsselung", +"File encryption is enabled." => "Datei-Verschlüsselung ist aktiviert", +"The following file types will not be encrypted:" => "Die folgenden Datei-Typen werden nicht verschlüsselt:", +"Exclude the following file types from encryption:" => "Die folgenden Datei-Typen von der Verschlüsselung ausnehmen:", "None" => "Keine" ); diff --git a/apps/files_encryption/l10n/el.php b/apps/files_encryption/l10n/el.php index 94bb68bcbc..0031a73194 100644 --- a/apps/files_encryption/l10n/el.php +++ b/apps/files_encryption/l10n/el.php @@ -1,7 +1,7 @@ "Αλλαγή συνθηματικού κρυπτογράφησης στο συνθηματικό εισόδου ", -"Please check your passwords and try again." => "Παρακαλώ ελέγξτε το συνθηματικό σας και προσπαθήστε ξανά.", -"Could not change your file encryption password to your login password" => "Αδυναμία αλλαγής συνθηματικού κρυπτογράφησης αρχείων στο συνθηματικό εισόδου σας", "Encryption" => "Κρυπτογράφηση", +"File encryption is enabled." => "Η κρυπτογράφηση αρχείων είναι ενεργή.", +"The following file types will not be encrypted:" => "Οι παρακάτω τύποι αρχείων δεν θα κρυπτογραφηθούν:", +"Exclude the following file types from encryption:" => "Εξαίρεση των παρακάτω τύπων αρχείων από την κρυπτογράφηση:", "None" => "Καμία" ); diff --git a/apps/files_encryption/l10n/es.php b/apps/files_encryption/l10n/es.php index 73b5f273d1..4ea87b92e7 100644 --- a/apps/files_encryption/l10n/es.php +++ b/apps/files_encryption/l10n/es.php @@ -1,9 +1,4 @@ "Por favor, cambie su cliente de ownCloud y cambie su clave de cifrado para completar la conversión.", -"switched to client side encryption" => "Cambiar a cifrado del lado del cliente", -"Change encryption password to login password" => "Cambie la clave de cifrado para su contraseña de inicio de sesión", -"Please check your passwords and try again." => "Por favor revise su contraseña e intentelo de nuevo.", -"Could not change your file encryption password to your login password" => "No se pudo cambiar la contraseña de cifrado de archivos de su contraseña de inicio de sesión", "Encryption" => "Cifrado", "File encryption is enabled." => "La encriptacion de archivo esta activada.", "The following file types will not be encrypted:" => "Los siguientes tipos de archivo no seran encriptados:", diff --git a/apps/files_encryption/l10n/es_AR.php b/apps/files_encryption/l10n/es_AR.php index 8160db10df..af522879e1 100644 --- a/apps/files_encryption/l10n/es_AR.php +++ b/apps/files_encryption/l10n/es_AR.php @@ -1,9 +1,7 @@ "Por favor, cambiá uu cliente de ownCloud y cambiá tu clave de encriptado para completar la conversión.", -"switched to client side encryption" => "Cambiado a encriptación por parte del cliente", -"Change encryption password to login password" => "Cambiá la clave de encriptado para tu contraseña de inicio de sesión", -"Please check your passwords and try again." => "Por favor, revisá tu contraseña e intentalo de nuevo.", -"Could not change your file encryption password to your login password" => "No se pudo cambiar la contraseña de encriptación de archivos de tu contraseña de inicio de sesión", "Encryption" => "Encriptación", +"File encryption is enabled." => "La encriptación de archivos no está habilitada", +"The following file types will not be encrypted:" => "Los siguientes tipos de archivos no serán encriptados", +"Exclude the following file types from encryption:" => "Excluir los siguientes tipos de archivos de encriptación:", "None" => "Ninguno" ); diff --git a/apps/files_encryption/l10n/eu.php b/apps/files_encryption/l10n/eu.php index a2368816f5..b4f7be2c84 100644 --- a/apps/files_encryption/l10n/eu.php +++ b/apps/files_encryption/l10n/eu.php @@ -1,5 +1,4 @@ "Mesedez egiaztatu zure pasahitza eta saia zaitez berriro:", "Encryption" => "Enkriptazioa", "None" => "Bat ere ez" ); diff --git a/apps/files_encryption/l10n/fa.php b/apps/files_encryption/l10n/fa.php index 2186c9025b..21ad7e5656 100644 --- a/apps/files_encryption/l10n/fa.php +++ b/apps/files_encryption/l10n/fa.php @@ -1,5 +1,4 @@ "لطفا گذرواژه خود را بررسی کنید و دوباره امتحان کنید.", "Encryption" => "رمزگذاری", "None" => "هیچ‌کدام" ); diff --git a/apps/files_encryption/l10n/fi_FI.php b/apps/files_encryption/l10n/fi_FI.php index 8a9dd30e67..1e1dc4a121 100644 --- a/apps/files_encryption/l10n/fi_FI.php +++ b/apps/files_encryption/l10n/fi_FI.php @@ -1,5 +1,4 @@ "Tarkista salasanasi ja yritä uudelleen.", "Encryption" => "Salaus", "None" => "Ei mitään" ); diff --git a/apps/files_encryption/l10n/fr.php b/apps/files_encryption/l10n/fr.php index 608778b2ec..88f1e4a393 100644 --- a/apps/files_encryption/l10n/fr.php +++ b/apps/files_encryption/l10n/fr.php @@ -1,9 +1,7 @@ "Veuillez vous connecter depuis votre client de synchronisation ownCloud et changer votre mot de passe de chiffrement pour finaliser la conversion.", -"switched to client side encryption" => "Mode de chiffrement changé en chiffrement côté client", -"Change encryption password to login password" => "Convertir le mot de passe de chiffrement en mot de passe de connexion", -"Please check your passwords and try again." => "Veuillez vérifier vos mots de passe et réessayer.", -"Could not change your file encryption password to your login password" => "Impossible de convertir votre mot de passe de chiffrement en mot de passe de connexion", "Encryption" => "Chiffrement", +"File encryption is enabled." => "Le chiffrement des fichiers est activé", +"The following file types will not be encrypted:" => "Les fichiers de types suivants ne seront pas chiffrés :", +"Exclude the following file types from encryption:" => "Ne pas chiffrer les fichiers dont les types sont les suivants :", "None" => "Aucun" ); diff --git a/apps/files_encryption/l10n/gl.php b/apps/files_encryption/l10n/gl.php index b240990f3d..3210f71545 100644 --- a/apps/files_encryption/l10n/gl.php +++ b/apps/files_encryption/l10n/gl.php @@ -1,4 +1,7 @@ "Cifrado", -"None" => "Nada" +"File encryption is enabled." => "O cifrado de ficheiros está activado", +"The following file types will not be encrypted:" => "Os seguintes tipos de ficheiros non van seren cifrados:", +"Exclude the following file types from encryption:" => "Excluír os seguintes tipos de ficheiros do cifrado:", +"None" => "Ningún" ); diff --git a/apps/files_encryption/l10n/hu_HU.php b/apps/files_encryption/l10n/hu_HU.php index fa62ae75fb..46f990bf38 100644 --- a/apps/files_encryption/l10n/hu_HU.php +++ b/apps/files_encryption/l10n/hu_HU.php @@ -1,9 +1,4 @@ "Kérjük, hogy váltson át az ownCloud kliensére, és változtassa meg a titkosítási jelszót az átalakítás befejezéséhez.", -"switched to client side encryption" => "átváltva a kliens oldalai titkosításra", -"Change encryption password to login password" => "Titkosítási jelszó módosítása a bejelentkezési jelszóra", -"Please check your passwords and try again." => "Kérjük, ellenőrizze a jelszavait, és próbálja meg újra.", -"Could not change your file encryption password to your login password" => "Nem módosíthatja a fájltitkosítási jelszavát a bejelentkezési jelszavára", "Encryption" => "Titkosítás", "None" => "Egyik sem" ); diff --git a/apps/files_encryption/l10n/it.php b/apps/files_encryption/l10n/it.php index ffa20b718d..9ab9bc492a 100644 --- a/apps/files_encryption/l10n/it.php +++ b/apps/files_encryption/l10n/it.php @@ -1,9 +1,4 @@ "Passa al tuo client ownCloud e cambia la password di cifratura per completare la conversione.", -"switched to client side encryption" => "passato alla cifratura lato client", -"Change encryption password to login password" => "Converti la password di cifratura nella password di accesso", -"Please check your passwords and try again." => "Controlla la password e prova ancora.", -"Could not change your file encryption password to your login password" => "Impossibile convertire la password di cifratura nella password di accesso", "Encryption" => "Cifratura", "File encryption is enabled." => "La cifratura dei file è abilitata.", "The following file types will not be encrypted:" => "I seguenti tipi di file non saranno cifrati:", diff --git a/apps/files_encryption/l10n/ja_JP.php b/apps/files_encryption/l10n/ja_JP.php index 8d3df1f06a..35fba615ae 100644 --- a/apps/files_encryption/l10n/ja_JP.php +++ b/apps/files_encryption/l10n/ja_JP.php @@ -1,9 +1,7 @@ "変換を完了するために、ownCloud クライアントに切り替えて、暗号化パスワードを変更してください。", -"switched to client side encryption" => "クライアントサイドの暗号化に切り替えました", -"Change encryption password to login password" => "暗号化パスワードをログインパスワードに変更", -"Please check your passwords and try again." => "パスワードを確認してもう一度行なってください。", -"Could not change your file encryption password to your login password" => "ファイル暗号化パスワードをログインパスワードに変更できませんでした。", "Encryption" => "暗号化", +"File encryption is enabled." => "ファイルの暗号化は有効です。", +"The following file types will not be encrypted:" => "次のファイルタイプは暗号化されません:", +"Exclude the following file types from encryption:" => "次のファイルタイプを暗号化から除外:", "None" => "なし" ); diff --git a/apps/files_encryption/l10n/ko.php b/apps/files_encryption/l10n/ko.php index 625906d89d..bd1580578c 100644 --- a/apps/files_encryption/l10n/ko.php +++ b/apps/files_encryption/l10n/ko.php @@ -1,9 +1,4 @@ "ownCloud로 전환한 다음 암호화에 사용할 암호를 변경하면 변환이 완료됩니다.", -"switched to client side encryption" => "클라이언트 암호화로 변경됨", -"Change encryption password to login password" => "암호화 암호를 로그인 암호로 변경", -"Please check your passwords and try again." => "암호를 확인한 다음 다시 시도하십시오.", -"Could not change your file encryption password to your login password" => "암호화 암호를 로그인 암호로 변경할 수 없습니다", "Encryption" => "암호화", "None" => "없음" ); diff --git a/apps/files_encryption/l10n/lv.php b/apps/files_encryption/l10n/lv.php index 1aae137751..fc31ccdb92 100644 --- a/apps/files_encryption/l10n/lv.php +++ b/apps/files_encryption/l10n/lv.php @@ -1,9 +1,4 @@ "Lūdzu, pārslēdzieties uz savu ownCloud klientu un maniet savu šifrēšanas paroli, lai pabeigtu pārveidošanu.", -"switched to client side encryption" => "Pārslēdzās uz klienta puses šifrēšanu", -"Change encryption password to login password" => "Mainīt šifrēšanas paroli uz ierakstīšanās paroli", -"Please check your passwords and try again." => "Lūdzu, pārbaudiet savas paroles un mēģiniet vēlreiz.", -"Could not change your file encryption password to your login password" => "Nevarēja mainīt datņu šifrēšanas paroli uz ierakstīšanās paroli", "Encryption" => "Šifrēšana", "File encryption is enabled." => "Datņu šifrēšana ir aktivēta.", "The following file types will not be encrypted:" => "Sekojošās datnes netiks šifrētas:", diff --git a/apps/files_encryption/l10n/nl.php b/apps/files_encryption/l10n/nl.php index fc8a7954a9..b1cba96aad 100644 --- a/apps/files_encryption/l10n/nl.php +++ b/apps/files_encryption/l10n/nl.php @@ -1,8 +1,7 @@ "overgeschakeld naar client side encryptie", -"Change encryption password to login password" => "Verander encryptie wachtwoord naar login wachtwoord", -"Please check your passwords and try again." => "Controleer uw wachtwoorden en probeer het opnieuw.", -"Could not change your file encryption password to your login password" => "Kon het bestandsencryptie wachtwoord niet veranderen naar het login wachtwoord", "Encryption" => "Versleuteling", +"File encryption is enabled." => "Bestandsversleuteling geactiveerd.", +"The following file types will not be encrypted:" => "De volgende bestandstypen zullen niet worden versleuteld:", +"Exclude the following file types from encryption:" => "Sluit de volgende bestandstypen uit van versleuteling:", "None" => "Geen" ); diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php index 356419e0e7..2b4af2a877 100644 --- a/apps/files_encryption/l10n/pt_BR.php +++ b/apps/files_encryption/l10n/pt_BR.php @@ -1,9 +1,4 @@ "Por favor, vá ao seu cliente ownCloud e mude sua criptografia de senha para completar a conversão.", -"switched to client side encryption" => "alterado para criptografia por parte do cliente", -"Change encryption password to login password" => "Mudar senha de criptografia para senha de login", -"Please check your passwords and try again." => "Por favor, verifique suas senhas e tente novamente.", -"Could not change your file encryption password to your login password" => "Não foi possível mudar sua senha de criptografia de arquivos para sua senha de login", "Encryption" => "Criptografia", "None" => "Nenhuma" ); diff --git a/apps/files_encryption/l10n/pt_PT.php b/apps/files_encryption/l10n/pt_PT.php index 4dac4d2273..1c46011fc1 100644 --- a/apps/files_encryption/l10n/pt_PT.php +++ b/apps/files_encryption/l10n/pt_PT.php @@ -1,9 +1,7 @@ "Por favor, use o seu cliente de sincronização do ownCloud e altere a sua password de encriptação para concluír a conversão.", -"switched to client side encryption" => "Alterado para encriptação do lado do cliente", -"Change encryption password to login password" => "Alterar a password de encriptação para a password de login", -"Please check your passwords and try again." => "Por favor verifique as suas paswords e tente de novo.", -"Could not change your file encryption password to your login password" => "Não foi possível alterar a password de encriptação de ficheiros para a sua password de login", "Encryption" => "Encriptação", +"File encryption is enabled." => "A encriptação de ficheiros está ligada", +"The following file types will not be encrypted:" => "Os seguintes ficheiros não serão encriptados:", +"Exclude the following file types from encryption:" => "Excluir da encriptação os seguintes tipos de ficheiro:", "None" => "Nenhum" ); diff --git a/apps/files_encryption/l10n/ro.php b/apps/files_encryption/l10n/ro.php index 9a3acc18dd..a5a6fb3cb7 100644 --- a/apps/files_encryption/l10n/ro.php +++ b/apps/files_encryption/l10n/ro.php @@ -1,9 +1,4 @@ "Te rugăm să mergi în clientul ownCloud și să schimbi parola pentru a finisa conversia", -"switched to client side encryption" => "setat la encriptare locală", -"Change encryption password to login password" => "Schimbă parola de ecriptare în parolă de acces", -"Please check your passwords and try again." => "Verifică te rog parolele și înceracă din nou.", -"Could not change your file encryption password to your login password" => "Nu s-a putut schimba parola de encripție a fișierelor ca parolă de acces", "Encryption" => "Încriptare", "None" => "Niciuna" ); diff --git a/apps/files_encryption/l10n/ru.php b/apps/files_encryption/l10n/ru.php index c11cf74ecf..22c1e3da37 100644 --- a/apps/files_encryption/l10n/ru.php +++ b/apps/files_encryption/l10n/ru.php @@ -1,4 +1,7 @@ "Шифрование", +"File encryption is enabled." => "Шифрование файла включено.", +"The following file types will not be encrypted:" => "Следующие типы файлов не будут зашифрованы:", +"Exclude the following file types from encryption:" => "Исключить следующие типы файлов из шифрованных:", "None" => "Ничего" ); diff --git a/apps/files_encryption/l10n/ru_RU.php b/apps/files_encryption/l10n/ru_RU.php index dbbb22ed9c..7222235485 100644 --- a/apps/files_encryption/l10n/ru_RU.php +++ b/apps/files_encryption/l10n/ru_RU.php @@ -1,7 +1,4 @@ "Пожалуйста, переключитесь на ownCloud-клиент и измените Ваш пароль шифрования для завершения конвертации.", -"switched to client side encryption" => "переключено на шифрование на клиентской стороне", -"Please check your passwords and try again." => "Пожалуйста, проверьте Ваш пароль и попробуйте снова", "Encryption" => "Шифрование", "None" => "Ни один" ); diff --git a/apps/files_encryption/l10n/sk_SK.php b/apps/files_encryption/l10n/sk_SK.php index 3a1e4c7e19..bebb623471 100644 --- a/apps/files_encryption/l10n/sk_SK.php +++ b/apps/files_encryption/l10n/sk_SK.php @@ -1,9 +1,7 @@ "Prosím, prejdite do svojho klienta ownCloud a zmente šifrovacie heslo na dokončenie konverzie.", -"switched to client side encryption" => "prepnuté na šifrovanie prostredníctvom klienta", -"Change encryption password to login password" => "Zmeniť šifrovacie heslo na prihlasovacie", -"Please check your passwords and try again." => "Skontrolujte si heslo a skúste to znovu.", -"Could not change your file encryption password to your login password" => "Nie je možné zmeniť šifrovacie heslo na prihlasovacie", "Encryption" => "Šifrovanie", +"File encryption is enabled." => "Šifrovanie súborov nastavené.", +"The following file types will not be encrypted:" => "Uvedené typy súborov nebudú šifrované:", +"Exclude the following file types from encryption:" => "Nešifrovať uvedené typy súborov", "None" => "Žiadne" ); diff --git a/apps/files_encryption/l10n/sv.php b/apps/files_encryption/l10n/sv.php index e5294974e4..e214a937a1 100644 --- a/apps/files_encryption/l10n/sv.php +++ b/apps/files_encryption/l10n/sv.php @@ -1,9 +1,4 @@ "Vänligen växla till ownCloud klienten och ändra ditt krypteringslösenord för att slutföra omvandlingen.", -"switched to client side encryption" => "Bytte till kryptering på klientsidan", -"Change encryption password to login password" => "Ändra krypteringslösenord till loginlösenord", -"Please check your passwords and try again." => "Kontrollera dina lösenord och försök igen.", -"Could not change your file encryption password to your login password" => "Kunde inte ändra ditt filkrypteringslösenord till ditt loginlösenord", "Encryption" => "Kryptering", "File encryption is enabled." => "Filkryptering är aktiverat.", "The following file types will not be encrypted:" => "Följande filtyper kommer inte att krypteras:", diff --git a/apps/files_encryption/l10n/th_TH.php b/apps/files_encryption/l10n/th_TH.php index 28d9e30864..e46d249118 100644 --- a/apps/files_encryption/l10n/th_TH.php +++ b/apps/files_encryption/l10n/th_TH.php @@ -1,9 +1,4 @@ "กรุณาสลับไปที่โปรแกรมไคลเอนต์ ownCloud ของคุณ แล้วเปลี่ยนรหัสผ่านสำหรับการเข้ารหัสเพื่อแปลงข้อมูลให้เสร็จสมบูรณ์", -"switched to client side encryption" => "สลับไปใช้การเข้ารหัสจากโปรแกรมไคลเอนต์", -"Change encryption password to login password" => "เปลี่ยนรหัสผ่านสำหรับเข้ารหัสไปเป็นรหัสผ่านสำหรับการเข้าสู่ระบบ", -"Please check your passwords and try again." => "กรุณาตรวจสอบรหัสผ่านของคุณแล้วลองใหม่อีกครั้ง", -"Could not change your file encryption password to your login password" => "ไม่สามารถเปลี่ยนรหัสผ่านสำหรับการเข้ารหัสไฟล์ของคุณไปเป็นรหัสผ่านสำหรับการเข้าสู่ระบบของคุณได้", "Encryption" => "การเข้ารหัส", "None" => "ไม่ต้อง" ); diff --git a/apps/files_encryption/l10n/vi.php b/apps/files_encryption/l10n/vi.php index b86cd83978..0a88d1b2db 100644 --- a/apps/files_encryption/l10n/vi.php +++ b/apps/files_encryption/l10n/vi.php @@ -1,4 +1,7 @@ "Mã hóa", +"File encryption is enabled." => "Mã hóa file đã mở", +"The following file types will not be encrypted:" => "Loại file sau sẽ không được mã hóa", +"Exclude the following file types from encryption:" => "Việc mã hóa không bao gồm loại file sau", "None" => "Không có gì hết" ); diff --git a/apps/files_encryption/l10n/zh_TW.php b/apps/files_encryption/l10n/zh_TW.php index bd8257ed60..1655e17143 100644 --- a/apps/files_encryption/l10n/zh_TW.php +++ b/apps/files_encryption/l10n/zh_TW.php @@ -1,9 +1,4 @@ "請至您的 ownCloud 客戶端程式修改您的加密密碼以完成轉換。", -"switched to client side encryption" => "已切換為客戶端加密", -"Change encryption password to login password" => "將加密密碼修改為登入密碼", -"Please check your passwords and try again." => "請檢查您的密碼並再試一次。", -"Could not change your file encryption password to your login password" => "無法變更您的檔案加密密碼為登入密碼", "Encryption" => "加密", "None" => "無" ); diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index d00f71b614..c7a414c508 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -4,8 +4,8 @@ * ownCloud * * @author Sam Tuke, Frank Karlitschek, Robin Appelman - * @copyright 2012 Sam Tuke samtuke@owncloud.com, - * Robin Appelman icewind@owncloud.com, Frank Karlitschek + * @copyright 2012 Sam Tuke samtuke@owncloud.com, + * Robin Appelman icewind@owncloud.com, Frank Karlitschek * frank@owncloud.org * * This library is free software; you can redistribute it and/or @@ -47,15 +47,15 @@ class Crypt { public static function mode( $user = null ) { return 'server'; - + } - - /** - * @brief Create a new encryption keypair - * @return array publicKey, privatekey - */ + + /** + * @brief Create a new encryption keypair + * @return array publicKey, privatekey + */ public static function createKeypair() { - + $res = openssl_pkey_new(); // Get private key @@ -63,570 +63,543 @@ class Crypt { // Get public key $publicKey = openssl_pkey_get_details( $res ); - + $publicKey = $publicKey['key']; - + return( array( 'publicKey' => $publicKey, 'privateKey' => $privateKey ) ); - + } - - /** - * @brief Add arbitrary padding to encrypted data - * @param string $data data to be padded - * @return padded data - * @note In order to end up with data exactly 8192 bytes long we must - * add two letters. It is impossible to achieve exactly 8192 length - * blocks with encryption alone, hence padding is added to achieve the - * required length. - */ + + /** + * @brief Add arbitrary padding to encrypted data + * @param string $data data to be padded + * @return padded data + * @note In order to end up with data exactly 8192 bytes long we must + * add two letters. It is impossible to achieve exactly 8192 length + * blocks with encryption alone, hence padding is added to achieve the + * required length. + */ public static function addPadding( $data ) { - + $padded = $data . 'xx'; - + return $padded; - + } - - /** - * @brief Remove arbitrary padding to encrypted data - * @param string $padded padded data to remove padding from - * @return unpadded data on success, false on error - */ + + /** + * @brief Remove arbitrary padding to encrypted data + * @param string $padded padded data to remove padding from + * @return unpadded data on success, false on error + */ public static function removePadding( $padded ) { - + if ( substr( $padded, -2 ) == 'xx' ) { - + $data = substr( $padded, 0, -2 ); - + return $data; - + } else { - + // TODO: log the fact that unpadded data was submitted for removal of padding return false; - + } - + } - - /** - * @brief Check if a file's contents contains an IV and is symmetrically encrypted - * @return true / false - * @note see also OCA\Encryption\Util->isEncryptedPath() - */ + + /** + * @brief Check if a file's contents contains an IV and is symmetrically encrypted + * @return true / false + * @note see also OCA\Encryption\Util->isEncryptedPath() + */ public static function isCatfile( $content ) { - + + if ( !$content ) { + + return false; + + } + $noPadding = self::removePadding( $content ); - + // Fetch encryption metadata from end of file $meta = substr( $noPadding, -22 ); - + // Fetch IV from end of file $iv = substr( $meta, -16 ); - + // Fetch identifier from start of metadata $identifier = substr( $meta, 0, 6 ); - + if ( $identifier == '00iv00') { - + return true; - + } else { - + return false; - + } - + } - + /** * Check if a file is encrypted according to database file cache * @param string $path * @return bool */ public static function isEncryptedMeta( $path ) { - + // TODO: Use DI to get \OC\Files\Filesystem out of here - + // Fetch all file metadata from DB $metadata = \OC\Files\Filesystem::getFileInfo( $path, '' ); - + // Return encryption status return isset( $metadata['encrypted'] ) and ( bool )$metadata['encrypted']; - + } - - /** - * @brief Check if a file is encrypted via legacy system - * @param string $relPath The path of the file, relative to user/data; - * e.g. filename or /Docs/filename, NOT admin/files/filename - * @return true / false - */ + + /** + * @brief Check if a file is encrypted via legacy system + * @param string $relPath The path of the file, relative to user/data; + * e.g. filename or /Docs/filename, NOT admin/files/filename + * @return true / false + */ public static function isLegacyEncryptedContent( $data, $relPath ) { - + // Fetch all file metadata from DB $metadata = \OC\Files\Filesystem::getFileInfo( $relPath, '' ); - + // If a file is flagged with encryption in DB, but isn't a // valid content + IV combination, it's probably using the // legacy encryption system - if ( - isset( $metadata['encrypted'] ) - and $metadata['encrypted'] === true - and ! self::isCatfile( $data ) + if ( + isset( $metadata['encrypted'] ) + and $metadata['encrypted'] === true + and ! self::isCatfile( $data ) ) { - + return true; - + } else { - + return false; - + } - + } - - /** - * @brief Symmetrically encrypt a string - * @returns encrypted file - */ + + /** + * @brief Symmetrically encrypt a string + * @returns encrypted file + */ public static function encrypt( $plainContent, $iv, $passphrase = '' ) { - + if ( $encryptedContent = openssl_encrypt( $plainContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { return $encryptedContent; - + } else { - + \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of content failed', \OC_Log::ERROR ); - + return false; - + } - + } - - /** - * @brief Symmetrically decrypt a string - * @returns decrypted file - */ + + /** + * @brief Symmetrically decrypt a string + * @returns decrypted file + */ public static function decrypt( $encryptedContent, $iv, $passphrase ) { - + if ( $plainContent = openssl_decrypt( $encryptedContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { return $plainContent; - - + + } else { - + throw new \Exception( 'Encryption library: Decryption (symmetric) of content failed' ); - - return false; - + } - + } - - /** - * @brief Concatenate encrypted data with its IV and padding - * @param string $content content to be concatenated - * @param string $iv IV to be concatenated - * @returns string concatenated content - */ + + /** + * @brief Concatenate encrypted data with its IV and padding + * @param string $content content to be concatenated + * @param string $iv IV to be concatenated + * @returns string concatenated content + */ public static function concatIv ( $content, $iv ) { - + $combined = $content . '00iv00' . $iv; - + return $combined; - + } - - /** - * @brief Split concatenated data and IV into respective parts - * @param string $catFile concatenated data to be split - * @returns array keys: encrypted, iv - */ + + /** + * @brief Split concatenated data and IV into respective parts + * @param string $catFile concatenated data to be split + * @returns array keys: encrypted, iv + */ public static function splitIv ( $catFile ) { - + // Fetch encryption metadata from end of file $meta = substr( $catFile, -22 ); - + // Fetch IV from end of file $iv = substr( $meta, -16 ); - + // Remove IV and IV identifier text to expose encrypted content $encrypted = substr( $catFile, 0, -22 ); - + $split = array( 'encrypted' => $encrypted - , 'iv' => $iv + , 'iv' => $iv ); - + return $split; - + } - - /** - * @brief Symmetrically encrypts a string and returns keyfile content - * @param $plainContent content to be encrypted in keyfile - * @returns encrypted content combined with IV - * @note IV need not be specified, as it will be stored in the returned keyfile - * and remain accessible therein. - */ + + /** + * @brief Symmetrically encrypts a string and returns keyfile content + * @param $plainContent content to be encrypted in keyfile + * @returns encrypted content combined with IV + * @note IV need not be specified, as it will be stored in the returned keyfile + * and remain accessible therein. + */ public static function symmetricEncryptFileContent( $plainContent, $passphrase = '' ) { - + if ( !$plainContent ) { - + 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; - + + // Combine content to encrypt with IV identifier and actual IV + $catfile = self::concatIv( $encryptedContent, $iv ); + + $padded = self::addPadding( $catfile ); + + return $padded; + } else { - + \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of keyfile content failed', \OC_Log::ERROR ); - + return false; - + } - + } /** - * @brief Symmetrically decrypts keyfile content - * @param string $source - * @param string $target - * @param string $key the decryption key - * @returns decrypted content - * - * This function decrypts a file - */ + * @brief Symmetrically decrypts keyfile content + * @param string $source + * @param string $target + * @param string $key the decryption key + * @returns decrypted content + * + * This function decrypts a file + */ public static function symmetricDecryptFileContent( $keyfileContent, $passphrase = '' ) { - + if ( !$keyfileContent ) { - + throw new \Exception( 'Encryption library: no data provided for decryption' ); - + } - + // Remove padding $noPadding = self::removePadding( $keyfileContent ); - + // Split into enc data and catfile $catfile = self::splitIv( $noPadding ); - + if ( $plainContent = self::decrypt( $catfile['encrypted'], $catfile['iv'], $passphrase ) ) { - + return $plainContent; - + } - + } - + /** - * @brief Creates symmetric keyfile content using a generated key - * @param string $plainContent content to be encrypted - * @returns array keys: key, encrypted - * @note symmetricDecryptFileContent() can be used to decrypt files created using this method - * - * This function decrypts a file - */ + * @brief Creates symmetric keyfile content using a generated key + * @param string $plainContent content to be encrypted + * @returns array keys: key, encrypted + * @note symmetricDecryptFileContent() can be used to decrypt files created using this method + * + * This function decrypts a file + */ public static function symmetricEncryptFileContentKeyfile( $plainContent ) { - + $key = self::generateKey(); - + if( $encryptedContent = self::symmetricEncryptFileContent( $plainContent, $key ) ) { - + return array( 'key' => $key - , 'encrypted' => $encryptedContent + , 'encrypted' => $encryptedContent ); - + } else { - + return false; - + } - + } - + /** - * @brief Create asymmetrically encrypted keyfile content using a generated key - * @param string $plainContent content to be encrypted - * @returns array keys: key, encrypted - * @note symmetricDecryptFileContent() can be used to decrypt files created using this method - * - * This function decrypts a file - */ + * @brief Create asymmetrically encrypted keyfile content using a generated key + * @param string $plainContent content to be encrypted + * @returns array keys: key, encrypted + * @note symmetricDecryptFileContent() can be used to decrypt files created using this method + * + * This function decrypts a file + */ public static function multiKeyEncrypt( $plainContent, array $publicKeys ) { - + // Set empty vars to be set by openssl by reference $sealed = ''; $envKeys = array(); - + if( openssl_seal( $plainContent, $sealed, $envKeys, $publicKeys ) ) { - + return array( 'keys' => $envKeys - , 'encrypted' => $sealed + , 'encrypted' => $sealed ); - + } else { - + return false; - + } - - } - - /** - * @brief Asymmetrically encrypt a file using multiple public keys - * @param string $plainContent content to be encrypted - * @returns string $plainContent decrypted string - * @note symmetricDecryptFileContent() can be used to decrypt files created using this method - * - * This function decrypts a file - */ - public static function multiKeyDecrypt( $encryptedContent, $envKey, $privateKey ) { - - if ( !$encryptedContent ) { - - return false; - - } - - if ( openssl_open( $encryptedContent, $plainContent, $envKey, $privateKey ) ) { - - return $plainContent; - - } else { - - \OC_Log::write( 'Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR ); - - return false; - - } - - } - - /** - * @brief Asymetrically encrypt a string using a public key - * @returns encrypted file - */ - public static function keyEncrypt( $plainContent, $publicKey ) { - - openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); - - return $encryptedContent; - - } - - /** - * @brief Asymetrically decrypt a file using a private key - * @returns decrypted file - */ - public static function keyDecrypt( $encryptedContent, $privatekey ) { - - openssl_private_decrypt( $encryptedContent, $plainContent, $privatekey ); - - return $plainContent; - + } - /** - * @brief Encrypts content symmetrically and generates keyfile asymmetrically - * @returns array containing catfile and new keyfile. - * keys: data, key - * @note this method is a wrapper for combining other crypt class methods - */ + /** + * @brief Asymmetrically encrypt a file using multiple public keys + * @param string $plainContent content to be encrypted + * @returns string $plainContent decrypted string + * @note symmetricDecryptFileContent() can be used to decrypt files created using this method + * + * This function decrypts a file + */ + public static function multiKeyDecrypt( $encryptedContent, $envKey, $privateKey ) { + + if ( !$encryptedContent ) { + + return false; + + } + + if ( openssl_open( $encryptedContent, $plainContent, $envKey, $privateKey ) ) { + + return $plainContent; + + } else { + + \OC_Log::write( 'Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR ); + + return false; + + } + + } + + /** + * @brief Asymmetrically encrypt a string using a public key + * @returns encrypted file + */ + public static function keyEncrypt( $plainContent, $publicKey ) { + + openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); + + return $encryptedContent; + + } + + /** + * @brief Asymetrically decrypt a file using a private key + * @returns decrypted file + */ + public static function keyDecrypt( $encryptedContent, $privatekey ) { + + openssl_private_decrypt( $encryptedContent, $plainContent, $privatekey ); + + return $plainContent; + + } + + /** + * @brief Encrypts content symmetrically and generates keyfile asymmetrically + * @returns array containing catfile and new keyfile. + * keys: data, key + * @note this method is a wrapper for combining other crypt class methods + */ public static function keyEncryptKeyfile( $plainContent, $publicKey ) { - + // Encrypt plain data, generate keyfile & encrypted file $cryptedData = self::symmetricEncryptFileContentKeyfile( $plainContent ); - + // Encrypt keyfile $cryptedKey = self::keyEncrypt( $cryptedData['key'], $publicKey ); - + return array( 'data' => $cryptedData['encrypted'], 'key' => $cryptedKey ); - + } - - /** - * @brief Takes catfile, keyfile, and private key, and - * performs decryption - * @returns decrypted content - * @note this method is a wrapper for combining other crypt class methods - */ + + /** + * @brief Takes catfile, keyfile, and private key, and + * performs decryption + * @returns decrypted content + * @note this method is a wrapper for combining other crypt class methods + */ public static function keyDecryptKeyfile( $catfile, $keyfile, $privateKey ) { - + // Decrypt the keyfile with the user's private key $decryptedKeyfile = self::keyDecrypt( $keyfile, $privateKey ); - + // Decrypt the catfile symmetrically using the decrypted keyfile $decryptedData = self::symmetricDecryptFileContent( $catfile, $decryptedKeyfile ); - + return $decryptedData; - + } - + /** - * @brief Symmetrically encrypt a file by combining encrypted component data blocks - */ + * @brief Symmetrically encrypt a file by combining encrypted component data blocks + */ public static function symmetricBlockEncryptFileContent( $plainContent, $key ) { - + $crypted = ''; - + $remaining = $plainContent; - + $testarray = array(); - + while( strlen( $remaining ) ) { - + //echo "\n\n\$block = ".substr( $remaining, 0, 6126 ); - + // Encrypt a chunk of unencrypted data and add it to the rest $block = self::symmetricEncryptFileContent( substr( $remaining, 0, 6126 ), $key ); - + $padded = self::addPadding( $block ); - + $crypted .= $block; - + $testarray[] = $block; - + // Remove the data already encrypted from remaining unencrypted data $remaining = substr( $remaining, 6126 ); - + } - - //echo "hags "; - - //echo "\n\n\n\$crypted = $crypted\n\n\n"; - - //print_r($testarray); - + return $crypted; } /** - * @brief Symmetrically decrypt a file by combining encrypted component data blocks - */ + * @brief Symmetrically decrypt a file by combining encrypted component data blocks + */ public static function symmetricBlockDecryptFileContent( $crypted, $key ) { - + $decrypted = ''; - + $remaining = $crypted; - + $testarray = array(); - + while( strlen( $remaining ) ) { - + $testarray[] = substr( $remaining, 0, 8192 ); - + // Decrypt a chunk of unencrypted data and add it to the rest $decrypted .= self::symmetricDecryptFileContent( $remaining, $key ); - + // Remove the data already encrypted from remaining unencrypted data $remaining = substr( $remaining, 8192 ); - + } - - //echo "\n\n\$testarray = "; print_r($testarray); - + return $decrypted; - + } - - /** - * @brief Generates a pseudo random initialisation vector - * @return String $iv generated IV - */ + + /** + * @brief Generates a pseudo random initialisation vector + * @return String $iv generated IV + */ public static function generateIv() { - + if ( $random = openssl_random_pseudo_bytes( 12, $strong ) ) { - + if ( !$strong ) { - + // If OpenSSL indicates randomness is insecure, log error \OC_Log::write( 'Encryption library', 'Insecure symmetric key was generated using openssl_random_pseudo_bytes()', \OC_Log::WARN ); - + } - + // We encode the iv purely for string manipulation // purposes - it gets decoded before use $iv = base64_encode( $random ); - + return $iv; - + } else { - - throw new Exception( 'Generating IV failed' ); - + + throw new \Exception( 'Generating IV failed' ); + } - + } - - /** - * @brief Generate a pseudo random 1024kb ASCII key - * @returns $key Generated key - */ + + /** + * @brief Generate a pseudo random 1024kb ASCII key + * @returns $key Generated key + */ public static function generateKey() { - + // Generate key if ( $key = base64_encode( openssl_random_pseudo_bytes( 183, $strong ) ) ) { - + if ( !$strong ) { - + // If OpenSSL indicates randomness is insecure, log error - throw new Exception ( 'Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()' ); - + throw new \Exception ( 'Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()' ); + } - + return $key; - + } else { - + return false; - + } - + } - public static function changekeypasscode( $oldPassword, $newPassword ) { - - if ( \OCP\User::isLoggedIn() ) { - - $key = Keymanager::getPrivateKey( $user, $view ); - - if ( ( $key = Crypt::symmetricDecryptFileContent($key,$oldpasswd) ) ) { - - if ( ( $key = Crypt::symmetricEncryptFileContent( $key, $newpasswd ) ) ) { - - Keymanager::setPrivateKey( $key ); - - return true; - } - - } - - } - - return false; - - } - /** * @brief Get the blowfish encryption handeler for a key * @param $key string (optional) @@ -635,21 +608,21 @@ class Crypt { * if the key is left out, the default handeler will be used */ public static function getBlowfish( $key = '' ) { - + if ( $key ) { - + return new \Crypt_Blowfish( $key ); - + } else { - + return false; - + } - + } - + public static function legacyCreateKey( $passphrase ) { - + // Generate a random integer $key = mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ); @@ -657,9 +630,9 @@ class Crypt { $legacyEncKey = self::legacyEncrypt( $key, $passphrase ); return $legacyEncKey; - + } - + /** * @brief encrypts content using legacy blowfish system * @param $content the cleartext message you want to encrypt @@ -669,54 +642,54 @@ class Crypt { * This function encrypts an content */ public static function legacyEncrypt( $content, $passphrase = '' ) { - + $bf = self::getBlowfish( $passphrase ); - + return $bf->encrypt( $content ); - + } - + /** - * @brief decrypts content using legacy blowfish system - * @param $content the cleartext message you want to decrypt - * @param $key the encryption key (optional) - * @returns cleartext content - * - * This function decrypts an content - */ + * @brief decrypts content using legacy blowfish system + * @param $content the cleartext message you want to decrypt + * @param $key the encryption key (optional) + * @returns cleartext content + * + * This function decrypts an content + */ public static function legacyDecrypt( $content, $passphrase = '' ) { - + $bf = self::getBlowfish( $passphrase ); - + $decrypted = $bf->decrypt( $content ); - + $trimmed = rtrim( $decrypted, "\0" ); - + return $trimmed; - + } - + public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKey, $newPassphrase ) { - + $decrypted = self::legacyDecrypt( $legacyEncryptedContent, $legacyPassphrase ); - + $recrypted = self::keyEncryptKeyfile( $decrypted, $publicKey ); - + return $recrypted; - + } - + /** - * @brief Re-encryptes a legacy blowfish encrypted file using AES with integrated IV - * @param $legacyContent the legacy encrypted content to re-encrypt - * @returns cleartext content - * - * This function decrypts an content - */ + * @brief Re-encryptes a legacy blowfish encrypted file using AES with integrated IV + * @param $legacyContent the legacy encrypted content to re-encrypt + * @returns cleartext content + * + * This function decrypts an content + */ public static function legacyRecrypt( $legacyContent, $legacyPassphrase, $newPassphrase ) { - + // TODO: write me - + } - + } \ No newline at end of file diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 43af70dacc..9558779715 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -1,325 +1,323 @@ - - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see . - * - */ - -namespace OCA\Encryption; - -/** - * @brief Class to manage storage and retrieval of encryption keys - * @note Where a method requires a view object, it's root must be '/' - */ -class Keymanager { - - /** - * @brief retrieve the ENCRYPTED private key from a user - * - * @return string private key or false - * @note the key returned by this method must be decrypted before use - */ - public static function getPrivateKey( \OC_FilesystemView $view, $user ) { - - $path = '/' . $user . '/' . 'files_encryption' . '/' . $user.'.private.key'; - - $key = $view->file_get_contents( $path ); - - return $key; - } - - /** - * @brief retrieve public key for a specified user - * @return string public key or false - */ - public static function getPublicKey( \OC_FilesystemView $view, $userId ) { - - return $view->file_get_contents( '/public-keys/' . '/' . $userId . '.public.key' ); - - } - - /** - * @brief retrieve both keys from a user (private and public) - * @return array keys: privateKey, publicKey - */ - public static function getUserKeys( \OC_FilesystemView $view, $userId ) { - - return array( - 'publicKey' => self::getPublicKey( $view, $userId ) - , 'privateKey' => self::getPrivateKey( $view, $userId ) - ); - - } - - /** - * @brief Retrieve public keys of all users with access to a file - * @param string $path Path to file - * @return array of public keys for the given file - * @note Checks that the sharing app is enabled should be performed - * by client code, that isn't checked here - */ - public static function getPublicKeys( \OC_FilesystemView $view, $userId, $filePath ) { - - $path = ltrim( $path, '/' ); - - $filepath = '/' . $userId . '/files/' . $filePath; - - // Check if sharing is enabled - if ( OC_App::isEnabled( 'files_sharing' ) ) { - - - - } else { - - // check if it is a file owned by the user and not shared at all - $userview = new \OC_FilesystemView( '/'.$userId.'/files/' ); - - if ( $userview->file_exists( $path ) ) { - - $users[] = $userId; - - } - - } - - $view = new \OC_FilesystemView( '/public-keys/' ); - - $keylist = array(); - - $count = 0; - - foreach ( $users as $user ) { - - $keylist['key'.++$count] = $view->file_get_contents( $user.'.public.key' ); - - } - - return $keylist; - - } - - /** - * @brief store file encryption key - * - * @param string $path relative path of the file, including filename - * @param string $key - * @return bool true/false - * @note The keyfile is not encrypted here. Client code must - * asymmetrically encrypt the keyfile before passing it to this method - */ - public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { - - $basePath = '/' . $userId . '/files_encryption/keyfiles'; - - $targetPath = self::keySetPreparation( $view, $path, $basePath, $userId ); - - if ( $view->is_dir( $basePath . '/' . $targetPath ) ) { - - - - } else { - - // Save the keyfile in parallel directory - return $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); - - } - - } - - /** - * @brief retrieve keyfile for an encrypted file - * @param string file name - * @return string file key or false on failure - * @note The keyfile returned is asymmetrically encrypted. Decryption - * of the keyfile must be performed by client code - */ - public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { - - $filePath_f = ltrim( $filePath, '/' ); - - $catfilePath = '/' . $userId . '/files_encryption/keyfiles/' . $filePath_f . '.key'; - - if ( $view->file_exists( $catfilePath ) ) { - - return $view->file_get_contents( $catfilePath ); - - } else { - - return false; - - } - - } - - /** - * @brief Delete a keyfile - * - * @param OC_FilesystemView $view - * @param string $userId username - * @param string $path path of the file the key belongs to - * @return bool Outcome of unlink operation - * @note $path must be relative to data/user/files. e.g. mydoc.txt NOT - * /data/admin/files/mydoc.txt - */ - public static function deleteFileKey( \OC_FilesystemView $view, $userId, $path ) { - - $trimmed = ltrim( $path, '/' ); - $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed . '.key'; - - // Unlink doesn't tell us if file was deleted (not found returns - // true), so we perform our own test - if ( $view->file_exists( $keyPath ) ) { - - return $view->unlink( $keyPath ); - - } else { - - \OC_Log::write( 'Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR ); - - return false; - - } - - } - - /** - * @brief store private key from the user - * @param string key - * @return bool - * @note Encryption of the private key must be performed by client code - * as no encryption takes place here - */ - public static function setPrivateKey( $key ) { - - $user = \OCP\User::getUser(); - - $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); - - \OC_FileProxy::$enabled = false; - - if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); - - return $view->file_put_contents( $user . '.private.key', $key ); - - \OC_FileProxy::$enabled = true; - - } - - /** - * @brief store private keys from the user - * - * @param string privatekey - * @param string publickey - * @return bool true/false - */ - public static function setUserKeys($privatekey, $publickey) { - - return ( self::setPrivateKey( $privatekey ) && self::setPublicKey( $publickey ) ); - - } - - /** - * @brief store public key of the user - * - * @param string key - * @return bool true/false - */ - public static function setPublicKey( $key ) { - - $view = new \OC_FilesystemView( '/public-keys' ); - - \OC_FileProxy::$enabled = false; - - if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); - - return $view->file_put_contents( \OCP\User::getUser() . '.public.key', $key ); - - \OC_FileProxy::$enabled = true; - - } - - /** - * @note 'shareKey' is a more user-friendly name for env_key - */ - public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { - - $basePath = '/' . $userId . '/files_encryption/share-keys'; - - $shareKeyPath = self::keySetPreparation( $view, $path, $basePath, $userId ); - - return $view->file_put_contents( $basePath . '/' . $shareKeyPath . '.shareKey', $shareKey ); - - } - - /** - * @brief Make preparations to vars and filesystem for saving a keyfile - */ - public static function keySetPreparation( \OC_FilesystemView $view, $path, $basePath, $userId ) { - - $targetPath = ltrim( $path, '/' ); - - $path_parts = pathinfo( $targetPath ); - - // If the file resides within a subdirectory, create it - if ( - isset( $path_parts['dirname'] ) - && ! $view->file_exists( $basePath . '/' . $path_parts['dirname'] ) - ) { - - $view->mkdir( $basePath . '/' . $path_parts['dirname'] ); - - } - - return $targetPath; - - } - - /** - * @brief change password of private encryption key - * - * @param string $oldpasswd old password - * @param string $newpasswd new password - * @return bool true/false - */ - public static function changePasswd($oldpasswd, $newpasswd) { - - if ( \OCP\User::checkPassword(\OCP\User::getUser(), $newpasswd) ) { - return Crypt::changekeypasscode($oldpasswd, $newpasswd); - } - return false; - - } - - /** - * @brief Fetch the legacy encryption key from user files - * @param string $login used to locate the legacy key - * @param string $passphrase used to decrypt the legacy key - * @return true / false - * - * if the key is left out, the default handeler will be used - */ - public function getLegacyKey() { - - $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView( '/' . $user ); - return $view->file_get_contents( 'encryption.key' ); - - } - + + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see . + * + */ + +namespace OCA\Encryption; + +/** + * @brief Class to manage storage and retrieval of encryption keys + * @note Where a method requires a view object, it's root must be '/' + */ +class Keymanager { + + /** + * @brief retrieve the ENCRYPTED private key from a user + * + * @return string private key or false + * @note the key returned by this method must be decrypted before use + */ + public static function getPrivateKey( \OC_FilesystemView $view, $user ) { + + $path = '/' . $user . '/' . 'files_encryption' . '/' . $user.'.private.key'; + + $key = $view->file_get_contents( $path ); + + return $key; + } + + /** + * @brief retrieve public key for a specified user + * @param \OC_FilesystemView $view + * @param $userId + * @return string public key or false + */ + public static function getPublicKey( \OC_FilesystemView $view, $userId ) { + + return $view->file_get_contents( '/public-keys/' . '/' . $userId . '.public.key' ); + + } + + /** + * @brief retrieve both keys from a user (private and public) + * @param \OC_FilesystemView $view + * @param $userId + * @return array keys: privateKey, publicKey + */ + public static function getUserKeys( \OC_FilesystemView $view, $userId ) { + + return array( + 'publicKey' => self::getPublicKey( $view, $userId ) + , 'privateKey' => self::getPrivateKey( $view, $userId ) + ); + + } + + /** + * @brief Retrieve public keys of all users with access to a file + * @param string $path Path to file + * @return array of public keys for the given file + * @note Checks that the sharing app is enabled should be performed + * by client code, that isn't checked here + */ + public static function getPublicKeys( \OC_FilesystemView $view, $userId, $filePath ) { + + $path = ltrim( $path, '/' ); + + $filepath = '/' . $userId . '/files/' . $filePath; + + // Check if sharing is enabled + if ( OC_App::isEnabled( 'files_sharing' ) ) { + + + + } else { + + // check if it is a file owned by the user and not shared at all + $userview = new \OC_FilesystemView( '/'.$userId.'/files/' ); + + if ( $userview->file_exists( $path ) ) { + + $users[] = $userId; + + } + + } + + $view = new \OC_FilesystemView( '/public-keys/' ); + + $keylist = array(); + + $count = 0; + + foreach ( $users as $user ) { + + $keylist['key'.++$count] = $view->file_get_contents( $user.'.public.key' ); + + } + + return $keylist; + + } + + /** + * @brief store file encryption key + * + * @param string $path relative path of the file, including filename + * @param string $key + * @return bool true/false + * @note The keyfile is not encrypted here. Client code must + * asymmetrically encrypt the keyfile before passing it to this method + */ + public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { + + $basePath = '/' . $userId . '/files_encryption/keyfiles'; + + $targetPath = self::keySetPreparation( $view, $path, $basePath, $userId ); + + if ( $view->is_dir( $basePath . '/' . $targetPath ) ) { + + + + } else { + + // Save the keyfile in parallel directory + return $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); + + } + + } + + /** + * @brief retrieve keyfile for an encrypted file + * @param \OC_FilesystemView $view + * @param $userId + * @param $filePath + * @internal param \OCA\Encryption\file $string name + * @return string file key or false + * @note The keyfile returned is asymmetrically encrypted. Decryption + * of the keyfile must be performed by client code + */ + public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { + + $filePath_f = ltrim( $filePath, '/' ); + + $catfilePath = '/' . $userId . '/files_encryption/keyfiles/' . $filePath_f . '.key'; + + if ( $view->file_exists( $catfilePath ) ) { + + return $view->file_get_contents( $catfilePath ); + + } else { + + return false; + + } + + } + + /** + * @brief Delete a keyfile + * + * @param OC_FilesystemView $view + * @param string $userId username + * @param string $path path of the file the key belongs to + * @return bool Outcome of unlink operation + * @note $path must be relative to data/user/files. e.g. mydoc.txt NOT + * /data/admin/files/mydoc.txt + */ + public static function deleteFileKey( \OC_FilesystemView $view, $userId, $path ) { + + $trimmed = ltrim( $path, '/' ); + $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed . '.key'; + + // Unlink doesn't tell us if file was deleted (not found returns + // true), so we perform our own test + if ( $view->file_exists( $keyPath ) ) { + + return $view->unlink( $keyPath ); + + } else { + + \OC_Log::write( 'Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR ); + + return false; + + } + + } + + /** + * @brief store private key from the user + * @param string key + * @return bool + * @note Encryption of the private key must be performed by client code + * as no encryption takes place here + */ + public static function setPrivateKey( $key ) { + + $user = \OCP\User::getUser(); + + $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); + + \OC_FileProxy::$enabled = false; + + if ( !$view->file_exists( '' ) ) + $view->mkdir( '' ); + + return $view->file_put_contents( $user . '.private.key', $key ); + + } + + /** + * @brief store private keys from the user + * + * @param string privatekey + * @param string publickey + * @return bool true/false + */ + public static function setUserKeys($privatekey, $publickey) { + + return ( self::setPrivateKey( $privatekey ) && self::setPublicKey( $publickey ) ); + + } + + /** + * @brief store public key of the user + * + * @param string key + * @return bool true/false + */ + public static function setPublicKey( $key ) { + + $view = new \OC_FilesystemView( '/public-keys' ); + + \OC_FileProxy::$enabled = false; + + if ( !$view->file_exists( '' ) ) + $view->mkdir( '' ); + + return $view->file_put_contents( \OCP\User::getUser() . '.public.key', $key ); + + + } + + /** + * @brief store file encryption key + * + * @param string $path relative path of the file, including filename + * @param string $key + * @param null $view + * @param string $dbClassName + * @return bool true/false + * @note The keyfile is not encrypted here. Client code must + * asymmetrically encrypt the keyfile before passing it to this method + */ + public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { + + $basePath = '/' . $userId . '/files_encryption/share-keys'; + + $shareKeyPath = self::keySetPreparation( $view, $path, $basePath, $userId ); + + return $view->file_put_contents( $basePath . '/' . $shareKeyPath . '.shareKey', $shareKey ); + + } + + /** + * @brief Make preparations to vars and filesystem for saving a keyfile + */ + public static function keySetPreparation( \OC_FilesystemView $view, $path, $basePath, $userId ) { + + $targetPath = ltrim( $path, '/' ); + + $path_parts = pathinfo( $targetPath ); + + // If the file resides within a subdirectory, create it + if ( + isset( $path_parts['dirname'] ) + && ! $view->file_exists( $basePath . '/' . $path_parts['dirname'] ) + ) { + + $view->mkdir( $basePath . '/' . $path_parts['dirname'] ); + + } + + return $targetPath; + + } + + /** + * @brief Fetch the legacy encryption key from user files + * @param string $login used to locate the legacy key + * @param string $passphrase used to decrypt the legacy key + * @return true / false + * + * if the key is left out, the default handler will be used + */ + public function getLegacyKey() { + + $user = \OCP\User::getUser(); + $view = new \OC_FilesystemView( '/' . $user ); + return $view->file_get_contents( 'encryption.key' ); + + } + } \ No newline at end of file diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index d4b993b4c0..65d7d57a05 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -173,7 +173,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( 'files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL ); die(); @@ -209,7 +209,7 @@ class Stream { } /** - * @brief Encrypt and pad data ready for writting to disk + * @brief Encrypt and pad data ready for writing to disk * @param string $plainData data to be encrypted * @param string $key key to use for encryption * @return encrypted data on success, false on failure @@ -403,7 +403,7 @@ class Stream { $encrypted = $this->preWriteEncrypt( $chunk, $this->keyfile ); // Write the data chunk to disk. This will be - // addended to the last data chunk if the file + // attended to the last data chunk if the file // being handled totals more than 6126 bytes fwrite( $this->handle, $encrypted ); diff --git a/apps/files_encryption/settings-personal.php b/apps/files_encryption/settings-personal.php index 6fe4ea6d56..af0273cfdc 100644 --- a/apps/files_encryption/settings-personal.php +++ b/apps/files_encryption/settings-personal.php @@ -12,8 +12,6 @@ $blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_b $tmpl->assign( 'blacklist', $blackList ); -OCP\Util::addscript('files_encryption','settings-personal'); - return $tmpl->fetchPage(); return null; diff --git a/apps/files_encryption/templates/settings-personal.php b/apps/files_encryption/templates/settings-personal.php index 1f71efb173..47467c52c0 100644 --- a/apps/files_encryption/templates/settings-personal.php +++ b/apps/files_encryption/templates/settings-personal.php @@ -16,7 +16,7 @@ -

+ diff --git a/apps/files_external/3rdparty/phpseclib/AUTHORS b/apps/files_external/3rdparty/phpseclib/AUTHORS new file mode 100644 index 0000000000..7bae8ab94e --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/AUTHORS @@ -0,0 +1,3 @@ +phpseclib Lead Developer: TerraFrost (Jim Wigginton) + +phpseclib Developers: monnerat (Patrick Monnerat) \ No newline at end of file diff --git a/apps/files_external/3rdparty/phpseclib/LICENSE b/apps/files_external/3rdparty/phpseclib/LICENSE new file mode 100644 index 0000000000..6ecd9b9bec --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/LICENSE @@ -0,0 +1,21 @@ +Copyright 2007-2012 TerraFrost and other contributors +http://phpseclib.sourceforge.net/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/apps/files_external/3rdparty/phpseclib/README.md b/apps/files_external/3rdparty/phpseclib/README.md new file mode 100644 index 0000000000..fbd58bd82b --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/README.md @@ -0,0 +1,16 @@ +# phpseclib - PHP Secure Communications Library + +[![Build Status](https://secure.travis-ci.org/phpseclib/phpseclib.png?branch=master)](http://travis-ci.org/phpseclib/phpseclib) + +MIT-licensed pure-PHP implementations of an arbitrary-precision integer +arithmetic library, fully PKCS#1 (v2.1) compliant RSA, DES, 3DES, RC4, Rijndael, +AES, SSH-1, SSH-2, SFTP, and X.509 + +* [Download (0.3.1)](http://sourceforge.net/projects/phpseclib/files/phpseclib0.3.1.zip/download) +* [Browse Git](https://github.com/phpseclib/phpseclib) +* [Documentation](http://phpseclib.sourceforge.net/) +* [Support](http://www.frostjedi.com/phpbb/viewforum.php?f=46) +* [Code Coverage Report](http://phpseclib.bantux.org/code_coverage/latest/) + +PEAR Channel +PEAR Channel: [phpseclib.sourceforge.net](http://phpseclib.sourceforge.net/pear.htm) diff --git a/apps/files_external/3rdparty/phpseclib/composer.json b/apps/files_external/3rdparty/phpseclib/composer.json new file mode 100644 index 0000000000..11008cd81d --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/composer.json @@ -0,0 +1,48 @@ +{ + "name": "phpseclib/phpseclib", + "type": "library", + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "keywords": [ + "security", + "crypto", + "cryptography", + "encryption", + "signature", + "signing", + "rsa", + "aes", + "ssh", + "sftp", + "x509", + "x.509", + "asn1", + "asn.1", + "BigInteger" + ], + "homepage": "http://phpseclib.sourceforge.net", + "license": "MIT", + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Developer" + } + ], + "require": { + "php": ">=5.0.0" + }, + "suggest": { + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a wide variety of cryptographic operations.", + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "pear-pear/PHP_Compat": "Install PHP_Compat to get phpseclib working on PHP >= 4.3.3." + }, + "include-path": ["phpseclib/"], + "autoload": { + "psr-0": { + "Crypt": "phpseclib/", + "File": "phpseclib/", + "Math": "phpseclib/", + "Net": "phpseclib/" + } + } +} diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/AES.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/AES.php new file mode 100644 index 0000000000..bc05adf67a --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/AES.php @@ -0,0 +1,946 @@ + + * setKey('abcdefghijklmnop'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $aes->decrypt($aes->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_AES + * @author Jim Wigginton + * @copyright MMVIII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: AES.php,v 1.7 2010/02/09 06:10:25 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Rijndael + */ +if (!class_exists('Crypt_Rijndael')) { + require_once 'Rijndael.php'; +} + +/**#@+ + * @access public + * @see Crypt_AES::encrypt() + * @see Crypt_AES::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_AES_MODE_CTR', -1); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_AES_MODE_ECB', 1); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_AES_MODE_CBC', 2); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_AES_MODE_CFB', 3); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_AES_MODE_OFB', 4); +/**#@-*/ + +/**#@+ + * @access private + * @see Crypt_AES::Crypt_AES() + */ +/** + * Toggles the internal implementation + */ +define('CRYPT_AES_MODE_INTERNAL', 1); +/** + * Toggles the mcrypt implementation + */ +define('CRYPT_AES_MODE_MCRYPT', 2); +/**#@-*/ + +/** + * Pure-PHP implementation of AES. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Crypt_AES + */ +class Crypt_AES extends Crypt_Rijndael { + /** + * mcrypt resource for encryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see Crypt_AES::encrypt() + * @var String + * @access private + */ + var $enmcrypt; + + /** + * mcrypt resource for decryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see Crypt_AES::decrypt() + * @var String + * @access private + */ + var $demcrypt; + + /** + * mcrypt resource for CFB mode + * + * @see Crypt_AES::encrypt() + * @see Crypt_AES::decrypt() + * @var String + * @access private + */ + var $ecb; + + /** + * The SubByte S-Box + * + * @see Crypt_AES::_encryptBlock() + * @var Array + * @access intern + */ + var $sbox = array( + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, + 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, + 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, + 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, + 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, + 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, + 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, + 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, + 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, + 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, + 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 + ); + + /** + * The inverse SubByte S-Box + * + * @see Crypt_AES::_decryptBlock() + * @var Array + * @access intern + */ + var $isbox = array( + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, + 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, + 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, + 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, + 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, + 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, + 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, + 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, + 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, + 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, + 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D + ); + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. $mode should only, at present, be + * CRYPT_AES_MODE_ECB or CRYPT_AES_MODE_CBC. If not explictly set, CRYPT_AES_MODE_CBC will be used. + * + * @param optional Integer $mode + * @return Crypt_AES + * @access public + */ + function Crypt_AES($mode = CRYPT_AES_MODE_CBC) + { + if ( !defined('CRYPT_AES_MODE') ) { + switch (true) { + case extension_loaded('mcrypt') && in_array('rijndael-128', mcrypt_list_algorithms()): + define('CRYPT_AES_MODE', CRYPT_AES_MODE_MCRYPT); + break; + default: + define('CRYPT_AES_MODE', CRYPT_AES_MODE_INTERNAL); + } + } + + switch ( CRYPT_AES_MODE ) { + case CRYPT_AES_MODE_MCRYPT: + switch ($mode) { + case CRYPT_AES_MODE_ECB: + $this->paddable = true; + $this->mode = MCRYPT_MODE_ECB; + break; + case CRYPT_AES_MODE_CTR: + // ctr doesn't have a constant associated with it even though it appears to be fairly widely + // supported. in lieu of knowing just how widely supported it is, i've, for now, opted not to + // include a compatibility layer. the layer has been implemented but, for now, is commented out. + $this->mode = 'ctr'; + //$this->mode = in_array('ctr', mcrypt_list_modes()) ? 'ctr' : CRYPT_AES_MODE_CTR; + break; + case CRYPT_AES_MODE_CFB: + $this->mode = 'ncfb'; + break; + case CRYPT_AES_MODE_OFB: + $this->mode = MCRYPT_MODE_NOFB; + break; + case CRYPT_AES_MODE_CBC: + default: + $this->paddable = true; + $this->mode = MCRYPT_MODE_CBC; + } + + break; + default: + switch ($mode) { + case CRYPT_AES_MODE_ECB: + $this->paddable = true; + $this->mode = CRYPT_RIJNDAEL_MODE_ECB; + break; + case CRYPT_AES_MODE_CTR: + $this->mode = CRYPT_RIJNDAEL_MODE_CTR; + break; + case CRYPT_AES_MODE_CFB: + $this->mode = CRYPT_RIJNDAEL_MODE_CFB; + break; + case CRYPT_AES_MODE_OFB: + $this->mode = CRYPT_RIJNDAEL_MODE_OFB; + break; + case CRYPT_AES_MODE_CBC: + default: + $this->paddable = true; + $this->mode = CRYPT_RIJNDAEL_MODE_CBC; + } + } + + if (CRYPT_AES_MODE == CRYPT_AES_MODE_INTERNAL) { + parent::Crypt_Rijndael($this->mode); + } + } + + /** + * Extended Crypt_Rijndael::_setup() + * + * Optimizing the key schedule arrays ($w, $dw) for _encryptBlock() and _decryptBlock() after Crypt_Rijndael::_setup() + * + * @see Crypt_Rijndael::_setup() + * @access private + */ + function _setup() + { + if (!$this->changed) { + return; + } + + $this->w = $this->dw = array(); + parent::_setup(); + + $this->dw = array_reverse($this->dw); + $w = array_pop($this->w); + $dw = array_pop($this->dw); + foreach ($this->w as $r => $wr) { + foreach ($wr as $c => $wc) { + $w[] = $wc; + $dw[] = $this->dw[$r][$c]; + } + } + $this->w = $w; + $this->dw = $dw; + } + + /** + * Dummy function + * + * Since Crypt_AES extends Crypt_Rijndael, this function is, technically, available, but it doesn't do anything. + * + * @access public + * @param Integer $length + */ + function setBlockLength($length) + { + return; + } + + /** + * Sets the initialization vector. (optional) + * + * SetIV is not required when CRYPT_RIJNDAEL_MODE_ECB is being used. If not explictly set, it'll be assumed + * to be all zero's. + * + * @access public + * @param String $iv + */ + function setIV($iv) + { + parent::setIV($iv); + if ( CRYPT_AES_MODE == CRYPT_AES_MODE_MCRYPT ) { + $this->changed = true; + } + } + + /** + * Encrypts a message. + * + * $plaintext will be padded with up to 16 additional bytes. Other AES implementations may or may not pad in the + * same manner. Other common approaches to padding and the reasons why it's necessary are discussed in the following + * URL: + * + * {@link http://www.di-mgt.com.au/cryptopad.html http://www.di-mgt.com.au/cryptopad.html} + * + * An alternative to padding is to, separately, send the length of the file. This is what SSH, in fact, does. + * strlen($plaintext) will still need to be a multiple of 16, however, arbitrary values can be added to make it that + * length. + * + * @see Crypt_AES::decrypt() + * @access public + * @param String $plaintext + */ + function encrypt($plaintext) + { + if ( CRYPT_AES_MODE == CRYPT_AES_MODE_MCRYPT ) { + $this->_mcryptSetup(); + + // re: http://phpseclib.sourceforge.net/cfb-demo.phps + // using mcrypt's default handing of CFB the above would output two different things. using phpseclib's + // rewritten CFB implementation the above outputs the same thing twice. + if ($this->mode == 'ncfb' && $this->continuousBuffer) { + $iv = &$this->encryptIV; + $pos = &$this->enbuffer['pos']; + $len = strlen($plaintext); + $ciphertext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = 16 - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + $this->enbuffer['enmcrypt_init'] = true; + } + if ($len >= 16) { + if ($this->enbuffer['enmcrypt_init'] === false || $len > 280) { + if ($this->enbuffer['enmcrypt_init'] === true) { + mcrypt_generic_init($this->enmcrypt, $this->key, $iv); + $this->enbuffer['enmcrypt_init'] = false; + } + $ciphertext.= mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % 16)); + $iv = substr($ciphertext, -16); + $len%= 16; + } else { + while ($len >= 16) { + $iv = mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, 16); + $ciphertext.= $iv; + $len-= 16; + $i+= 16; + } + } + } + + if ($len) { + $iv = mcrypt_generic($this->ecb, $iv); + $block = $iv ^ substr($plaintext, -$len); + $iv = substr_replace($iv, $block, 0, $len); + $ciphertext.= $block; + $pos = $len; + } + + return $ciphertext; + } + + if ($this->paddable) { + $plaintext = $this->_pad($plaintext); + } + + $ciphertext = mcrypt_generic($this->enmcrypt, $plaintext); + + if (!$this->continuousBuffer) { + mcrypt_generic_init($this->enmcrypt, $this->key, $this->iv); + } + + return $ciphertext; + } + + return parent::encrypt($plaintext); + } + + /** + * Decrypts a message. + * + * If strlen($ciphertext) is not a multiple of 16, null bytes will be added to the end of the string until it is. + * + * @see Crypt_AES::encrypt() + * @access public + * @param String $ciphertext + */ + function decrypt($ciphertext) + { + if ( CRYPT_AES_MODE == CRYPT_AES_MODE_MCRYPT ) { + $this->_mcryptSetup(); + + if ($this->mode == 'ncfb' && $this->continuousBuffer) { + $iv = &$this->decryptIV; + $pos = &$this->debuffer['pos']; + $len = strlen($ciphertext); + $plaintext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = 16 - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + } + if ($len >= 16) { + $cb = substr($ciphertext, $i, $len - $len % 16); + $plaintext.= mcrypt_generic($this->ecb, $iv . $cb) ^ $cb; + $iv = substr($cb, -16); + $len%= 16; + } + if ($len) { + $iv = mcrypt_generic($this->ecb, $iv); + $plaintext.= $iv ^ substr($ciphertext, -$len); + $iv = substr_replace($iv, substr($ciphertext, -$len), 0, $len); + $pos = $len; + } + + return $plaintext; + } + + if ($this->paddable) { + // we pad with chr(0) since that's what mcrypt_generic does. to quote from http://php.net/function.mcrypt-generic : + // "The data is padded with "\0" to make sure the length of the data is n * blocksize." + $ciphertext = str_pad($ciphertext, (strlen($ciphertext) + 15) & 0xFFFFFFF0, chr(0)); + } + + $plaintext = mdecrypt_generic($this->demcrypt, $ciphertext); + + if (!$this->continuousBuffer) { + mcrypt_generic_init($this->demcrypt, $this->key, $this->iv); + } + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + return parent::decrypt($ciphertext); + } + + /** + * Setup mcrypt + * + * Validates all the variables. + * + * @access private + */ + function _mcryptSetup() + { + if (!$this->changed) { + return; + } + + if (!$this->explicit_key_length) { + // this just copied from Crypt_Rijndael::_setup() + $length = strlen($this->key) >> 2; + if ($length > 8) { + $length = 8; + } else if ($length < 4) { + $length = 4; + } + $this->Nk = $length; + $this->key_size = $length << 2; + } + + switch ($this->Nk) { + case 4: // 128 + $this->key_size = 16; + break; + case 5: // 160 + case 6: // 192 + $this->key_size = 24; + break; + case 7: // 224 + case 8: // 256 + $this->key_size = 32; + } + + $this->key = str_pad(substr($this->key, 0, $this->key_size), $this->key_size, chr(0)); + $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($this->iv, 0, 16), 16, chr(0)); + + if (!isset($this->enmcrypt)) { + $mode = $this->mode; + //$mode = $this->mode == CRYPT_AES_MODE_CTR ? MCRYPT_MODE_ECB : $this->mode; + + $this->demcrypt = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', $mode, ''); + $this->enmcrypt = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', $mode, ''); + + if ($mode == 'ncfb') { + $this->ecb = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, ''); + } + + } // else should mcrypt_generic_deinit be called? + + mcrypt_generic_init($this->demcrypt, $this->key, $this->iv); + mcrypt_generic_init($this->enmcrypt, $this->key, $this->iv); + + if ($this->mode == 'ncfb') { + mcrypt_generic_init($this->ecb, $this->key, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); + } + + $this->changed = false; + } + + /** + * Encrypts a block + * + * Optimized over Crypt_Rijndael's implementation by means of loop unrolling. + * + * @see Crypt_Rijndael::_encryptBlock() + * @access private + * @param String $in + * @return String + */ + function _encryptBlock($in) + { + $state = unpack('N*', $in); + + $sbox = $this->sbox; + $w = $this->w; + $t0 = $this->t0; + $t1 = $this->t1; + $t2 = $this->t2; + $t3 = $this->t3; + + // addRoundKey + $s0 = $state[1] ^ $w[4]; + $s1 = $state[2] ^ $w[5]; + $s2 = $state[3] ^ $w[6]; + $s3 = $state[4] ^ $w[7]; + + // shiftRows + subWord + mixColumns + addRoundKey + $e0 = $t0[($s0 >> 24) & 0xff] ^ $t1[($s1 >> 16) & 0xff] ^ $t2[($s2 >> 8) & 0xff] ^ $t3[$s3 & 0xff] ^ $w[8]; + $e1 = $t0[($s1 >> 24) & 0xff] ^ $t1[($s2 >> 16) & 0xff] ^ $t2[($s3 >> 8) & 0xff] ^ $t3[$s0 & 0xff] ^ $w[9]; + $e2 = $t0[($s2 >> 24) & 0xff] ^ $t1[($s3 >> 16) & 0xff] ^ $t2[($s0 >> 8) & 0xff] ^ $t3[$s1 & 0xff] ^ $w[10]; + $e3 = $t0[($s3 >> 24) & 0xff] ^ $t1[($s0 >> 16) & 0xff] ^ $t2[($s1 >> 8) & 0xff] ^ $t3[$s2 & 0xff] ^ $w[11]; + + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[12]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[13]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[14]; + $s3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[15]; + + $e0 = $t0[($s0 >> 24) & 0xff] ^ $t1[($s1 >> 16) & 0xff] ^ $t2[($s2 >> 8) & 0xff] ^ $t3[$s3 & 0xff] ^ $w[16]; + $e1 = $t0[($s1 >> 24) & 0xff] ^ $t1[($s2 >> 16) & 0xff] ^ $t2[($s3 >> 8) & 0xff] ^ $t3[$s0 & 0xff] ^ $w[17]; + $e2 = $t0[($s2 >> 24) & 0xff] ^ $t1[($s3 >> 16) & 0xff] ^ $t2[($s0 >> 8) & 0xff] ^ $t3[$s1 & 0xff] ^ $w[18]; + $e3 = $t0[($s3 >> 24) & 0xff] ^ $t1[($s0 >> 16) & 0xff] ^ $t2[($s1 >> 8) & 0xff] ^ $t3[$s2 & 0xff] ^ $w[19]; + + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[20]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[21]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[22]; + $s3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[23]; + + $e0 = $t0[($s0 >> 24) & 0xff] ^ $t1[($s1 >> 16) & 0xff] ^ $t2[($s2 >> 8) & 0xff] ^ $t3[$s3 & 0xff] ^ $w[24]; + $e1 = $t0[($s1 >> 24) & 0xff] ^ $t1[($s2 >> 16) & 0xff] ^ $t2[($s3 >> 8) & 0xff] ^ $t3[$s0 & 0xff] ^ $w[25]; + $e2 = $t0[($s2 >> 24) & 0xff] ^ $t1[($s3 >> 16) & 0xff] ^ $t2[($s0 >> 8) & 0xff] ^ $t3[$s1 & 0xff] ^ $w[26]; + $e3 = $t0[($s3 >> 24) & 0xff] ^ $t1[($s0 >> 16) & 0xff] ^ $t2[($s1 >> 8) & 0xff] ^ $t3[$s2 & 0xff] ^ $w[27]; + + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[28]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[29]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[30]; + $s3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[31]; + + $e0 = $t0[($s0 >> 24) & 0xff] ^ $t1[($s1 >> 16) & 0xff] ^ $t2[($s2 >> 8) & 0xff] ^ $t3[$s3 & 0xff] ^ $w[32]; + $e1 = $t0[($s1 >> 24) & 0xff] ^ $t1[($s2 >> 16) & 0xff] ^ $t2[($s3 >> 8) & 0xff] ^ $t3[$s0 & 0xff] ^ $w[33]; + $e2 = $t0[($s2 >> 24) & 0xff] ^ $t1[($s3 >> 16) & 0xff] ^ $t2[($s0 >> 8) & 0xff] ^ $t3[$s1 & 0xff] ^ $w[34]; + $e3 = $t0[($s3 >> 24) & 0xff] ^ $t1[($s0 >> 16) & 0xff] ^ $t2[($s1 >> 8) & 0xff] ^ $t3[$s2 & 0xff] ^ $w[35]; + + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[36]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[37]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[38]; + $s3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[39]; + + $e0 = $t0[($s0 >> 24) & 0xff] ^ $t1[($s1 >> 16) & 0xff] ^ $t2[($s2 >> 8) & 0xff] ^ $t3[$s3 & 0xff] ^ $w[40]; + $e1 = $t0[($s1 >> 24) & 0xff] ^ $t1[($s2 >> 16) & 0xff] ^ $t2[($s3 >> 8) & 0xff] ^ $t3[$s0 & 0xff] ^ $w[41]; + $e2 = $t0[($s2 >> 24) & 0xff] ^ $t1[($s3 >> 16) & 0xff] ^ $t2[($s0 >> 8) & 0xff] ^ $t3[$s1 & 0xff] ^ $w[42]; + $e3 = $t0[($s3 >> 24) & 0xff] ^ $t1[($s0 >> 16) & 0xff] ^ $t2[($s1 >> 8) & 0xff] ^ $t3[$s2 & 0xff] ^ $w[43]; + + switch ($this->Nr) { + case 10: + break; + + case 14: + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[44]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[45]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[46]; + $s3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[47]; + + $e0 = $t0[($s0 >> 24) & 0xff] ^ $t1[($s1 >> 16) & 0xff] ^ $t2[($s2 >> 8) & 0xff] ^ $t3[$s3 & 0xff] ^ $w[48]; + $e1 = $t0[($s1 >> 24) & 0xff] ^ $t1[($s2 >> 16) & 0xff] ^ $t2[($s3 >> 8) & 0xff] ^ $t3[$s0 & 0xff] ^ $w[49]; + $e2 = $t0[($s2 >> 24) & 0xff] ^ $t1[($s3 >> 16) & 0xff] ^ $t2[($s0 >> 8) & 0xff] ^ $t3[$s1 & 0xff] ^ $w[50]; + $e3 = $t0[($s3 >> 24) & 0xff] ^ $t1[($s0 >> 16) & 0xff] ^ $t2[($s1 >> 8) & 0xff] ^ $t3[$s2 & 0xff] ^ $w[51]; + + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[52]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[53]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[54]; + $s3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[55]; + + $e0 = $t0[($s0 >> 24) & 0xff] ^ $t1[($s1 >> 16) & 0xff] ^ $t2[($s2 >> 8) & 0xff] ^ $t3[$s3 & 0xff] ^ $w[56]; + $e1 = $t0[($s1 >> 24) & 0xff] ^ $t1[($s2 >> 16) & 0xff] ^ $t2[($s3 >> 8) & 0xff] ^ $t3[$s0 & 0xff] ^ $w[57]; + $e2 = $t0[($s2 >> 24) & 0xff] ^ $t1[($s3 >> 16) & 0xff] ^ $t2[($s0 >> 8) & 0xff] ^ $t3[$s1 & 0xff] ^ $w[58]; + $e3 = $t0[($s3 >> 24) & 0xff] ^ $t1[($s0 >> 16) & 0xff] ^ $t2[($s1 >> 8) & 0xff] ^ $t3[$s2 & 0xff] ^ $w[59]; + break; + + case 12: + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[44]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[45]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[46]; + $s3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[47]; + + $e0 = $t0[($s0 >> 24) & 0xff] ^ $t1[($s1 >> 16) & 0xff] ^ $t2[($s2 >> 8) & 0xff] ^ $t3[$s3 & 0xff] ^ $w[48]; + $e1 = $t0[($s1 >> 24) & 0xff] ^ $t1[($s2 >> 16) & 0xff] ^ $t2[($s3 >> 8) & 0xff] ^ $t3[$s0 & 0xff] ^ $w[49]; + $e2 = $t0[($s2 >> 24) & 0xff] ^ $t1[($s3 >> 16) & 0xff] ^ $t2[($s0 >> 8) & 0xff] ^ $t3[$s1 & 0xff] ^ $w[50]; + $e3 = $t0[($s3 >> 24) & 0xff] ^ $t1[($s0 >> 16) & 0xff] ^ $t2[($s1 >> 8) & 0xff] ^ $t3[$s2 & 0xff] ^ $w[51]; + break; + + case 13: + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[44]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[45]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[46]; + $s3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[47]; + + $e0 = $t0[($s0 >> 24) & 0xff] ^ $t1[($s1 >> 16) & 0xff] ^ $t2[($s2 >> 8) & 0xff] ^ $t3[$s3 & 0xff] ^ $w[48]; + $e1 = $t0[($s1 >> 24) & 0xff] ^ $t1[($s2 >> 16) & 0xff] ^ $t2[($s3 >> 8) & 0xff] ^ $t3[$s0 & 0xff] ^ $w[49]; + $e2 = $t0[($s2 >> 24) & 0xff] ^ $t1[($s3 >> 16) & 0xff] ^ $t2[($s0 >> 8) & 0xff] ^ $t3[$s1 & 0xff] ^ $w[50]; + $e3 = $t0[($s3 >> 24) & 0xff] ^ $t1[($s0 >> 16) & 0xff] ^ $t2[($s1 >> 8) & 0xff] ^ $t3[$s2 & 0xff] ^ $w[51]; + + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[52]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[53]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[54]; + $e3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[55]; + // Note: Here we skip $s3 but using $e3 + + $e0 = $s0; + $e1 = $s1; + $e2 = $s2; + // $e3 = $s3; + break; + + default: // 11 + $s0 = $t0[($e0 >> 24) & 0xff] ^ $t1[($e1 >> 16) & 0xff] ^ $t2[($e2 >> 8) & 0xff] ^ $t3[$e3 & 0xff] ^ $w[44]; + $s1 = $t0[($e1 >> 24) & 0xff] ^ $t1[($e2 >> 16) & 0xff] ^ $t2[($e3 >> 8) & 0xff] ^ $t3[$e0 & 0xff] ^ $w[45]; + $s2 = $t0[($e2 >> 24) & 0xff] ^ $t1[($e3 >> 16) & 0xff] ^ $t2[($e0 >> 8) & 0xff] ^ $t3[$e1 & 0xff] ^ $w[46]; + $e3 = $t0[($e3 >> 24) & 0xff] ^ $t1[($e0 >> 16) & 0xff] ^ $t2[($e1 >> 8) & 0xff] ^ $t3[$e2 & 0xff] ^ $w[47]; + // Note: Here we skip $s3 but using $e3 + + $e0 = $s0; + $e1 = $s1; + $e2 = $s2; + // $e3 = $s3; + } + + // subWord + $e0 = $sbox[$e0 & 0xff] | ($sbox[($e0 >> 8) & 0xff] << 8) | ($sbox[($e0 >> 16) & 0xff] << 16) | ($sbox[($e0 >> 24) & 0xff] << 24); + $e1 = $sbox[$e1 & 0xff] | ($sbox[($e1 >> 8) & 0xff] << 8) | ($sbox[($e1 >> 16) & 0xff] << 16) | ($sbox[($e1 >> 24) & 0xff] << 24); + $e2 = $sbox[$e2 & 0xff] | ($sbox[($e2 >> 8) & 0xff] << 8) | ($sbox[($e2 >> 16) & 0xff] << 16) | ($sbox[($e2 >> 24) & 0xff] << 24); + $e3 = $sbox[$e3 & 0xff] | ($sbox[($e3 >> 8) & 0xff] << 8) | ($sbox[($e3 >> 16) & 0xff] << 16) | ($sbox[($e3 >> 24) & 0xff] << 24); + + // shiftRows + addRoundKey + return pack('N*', + ($e0 & 0xFF000000) ^ ($e1 & 0x00FF0000) ^ ($e2 & 0x0000FF00) ^ ($e3 & 0x000000FF) ^ $w[0], + ($e1 & 0xFF000000) ^ ($e2 & 0x00FF0000) ^ ($e3 & 0x0000FF00) ^ ($e0 & 0x000000FF) ^ $w[1], + ($e2 & 0xFF000000) ^ ($e3 & 0x00FF0000) ^ ($e0 & 0x0000FF00) ^ ($e1 & 0x000000FF) ^ $w[2], + ($e3 & 0xFF000000) ^ ($e0 & 0x00FF0000) ^ ($e1 & 0x0000FF00) ^ ($e2 & 0x000000FF) ^ $w[3] + ); + } + + /** + * Decrypts a block + * + * Optimized over Crypt_Rijndael's implementation by means of loop unrolling. + * + * @see Crypt_Rijndael::_decryptBlock() + * @access private + * @param String $in + * @return String + */ + function _decryptBlock($in) + { + $state = unpack('N*', $in); + + $sbox = $this->isbox; + $dw = $this->dw; + $dt0 = $this->dt0; + $dt1 = $this->dt1; + $dt2 = $this->dt2; + $dt3 = $this->dt3; + + // addRoundKey + $s0 = $state[1] ^ $dw[4]; + $s1 = $state[2] ^ $dw[5]; + $s2 = $state[3] ^ $dw[6]; + $s3 = $state[4] ^ $dw[7]; + + // invShiftRows + invSubBytes + invMixColumns + addRoundKey + $e0 = $dt0[($s0 >> 24) & 0xff] ^ $dt1[($s3 >> 16) & 0xff] ^ $dt2[($s2 >> 8) & 0xff] ^ $dt3[$s1 & 0xff] ^ $dw[8]; + $e1 = $dt0[($s1 >> 24) & 0xff] ^ $dt1[($s0 >> 16) & 0xff] ^ $dt2[($s3 >> 8) & 0xff] ^ $dt3[$s2 & 0xff] ^ $dw[9]; + $e2 = $dt0[($s2 >> 24) & 0xff] ^ $dt1[($s1 >> 16) & 0xff] ^ $dt2[($s0 >> 8) & 0xff] ^ $dt3[$s3 & 0xff] ^ $dw[10]; + $e3 = $dt0[($s3 >> 24) & 0xff] ^ $dt1[($s2 >> 16) & 0xff] ^ $dt2[($s1 >> 8) & 0xff] ^ $dt3[$s0 & 0xff] ^ $dw[11]; + + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[12]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[13]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[14]; + $s3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[15]; + + $e0 = $dt0[($s0 >> 24) & 0xff] ^ $dt1[($s3 >> 16) & 0xff] ^ $dt2[($s2 >> 8) & 0xff] ^ $dt3[$s1 & 0xff] ^ $dw[16]; + $e1 = $dt0[($s1 >> 24) & 0xff] ^ $dt1[($s0 >> 16) & 0xff] ^ $dt2[($s3 >> 8) & 0xff] ^ $dt3[$s2 & 0xff] ^ $dw[17]; + $e2 = $dt0[($s2 >> 24) & 0xff] ^ $dt1[($s1 >> 16) & 0xff] ^ $dt2[($s0 >> 8) & 0xff] ^ $dt3[$s3 & 0xff] ^ $dw[18]; + $e3 = $dt0[($s3 >> 24) & 0xff] ^ $dt1[($s2 >> 16) & 0xff] ^ $dt2[($s1 >> 8) & 0xff] ^ $dt3[$s0 & 0xff] ^ $dw[19]; + + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[20]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[21]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[22]; + $s3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[23]; + + $e0 = $dt0[($s0 >> 24) & 0xff] ^ $dt1[($s3 >> 16) & 0xff] ^ $dt2[($s2 >> 8) & 0xff] ^ $dt3[$s1 & 0xff] ^ $dw[24]; + $e1 = $dt0[($s1 >> 24) & 0xff] ^ $dt1[($s0 >> 16) & 0xff] ^ $dt2[($s3 >> 8) & 0xff] ^ $dt3[$s2 & 0xff] ^ $dw[25]; + $e2 = $dt0[($s2 >> 24) & 0xff] ^ $dt1[($s1 >> 16) & 0xff] ^ $dt2[($s0 >> 8) & 0xff] ^ $dt3[$s3 & 0xff] ^ $dw[26]; + $e3 = $dt0[($s3 >> 24) & 0xff] ^ $dt1[($s2 >> 16) & 0xff] ^ $dt2[($s1 >> 8) & 0xff] ^ $dt3[$s0 & 0xff] ^ $dw[27]; + + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[28]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[29]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[30]; + $s3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[31]; + + $e0 = $dt0[($s0 >> 24) & 0xff] ^ $dt1[($s3 >> 16) & 0xff] ^ $dt2[($s2 >> 8) & 0xff] ^ $dt3[$s1 & 0xff] ^ $dw[32]; + $e1 = $dt0[($s1 >> 24) & 0xff] ^ $dt1[($s0 >> 16) & 0xff] ^ $dt2[($s3 >> 8) & 0xff] ^ $dt3[$s2 & 0xff] ^ $dw[33]; + $e2 = $dt0[($s2 >> 24) & 0xff] ^ $dt1[($s1 >> 16) & 0xff] ^ $dt2[($s0 >> 8) & 0xff] ^ $dt3[$s3 & 0xff] ^ $dw[34]; + $e3 = $dt0[($s3 >> 24) & 0xff] ^ $dt1[($s2 >> 16) & 0xff] ^ $dt2[($s1 >> 8) & 0xff] ^ $dt3[$s0 & 0xff] ^ $dw[35]; + + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[36]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[37]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[38]; + $s3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[39]; + + $e0 = $dt0[($s0 >> 24) & 0xff] ^ $dt1[($s3 >> 16) & 0xff] ^ $dt2[($s2 >> 8) & 0xff] ^ $dt3[$s1 & 0xff] ^ $dw[40]; + $e1 = $dt0[($s1 >> 24) & 0xff] ^ $dt1[($s0 >> 16) & 0xff] ^ $dt2[($s3 >> 8) & 0xff] ^ $dt3[$s2 & 0xff] ^ $dw[41]; + $e2 = $dt0[($s2 >> 24) & 0xff] ^ $dt1[($s1 >> 16) & 0xff] ^ $dt2[($s0 >> 8) & 0xff] ^ $dt3[$s3 & 0xff] ^ $dw[42]; + $e3 = $dt0[($s3 >> 24) & 0xff] ^ $dt1[($s2 >> 16) & 0xff] ^ $dt2[($s1 >> 8) & 0xff] ^ $dt3[$s0 & 0xff] ^ $dw[43]; + + switch ($this->Nr) { + case 10: + break; + + case 14: + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[44]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[45]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[46]; + $s3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[47]; + + $e0 = $dt0[($s0 >> 24) & 0xff] ^ $dt1[($s3 >> 16) & 0xff] ^ $dt2[($s2 >> 8) & 0xff] ^ $dt3[$s1 & 0xff] ^ $dw[48]; + $e1 = $dt0[($s1 >> 24) & 0xff] ^ $dt1[($s0 >> 16) & 0xff] ^ $dt2[($s3 >> 8) & 0xff] ^ $dt3[$s2 & 0xff] ^ $dw[49]; + $e2 = $dt0[($s2 >> 24) & 0xff] ^ $dt1[($s1 >> 16) & 0xff] ^ $dt2[($s0 >> 8) & 0xff] ^ $dt3[$s3 & 0xff] ^ $dw[50]; + $e3 = $dt0[($s3 >> 24) & 0xff] ^ $dt1[($s2 >> 16) & 0xff] ^ $dt2[($s1 >> 8) & 0xff] ^ $dt3[$s0 & 0xff] ^ $dw[51]; + + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[52]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[53]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[54]; + $s3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[55]; + + $e0 = $dt0[($s0 >> 24) & 0xff] ^ $dt1[($s3 >> 16) & 0xff] ^ $dt2[($s2 >> 8) & 0xff] ^ $dt3[$s1 & 0xff] ^ $dw[56]; + $e1 = $dt0[($s1 >> 24) & 0xff] ^ $dt1[($s0 >> 16) & 0xff] ^ $dt2[($s3 >> 8) & 0xff] ^ $dt3[$s2 & 0xff] ^ $dw[57]; + $e2 = $dt0[($s2 >> 24) & 0xff] ^ $dt1[($s1 >> 16) & 0xff] ^ $dt2[($s0 >> 8) & 0xff] ^ $dt3[$s3 & 0xff] ^ $dw[58]; + $e3 = $dt0[($s3 >> 24) & 0xff] ^ $dt1[($s2 >> 16) & 0xff] ^ $dt2[($s1 >> 8) & 0xff] ^ $dt3[$s0 & 0xff] ^ $dw[59]; + break; + + case 12: + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[44]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[45]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[46]; + $s3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[47]; + + $e0 = $dt0[($s0 >> 24) & 0xff] ^ $dt1[($s3 >> 16) & 0xff] ^ $dt2[($s2 >> 8) & 0xff] ^ $dt3[$s1 & 0xff] ^ $dw[48]; + $e1 = $dt0[($s1 >> 24) & 0xff] ^ $dt1[($s0 >> 16) & 0xff] ^ $dt2[($s3 >> 8) & 0xff] ^ $dt3[$s2 & 0xff] ^ $dw[49]; + $e2 = $dt0[($s2 >> 24) & 0xff] ^ $dt1[($s1 >> 16) & 0xff] ^ $dt2[($s0 >> 8) & 0xff] ^ $dt3[$s3 & 0xff] ^ $dw[50]; + $e3 = $dt0[($s3 >> 24) & 0xff] ^ $dt1[($s2 >> 16) & 0xff] ^ $dt2[($s1 >> 8) & 0xff] ^ $dt3[$s0 & 0xff] ^ $dw[51]; + break; + + case 13: + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[44]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[45]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[46]; + $s3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[47]; + + $e0 = $dt0[($s0 >> 24) & 0xff] ^ $dt1[($s3 >> 16) & 0xff] ^ $dt2[($s2 >> 8) & 0xff] ^ $dt3[$s1 & 0xff] ^ $dw[48]; + $e1 = $dt0[($s1 >> 24) & 0xff] ^ $dt1[($s0 >> 16) & 0xff] ^ $dt2[($s3 >> 8) & 0xff] ^ $dt3[$s2 & 0xff] ^ $dw[49]; + $e2 = $dt0[($s2 >> 24) & 0xff] ^ $dt1[($s1 >> 16) & 0xff] ^ $dt2[($s0 >> 8) & 0xff] ^ $dt3[$s3 & 0xff] ^ $dw[50]; + $e3 = $dt0[($s3 >> 24) & 0xff] ^ $dt1[($s2 >> 16) & 0xff] ^ $dt2[($s1 >> 8) & 0xff] ^ $dt3[$s0 & 0xff] ^ $dw[51]; + + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[52]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[53]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[54]; + $e3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[55]; + // Note: Here we skip $s3 but using $e3 + + $e0 = $s0; + $e1 = $s1; + $e2 = $s2; + // $e3 = $s3; + break; + + default: // 11 + $s0 = $dt0[($e0 >> 24) & 0xff] ^ $dt1[($e3 >> 16) & 0xff] ^ $dt2[($e2 >> 8) & 0xff] ^ $dt3[$e1 & 0xff] ^ $dw[44]; + $s1 = $dt0[($e1 >> 24) & 0xff] ^ $dt1[($e0 >> 16) & 0xff] ^ $dt2[($e3 >> 8) & 0xff] ^ $dt3[$e2 & 0xff] ^ $dw[45]; + $s2 = $dt0[($e2 >> 24) & 0xff] ^ $dt1[($e1 >> 16) & 0xff] ^ $dt2[($e0 >> 8) & 0xff] ^ $dt3[$e3 & 0xff] ^ $dw[46]; + $e3 = $dt0[($e3 >> 24) & 0xff] ^ $dt1[($e2 >> 16) & 0xff] ^ $dt2[($e1 >> 8) & 0xff] ^ $dt3[$e0 & 0xff] ^ $dw[47]; + // Note: Here we skip $s3 but using $e3 + + $e0 = $s0; + $e1 = $s1; + $e2 = $s2; + // $e3 = $s3; + } + + // invSubWord + $e0 = $sbox[$e0 & 0xff] | ($sbox[($e0 >> 8) & 0xff] << 8) | ($sbox[($e0 >> 16) & 0xff] << 16) | ($sbox[($e0 >> 24) & 0xff] << 24); + $e1 = $sbox[$e1 & 0xff] | ($sbox[($e1 >> 8) & 0xff] << 8) | ($sbox[($e1 >> 16) & 0xff] << 16) | ($sbox[($e1 >> 24) & 0xff] << 24); + $e2 = $sbox[$e2 & 0xff] | ($sbox[($e2 >> 8) & 0xff] << 8) | ($sbox[($e2 >> 16) & 0xff] << 16) | ($sbox[($e2 >> 24) & 0xff] << 24); + $e3 = $sbox[$e3 & 0xff] | ($sbox[($e3 >> 8) & 0xff] << 8) | ($sbox[($e3 >> 16) & 0xff] << 16) | ($sbox[($e3 >> 24) & 0xff] << 24); + + // invShiftRows + addRoundKey + return pack('N*', + ($e0 & 0xFF000000) ^ ($e3 & 0x00FF0000) ^ ($e2 & 0x0000FF00) ^ ($e1 & 0x000000FF) ^ $dw[0], + ($e1 & 0xFF000000) ^ ($e0 & 0x00FF0000) ^ ($e3 & 0x0000FF00) ^ ($e2 & 0x000000FF) ^ $dw[1], + ($e2 & 0xFF000000) ^ ($e1 & 0x00FF0000) ^ ($e0 & 0x0000FF00) ^ ($e3 & 0x000000FF) ^ $dw[2], + ($e3 & 0xFF000000) ^ ($e2 & 0x00FF0000) ^ ($e1 & 0x0000FF00) ^ ($e0 & 0x000000FF) ^ $dw[3] + ); + } + + /** + * Treat consecutive "packets" as if they are a continuous buffer. + * + * The default behavior. + * + * @see Crypt_Rijndael::disableContinuousBuffer() + * @access public + */ + function enableContinuousBuffer() + { + parent::enableContinuousBuffer(); + + if (CRYPT_AES_MODE == CRYPT_AES_MODE_MCRYPT) { + $this->enbuffer['enmcrypt_init'] = true; + $this->debuffer['demcrypt_init'] = true; + } + } + + /** + * Treat consecutive packets as if they are a discontinuous buffer. + * + * The default behavior. + * + * @see Crypt_Rijndael::enableContinuousBuffer() + * @access public + */ + function disableContinuousBuffer() + { + parent::disableContinuousBuffer(); + + if (CRYPT_AES_MODE == CRYPT_AES_MODE_MCRYPT) { + mcrypt_generic_init($this->enmcrypt, $this->key, $this->iv); + mcrypt_generic_init($this->demcrypt, $this->key, $this->iv); + } + } +} + +// vim: ts=4:sw=4:et: +// vim6: fdl=1: diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/DES.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/DES.php new file mode 100644 index 0000000000..1197a50ab7 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/DES.php @@ -0,0 +1,1334 @@ + + * setKey('abcdefgh'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $des->decrypt($des->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_DES + * @author Jim Wigginton + * @copyright MMVII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: DES.php,v 1.12 2010/02/09 06:10:26 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * @access private + * @see Crypt_DES::_prepareKey() + * @see Crypt_DES::_processBlock() + */ +/** + * Contains array_reverse($keys[CRYPT_DES_DECRYPT]) + */ +define('CRYPT_DES_ENCRYPT', 0); +/** + * Contains array_reverse($keys[CRYPT_DES_ENCRYPT]) + */ +define('CRYPT_DES_DECRYPT', 1); +/**#@-*/ + +/**#@+ + * @access public + * @see Crypt_DES::encrypt() + * @see Crypt_DES::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_DES_MODE_CTR', -1); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_DES_MODE_ECB', 1); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_DES_MODE_CBC', 2); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_DES_MODE_CFB', 3); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_DES_MODE_OFB', 4); +/**#@-*/ + +/**#@+ + * @access private + * @see Crypt_DES::Crypt_DES() + */ +/** + * Toggles the internal implementation + */ +define('CRYPT_DES_MODE_INTERNAL', 1); +/** + * Toggles the mcrypt implementation + */ +define('CRYPT_DES_MODE_MCRYPT', 2); +/**#@-*/ + +/** + * Pure-PHP implementation of DES. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Crypt_DES + */ +class Crypt_DES { + /** + * The Key Schedule + * + * @see Crypt_DES::setKey() + * @var Array + * @access private + */ + var $keys = "\0\0\0\0\0\0\0\0"; + + /** + * The Encryption Mode + * + * @see Crypt_DES::Crypt_DES() + * @var Integer + * @access private + */ + var $mode; + + /** + * Continuous Buffer status + * + * @see Crypt_DES::enableContinuousBuffer() + * @var Boolean + * @access private + */ + var $continuousBuffer = false; + + /** + * Padding status + * + * @see Crypt_DES::enablePadding() + * @var Boolean + * @access private + */ + var $padding = true; + + /** + * The Initialization Vector + * + * @see Crypt_DES::setIV() + * @var String + * @access private + */ + var $iv = "\0\0\0\0\0\0\0\0"; + + /** + * A "sliding" Initialization Vector + * + * @see Crypt_DES::enableContinuousBuffer() + * @var String + * @access private + */ + var $encryptIV = "\0\0\0\0\0\0\0\0"; + + /** + * A "sliding" Initialization Vector + * + * @see Crypt_DES::enableContinuousBuffer() + * @var String + * @access private + */ + var $decryptIV = "\0\0\0\0\0\0\0\0"; + + /** + * mcrypt resource for encryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see Crypt_DES::encrypt() + * @var String + * @access private + */ + var $enmcrypt; + + /** + * mcrypt resource for decryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see Crypt_DES::decrypt() + * @var String + * @access private + */ + var $demcrypt; + + /** + * Does the enmcrypt resource need to be (re)initialized? + * + * @see Crypt_DES::setKey() + * @see Crypt_DES::setIV() + * @var Boolean + * @access private + */ + var $enchanged = true; + + /** + * Does the demcrypt resource need to be (re)initialized? + * + * @see Crypt_DES::setKey() + * @see Crypt_DES::setIV() + * @var Boolean + * @access private + */ + var $dechanged = true; + + /** + * Is the mode one that is paddable? + * + * @see Crypt_DES::Crypt_DES() + * @var Boolean + * @access private + */ + var $paddable = false; + + /** + * Encryption buffer for CTR, OFB and CFB modes + * + * @see Crypt_DES::encrypt() + * @var Array + * @access private + */ + var $enbuffer = array('encrypted' => '', 'xor' => '', 'pos' => 0, 'enmcrypt_init' => true); + + /** + * Decryption buffer for CTR, OFB and CFB modes + * + * @see Crypt_DES::decrypt() + * @var Array + * @access private + */ + var $debuffer = array('ciphertext' => '', 'xor' => '', 'pos' => 0, 'demcrypt_init' => true); + + /** + * mcrypt resource for CFB mode + * + * @see Crypt_DES::encrypt() + * @see Crypt_DES::decrypt() + * @var String + * @access private + */ + var $ecb; + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. $mode should only, at present, be + * CRYPT_DES_MODE_ECB or CRYPT_DES_MODE_CBC. If not explictly set, CRYPT_DES_MODE_CBC will be used. + * + * @param optional Integer $mode + * @return Crypt_DES + * @access public + */ + function Crypt_DES($mode = CRYPT_DES_MODE_CBC) + { + if ( !defined('CRYPT_DES_MODE') ) { + switch (true) { + case extension_loaded('mcrypt') && in_array('des', mcrypt_list_algorithms()): + define('CRYPT_DES_MODE', CRYPT_DES_MODE_MCRYPT); + break; + default: + define('CRYPT_DES_MODE', CRYPT_DES_MODE_INTERNAL); + } + } + + switch ( CRYPT_DES_MODE ) { + case CRYPT_DES_MODE_MCRYPT: + switch ($mode) { + case CRYPT_DES_MODE_ECB: + $this->paddable = true; + $this->mode = MCRYPT_MODE_ECB; + break; + case CRYPT_DES_MODE_CTR: + $this->mode = 'ctr'; + //$this->mode = in_array('ctr', mcrypt_list_modes()) ? 'ctr' : CRYPT_DES_MODE_CTR; + break; + case CRYPT_DES_MODE_CFB: + $this->mode = 'ncfb'; + $this->ecb = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, ''); + break; + case CRYPT_DES_MODE_OFB: + $this->mode = MCRYPT_MODE_NOFB; + break; + case CRYPT_DES_MODE_CBC: + default: + $this->paddable = true; + $this->mode = MCRYPT_MODE_CBC; + } + $this->enmcrypt = mcrypt_module_open(MCRYPT_DES, '', $this->mode, ''); + $this->demcrypt = mcrypt_module_open(MCRYPT_DES, '', $this->mode, ''); + + break; + default: + switch ($mode) { + case CRYPT_DES_MODE_ECB: + case CRYPT_DES_MODE_CBC: + $this->paddable = true; + $this->mode = $mode; + break; + case CRYPT_DES_MODE_CTR: + case CRYPT_DES_MODE_CFB: + case CRYPT_DES_MODE_OFB: + $this->mode = $mode; + break; + default: + $this->paddable = true; + $this->mode = CRYPT_DES_MODE_CBC; + } + } + } + + /** + * Sets the key. + * + * Keys can be of any length. DES, itself, uses 64-bit keys (eg. strlen($key) == 8), however, we + * only use the first eight, if $key has more then eight characters in it, and pad $key with the + * null byte if it is less then eight characters long. + * + * DES also requires that every eighth bit be a parity bit, however, we'll ignore that. + * + * If the key is not explicitly set, it'll be assumed to be all zero's. + * + * @access public + * @param String $key + */ + function setKey($key) + { + $this->keys = ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) ? str_pad(substr($key, 0, 8), 8, chr(0)) : $this->_prepareKey($key); + $this->enchanged = true; + $this->dechanged = true; + } + + /** + * Sets the password. + * + * Depending on what $method is set to, setPassword()'s (optional) parameters are as follows: + * {@link http://en.wikipedia.org/wiki/PBKDF2 pbkdf2}: + * $hash, $salt, $count + * + * @param String $password + * @param optional String $method + * @access public + */ + function setPassword($password, $method = 'pbkdf2') + { + $key = ''; + + switch ($method) { + default: // 'pbkdf2' + list(, , $hash, $salt, $count) = func_get_args(); + if (!isset($hash)) { + $hash = 'sha1'; + } + // WPA and WPA2 use the SSID as the salt + if (!isset($salt)) { + $salt = 'phpseclib/salt'; + } + // RFC2898#section-4.2 uses 1,000 iterations by default + // WPA and WPA2 use 4,096. + if (!isset($count)) { + $count = 1000; + } + + if (!class_exists('Crypt_Hash')) { + require_once('Crypt/Hash.php'); + } + + $i = 1; + while (strlen($key) < 8) { // $dkLen == 8 + //$dk.= $this->_pbkdf($password, $salt, $count, $i++); + $hmac = new Crypt_Hash(); + $hmac->setHash($hash); + $hmac->setKey($password); + $f = $u = $hmac->hash($salt . pack('N', $i++)); + for ($j = 2; $j <= $count; $j++) { + $u = $hmac->hash($u); + $f^= $u; + } + $key.= $f; + } + } + + $this->setKey($key); + } + + /** + * Sets the initialization vector. (optional) + * + * SetIV is not required when CRYPT_DES_MODE_ECB is being used. If not explictly set, it'll be assumed + * to be all zero's. + * + * @access public + * @param String $iv + */ + function setIV($iv) + { + $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($iv, 0, 8), 8, chr(0)); + $this->enchanged = true; + $this->dechanged = true; + } + + /** + * Generate CTR XOR encryption key + * + * Encrypt the output of this and XOR it against the ciphertext / plaintext to get the + * plaintext / ciphertext in CTR mode. + * + * @see Crypt_DES::decrypt() + * @see Crypt_DES::encrypt() + * @access public + * @param String $iv + */ + function _generate_xor(&$iv) + { + $xor = $iv; + for ($j = 4; $j <= 8; $j+=4) { + $temp = substr($iv, -$j, 4); + switch ($temp) { + case "\xFF\xFF\xFF\xFF": + $iv = substr_replace($iv, "\x00\x00\x00\x00", -$j, 4); + break; + case "\x7F\xFF\xFF\xFF": + $iv = substr_replace($iv, "\x80\x00\x00\x00", -$j, 4); + break 2; + default: + extract(unpack('Ncount', $temp)); + $iv = substr_replace($iv, pack('N', $count + 1), -$j, 4); + break 2; + } + } + + return $xor; + } + + /** + * Encrypts a message. + * + * $plaintext will be padded with up to 8 additional bytes. Other DES implementations may or may not pad in the + * same manner. Other common approaches to padding and the reasons why it's necessary are discussed in the following + * URL: + * + * {@link http://www.di-mgt.com.au/cryptopad.html http://www.di-mgt.com.au/cryptopad.html} + * + * An alternative to padding is to, separately, send the length of the file. This is what SSH, in fact, does. + * strlen($plaintext) will still need to be a multiple of 8, however, arbitrary values can be added to make it that + * length. + * + * @see Crypt_DES::decrypt() + * @access public + * @param String $plaintext + */ + function encrypt($plaintext) + { + if ($this->paddable) { + $plaintext = $this->_pad($plaintext); + } + + if ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) { + if ($this->enchanged) { + mcrypt_generic_init($this->enmcrypt, $this->keys, $this->encryptIV); + if ($this->mode == 'ncfb') { + mcrypt_generic_init($this->ecb, $this->keys, "\0\0\0\0\0\0\0\0"); + } + $this->enchanged = false; + } + + if ($this->mode != 'ncfb' || !$this->continuousBuffer) { + $ciphertext = mcrypt_generic($this->enmcrypt, $plaintext); + } else { + $iv = &$this->encryptIV; + $pos = &$this->enbuffer['pos']; + $len = strlen($plaintext); + $ciphertext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = 8 - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + $this->enbuffer['enmcrypt_init'] = true; + } + if ($len >= 8) { + if ($this->enbuffer['enmcrypt_init'] === false || $len > 600) { + if ($this->enbuffer['enmcrypt_init'] === true) { + mcrypt_generic_init($this->enmcrypt, $this->keys, $iv); + $this->enbuffer['enmcrypt_init'] = false; + } + $ciphertext.= mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % 8)); + $iv = substr($ciphertext, -8); + $len%= 8; + } else { + while ($len >= 8) { + $iv = mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, 8); + $ciphertext.= $iv; + $len-= 8; + $i+= 8; + } + } + } + if ($len) { + $iv = mcrypt_generic($this->ecb, $iv); + $block = $iv ^ substr($plaintext, -$len); + $iv = substr_replace($iv, $block, 0, $len); + $ciphertext.= $block; + $pos = $len; + } + return $ciphertext; + } + + if (!$this->continuousBuffer) { + mcrypt_generic_init($this->enmcrypt, $this->keys, $this->encryptIV); + } + + return $ciphertext; + } + + if (!is_array($this->keys)) { + $this->keys = $this->_prepareKey("\0\0\0\0\0\0\0\0"); + } + + $buffer = &$this->enbuffer; + $continuousBuffer = $this->continuousBuffer; + $ciphertext = ''; + switch ($this->mode) { + case CRYPT_DES_MODE_ECB: + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $ciphertext.= $this->_processBlock(substr($plaintext, $i, 8), CRYPT_DES_ENCRYPT); + } + break; + case CRYPT_DES_MODE_CBC: + $xor = $this->encryptIV; + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $block = substr($plaintext, $i, 8); + $block = $this->_processBlock($block ^ $xor, CRYPT_DES_ENCRYPT); + $xor = $block; + $ciphertext.= $block; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + } + break; + case CRYPT_DES_MODE_CTR: + $xor = $this->encryptIV; + if (strlen($buffer['encrypted'])) { + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $block = substr($plaintext, $i, 8); + $buffer['encrypted'].= $this->_processBlock($this->_generate_xor($xor), CRYPT_DES_ENCRYPT); + $key = $this->_string_shift($buffer['encrypted'], 8); + $ciphertext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $block = substr($plaintext, $i, 8); + $key = $this->_processBlock($this->_generate_xor($xor), CRYPT_DES_ENCRYPT); + $ciphertext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) & 7) { + $buffer['encrypted'] = substr($key, $start) . $buffer['encrypted']; + } + } + break; + case CRYPT_DES_MODE_CFB: + if ($this->continuousBuffer) { + $iv = &$this->encryptIV; + $pos = &$buffer['pos']; + } else { + $iv = $this->encryptIV; + $pos = 0; + } + $len = strlen($plaintext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = 8 - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + } + while ($len >= 8) { + $iv = $this->_processBlock($iv, CRYPT_DES_ENCRYPT) ^ substr($plaintext, $i, 8); + $ciphertext.= $iv; + $len-= 8; + $i+= 8; + } + if ($len) { + $iv = $this->_processBlock($iv, CRYPT_DES_ENCRYPT); + $block = $iv ^ substr($plaintext, $i); + $iv = substr_replace($iv, $block, 0, $len); + $ciphertext.= $block; + $pos = $len; + } + return $ciphertext; + case CRYPT_DES_MODE_OFB: + $xor = $this->encryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $xor = $this->_processBlock($xor, CRYPT_DES_ENCRYPT); + $buffer['xor'].= $xor; + $key = $this->_string_shift($buffer['xor'], 8); + $ciphertext.= substr($plaintext, $i, 8) ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $xor = $this->_processBlock($xor, CRYPT_DES_ENCRYPT); + $ciphertext.= substr($plaintext, $i, 8) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) & 7) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + } + + return $ciphertext; + } + + /** + * Decrypts a message. + * + * If strlen($ciphertext) is not a multiple of 8, null bytes will be added to the end of the string until it is. + * + * @see Crypt_DES::encrypt() + * @access public + * @param String $ciphertext + */ + function decrypt($ciphertext) + { + if ($this->paddable) { + // we pad with chr(0) since that's what mcrypt_generic does. to quote from http://php.net/function.mcrypt-generic : + // "The data is padded with "\0" to make sure the length of the data is n * blocksize." + $ciphertext = str_pad($ciphertext, (strlen($ciphertext) + 7) & 0xFFFFFFF8, chr(0)); + } + + if ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) { + if ($this->dechanged) { + mcrypt_generic_init($this->demcrypt, $this->keys, $this->decryptIV); + if ($this->mode == 'ncfb') { + mcrypt_generic_init($this->ecb, $this->keys, "\0\0\0\0\0\0\0\0"); + } + $this->dechanged = false; + } + + if ($this->mode != 'ncfb' || !$this->continuousBuffer) { + $plaintext = mdecrypt_generic($this->demcrypt, $ciphertext); + } else { + $iv = &$this->decryptIV; + $pos = &$this->debuffer['pos']; + $len = strlen($ciphertext); + $plaintext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = 8 - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + } + if ($len >= 8) { + $cb = substr($ciphertext, $i, $len - $len % 8); + $plaintext.= mcrypt_generic($this->ecb, $iv . $cb) ^ $cb; + $iv = substr($cb, -8); + $len%= 8; + } + if ($len) { + $iv = mcrypt_generic($this->ecb, $iv); + $plaintext.= $iv ^ substr($ciphertext, -$len); + $iv = substr_replace($iv, substr($ciphertext, -$len), 0, $len); + $pos = $len; + } + return $plaintext; + } + + if (!$this->continuousBuffer) { + mcrypt_generic_init($this->demcrypt, $this->keys, $this->decryptIV); + } + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + if (!is_array($this->keys)) { + $this->keys = $this->_prepareKey("\0\0\0\0\0\0\0\0"); + } + + $buffer = &$this->debuffer; + $continuousBuffer = $this->continuousBuffer; + $plaintext = ''; + switch ($this->mode) { + case CRYPT_DES_MODE_ECB: + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $plaintext.= $this->_processBlock(substr($ciphertext, $i, 8), CRYPT_DES_DECRYPT); + } + break; + case CRYPT_DES_MODE_CBC: + $xor = $this->decryptIV; + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $block = substr($ciphertext, $i, 8); + $plaintext.= $this->_processBlock($block, CRYPT_DES_DECRYPT) ^ $xor; + $xor = $block; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + } + break; + case CRYPT_DES_MODE_CTR: + $xor = $this->decryptIV; + if (strlen($buffer['ciphertext'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $block = substr($ciphertext, $i, 8); + $buffer['ciphertext'].= $this->_processBlock($this->_generate_xor($xor), CRYPT_DES_ENCRYPT); + $key = $this->_string_shift($buffer['ciphertext'], 8); + $plaintext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $block = substr($ciphertext, $i, 8); + $key = $this->_processBlock($this->_generate_xor($xor), CRYPT_DES_ENCRYPT); + $plaintext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($ciphertext) % 8) { + $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; + } + } + break; + case CRYPT_DES_MODE_CFB: + if ($this->continuousBuffer) { + $iv = &$this->decryptIV; + $pos = &$buffer['pos']; + } else { + $iv = $this->decryptIV; + $pos = 0; + } + $len = strlen($ciphertext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = 8 - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + } + while ($len >= 8) { + $iv = $this->_processBlock($iv, CRYPT_DES_ENCRYPT); + $cb = substr($ciphertext, $i, 8); + $plaintext.= $iv ^ $cb; + $iv = $cb; + $len-= 8; + $i+= 8; + } + if ($len) { + $iv = $this->_processBlock($iv, CRYPT_DES_ENCRYPT); + $plaintext.= $iv ^ substr($ciphertext, $i); + $iv = substr_replace($iv, substr($ciphertext, $i), 0, $len); + $pos = $len; + } + return $plaintext; + case CRYPT_DES_MODE_OFB: + $xor = $this->decryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $xor = $this->_processBlock($xor, CRYPT_DES_ENCRYPT); + $buffer['xor'].= $xor; + $key = $this->_string_shift($buffer['xor'], 8); + $plaintext.= substr($ciphertext, $i, 8) ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $xor = $this->_processBlock($xor, CRYPT_DES_ENCRYPT); + $plaintext.= substr($ciphertext, $i, 8) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($ciphertext) % 8) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + } + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + /** + * Treat consecutive "packets" as if they are a continuous buffer. + * + * Say you have a 16-byte plaintext $plaintext. Using the default behavior, the two following code snippets + * will yield different outputs: + * + * + * echo $des->encrypt(substr($plaintext, 0, 8)); + * echo $des->encrypt(substr($plaintext, 8, 8)); + * + * + * echo $des->encrypt($plaintext); + * + * + * The solution is to enable the continuous buffer. Although this will resolve the above discrepancy, it creates + * another, as demonstrated with the following: + * + * + * $des->encrypt(substr($plaintext, 0, 8)); + * echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * With the continuous buffer disabled, these would yield the same output. With it enabled, they yield different + * outputs. The reason is due to the fact that the initialization vector's change after every encryption / + * decryption round when the continuous buffer is enabled. When it's disabled, they remain constant. + * + * Put another way, when the continuous buffer is enabled, the state of the Crypt_DES() object changes after each + * encryption / decryption round, whereas otherwise, it'd remain constant. For this reason, it's recommended that + * continuous buffers not be used. They do offer better security and are, in fact, sometimes required (SSH uses them), + * however, they are also less intuitive and more likely to cause you problems. + * + * @see Crypt_DES::disableContinuousBuffer() + * @access public + */ + function enableContinuousBuffer() + { + $this->continuousBuffer = true; + } + + /** + * Treat consecutive packets as if they are a discontinuous buffer. + * + * The default behavior. + * + * @see Crypt_DES::enableContinuousBuffer() + * @access public + */ + function disableContinuousBuffer() + { + $this->continuousBuffer = false; + $this->encryptIV = $this->iv; + $this->decryptIV = $this->iv; + $this->enbuffer = array('encrypted' => '', 'xor' => '', 'pos' => 0, 'enmcrypt_init' => true); + $this->debuffer = array('ciphertext' => '', 'xor' => '', 'pos' => 0, 'demcrypt_init' => true); + + if (CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT) { + mcrypt_generic_init($this->enmcrypt, $this->keys, $this->iv); + mcrypt_generic_init($this->demcrypt, $this->keys, $this->iv); + } + } + + /** + * Pad "packets". + * + * DES works by encrypting eight bytes at a time. If you ever need to encrypt or decrypt something that's not + * a multiple of eight, it becomes necessary to pad the input so that it's length is a multiple of eight. + * + * Padding is enabled by default. Sometimes, however, it is undesirable to pad strings. Such is the case in SSH1, + * where "packets" are padded with random bytes before being encrypted. Unpad these packets and you risk stripping + * away characters that shouldn't be stripped away. (SSH knows how many bytes are added because the length is + * transmitted separately) + * + * @see Crypt_DES::disablePadding() + * @access public + */ + function enablePadding() + { + $this->padding = true; + } + + /** + * Do not pad packets. + * + * @see Crypt_DES::enablePadding() + * @access public + */ + function disablePadding() + { + $this->padding = false; + } + + /** + * Pads a string + * + * Pads a string using the RSA PKCS padding standards so that its length is a multiple of the blocksize (8). + * 8 - (strlen($text) & 7) bytes are added, each of which is equal to chr(8 - (strlen($text) & 7) + * + * If padding is disabled and $text is not a multiple of the blocksize, the string will be padded regardless + * and padding will, hence forth, be enabled. + * + * @see Crypt_DES::_unpad() + * @access private + */ + function _pad($text) + { + $length = strlen($text); + + if (!$this->padding) { + if (($length & 7) == 0) { + return $text; + } else { + user_error("The plaintext's length ($length) is not a multiple of the block size (8)"); + $this->padding = true; + } + } + + $pad = 8 - ($length & 7); + return str_pad($text, $length + $pad, chr($pad)); + } + + /** + * Unpads a string + * + * If padding is enabled and the reported padding length is invalid the encryption key will be assumed to be wrong + * and false will be returned. + * + * @see Crypt_DES::_pad() + * @access private + */ + function _unpad($text) + { + if (!$this->padding) { + return $text; + } + + $length = ord($text[strlen($text) - 1]); + + if (!$length || $length > 8) { + return false; + } + + return substr($text, 0, -$length); + } + + /** + * Encrypts or decrypts a 64-bit block + * + * $mode should be either CRYPT_DES_ENCRYPT or CRYPT_DES_DECRYPT. See + * {@link http://en.wikipedia.org/wiki/Image:Feistel.png Feistel.png} to get a general + * idea of what this function does. + * + * @access private + * @param String $block + * @param Integer $mode + * @return String + */ + function _processBlock($block, $mode) + { + // s-boxes. in the official DES docs, they're described as being matrices that + // one accesses by using the first and last bits to determine the row and the + // middle four bits to determine the column. in this implementation, they've + // been converted to vectors + static $sbox = array( + array( + 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, + 3, 10 ,10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, + 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, + 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13 + ), + array( + 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, + 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, + 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, + 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9 + ), + array( + 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, + 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, + 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, + 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12 + ), + array( + 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, + 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, + 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, + 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14 + ), + array( + 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, + 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, + 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, + 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3 + ), + array( + 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, + 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, + 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, + 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13 + ), + array( + 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, + 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, + 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, + 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12 + ), + array( + 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, + 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, + 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, + 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11 + ) + ); + + $keys = $this->keys; + + $temp = unpack('Na/Nb', $block); + $block = array($temp['a'], $temp['b']); + + // because php does arithmetic right shifts, if the most significant bits are set, right + // shifting those into the correct position will add 1's - not 0's. this will intefere + // with the | operation unless a second & is done. so we isolate these bits and left shift + // them into place. we then & each block with 0x7FFFFFFF to prevennt 1's from being added + // for any other shifts. + $msb = array( + ($block[0] >> 31) & 1, + ($block[1] >> 31) & 1 + ); + $block[0] &= 0x7FFFFFFF; + $block[1] &= 0x7FFFFFFF; + + // we isolate the appropriate bit in the appropriate integer and shift as appropriate. in + // some cases, there are going to be multiple bits in the same integer that need to be shifted + // in the same way. we combine those into one shift operation. + $block = array( + (($block[1] & 0x00000040) << 25) | (($block[1] & 0x00004000) << 16) | + (($block[1] & 0x00400001) << 7) | (($block[1] & 0x40000100) >> 2) | + (($block[0] & 0x00000040) << 21) | (($block[0] & 0x00004000) << 12) | + (($block[0] & 0x00400001) << 3) | (($block[0] & 0x40000100) >> 6) | + (($block[1] & 0x00000010) << 19) | (($block[1] & 0x00001000) << 10) | + (($block[1] & 0x00100000) << 1) | (($block[1] & 0x10000000) >> 8) | + (($block[0] & 0x00000010) << 15) | (($block[0] & 0x00001000) << 6) | + (($block[0] & 0x00100000) >> 3) | (($block[0] & 0x10000000) >> 12) | + (($block[1] & 0x00000004) << 13) | (($block[1] & 0x00000400) << 4) | + (($block[1] & 0x00040000) >> 5) | (($block[1] & 0x04000000) >> 14) | + (($block[0] & 0x00000004) << 9) | ( $block[0] & 0x00000400 ) | + (($block[0] & 0x00040000) >> 9) | (($block[0] & 0x04000000) >> 18) | + (($block[1] & 0x00010000) >> 11) | (($block[1] & 0x01000000) >> 20) | + (($block[0] & 0x00010000) >> 15) | (($block[0] & 0x01000000) >> 24) + , + (($block[1] & 0x00000080) << 24) | (($block[1] & 0x00008000) << 15) | + (($block[1] & 0x00800002) << 6) | (($block[0] & 0x00000080) << 20) | + (($block[0] & 0x00008000) << 11) | (($block[0] & 0x00800002) << 2) | + (($block[1] & 0x00000020) << 18) | (($block[1] & 0x00002000) << 9) | + ( $block[1] & 0x00200000 ) | (($block[1] & 0x20000000) >> 9) | + (($block[0] & 0x00000020) << 14) | (($block[0] & 0x00002000) << 5) | + (($block[0] & 0x00200000) >> 4) | (($block[0] & 0x20000000) >> 13) | + (($block[1] & 0x00000008) << 12) | (($block[1] & 0x00000800) << 3) | + (($block[1] & 0x00080000) >> 6) | (($block[1] & 0x08000000) >> 15) | + (($block[0] & 0x00000008) << 8) | (($block[0] & 0x00000800) >> 1) | + (($block[0] & 0x00080000) >> 10) | (($block[0] & 0x08000000) >> 19) | + (($block[1] & 0x00000200) >> 3) | (($block[0] & 0x00000200) >> 7) | + (($block[1] & 0x00020000) >> 12) | (($block[1] & 0x02000000) >> 21) | + (($block[0] & 0x00020000) >> 16) | (($block[0] & 0x02000000) >> 25) | + ($msb[1] << 28) | ($msb[0] << 24) + ); + + for ($i = 0; $i < 16; $i++) { + // start of "the Feistel (F) function" - see the following URL: + // http://en.wikipedia.org/wiki/Image:Data_Encryption_Standard_InfoBox_Diagram.png + $temp = (($sbox[0][((($block[1] >> 27) & 0x1F) | (($block[1] & 1) << 5)) ^ $keys[$mode][$i][0]]) << 28) + | (($sbox[1][(($block[1] & 0x1F800000) >> 23) ^ $keys[$mode][$i][1]]) << 24) + | (($sbox[2][(($block[1] & 0x01F80000) >> 19) ^ $keys[$mode][$i][2]]) << 20) + | (($sbox[3][(($block[1] & 0x001F8000) >> 15) ^ $keys[$mode][$i][3]]) << 16) + | (($sbox[4][(($block[1] & 0x0001F800) >> 11) ^ $keys[$mode][$i][4]]) << 12) + | (($sbox[5][(($block[1] & 0x00001F80) >> 7) ^ $keys[$mode][$i][5]]) << 8) + | (($sbox[6][(($block[1] & 0x000001F8) >> 3) ^ $keys[$mode][$i][6]]) << 4) + | ( $sbox[7][((($block[1] & 0x1F) << 1) | (($block[1] >> 31) & 1)) ^ $keys[$mode][$i][7]]); + + $msb = ($temp >> 31) & 1; + $temp &= 0x7FFFFFFF; + $newBlock = (($temp & 0x00010000) << 15) | (($temp & 0x02020120) << 5) + | (($temp & 0x00001800) << 17) | (($temp & 0x01000000) >> 10) + | (($temp & 0x00000008) << 24) | (($temp & 0x00100000) << 6) + | (($temp & 0x00000010) << 21) | (($temp & 0x00008000) << 9) + | (($temp & 0x00000200) << 12) | (($temp & 0x10000000) >> 27) + | (($temp & 0x00000040) << 14) | (($temp & 0x08000000) >> 8) + | (($temp & 0x00004000) << 4) | (($temp & 0x00000002) << 16) + | (($temp & 0x00442000) >> 6) | (($temp & 0x40800000) >> 15) + | (($temp & 0x00000001) << 11) | (($temp & 0x20000000) >> 20) + | (($temp & 0x00080000) >> 13) | (($temp & 0x00000004) << 3) + | (($temp & 0x04000000) >> 22) | (($temp & 0x00000480) >> 7) + | (($temp & 0x00200000) >> 19) | ($msb << 23); + // end of "the Feistel (F) function" - $newBlock is F's output + + $temp = $block[1]; + $block[1] = $block[0] ^ $newBlock; + $block[0] = $temp; + } + + $msb = array( + ($block[0] >> 31) & 1, + ($block[1] >> 31) & 1 + ); + $block[0] &= 0x7FFFFFFF; + $block[1] &= 0x7FFFFFFF; + + $block = array( + (($block[0] & 0x01000004) << 7) | (($block[1] & 0x01000004) << 6) | + (($block[0] & 0x00010000) << 13) | (($block[1] & 0x00010000) << 12) | + (($block[0] & 0x00000100) << 19) | (($block[1] & 0x00000100) << 18) | + (($block[0] & 0x00000001) << 25) | (($block[1] & 0x00000001) << 24) | + (($block[0] & 0x02000008) >> 2) | (($block[1] & 0x02000008) >> 3) | + (($block[0] & 0x00020000) << 4) | (($block[1] & 0x00020000) << 3) | + (($block[0] & 0x00000200) << 10) | (($block[1] & 0x00000200) << 9) | + (($block[0] & 0x00000002) << 16) | (($block[1] & 0x00000002) << 15) | + (($block[0] & 0x04000000) >> 11) | (($block[1] & 0x04000000) >> 12) | + (($block[0] & 0x00040000) >> 5) | (($block[1] & 0x00040000) >> 6) | + (($block[0] & 0x00000400) << 1) | ( $block[1] & 0x00000400 ) | + (($block[0] & 0x08000000) >> 20) | (($block[1] & 0x08000000) >> 21) | + (($block[0] & 0x00080000) >> 14) | (($block[1] & 0x00080000) >> 15) | + (($block[0] & 0x00000800) >> 8) | (($block[1] & 0x00000800) >> 9) + , + (($block[0] & 0x10000040) << 3) | (($block[1] & 0x10000040) << 2) | + (($block[0] & 0x00100000) << 9) | (($block[1] & 0x00100000) << 8) | + (($block[0] & 0x00001000) << 15) | (($block[1] & 0x00001000) << 14) | + (($block[0] & 0x00000010) << 21) | (($block[1] & 0x00000010) << 20) | + (($block[0] & 0x20000080) >> 6) | (($block[1] & 0x20000080) >> 7) | + ( $block[0] & 0x00200000 ) | (($block[1] & 0x00200000) >> 1) | + (($block[0] & 0x00002000) << 6) | (($block[1] & 0x00002000) << 5) | + (($block[0] & 0x00000020) << 12) | (($block[1] & 0x00000020) << 11) | + (($block[0] & 0x40000000) >> 15) | (($block[1] & 0x40000000) >> 16) | + (($block[0] & 0x00400000) >> 9) | (($block[1] & 0x00400000) >> 10) | + (($block[0] & 0x00004000) >> 3) | (($block[1] & 0x00004000) >> 4) | + (($block[0] & 0x00800000) >> 18) | (($block[1] & 0x00800000) >> 19) | + (($block[0] & 0x00008000) >> 12) | (($block[1] & 0x00008000) >> 13) | + ($msb[0] << 7) | ($msb[1] << 6) + ); + + return pack('NN', $block[0], $block[1]); + } + + /** + * Creates the key schedule. + * + * @access private + * @param String $key + * @return Array + */ + function _prepareKey($key) + { + static $shifts = array( // number of key bits shifted per round + 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 + ); + + // pad the key and remove extra characters as appropriate. + $key = str_pad(substr($key, 0, 8), 8, chr(0)); + + $temp = unpack('Na/Nb', $key); + $key = array($temp['a'], $temp['b']); + $msb = array( + ($key[0] >> 31) & 1, + ($key[1] >> 31) & 1 + ); + $key[0] &= 0x7FFFFFFF; + $key[1] &= 0x7FFFFFFF; + + $key = array( + (($key[1] & 0x00000002) << 26) | (($key[1] & 0x00000204) << 17) | + (($key[1] & 0x00020408) << 8) | (($key[1] & 0x02040800) >> 1) | + (($key[0] & 0x00000002) << 22) | (($key[0] & 0x00000204) << 13) | + (($key[0] & 0x00020408) << 4) | (($key[0] & 0x02040800) >> 5) | + (($key[1] & 0x04080000) >> 10) | (($key[0] & 0x04080000) >> 14) | + (($key[1] & 0x08000000) >> 19) | (($key[0] & 0x08000000) >> 23) | + (($key[0] & 0x00000010) >> 1) | (($key[0] & 0x00001000) >> 10) | + (($key[0] & 0x00100000) >> 19) | (($key[0] & 0x10000000) >> 28) + , + (($key[1] & 0x00000080) << 20) | (($key[1] & 0x00008000) << 11) | + (($key[1] & 0x00800000) << 2) | (($key[0] & 0x00000080) << 16) | + (($key[0] & 0x00008000) << 7) | (($key[0] & 0x00800000) >> 2) | + (($key[1] & 0x00000040) << 13) | (($key[1] & 0x00004000) << 4) | + (($key[1] & 0x00400000) >> 5) | (($key[1] & 0x40000000) >> 14) | + (($key[0] & 0x00000040) << 9) | ( $key[0] & 0x00004000 ) | + (($key[0] & 0x00400000) >> 9) | (($key[0] & 0x40000000) >> 18) | + (($key[1] & 0x00000020) << 6) | (($key[1] & 0x00002000) >> 3) | + (($key[1] & 0x00200000) >> 12) | (($key[1] & 0x20000000) >> 21) | + (($key[0] & 0x00000020) << 2) | (($key[0] & 0x00002000) >> 7) | + (($key[0] & 0x00200000) >> 16) | (($key[0] & 0x20000000) >> 25) | + (($key[1] & 0x00000010) >> 1) | (($key[1] & 0x00001000) >> 10) | + (($key[1] & 0x00100000) >> 19) | (($key[1] & 0x10000000) >> 28) | + ($msb[1] << 24) | ($msb[0] << 20) + ); + + $keys = array(); + for ($i = 0; $i < 16; $i++) { + $key[0] <<= $shifts[$i]; + $temp = ($key[0] & 0xF0000000) >> 28; + $key[0] = ($key[0] | $temp) & 0x0FFFFFFF; + + $key[1] <<= $shifts[$i]; + $temp = ($key[1] & 0xF0000000) >> 28; + $key[1] = ($key[1] | $temp) & 0x0FFFFFFF; + + $temp = array( + (($key[1] & 0x00004000) >> 9) | (($key[1] & 0x00000800) >> 7) | + (($key[1] & 0x00020000) >> 14) | (($key[1] & 0x00000010) >> 2) | + (($key[1] & 0x08000000) >> 26) | (($key[1] & 0x00800000) >> 23) + , + (($key[1] & 0x02400000) >> 20) | (($key[1] & 0x00000001) << 4) | + (($key[1] & 0x00002000) >> 10) | (($key[1] & 0x00040000) >> 18) | + (($key[1] & 0x00000080) >> 6) + , + ( $key[1] & 0x00000020 ) | (($key[1] & 0x00000200) >> 5) | + (($key[1] & 0x00010000) >> 13) | (($key[1] & 0x01000000) >> 22) | + (($key[1] & 0x00000004) >> 1) | (($key[1] & 0x00100000) >> 20) + , + (($key[1] & 0x00001000) >> 7) | (($key[1] & 0x00200000) >> 17) | + (($key[1] & 0x00000002) << 2) | (($key[1] & 0x00000100) >> 6) | + (($key[1] & 0x00008000) >> 14) | (($key[1] & 0x04000000) >> 26) + , + (($key[0] & 0x00008000) >> 10) | ( $key[0] & 0x00000010 ) | + (($key[0] & 0x02000000) >> 22) | (($key[0] & 0x00080000) >> 17) | + (($key[0] & 0x00000200) >> 8) | (($key[0] & 0x00000002) >> 1) + , + (($key[0] & 0x04000000) >> 21) | (($key[0] & 0x00010000) >> 12) | + (($key[0] & 0x00000020) >> 2) | (($key[0] & 0x00000800) >> 9) | + (($key[0] & 0x00800000) >> 22) | (($key[0] & 0x00000100) >> 8) + , + (($key[0] & 0x00001000) >> 7) | (($key[0] & 0x00000088) >> 3) | + (($key[0] & 0x00020000) >> 14) | (($key[0] & 0x00000001) << 2) | + (($key[0] & 0x00400000) >> 21) + , + (($key[0] & 0x00000400) >> 5) | (($key[0] & 0x00004000) >> 10) | + (($key[0] & 0x00000040) >> 3) | (($key[0] & 0x00100000) >> 18) | + (($key[0] & 0x08000000) >> 26) | (($key[0] & 0x01000000) >> 24) + ); + + $keys[] = $temp; + } + + $temp = array( + CRYPT_DES_ENCRYPT => $keys, + CRYPT_DES_DECRYPT => array_reverse($keys) + ); + + return $temp; + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param String $string + * @param optional Integer $index + * @return String + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } +} + +// vim: ts=4:sw=4:et: +// vim6: fdl=1: diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/Hash.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/Hash.php new file mode 100644 index 0000000000..c5d314f009 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/Hash.php @@ -0,0 +1,825 @@ + + * setKey('abcdefg'); + * + * echo base64_encode($hash->hash('abcdefg')); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Hash + * @author Jim Wigginton + * @copyright MMVII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: Hash.php,v 1.6 2009/11/23 23:37:07 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * @access private + * @see Crypt_Hash::Crypt_Hash() + */ +/** + * Toggles the internal implementation + */ +define('CRYPT_HASH_MODE_INTERNAL', 1); +/** + * Toggles the mhash() implementation, which has been deprecated on PHP 5.3.0+. + */ +define('CRYPT_HASH_MODE_MHASH', 2); +/** + * Toggles the hash() implementation, which works on PHP 5.1.2+. + */ +define('CRYPT_HASH_MODE_HASH', 3); +/**#@-*/ + +/** + * Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic hashing functions. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Crypt_Hash + */ +class Crypt_Hash { + /** + * Byte-length of compression blocks / key (Internal HMAC) + * + * @see Crypt_Hash::setAlgorithm() + * @var Integer + * @access private + */ + var $b; + + /** + * Byte-length of hash output (Internal HMAC) + * + * @see Crypt_Hash::setHash() + * @var Integer + * @access private + */ + var $l = false; + + /** + * Hash Algorithm + * + * @see Crypt_Hash::setHash() + * @var String + * @access private + */ + var $hash; + + /** + * Key + * + * @see Crypt_Hash::setKey() + * @var String + * @access private + */ + var $key = false; + + /** + * Outer XOR (Internal HMAC) + * + * @see Crypt_Hash::setKey() + * @var String + * @access private + */ + var $opad; + + /** + * Inner XOR (Internal HMAC) + * + * @see Crypt_Hash::setKey() + * @var String + * @access private + */ + var $ipad; + + /** + * Default Constructor. + * + * @param optional String $hash + * @return Crypt_Hash + * @access public + */ + function Crypt_Hash($hash = 'sha1') + { + if ( !defined('CRYPT_HASH_MODE') ) { + switch (true) { + case extension_loaded('hash'): + define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_HASH); + break; + case extension_loaded('mhash'): + define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_MHASH); + break; + default: + define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_INTERNAL); + } + } + + $this->setHash($hash); + } + + /** + * Sets the key for HMACs + * + * Keys can be of any length. + * + * @access public + * @param String $key + */ + function setKey($key = false) + { + $this->key = $key; + } + + /** + * Sets the hash function. + * + * @access public + * @param String $hash + */ + function setHash($hash) + { + $hash = strtolower($hash); + switch ($hash) { + case 'md5-96': + case 'sha1-96': + $this->l = 12; // 96 / 8 = 12 + break; + case 'md2': + case 'md5': + $this->l = 16; + break; + case 'sha1': + $this->l = 20; + break; + case 'sha256': + $this->l = 32; + break; + case 'sha384': + $this->l = 48; + break; + case 'sha512': + $this->l = 64; + } + + switch ($hash) { + case 'md2': + $mode = CRYPT_HASH_MODE == CRYPT_HASH_MODE_HASH && in_array('md2', hash_algos()) ? + CRYPT_HASH_MODE_HASH : CRYPT_HASH_MODE_INTERNAL; + break; + case 'sha384': + case 'sha512': + $mode = CRYPT_HASH_MODE == CRYPT_HASH_MODE_MHASH ? CRYPT_HASH_MODE_INTERNAL : CRYPT_HASH_MODE; + break; + default: + $mode = CRYPT_HASH_MODE; + } + + switch ( $mode ) { + case CRYPT_HASH_MODE_MHASH: + switch ($hash) { + case 'md5': + case 'md5-96': + $this->hash = MHASH_MD5; + break; + case 'sha256': + $this->hash = MHASH_SHA256; + break; + case 'sha1': + case 'sha1-96': + default: + $this->hash = MHASH_SHA1; + } + return; + case CRYPT_HASH_MODE_HASH: + switch ($hash) { + case 'md5': + case 'md5-96': + $this->hash = 'md5'; + return; + case 'md2': + case 'sha256': + case 'sha384': + case 'sha512': + $this->hash = $hash; + return; + case 'sha1': + case 'sha1-96': + default: + $this->hash = 'sha1'; + } + return; + } + + switch ($hash) { + case 'md2': + $this->b = 16; + $this->hash = array($this, '_md2'); + break; + case 'md5': + case 'md5-96': + $this->b = 64; + $this->hash = array($this, '_md5'); + break; + case 'sha256': + $this->b = 64; + $this->hash = array($this, '_sha256'); + break; + case 'sha384': + case 'sha512': + $this->b = 128; + $this->hash = array($this, '_sha512'); + break; + case 'sha1': + case 'sha1-96': + default: + $this->b = 64; + $this->hash = array($this, '_sha1'); + } + + $this->ipad = str_repeat(chr(0x36), $this->b); + $this->opad = str_repeat(chr(0x5C), $this->b); + } + + /** + * Compute the HMAC. + * + * @access public + * @param String $text + * @return String + */ + function hash($text) + { + $mode = is_array($this->hash) ? CRYPT_HASH_MODE_INTERNAL : CRYPT_HASH_MODE; + + if (!empty($this->key) || is_string($this->key)) { + switch ( $mode ) { + case CRYPT_HASH_MODE_MHASH: + $output = mhash($this->hash, $text, $this->key); + break; + case CRYPT_HASH_MODE_HASH: + $output = hash_hmac($this->hash, $text, $this->key, true); + break; + case CRYPT_HASH_MODE_INTERNAL: + /* "Applications that use keys longer than B bytes will first hash the key using H and then use the + resultant L byte string as the actual key to HMAC." + + -- http://tools.ietf.org/html/rfc2104#section-2 */ + $key = strlen($this->key) > $this->b ? call_user_func($this->hash, $this->key) : $this->key; + + $key = str_pad($key, $this->b, chr(0)); // step 1 + $temp = $this->ipad ^ $key; // step 2 + $temp .= $text; // step 3 + $temp = call_user_func($this->hash, $temp); // step 4 + $output = $this->opad ^ $key; // step 5 + $output.= $temp; // step 6 + $output = call_user_func($this->hash, $output); // step 7 + } + } else { + switch ( $mode ) { + case CRYPT_HASH_MODE_MHASH: + $output = mhash($this->hash, $text); + break; + case CRYPT_HASH_MODE_HASH: + $output = hash($this->hash, $text, true); + break; + case CRYPT_HASH_MODE_INTERNAL: + $output = call_user_func($this->hash, $text); + } + } + + return substr($output, 0, $this->l); + } + + /** + * Returns the hash length (in bytes) + * + * @access public + * @return Integer + */ + function getLength() + { + return $this->l; + } + + /** + * Wrapper for MD5 + * + * @access private + * @param String $text + */ + function _md5($m) + { + return pack('H*', md5($m)); + } + + /** + * Wrapper for SHA1 + * + * @access private + * @param String $text + */ + function _sha1($m) + { + return pack('H*', sha1($m)); + } + + /** + * Pure-PHP implementation of MD2 + * + * See {@link http://tools.ietf.org/html/rfc1319 RFC1319}. + * + * @access private + * @param String $text + */ + function _md2($m) + { + static $s = array( + 41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6, + 19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188, + 76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24, + 138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251, + 245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63, + 148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50, + 39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165, + 181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210, + 150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157, + 112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27, + 96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15, + 85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197, + 234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65, + 129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123, + 8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233, + 203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228, + 166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237, + 31, 26, 219, 153, 141, 51, 159, 17, 131, 20 + ); + + // Step 1. Append Padding Bytes + $pad = 16 - (strlen($m) & 0xF); + $m.= str_repeat(chr($pad), $pad); + + $length = strlen($m); + + // Step 2. Append Checksum + $c = str_repeat(chr(0), 16); + $l = chr(0); + for ($i = 0; $i < $length; $i+= 16) { + for ($j = 0; $j < 16; $j++) { + // RFC1319 incorrectly states that C[j] should be set to S[c xor L] + //$c[$j] = chr($s[ord($m[$i + $j] ^ $l)]); + // per , however, C[j] should be set to S[c xor L] xor C[j] + $c[$j] = chr($s[ord($m[$i + $j] ^ $l)] ^ ord($c[$j])); + $l = $c[$j]; + } + } + $m.= $c; + + $length+= 16; + + // Step 3. Initialize MD Buffer + $x = str_repeat(chr(0), 48); + + // Step 4. Process Message in 16-Byte Blocks + for ($i = 0; $i < $length; $i+= 16) { + for ($j = 0; $j < 16; $j++) { + $x[$j + 16] = $m[$i + $j]; + $x[$j + 32] = $x[$j + 16] ^ $x[$j]; + } + $t = chr(0); + for ($j = 0; $j < 18; $j++) { + for ($k = 0; $k < 48; $k++) { + $x[$k] = $t = $x[$k] ^ chr($s[ord($t)]); + //$t = $x[$k] = $x[$k] ^ chr($s[ord($t)]); + } + $t = chr(ord($t) + $j); + } + } + + // Step 5. Output + return substr($x, 0, 16); + } + + /** + * Pure-PHP implementation of SHA256 + * + * See {@link http://en.wikipedia.org/wiki/SHA_hash_functions#SHA-256_.28a_SHA-2_variant.29_pseudocode SHA-256 (a SHA-2 variant) pseudocode - Wikipedia}. + * + * @access private + * @param String $text + */ + function _sha256($m) + { + if (extension_loaded('suhosin')) { + return pack('H*', sha256($m)); + } + + // Initialize variables + $hash = array( + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 + ); + // Initialize table of round constants + // (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311) + static $k = array( + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 + ); + + // Pre-processing + $length = strlen($m); + // to round to nearest 56 mod 64, we'll add 64 - (length + (64 - 56)) % 64 + $m.= str_repeat(chr(0), 64 - (($length + 8) & 0x3F)); + $m[$length] = chr(0x80); + // we don't support hashing strings 512MB long + $m.= pack('N2', 0, $length << 3); + + // Process the message in successive 512-bit chunks + $chunks = str_split($m, 64); + foreach ($chunks as $chunk) { + $w = array(); + for ($i = 0; $i < 16; $i++) { + extract(unpack('Ntemp', $this->_string_shift($chunk, 4))); + $w[] = $temp; + } + + // Extend the sixteen 32-bit words into sixty-four 32-bit words + for ($i = 16; $i < 64; $i++) { + $s0 = $this->_rightRotate($w[$i - 15], 7) ^ + $this->_rightRotate($w[$i - 15], 18) ^ + $this->_rightShift( $w[$i - 15], 3); + $s1 = $this->_rightRotate($w[$i - 2], 17) ^ + $this->_rightRotate($w[$i - 2], 19) ^ + $this->_rightShift( $w[$i - 2], 10); + $w[$i] = $this->_add($w[$i - 16], $s0, $w[$i - 7], $s1); + + } + + // Initialize hash value for this chunk + list($a, $b, $c, $d, $e, $f, $g, $h) = $hash; + + // Main loop + for ($i = 0; $i < 64; $i++) { + $s0 = $this->_rightRotate($a, 2) ^ + $this->_rightRotate($a, 13) ^ + $this->_rightRotate($a, 22); + $maj = ($a & $b) ^ + ($a & $c) ^ + ($b & $c); + $t2 = $this->_add($s0, $maj); + + $s1 = $this->_rightRotate($e, 6) ^ + $this->_rightRotate($e, 11) ^ + $this->_rightRotate($e, 25); + $ch = ($e & $f) ^ + ($this->_not($e) & $g); + $t1 = $this->_add($h, $s1, $ch, $k[$i], $w[$i]); + + $h = $g; + $g = $f; + $f = $e; + $e = $this->_add($d, $t1); + $d = $c; + $c = $b; + $b = $a; + $a = $this->_add($t1, $t2); + } + + // Add this chunk's hash to result so far + $hash = array( + $this->_add($hash[0], $a), + $this->_add($hash[1], $b), + $this->_add($hash[2], $c), + $this->_add($hash[3], $d), + $this->_add($hash[4], $e), + $this->_add($hash[5], $f), + $this->_add($hash[6], $g), + $this->_add($hash[7], $h) + ); + } + + // Produce the final hash value (big-endian) + return pack('N8', $hash[0], $hash[1], $hash[2], $hash[3], $hash[4], $hash[5], $hash[6], $hash[7]); + } + + /** + * Pure-PHP implementation of SHA384 and SHA512 + * + * @access private + * @param String $text + */ + function _sha512($m) + { + if (!class_exists('Math_BigInteger')) { + require_once('Math/BigInteger.php'); + } + + static $init384, $init512, $k; + + if (!isset($k)) { + // Initialize variables + $init384 = array( // initial values for SHA384 + 'cbbb9d5dc1059ed8', '629a292a367cd507', '9159015a3070dd17', '152fecd8f70e5939', + '67332667ffc00b31', '8eb44a8768581511', 'db0c2e0d64f98fa7', '47b5481dbefa4fa4' + ); + $init512 = array( // initial values for SHA512 + '6a09e667f3bcc908', 'bb67ae8584caa73b', '3c6ef372fe94f82b', 'a54ff53a5f1d36f1', + '510e527fade682d1', '9b05688c2b3e6c1f', '1f83d9abfb41bd6b', '5be0cd19137e2179' + ); + + for ($i = 0; $i < 8; $i++) { + $init384[$i] = new Math_BigInteger($init384[$i], 16); + $init384[$i]->setPrecision(64); + $init512[$i] = new Math_BigInteger($init512[$i], 16); + $init512[$i]->setPrecision(64); + } + + // Initialize table of round constants + // (first 64 bits of the fractional parts of the cube roots of the first 80 primes 2..409) + $k = array( + '428a2f98d728ae22', '7137449123ef65cd', 'b5c0fbcfec4d3b2f', 'e9b5dba58189dbbc', + '3956c25bf348b538', '59f111f1b605d019', '923f82a4af194f9b', 'ab1c5ed5da6d8118', + 'd807aa98a3030242', '12835b0145706fbe', '243185be4ee4b28c', '550c7dc3d5ffb4e2', + '72be5d74f27b896f', '80deb1fe3b1696b1', '9bdc06a725c71235', 'c19bf174cf692694', + 'e49b69c19ef14ad2', 'efbe4786384f25e3', '0fc19dc68b8cd5b5', '240ca1cc77ac9c65', + '2de92c6f592b0275', '4a7484aa6ea6e483', '5cb0a9dcbd41fbd4', '76f988da831153b5', + '983e5152ee66dfab', 'a831c66d2db43210', 'b00327c898fb213f', 'bf597fc7beef0ee4', + 'c6e00bf33da88fc2', 'd5a79147930aa725', '06ca6351e003826f', '142929670a0e6e70', + '27b70a8546d22ffc', '2e1b21385c26c926', '4d2c6dfc5ac42aed', '53380d139d95b3df', + '650a73548baf63de', '766a0abb3c77b2a8', '81c2c92e47edaee6', '92722c851482353b', + 'a2bfe8a14cf10364', 'a81a664bbc423001', 'c24b8b70d0f89791', 'c76c51a30654be30', + 'd192e819d6ef5218', 'd69906245565a910', 'f40e35855771202a', '106aa07032bbd1b8', + '19a4c116b8d2d0c8', '1e376c085141ab53', '2748774cdf8eeb99', '34b0bcb5e19b48a8', + '391c0cb3c5c95a63', '4ed8aa4ae3418acb', '5b9cca4f7763e373', '682e6ff3d6b2b8a3', + '748f82ee5defb2fc', '78a5636f43172f60', '84c87814a1f0ab72', '8cc702081a6439ec', + '90befffa23631e28', 'a4506cebde82bde9', 'bef9a3f7b2c67915', 'c67178f2e372532b', + 'ca273eceea26619c', 'd186b8c721c0c207', 'eada7dd6cde0eb1e', 'f57d4f7fee6ed178', + '06f067aa72176fba', '0a637dc5a2c898a6', '113f9804bef90dae', '1b710b35131c471b', + '28db77f523047d84', '32caab7b40c72493', '3c9ebe0a15c9bebc', '431d67c49c100d4c', + '4cc5d4becb3e42b6', '597f299cfc657e2a', '5fcb6fab3ad6faec', '6c44198c4a475817' + ); + + for ($i = 0; $i < 80; $i++) { + $k[$i] = new Math_BigInteger($k[$i], 16); + } + } + + $hash = $this->l == 48 ? $init384 : $init512; + + // Pre-processing + $length = strlen($m); + // to round to nearest 112 mod 128, we'll add 128 - (length + (128 - 112)) % 128 + $m.= str_repeat(chr(0), 128 - (($length + 16) & 0x7F)); + $m[$length] = chr(0x80); + // we don't support hashing strings 512MB long + $m.= pack('N4', 0, 0, 0, $length << 3); + + // Process the message in successive 1024-bit chunks + $chunks = str_split($m, 128); + foreach ($chunks as $chunk) { + $w = array(); + for ($i = 0; $i < 16; $i++) { + $temp = new Math_BigInteger($this->_string_shift($chunk, 8), 256); + $temp->setPrecision(64); + $w[] = $temp; + } + + // Extend the sixteen 32-bit words into eighty 32-bit words + for ($i = 16; $i < 80; $i++) { + $temp = array( + $w[$i - 15]->bitwise_rightRotate(1), + $w[$i - 15]->bitwise_rightRotate(8), + $w[$i - 15]->bitwise_rightShift(7) + ); + $s0 = $temp[0]->bitwise_xor($temp[1]); + $s0 = $s0->bitwise_xor($temp[2]); + $temp = array( + $w[$i - 2]->bitwise_rightRotate(19), + $w[$i - 2]->bitwise_rightRotate(61), + $w[$i - 2]->bitwise_rightShift(6) + ); + $s1 = $temp[0]->bitwise_xor($temp[1]); + $s1 = $s1->bitwise_xor($temp[2]); + $w[$i] = $w[$i - 16]->copy(); + $w[$i] = $w[$i]->add($s0); + $w[$i] = $w[$i]->add($w[$i - 7]); + $w[$i] = $w[$i]->add($s1); + } + + // Initialize hash value for this chunk + $a = $hash[0]->copy(); + $b = $hash[1]->copy(); + $c = $hash[2]->copy(); + $d = $hash[3]->copy(); + $e = $hash[4]->copy(); + $f = $hash[5]->copy(); + $g = $hash[6]->copy(); + $h = $hash[7]->copy(); + + // Main loop + for ($i = 0; $i < 80; $i++) { + $temp = array( + $a->bitwise_rightRotate(28), + $a->bitwise_rightRotate(34), + $a->bitwise_rightRotate(39) + ); + $s0 = $temp[0]->bitwise_xor($temp[1]); + $s0 = $s0->bitwise_xor($temp[2]); + $temp = array( + $a->bitwise_and($b), + $a->bitwise_and($c), + $b->bitwise_and($c) + ); + $maj = $temp[0]->bitwise_xor($temp[1]); + $maj = $maj->bitwise_xor($temp[2]); + $t2 = $s0->add($maj); + + $temp = array( + $e->bitwise_rightRotate(14), + $e->bitwise_rightRotate(18), + $e->bitwise_rightRotate(41) + ); + $s1 = $temp[0]->bitwise_xor($temp[1]); + $s1 = $s1->bitwise_xor($temp[2]); + $temp = array( + $e->bitwise_and($f), + $g->bitwise_and($e->bitwise_not()) + ); + $ch = $temp[0]->bitwise_xor($temp[1]); + $t1 = $h->add($s1); + $t1 = $t1->add($ch); + $t1 = $t1->add($k[$i]); + $t1 = $t1->add($w[$i]); + + $h = $g->copy(); + $g = $f->copy(); + $f = $e->copy(); + $e = $d->add($t1); + $d = $c->copy(); + $c = $b->copy(); + $b = $a->copy(); + $a = $t1->add($t2); + } + + // Add this chunk's hash to result so far + $hash = array( + $hash[0]->add($a), + $hash[1]->add($b), + $hash[2]->add($c), + $hash[3]->add($d), + $hash[4]->add($e), + $hash[5]->add($f), + $hash[6]->add($g), + $hash[7]->add($h) + ); + } + + // Produce the final hash value (big-endian) + // (Crypt_Hash::hash() trims the output for hashes but not for HMACs. as such, we trim the output here) + $temp = $hash[0]->toBytes() . $hash[1]->toBytes() . $hash[2]->toBytes() . $hash[3]->toBytes() . + $hash[4]->toBytes() . $hash[5]->toBytes(); + if ($this->l != 48) { + $temp.= $hash[6]->toBytes() . $hash[7]->toBytes(); + } + + return $temp; + } + + /** + * Right Rotate + * + * @access private + * @param Integer $int + * @param Integer $amt + * @see _sha256() + * @return Integer + */ + function _rightRotate($int, $amt) + { + $invamt = 32 - $amt; + $mask = (1 << $invamt) - 1; + return (($int << $invamt) & 0xFFFFFFFF) | (($int >> $amt) & $mask); + } + + /** + * Right Shift + * + * @access private + * @param Integer $int + * @param Integer $amt + * @see _sha256() + * @return Integer + */ + function _rightShift($int, $amt) + { + $mask = (1 << (32 - $amt)) - 1; + return ($int >> $amt) & $mask; + } + + /** + * Not + * + * @access private + * @param Integer $int + * @see _sha256() + * @return Integer + */ + function _not($int) + { + return ~$int & 0xFFFFFFFF; + } + + /** + * Add + * + * _sha256() adds multiple unsigned 32-bit integers. Since PHP doesn't support unsigned integers and since the + * possibility of overflow exists, care has to be taken. Math_BigInteger() could be used but this should be faster. + * + * @param String $string + * @param optional Integer $index + * @return String + * @see _sha256() + * @access private + */ + function _add() + { + static $mod; + if (!isset($mod)) { + $mod = pow(2, 32); + } + + $result = 0; + $arguments = func_get_args(); + foreach ($arguments as $argument) { + $result+= $argument < 0 ? ($argument & 0x7FFFFFFF) + 0x80000000 : $argument; + } + + return fmod($result, $mod); + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param String $string + * @param optional Integer $index + * @return String + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } +} diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/RC4.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/RC4.php new file mode 100644 index 0000000000..390108e048 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/RC4.php @@ -0,0 +1,519 @@ + + * setKey('abcdefgh'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $rc4->decrypt($rc4->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_RC4 + * @author Jim Wigginton + * @copyright MMVII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: RC4.php,v 1.8 2009/06/09 04:00:38 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * @access private + * @see Crypt_RC4::Crypt_RC4() + */ +/** + * Toggles the internal implementation + */ +define('CRYPT_RC4_MODE_INTERNAL', 1); +/** + * Toggles the mcrypt implementation + */ +define('CRYPT_RC4_MODE_MCRYPT', 2); +/**#@-*/ + +/**#@+ + * @access private + * @see Crypt_RC4::_crypt() + */ +define('CRYPT_RC4_ENCRYPT', 0); +define('CRYPT_RC4_DECRYPT', 1); +/**#@-*/ + +/** + * Pure-PHP implementation of RC4. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Crypt_RC4 + */ +class Crypt_RC4 { + /** + * The Key + * + * @see Crypt_RC4::setKey() + * @var String + * @access private + */ + var $key = "\0"; + + /** + * The Key Stream for encryption + * + * If CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT, this will be equal to the mcrypt object + * + * @see Crypt_RC4::setKey() + * @var Array + * @access private + */ + var $encryptStream = false; + + /** + * The Key Stream for decryption + * + * If CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT, this will be equal to the mcrypt object + * + * @see Crypt_RC4::setKey() + * @var Array + * @access private + */ + var $decryptStream = false; + + /** + * The $i and $j indexes for encryption + * + * @see Crypt_RC4::_crypt() + * @var Integer + * @access private + */ + var $encryptIndex = 0; + + /** + * The $i and $j indexes for decryption + * + * @see Crypt_RC4::_crypt() + * @var Integer + * @access private + */ + var $decryptIndex = 0; + + /** + * The Encryption Algorithm + * + * Only used if CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT. Only possible values are MCRYPT_RC4 or MCRYPT_ARCFOUR. + * + * @see Crypt_RC4::Crypt_RC4() + * @var Integer + * @access private + */ + var $mode; + + /** + * Continuous Buffer status + * + * @see Crypt_RC4::enableContinuousBuffer() + * @var Boolean + * @access private + */ + var $continuousBuffer = false; + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. + * + * @return Crypt_RC4 + * @access public + */ + function Crypt_RC4() + { + if ( !defined('CRYPT_RC4_MODE') ) { + switch (true) { + case extension_loaded('mcrypt') && (defined('MCRYPT_ARCFOUR') || defined('MCRYPT_RC4')) && in_array('arcfour', mcrypt_list_algorithms()): + define('CRYPT_RC4_MODE', CRYPT_RC4_MODE_MCRYPT); + break; + default: + define('CRYPT_RC4_MODE', CRYPT_RC4_MODE_INTERNAL); + } + } + + switch ( CRYPT_RC4_MODE ) { + case CRYPT_RC4_MODE_MCRYPT: + switch (true) { + case defined('MCRYPT_ARCFOUR'): + $this->mode = MCRYPT_ARCFOUR; + break; + case defined('MCRYPT_RC4'); + $this->mode = MCRYPT_RC4; + } + $this->encryptStream = mcrypt_module_open($this->mode, '', MCRYPT_MODE_STREAM, ''); + $this->decryptStream = mcrypt_module_open($this->mode, '', MCRYPT_MODE_STREAM, ''); + + } + } + + /** + * Sets the key. + * + * Keys can be between 1 and 256 bytes long. If they are longer then 256 bytes, the first 256 bytes will + * be used. If no key is explicitly set, it'll be assumed to be a single null byte. + * + * @access public + * @param String $key + */ + function setKey($key) + { + $this->key = $key; + + if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT ) { + mcrypt_generic_init($this->encryptStream, $this->key, ''); + mcrypt_generic_init($this->decryptStream, $this->key, ''); + return; + } + + $keyLength = strlen($key); + $keyStream = array(); + for ($i = 0; $i < 256; $i++) { + $keyStream[$i] = $i; + } + $j = 0; + for ($i = 0; $i < 256; $i++) { + $j = ($j + $keyStream[$i] + ord($key[$i % $keyLength])) & 255; + $temp = $keyStream[$i]; + $keyStream[$i] = $keyStream[$j]; + $keyStream[$j] = $temp; + } + + $this->encryptIndex = $this->decryptIndex = array(0, 0); + $this->encryptStream = $this->decryptStream = $keyStream; + } + + /** + * Sets the password. + * + * Depending on what $method is set to, setPassword()'s (optional) parameters are as follows: + * {@link http://en.wikipedia.org/wiki/PBKDF2 pbkdf2}: + * $hash, $salt, $count, $dkLen + * + * @param String $password + * @param optional String $method + * @access public + */ + function setPassword($password, $method = 'pbkdf2') + { + $key = ''; + + switch ($method) { + default: // 'pbkdf2' + list(, , $hash, $salt, $count) = func_get_args(); + if (!isset($hash)) { + $hash = 'sha1'; + } + // WPA and WPA2 use the SSID as the salt + if (!isset($salt)) { + $salt = 'phpseclib/salt'; + } + // RFC2898#section-4.2 uses 1,000 iterations by default + // WPA and WPA2 use 4,096. + if (!isset($count)) { + $count = 1000; + } + if (!isset($dkLen)) { + $dkLen = 128; + } + + if (!class_exists('Crypt_Hash')) { + require_once('Crypt/Hash.php'); + } + + $i = 1; + while (strlen($key) < $dkLen) { + //$dk.= $this->_pbkdf($password, $salt, $count, $i++); + $hmac = new Crypt_Hash(); + $hmac->setHash($hash); + $hmac->setKey($password); + $f = $u = $hmac->hash($salt . pack('N', $i++)); + for ($j = 2; $j <= $count; $j++) { + $u = $hmac->hash($u); + $f^= $u; + } + $key.= $f; + } + } + + $this->setKey(substr($key, 0, $dkLen)); + } + + /** + * Dummy function. + * + * Some protocols, such as WEP, prepend an "initialization vector" to the key, effectively creating a new key [1]. + * If you need to use an initialization vector in this manner, feel free to prepend it to the key, yourself, before + * calling setKey(). + * + * [1] WEP's initialization vectors (IV's) are used in a somewhat insecure way. Since, in that protocol, + * the IV's are relatively easy to predict, an attack described by + * {@link http://www.drizzle.com/~aboba/IEEE/rc4_ksaproc.pdf Scott Fluhrer, Itsik Mantin, and Adi Shamir} + * can be used to quickly guess at the rest of the key. The following links elaborate: + * + * {@link http://www.rsa.com/rsalabs/node.asp?id=2009 http://www.rsa.com/rsalabs/node.asp?id=2009} + * {@link http://en.wikipedia.org/wiki/Related_key_attack http://en.wikipedia.org/wiki/Related_key_attack} + * + * @param String $iv + * @see Crypt_RC4::setKey() + * @access public + */ + function setIV($iv) + { + } + + /** + * Encrypts a message. + * + * @see Crypt_RC4::_crypt() + * @access public + * @param String $plaintext + */ + function encrypt($plaintext) + { + return $this->_crypt($plaintext, CRYPT_RC4_ENCRYPT); + } + + /** + * Decrypts a message. + * + * $this->decrypt($this->encrypt($plaintext)) == $this->encrypt($this->encrypt($plaintext)). + * Atleast if the continuous buffer is disabled. + * + * @see Crypt_RC4::_crypt() + * @access public + * @param String $ciphertext + */ + function decrypt($ciphertext) + { + return $this->_crypt($ciphertext, CRYPT_RC4_DECRYPT); + } + + /** + * Encrypts or decrypts a message. + * + * @see Crypt_RC4::encrypt() + * @see Crypt_RC4::decrypt() + * @access private + * @param String $text + * @param Integer $mode + */ + function _crypt($text, $mode) + { + if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT ) { + $keyStream = $mode == CRYPT_RC4_ENCRYPT ? 'encryptStream' : 'decryptStream'; + + if (!$this->continuousBuffer) { + mcrypt_generic_init($this->$keyStream, $this->key, ''); + } + + return mcrypt_generic($this->$keyStream, $text); + } + + if ($this->encryptStream === false) { + $this->setKey($this->key); + } + + switch ($mode) { + case CRYPT_RC4_ENCRYPT: + $keyStream = $this->encryptStream; + list($i, $j) = $this->encryptIndex; + break; + case CRYPT_RC4_DECRYPT: + $keyStream = $this->decryptStream; + list($i, $j) = $this->decryptIndex; + } + + $newText = ''; + for ($k = 0; $k < strlen($text); $k++) { + $i = ($i + 1) & 255; + $j = ($j + $keyStream[$i]) & 255; + $temp = $keyStream[$i]; + $keyStream[$i] = $keyStream[$j]; + $keyStream[$j] = $temp; + $temp = $keyStream[($keyStream[$i] + $keyStream[$j]) & 255]; + $newText.= chr(ord($text[$k]) ^ $temp); + } + + if ($this->continuousBuffer) { + switch ($mode) { + case CRYPT_RC4_ENCRYPT: + $this->encryptStream = $keyStream; + $this->encryptIndex = array($i, $j); + break; + case CRYPT_RC4_DECRYPT: + $this->decryptStream = $keyStream; + $this->decryptIndex = array($i, $j); + } + } + + return $newText; + } + + /** + * Treat consecutive "packets" as if they are a continuous buffer. + * + * Say you have a 16-byte plaintext $plaintext. Using the default behavior, the two following code snippets + * will yield different outputs: + * + * + * echo $rc4->encrypt(substr($plaintext, 0, 8)); + * echo $rc4->encrypt(substr($plaintext, 8, 8)); + * + * + * echo $rc4->encrypt($plaintext); + * + * + * The solution is to enable the continuous buffer. Although this will resolve the above discrepancy, it creates + * another, as demonstrated with the following: + * + * + * $rc4->encrypt(substr($plaintext, 0, 8)); + * echo $rc4->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * echo $rc4->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * With the continuous buffer disabled, these would yield the same output. With it enabled, they yield different + * outputs. The reason is due to the fact that the initialization vector's change after every encryption / + * decryption round when the continuous buffer is enabled. When it's disabled, they remain constant. + * + * Put another way, when the continuous buffer is enabled, the state of the Crypt_DES() object changes after each + * encryption / decryption round, whereas otherwise, it'd remain constant. For this reason, it's recommended that + * continuous buffers not be used. They do offer better security and are, in fact, sometimes required (SSH uses them), + * however, they are also less intuitive and more likely to cause you problems. + * + * @see Crypt_RC4::disableContinuousBuffer() + * @access public + */ + function enableContinuousBuffer() + { + if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT ) { + mcrypt_generic_init($this->encryptStream, $this->key, ''); + mcrypt_generic_init($this->decryptStream, $this->key, ''); + } + + $this->continuousBuffer = true; + } + + /** + * Treat consecutive packets as if they are a discontinuous buffer. + * + * The default behavior. + * + * @see Crypt_RC4::enableContinuousBuffer() + * @access public + */ + function disableContinuousBuffer() + { + if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_INTERNAL ) { + $this->encryptIndex = $this->decryptIndex = array(0, 0); + $this->encryptStream = $this->decryptStream = false; + } + + $this->continuousBuffer = false; + } + + /** + * Dummy function. + * + * Since RC4 is a stream cipher and not a block cipher, no padding is necessary. The only reason this function is + * included is so that you can switch between a block cipher and a stream cipher transparently. + * + * @see Crypt_RC4::disablePadding() + * @access public + */ + function enablePadding() + { + } + + /** + * Dummy function. + * + * @see Crypt_RC4::enablePadding() + * @access public + */ + function disablePadding() + { + } + + /** + * Class destructor. + * + * Will be called, automatically, if you're using PHP5. If you're using PHP4, call it yourself. Only really + * needs to be called if mcrypt is being used. + * + * @access public + */ + function __destruct() + { + if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT ) { + $this->_closeMCrypt(); + } + } + + /** + * Properly close the MCrypt objects. + * + * @access prviate + */ + function _closeMCrypt() + { + mcrypt_module_close($this->encryptStream); + mcrypt_module_close($this->decryptStream); + } +} + +// vim: ts=4:sw=4:et: +// vim6: fdl=1: \ No newline at end of file diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/RSA.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/RSA.php new file mode 100644 index 0000000000..db1ba1581b --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/RSA.php @@ -0,0 +1,2646 @@ + + * createKey()); + * + * $plaintext = 'terrafrost'; + * + * $rsa->loadKey($privatekey); + * $ciphertext = $rsa->encrypt($plaintext); + * + * $rsa->loadKey($publickey); + * echo $rsa->decrypt($ciphertext); + * ?> + * + * + * Here's an example of how to create signatures and verify signatures with this library: + * + * createKey()); + * + * $plaintext = 'terrafrost'; + * + * $rsa->loadKey($privatekey); + * $signature = $rsa->sign($plaintext); + * + * $rsa->loadKey($publickey); + * echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified'; + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_RSA + * @author Jim Wigginton + * @copyright MMIX Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: RSA.php,v 1.19 2010/09/12 21:58:54 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Math_BigInteger + */ +if (!class_exists('Math_BigInteger')) { + require_once('Math/BigInteger.php'); +} + +/** + * Include Crypt_Random + */ +// the class_exists() will only be called if the crypt_random_string function hasn't been defined and +// will trigger a call to __autoload() if you're wanting to auto-load classes +// call function_exists() a second time to stop the require_once from being called outside +// of the auto loader +if (!function_exists('crypt_random_string') && !class_exists('Crypt_Random') && !function_exists('crypt_random_string')) { + require_once('Crypt/Random.php'); +} + +/** + * Include Crypt_Hash + */ +if (!class_exists('Crypt_Hash')) { + require_once('Crypt/Hash.php'); +} + +/**#@+ + * @access public + * @see Crypt_RSA::encrypt() + * @see Crypt_RSA::decrypt() + */ +/** + * Use {@link http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding Optimal Asymmetric Encryption Padding} + * (OAEP) for encryption / decryption. + * + * Uses sha1 by default. + * + * @see Crypt_RSA::setHash() + * @see Crypt_RSA::setMGFHash() + */ +define('CRYPT_RSA_ENCRYPTION_OAEP', 1); +/** + * Use PKCS#1 padding. + * + * Although CRYPT_RSA_ENCRYPTION_OAEP offers more security, including PKCS#1 padding is necessary for purposes of backwards + * compatability with protocols (like SSH-1) written before OAEP's introduction. + */ +define('CRYPT_RSA_ENCRYPTION_PKCS1', 2); +/**#@-*/ + +/**#@+ + * @access public + * @see Crypt_RSA::sign() + * @see Crypt_RSA::verify() + * @see Crypt_RSA::setHash() + */ +/** + * Use the Probabilistic Signature Scheme for signing + * + * Uses sha1 by default. + * + * @see Crypt_RSA::setSaltLength() + * @see Crypt_RSA::setMGFHash() + */ +define('CRYPT_RSA_SIGNATURE_PSS', 1); +/** + * Use the PKCS#1 scheme by default. + * + * Although CRYPT_RSA_SIGNATURE_PSS offers more security, including PKCS#1 signing is necessary for purposes of backwards + * compatability with protocols (like SSH-2) written before PSS's introduction. + */ +define('CRYPT_RSA_SIGNATURE_PKCS1', 2); +/**#@-*/ + +/**#@+ + * @access private + * @see Crypt_RSA::createKey() + */ +/** + * ASN1 Integer + */ +define('CRYPT_RSA_ASN1_INTEGER', 2); +/** + * ASN1 Bit String + */ +define('CRYPT_RSA_ASN1_BITSTRING', 3); +/** + * ASN1 Sequence (with the constucted bit set) + */ +define('CRYPT_RSA_ASN1_SEQUENCE', 48); +/**#@-*/ + +/**#@+ + * @access private + * @see Crypt_RSA::Crypt_RSA() + */ +/** + * To use the pure-PHP implementation + */ +define('CRYPT_RSA_MODE_INTERNAL', 1); +/** + * To use the OpenSSL library + * + * (if enabled; otherwise, the internal implementation will be used) + */ +define('CRYPT_RSA_MODE_OPENSSL', 2); +/**#@-*/ + +/** + * Default openSSL configuration file. + */ +define('CRYPT_RSA_OPENSSL_CONFIG', dirname(__FILE__) . '/../openssl.cnf'); + + +/**#@+ + * @access public + * @see Crypt_RSA::createKey() + * @see Crypt_RSA::setPrivateKeyFormat() + */ +/** + * PKCS#1 formatted private key + * + * Used by OpenSSH + */ +define('CRYPT_RSA_PRIVATE_FORMAT_PKCS1', 0); +/** + * PuTTY formatted private key + */ +define('CRYPT_RSA_PRIVATE_FORMAT_PUTTY', 1); +/** + * XML formatted private key + */ +define('CRYPT_RSA_PRIVATE_FORMAT_XML', 2); +/**#@-*/ + +/**#@+ + * @access public + * @see Crypt_RSA::createKey() + * @see Crypt_RSA::setPublicKeyFormat() + */ +/** + * Raw public key + * + * An array containing two Math_BigInteger objects. + * + * The exponent can be indexed with any of the following: + * + * 0, e, exponent, publicExponent + * + * The modulus can be indexed with any of the following: + * + * 1, n, modulo, modulus + */ +define('CRYPT_RSA_PUBLIC_FORMAT_RAW', 3); +/** + * PKCS#1 formatted public key (raw) + * + * Used by File/X509.php + */ +define('CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW', 4); +/** + * XML formatted public key + */ +define('CRYPT_RSA_PUBLIC_FORMAT_XML', 5); +/** + * OpenSSH formatted public key + * + * Place in $HOME/.ssh/authorized_keys + */ +define('CRYPT_RSA_PUBLIC_FORMAT_OPENSSH', 6); +/** + * PKCS#1 formatted public key (encapsulated) + * + * Used by PHP's openssl_public_encrypt() and openssl's rsautl (when -pubin is set) + */ +define('CRYPT_RSA_PUBLIC_FORMAT_PKCS1', 7); +/**#@-*/ + +/** + * Pure-PHP PKCS#1 compliant implementation of RSA. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Crypt_RSA + */ +class Crypt_RSA { + /** + * Precomputed Zero + * + * @var Array + * @access private + */ + var $zero; + + /** + * Precomputed One + * + * @var Array + * @access private + */ + var $one; + + /** + * Private Key Format + * + * @var Integer + * @access private + */ + var $privateKeyFormat = CRYPT_RSA_PRIVATE_FORMAT_PKCS1; + + /** + * Public Key Format + * + * @var Integer + * @access public + */ + var $publicKeyFormat = CRYPT_RSA_PUBLIC_FORMAT_PKCS1; + + /** + * Modulus (ie. n) + * + * @var Math_BigInteger + * @access private + */ + var $modulus; + + /** + * Modulus length + * + * @var Math_BigInteger + * @access private + */ + var $k; + + /** + * Exponent (ie. e or d) + * + * @var Math_BigInteger + * @access private + */ + var $exponent; + + /** + * Primes for Chinese Remainder Theorem (ie. p and q) + * + * @var Array + * @access private + */ + var $primes; + + /** + * Exponents for Chinese Remainder Theorem (ie. dP and dQ) + * + * @var Array + * @access private + */ + var $exponents; + + /** + * Coefficients for Chinese Remainder Theorem (ie. qInv) + * + * @var Array + * @access private + */ + var $coefficients; + + /** + * Hash name + * + * @var String + * @access private + */ + var $hashName; + + /** + * Hash function + * + * @var Crypt_Hash + * @access private + */ + var $hash; + + /** + * Length of hash function output + * + * @var Integer + * @access private + */ + var $hLen; + + /** + * Length of salt + * + * @var Integer + * @access private + */ + var $sLen; + + /** + * Hash function for the Mask Generation Function + * + * @var Crypt_Hash + * @access private + */ + var $mgfHash; + + /** + * Length of MGF hash function output + * + * @var Integer + * @access private + */ + var $mgfHLen; + + /** + * Encryption mode + * + * @var Integer + * @access private + */ + var $encryptionMode = CRYPT_RSA_ENCRYPTION_OAEP; + + /** + * Signature mode + * + * @var Integer + * @access private + */ + var $signatureMode = CRYPT_RSA_SIGNATURE_PSS; + + /** + * Public Exponent + * + * @var Mixed + * @access private + */ + var $publicExponent = false; + + /** + * Password + * + * @var String + * @access private + */ + var $password = false; + + /** + * Components + * + * For use with parsing XML formatted keys. PHP's XML Parser functions use utilized - instead of PHP's DOM functions - + * because PHP's XML Parser functions work on PHP4 whereas PHP's DOM functions - although surperior - don't. + * + * @see Crypt_RSA::_start_element_handler() + * @var Array + * @access private + */ + var $components = array(); + + /** + * Current String + * + * For use with parsing XML formatted keys. + * + * @see Crypt_RSA::_character_handler() + * @see Crypt_RSA::_stop_element_handler() + * @var Mixed + * @access private + */ + var $current; + + /** + * OpenSSL configuration file name. + * + * Set to NULL to use system configuration file. + * @see Crypt_RSA::createKey() + * @var Mixed + * @Access public + */ + var $configFile; + + /** + * The constructor + * + * If you want to make use of the openssl extension, you'll need to set the mode manually, yourself. The reason + * Crypt_RSA doesn't do it is because OpenSSL doesn't fail gracefully. openssl_pkey_new(), in particular, requires + * openssl.cnf be present somewhere and, unfortunately, the only real way to find out is too late. + * + * @return Crypt_RSA + * @access public + */ + function Crypt_RSA() + { + $this->configFile = CRYPT_RSA_OPENSSL_CONFIG; + + if ( !defined('CRYPT_RSA_MODE') ) { + switch (true) { + case extension_loaded('openssl') && version_compare(PHP_VERSION, '4.2.0', '>='): + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_OPENSSL); + break; + default: + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); + } + } + + if (!defined('CRYPT_RSA_COMMENT')) { + define('CRYPT_RSA_COMMENT', 'phpseclib-generated-key'); + } + + $this->zero = new Math_BigInteger(); + $this->one = new Math_BigInteger(1); + + $this->hash = new Crypt_Hash('sha1'); + $this->hLen = $this->hash->getLength(); + $this->hashName = 'sha1'; + $this->mgfHash = new Crypt_Hash('sha1'); + $this->mgfHLen = $this->mgfHash->getLength(); + } + + /** + * Create public / private key pair + * + * Returns an array with the following three elements: + * - 'privatekey': The private key. + * - 'publickey': The public key. + * - 'partialkey': A partially computed key (if the execution time exceeded $timeout). + * Will need to be passed back to Crypt_RSA::createKey() as the third parameter for further processing. + * + * @access public + * @param optional Integer $bits + * @param optional Integer $timeout + * @param optional Math_BigInteger $p + */ + function createKey($bits = 1024, $timeout = false, $partial = array()) + { + if (!defined('CRYPT_RSA_EXPONENT')) { + // http://en.wikipedia.org/wiki/65537_%28number%29 + define('CRYPT_RSA_EXPONENT', '65537'); + } + // per , this number ought not result in primes smaller + // than 256 bits. as a consequence if the key you're trying to create is 1024 bits and you've set CRYPT_RSA_SMALLEST_PRIME + // to 384 bits then you're going to get a 384 bit prime and a 640 bit prime (384 + 1024 % 384). at least if + // CRYPT_RSA_MODE is set to CRYPT_RSA_MODE_INTERNAL. if CRYPT_RSA_MODE is set to CRYPT_RSA_MODE_OPENSSL then + // CRYPT_RSA_SMALLEST_PRIME is ignored (ie. multi-prime RSA support is more intended as a way to speed up RSA key + // generation when there's a chance neither gmp nor OpenSSL are installed) + if (!defined('CRYPT_RSA_SMALLEST_PRIME')) { + define('CRYPT_RSA_SMALLEST_PRIME', 4096); + } + + // OpenSSL uses 65537 as the exponent and requires RSA keys be 384 bits minimum + if ( CRYPT_RSA_MODE == CRYPT_RSA_MODE_OPENSSL && $bits >= 384 && CRYPT_RSA_EXPONENT == 65537) { + $config = array(); + if (isset($this->configFile)) { + $config['config'] = $this->configFile; + } + $rsa = openssl_pkey_new(array('private_key_bits' => $bits) + $config); + openssl_pkey_export($rsa, $privatekey, NULL, $config); + $publickey = openssl_pkey_get_details($rsa); + $publickey = $publickey['key']; + + $privatekey = call_user_func_array(array($this, '_convertPrivateKey'), array_values($this->_parseKey($privatekey, CRYPT_RSA_PRIVATE_FORMAT_PKCS1))); + $publickey = call_user_func_array(array($this, '_convertPublicKey'), array_values($this->_parseKey($publickey, CRYPT_RSA_PUBLIC_FORMAT_PKCS1))); + + // clear the buffer of error strings stemming from a minimalistic openssl.cnf + while (openssl_error_string() !== false); + + return array( + 'privatekey' => $privatekey, + 'publickey' => $publickey, + 'partialkey' => false + ); + } + + static $e; + if (!isset($e)) { + $e = new Math_BigInteger(CRYPT_RSA_EXPONENT); + } + + extract($this->_generateMinMax($bits)); + $absoluteMin = $min; + $temp = $bits >> 1; // divide by two to see how many bits P and Q would be + if ($temp > CRYPT_RSA_SMALLEST_PRIME) { + $num_primes = floor($bits / CRYPT_RSA_SMALLEST_PRIME); + $temp = CRYPT_RSA_SMALLEST_PRIME; + } else { + $num_primes = 2; + } + extract($this->_generateMinMax($temp + $bits % $temp)); + $finalMax = $max; + extract($this->_generateMinMax($temp)); + + $generator = new Math_BigInteger(); + + $n = $this->one->copy(); + if (!empty($partial)) { + extract(unserialize($partial)); + } else { + $exponents = $coefficients = $primes = array(); + $lcm = array( + 'top' => $this->one->copy(), + 'bottom' => false + ); + } + + $start = time(); + $i0 = count($primes) + 1; + + do { + for ($i = $i0; $i <= $num_primes; $i++) { + if ($timeout !== false) { + $timeout-= time() - $start; + $start = time(); + if ($timeout <= 0) { + return array( + 'privatekey' => '', + 'publickey' => '', + 'partialkey' => serialize(array( + 'primes' => $primes, + 'coefficients' => $coefficients, + 'lcm' => $lcm, + 'exponents' => $exponents + )) + ); + } + } + + if ($i == $num_primes) { + list($min, $temp) = $absoluteMin->divide($n); + if (!$temp->equals($this->zero)) { + $min = $min->add($this->one); // ie. ceil() + } + $primes[$i] = $generator->randomPrime($min, $finalMax, $timeout); + } else { + $primes[$i] = $generator->randomPrime($min, $max, $timeout); + } + + if ($primes[$i] === false) { // if we've reached the timeout + if (count($primes) > 1) { + $partialkey = ''; + } else { + array_pop($primes); + $partialkey = serialize(array( + 'primes' => $primes, + 'coefficients' => $coefficients, + 'lcm' => $lcm, + 'exponents' => $exponents + )); + } + + return array( + 'privatekey' => '', + 'publickey' => '', + 'partialkey' => $partialkey + ); + } + + // the first coefficient is calculated differently from the rest + // ie. instead of being $primes[1]->modInverse($primes[2]), it's $primes[2]->modInverse($primes[1]) + if ($i > 2) { + $coefficients[$i] = $n->modInverse($primes[$i]); + } + + $n = $n->multiply($primes[$i]); + + $temp = $primes[$i]->subtract($this->one); + + // textbook RSA implementations use Euler's totient function instead of the least common multiple. + // see http://en.wikipedia.org/wiki/Euler%27s_totient_function + $lcm['top'] = $lcm['top']->multiply($temp); + $lcm['bottom'] = $lcm['bottom'] === false ? $temp : $lcm['bottom']->gcd($temp); + + $exponents[$i] = $e->modInverse($temp); + } + + list($lcm) = $lcm['top']->divide($lcm['bottom']); + $gcd = $lcm->gcd($e); + $i0 = 1; + } while (!$gcd->equals($this->one)); + + $d = $e->modInverse($lcm); + + $coefficients[2] = $primes[2]->modInverse($primes[1]); + + // from : + // RSAPrivateKey ::= SEQUENCE { + // version Version, + // modulus INTEGER, -- n + // publicExponent INTEGER, -- e + // privateExponent INTEGER, -- d + // prime1 INTEGER, -- p + // prime2 INTEGER, -- q + // exponent1 INTEGER, -- d mod (p-1) + // exponent2 INTEGER, -- d mod (q-1) + // coefficient INTEGER, -- (inverse of q) mod p + // otherPrimeInfos OtherPrimeInfos OPTIONAL + // } + + return array( + 'privatekey' => $this->_convertPrivateKey($n, $e, $d, $primes, $exponents, $coefficients), + 'publickey' => $this->_convertPublicKey($n, $e), + 'partialkey' => false + ); + } + + /** + * Convert a private key to the appropriate format. + * + * @access private + * @see setPrivateKeyFormat() + * @param String $RSAPrivateKey + * @return String + */ + function _convertPrivateKey($n, $e, $d, $primes, $exponents, $coefficients) + { + $num_primes = count($primes); + $raw = array( + 'version' => $num_primes == 2 ? chr(0) : chr(1), // two-prime vs. multi + 'modulus' => $n->toBytes(true), + 'publicExponent' => $e->toBytes(true), + 'privateExponent' => $d->toBytes(true), + 'prime1' => $primes[1]->toBytes(true), + 'prime2' => $primes[2]->toBytes(true), + 'exponent1' => $exponents[1]->toBytes(true), + 'exponent2' => $exponents[2]->toBytes(true), + 'coefficient' => $coefficients[2]->toBytes(true) + ); + + // if the format in question does not support multi-prime rsa and multi-prime rsa was used, + // call _convertPublicKey() instead. + switch ($this->privateKeyFormat) { + case CRYPT_RSA_PRIVATE_FORMAT_XML: + if ($num_primes != 2) { + return false; + } + return "\r\n" . + ' ' . base64_encode($raw['modulus']) . "\r\n" . + ' ' . base64_encode($raw['publicExponent']) . "\r\n" . + '

' . base64_encode($raw['prime1']) . "

\r\n" . + ' ' . base64_encode($raw['prime2']) . "\r\n" . + ' ' . base64_encode($raw['exponent1']) . "\r\n" . + ' ' . base64_encode($raw['exponent2']) . "\r\n" . + ' ' . base64_encode($raw['coefficient']) . "\r\n" . + ' ' . base64_encode($raw['privateExponent']) . "\r\n" . + '
'; + break; + case CRYPT_RSA_PRIVATE_FORMAT_PUTTY: + if ($num_primes != 2) { + return false; + } + $key = "PuTTY-User-Key-File-2: ssh-rsa\r\nEncryption: "; + $encryption = (!empty($this->password) || is_string($this->password)) ? 'aes256-cbc' : 'none'; + $key.= $encryption; + $key.= "\r\nComment: " . CRYPT_RSA_COMMENT . "\r\n"; + $public = pack('Na*Na*Na*', + strlen('ssh-rsa'), 'ssh-rsa', strlen($raw['publicExponent']), $raw['publicExponent'], strlen($raw['modulus']), $raw['modulus'] + ); + $source = pack('Na*Na*Na*Na*', + strlen('ssh-rsa'), 'ssh-rsa', strlen($encryption), $encryption, + strlen(CRYPT_RSA_COMMENT), CRYPT_RSA_COMMENT, strlen($public), $public + ); + $public = base64_encode($public); + $key.= "Public-Lines: " . ((strlen($public) + 32) >> 6) . "\r\n"; + $key.= chunk_split($public, 64); + $private = pack('Na*Na*Na*Na*', + strlen($raw['privateExponent']), $raw['privateExponent'], strlen($raw['prime1']), $raw['prime1'], + strlen($raw['prime2']), $raw['prime2'], strlen($raw['coefficient']), $raw['coefficient'] + ); + if (empty($this->password) && !is_string($this->password)) { + $source.= pack('Na*', strlen($private), $private); + $hashkey = 'putty-private-key-file-mac-key'; + } else { + $private.= crypt_random_string(16 - (strlen($private) & 15)); + $source.= pack('Na*', strlen($private), $private); + if (!class_exists('Crypt_AES')) { + require_once('Crypt/AES.php'); + } + $sequence = 0; + $symkey = ''; + while (strlen($symkey) < 32) { + $temp = pack('Na*', $sequence++, $this->password); + $symkey.= pack('H*', sha1($temp)); + } + $symkey = substr($symkey, 0, 32); + $crypto = new Crypt_AES(); + + $crypto->setKey($symkey); + $crypto->disablePadding(); + $private = $crypto->encrypt($private); + $hashkey = 'putty-private-key-file-mac-key' . $this->password; + } + + $private = base64_encode($private); + $key.= 'Private-Lines: ' . ((strlen($private) + 32) >> 6) . "\r\n"; + $key.= chunk_split($private, 64); + if (!class_exists('Crypt_Hash')) { + require_once('Crypt/Hash.php'); + } + $hash = new Crypt_Hash('sha1'); + $hash->setKey(pack('H*', sha1($hashkey))); + $key.= 'Private-MAC: ' . bin2hex($hash->hash($source)) . "\r\n"; + + return $key; + default: // eg. CRYPT_RSA_PRIVATE_FORMAT_PKCS1 + $components = array(); + foreach ($raw as $name => $value) { + $components[$name] = pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($value)), $value); + } + + $RSAPrivateKey = implode('', $components); + + if ($num_primes > 2) { + $OtherPrimeInfos = ''; + for ($i = 3; $i <= $num_primes; $i++) { + // OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo + // + // OtherPrimeInfo ::= SEQUENCE { + // prime INTEGER, -- ri + // exponent INTEGER, -- di + // coefficient INTEGER -- ti + // } + $OtherPrimeInfo = pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($primes[$i]->toBytes(true))), $primes[$i]->toBytes(true)); + $OtherPrimeInfo.= pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($exponents[$i]->toBytes(true))), $exponents[$i]->toBytes(true)); + $OtherPrimeInfo.= pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($coefficients[$i]->toBytes(true))), $coefficients[$i]->toBytes(true)); + $OtherPrimeInfos.= pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($OtherPrimeInfo)), $OtherPrimeInfo); + } + $RSAPrivateKey.= pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($OtherPrimeInfos)), $OtherPrimeInfos); + } + + $RSAPrivateKey = pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($RSAPrivateKey)), $RSAPrivateKey); + + if (!empty($this->password) || is_string($this->password)) { + $iv = crypt_random_string(8); + $symkey = pack('H*', md5($this->password . $iv)); // symkey is short for symmetric key + $symkey.= substr(pack('H*', md5($symkey . $this->password . $iv)), 0, 8); + if (!class_exists('Crypt_TripleDES')) { + require_once('Crypt/TripleDES.php'); + } + $des = new Crypt_TripleDES(); + $des->setKey($symkey); + $des->setIV($iv); + $iv = strtoupper(bin2hex($iv)); + $RSAPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\r\n" . + "Proc-Type: 4,ENCRYPTED\r\n" . + "DEK-Info: DES-EDE3-CBC,$iv\r\n" . + "\r\n" . + chunk_split(base64_encode($des->encrypt($RSAPrivateKey)), 64) . + '-----END RSA PRIVATE KEY-----'; + } else { + $RSAPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\r\n" . + chunk_split(base64_encode($RSAPrivateKey), 64) . + '-----END RSA PRIVATE KEY-----'; + } + + return $RSAPrivateKey; + } + } + + /** + * Convert a public key to the appropriate format + * + * @access private + * @see setPublicKeyFormat() + * @param String $RSAPrivateKey + * @return String + */ + function _convertPublicKey($n, $e) + { + $modulus = $n->toBytes(true); + $publicExponent = $e->toBytes(true); + + switch ($this->publicKeyFormat) { + case CRYPT_RSA_PUBLIC_FORMAT_RAW: + return array('e' => $e->copy(), 'n' => $n->copy()); + case CRYPT_RSA_PUBLIC_FORMAT_XML: + return "\r\n" . + ' ' . base64_encode($modulus) . "\r\n" . + ' ' . base64_encode($publicExponent) . "\r\n" . + ''; + break; + case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH: + // from : + // string "ssh-rsa" + // mpint e + // mpint n + $RSAPublicKey = pack('Na*Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($publicExponent), $publicExponent, strlen($modulus), $modulus); + $RSAPublicKey = 'ssh-rsa ' . base64_encode($RSAPublicKey) . ' ' . CRYPT_RSA_COMMENT; + + return $RSAPublicKey; + default: // eg. CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW or CRYPT_RSA_PUBLIC_FORMAT_PKCS1 + // from : + // RSAPublicKey ::= SEQUENCE { + // modulus INTEGER, -- n + // publicExponent INTEGER -- e + // } + $components = array( + 'modulus' => pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($modulus)), $modulus), + 'publicExponent' => pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($publicExponent)), $publicExponent) + ); + + $RSAPublicKey = pack('Ca*a*a*', + CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($components['modulus']) + strlen($components['publicExponent'])), + $components['modulus'], $components['publicExponent'] + ); + + if ($this->publicKeyFormat == CRYPT_RSA_PUBLIC_FORMAT_PKCS1) { + // sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption. + $rsaOID = pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA + $RSAPublicKey = chr(0) . $RSAPublicKey; + $RSAPublicKey = chr(3) . $this->_encodeLength(strlen($RSAPublicKey)) . $RSAPublicKey; + + $RSAPublicKey = pack('Ca*a*', + CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($rsaOID . $RSAPublicKey)), $rsaOID . $RSAPublicKey + ); + } + + $RSAPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" . + chunk_split(base64_encode($RSAPublicKey), 64) . + '-----END PUBLIC KEY-----'; + + return $RSAPublicKey; + } + } + + /** + * Break a public or private key down into its constituant components + * + * @access private + * @see _convertPublicKey() + * @see _convertPrivateKey() + * @param String $key + * @param Integer $type + * @return Array + */ + function _parseKey($key, $type) + { + if ($type != CRYPT_RSA_PUBLIC_FORMAT_RAW && !is_string($key)) { + return false; + } + + switch ($type) { + case CRYPT_RSA_PUBLIC_FORMAT_RAW: + if (!is_array($key)) { + return false; + } + $components = array(); + switch (true) { + case isset($key['e']): + $components['publicExponent'] = $key['e']->copy(); + break; + case isset($key['exponent']): + $components['publicExponent'] = $key['exponent']->copy(); + break; + case isset($key['publicExponent']): + $components['publicExponent'] = $key['publicExponent']->copy(); + break; + case isset($key[0]): + $components['publicExponent'] = $key[0]->copy(); + } + switch (true) { + case isset($key['n']): + $components['modulus'] = $key['n']->copy(); + break; + case isset($key['modulo']): + $components['modulus'] = $key['modulo']->copy(); + break; + case isset($key['modulus']): + $components['modulus'] = $key['modulus']->copy(); + break; + case isset($key[1]): + $components['modulus'] = $key[1]->copy(); + } + return isset($components['modulus']) && isset($components['publicExponent']) ? $components : false; + case CRYPT_RSA_PRIVATE_FORMAT_PKCS1: + case CRYPT_RSA_PUBLIC_FORMAT_PKCS1: + /* Although PKCS#1 proposes a format that public and private keys can use, encrypting them is + "outside the scope" of PKCS#1. PKCS#1 then refers you to PKCS#12 and PKCS#15 if you're wanting to + protect private keys, however, that's not what OpenSSL* does. OpenSSL protects private keys by adding + two new "fields" to the key - DEK-Info and Proc-Type. These fields are discussed here: + + http://tools.ietf.org/html/rfc1421#section-4.6.1.1 + http://tools.ietf.org/html/rfc1421#section-4.6.1.3 + + DES-EDE3-CBC as an algorithm, however, is not discussed anywhere, near as I can tell. + DES-CBC and DES-EDE are discussed in RFC1423, however, DES-EDE3-CBC isn't, nor is its key derivation + function. As is, the definitive authority on this encoding scheme isn't the IETF but rather OpenSSL's + own implementation. ie. the implementation *is* the standard and any bugs that may exist in that + implementation are part of the standard, as well. + + * OpenSSL is the de facto standard. It's utilized by OpenSSH and other projects */ + if (preg_match('#DEK-Info: (.+),(.+)#', $key, $matches)) { + $iv = pack('H*', trim($matches[2])); + $symkey = pack('H*', md5($this->password . substr($iv, 0, 8))); // symkey is short for symmetric key + $symkey.= substr(pack('H*', md5($symkey . $this->password . $iv)), 0, 8); + $ciphertext = preg_replace('#.+(\r|\n|\r\n)\1|[\r\n]|-.+-| #s', '', $key); + $ciphertext = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $ciphertext) ? base64_decode($ciphertext) : false; + if ($ciphertext === false) { + $ciphertext = $key; + } + switch ($matches[1]) { + case 'AES-128-CBC': + if (!class_exists('Crypt_AES')) { + require_once('Crypt/AES.php'); + } + $symkey = substr($symkey, 0, 16); + $crypto = new Crypt_AES(); + break; + case 'DES-EDE3-CFB': + if (!class_exists('Crypt_TripleDES')) { + require_once('Crypt/TripleDES.php'); + } + $crypto = new Crypt_TripleDES(CRYPT_DES_MODE_CFB); + break; + case 'DES-EDE3-CBC': + if (!class_exists('Crypt_TripleDES')) { + require_once('Crypt/TripleDES.php'); + } + $crypto = new Crypt_TripleDES(); + break; + case 'DES-CBC': + if (!class_exists('Crypt_DES')) { + require_once('Crypt/DES.php'); + } + $crypto = new Crypt_DES(); + break; + default: + return false; + } + $crypto->setKey($symkey); + $crypto->setIV($iv); + $decoded = $crypto->decrypt($ciphertext); + } else { + $decoded = preg_replace('#-.+-|[\r\n]| #', '', $key); + $decoded = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $decoded) ? base64_decode($decoded) : false; + } + + if ($decoded !== false) { + $key = $decoded; + } + + $components = array(); + + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + if ($this->_decodeLength($key) != strlen($key)) { + return false; + } + + $tag = ord($this->_string_shift($key)); + /* intended for keys for which OpenSSL's asn1parse returns the following: + + 0:d=0 hl=4 l= 631 cons: SEQUENCE + 4:d=1 hl=2 l= 1 prim: INTEGER :00 + 7:d=1 hl=2 l= 13 cons: SEQUENCE + 9:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption + 20:d=2 hl=2 l= 0 prim: NULL + 22:d=1 hl=4 l= 609 prim: OCTET STRING */ + + if ($tag == CRYPT_RSA_ASN1_INTEGER && substr($key, 0, 3) == "\x01\x00\x30") { + $this->_string_shift($key, 3); + $tag = CRYPT_RSA_ASN1_SEQUENCE; + } + + if ($tag == CRYPT_RSA_ASN1_SEQUENCE) { + /* intended for keys for which OpenSSL's asn1parse returns the following: + + 0:d=0 hl=4 l= 290 cons: SEQUENCE + 4:d=1 hl=2 l= 13 cons: SEQUENCE + 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption + 17:d=2 hl=2 l= 0 prim: NULL + 19:d=1 hl=4 l= 271 prim: BIT STRING */ + $this->_string_shift($key, $this->_decodeLength($key)); + $tag = ord($this->_string_shift($key)); // skip over the BIT STRING / OCTET STRING tag + $this->_decodeLength($key); // skip over the BIT STRING / OCTET STRING length + // "The initial octet shall encode, as an unsigned binary integer wtih bit 1 as the least significant bit, the number of + // unused bits in the final subsequent octet. The number shall be in the range zero to seven." + // -- http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf (section 8.6.2.2) + if ($tag == CRYPT_RSA_ASN1_BITSTRING) { + $this->_string_shift($key); + } + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + if ($this->_decodeLength($key) != strlen($key)) { + return false; + } + $tag = ord($this->_string_shift($key)); + } + if ($tag != CRYPT_RSA_ASN1_INTEGER) { + return false; + } + + $length = $this->_decodeLength($key); + $temp = $this->_string_shift($key, $length); + if (strlen($temp) != 1 || ord($temp) > 2) { + $components['modulus'] = new Math_BigInteger($temp, 256); + $this->_string_shift($key); // skip over CRYPT_RSA_ASN1_INTEGER + $length = $this->_decodeLength($key); + $components[$type == CRYPT_RSA_PUBLIC_FORMAT_PKCS1 ? 'publicExponent' : 'privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + + return $components; + } + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_INTEGER) { + return false; + } + $length = $this->_decodeLength($key); + $components['modulus'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['publicExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), 256)); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['exponents'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), 256)); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($key, $length), 256)); + + if (!empty($key)) { + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + $this->_decodeLength($key); + while (!empty($key)) { + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + $this->_decodeLength($key); + $key = substr($key, 1); + $length = $this->_decodeLength($key); + $components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['coefficients'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + } + } + + return $components; + case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH: + $key = base64_decode(preg_replace('#^ssh-rsa | .+$#', '', $key)); + if ($key === false) { + return false; + } + + $cleanup = substr($key, 0, 11) == "\0\0\0\7ssh-rsa"; + + if (strlen($key) <= 4) { + return false; + } + extract(unpack('Nlength', $this->_string_shift($key, 4))); + $publicExponent = new Math_BigInteger($this->_string_shift($key, $length), -256); + if (strlen($key) <= 4) { + return false; + } + extract(unpack('Nlength', $this->_string_shift($key, 4))); + $modulus = new Math_BigInteger($this->_string_shift($key, $length), -256); + + if ($cleanup && strlen($key)) { + if (strlen($key) <= 4) { + return false; + } + extract(unpack('Nlength', $this->_string_shift($key, 4))); + $realModulus = new Math_BigInteger($this->_string_shift($key, $length), -256); + return strlen($key) ? false : array( + 'modulus' => $realModulus, + 'publicExponent' => $modulus + ); + } else { + return strlen($key) ? false : array( + 'modulus' => $modulus, + 'publicExponent' => $publicExponent + ); + } + // http://www.w3.org/TR/xmldsig-core/#sec-RSAKeyValue + // http://en.wikipedia.org/wiki/XML_Signature + case CRYPT_RSA_PRIVATE_FORMAT_XML: + case CRYPT_RSA_PUBLIC_FORMAT_XML: + $this->components = array(); + + $xml = xml_parser_create('UTF-8'); + xml_set_object($xml, $this); + xml_set_element_handler($xml, '_start_element_handler', '_stop_element_handler'); + xml_set_character_data_handler($xml, '_data_handler'); + // add to account for "dangling" tags like ... that are sometimes added + if (!xml_parse($xml, '' . $key . '')) { + return false; + } + + return isset($this->components['modulus']) && isset($this->components['publicExponent']) ? $this->components : false; + // from PuTTY's SSHPUBK.C + case CRYPT_RSA_PRIVATE_FORMAT_PUTTY: + $components = array(); + $key = preg_split('#\r\n|\r|\n#', $key); + $type = trim(preg_replace('#PuTTY-User-Key-File-2: (.+)#', '$1', $key[0])); + if ($type != 'ssh-rsa') { + return false; + } + $encryption = trim(preg_replace('#Encryption: (.+)#', '$1', $key[1])); + + $publicLength = trim(preg_replace('#Public-Lines: (\d+)#', '$1', $key[3])); + $public = base64_decode(implode('', array_map('trim', array_slice($key, 4, $publicLength)))); + $public = substr($public, 11); + extract(unpack('Nlength', $this->_string_shift($public, 4))); + $components['publicExponent'] = new Math_BigInteger($this->_string_shift($public, $length), -256); + extract(unpack('Nlength', $this->_string_shift($public, 4))); + $components['modulus'] = new Math_BigInteger($this->_string_shift($public, $length), -256); + + $privateLength = trim(preg_replace('#Private-Lines: (\d+)#', '$1', $key[$publicLength + 4])); + $private = base64_decode(implode('', array_map('trim', array_slice($key, $publicLength + 5, $privateLength)))); + + switch ($encryption) { + case 'aes256-cbc': + if (!class_exists('Crypt_AES')) { + require_once('Crypt/AES.php'); + } + $symkey = ''; + $sequence = 0; + while (strlen($symkey) < 32) { + $temp = pack('Na*', $sequence++, $this->password); + $symkey.= pack('H*', sha1($temp)); + } + $symkey = substr($symkey, 0, 32); + $crypto = new Crypt_AES(); + } + + if ($encryption != 'none') { + $crypto->setKey($symkey); + $crypto->disablePadding(); + $private = $crypto->decrypt($private); + if ($private === false) { + return false; + } + } + + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['privateExponent'] = new Math_BigInteger($this->_string_shift($private, $length), -256); + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($private, $length), -256)); + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['primes'][] = new Math_BigInteger($this->_string_shift($private, $length), -256); + + $temp = $components['primes'][1]->subtract($this->one); + $components['exponents'] = array(1 => $components['publicExponent']->modInverse($temp)); + $temp = $components['primes'][2]->subtract($this->one); + $components['exponents'][] = $components['publicExponent']->modInverse($temp); + + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($private, $length), -256)); + + return $components; + } + } + + /** + * Returns the key size + * + * More specifically, this returns the size of the modulo in bits. + * + * @access public + * @return Integer + */ + function getSize() + { + return !isset($this->modulus) ? 0 : strlen($this->modulus->toBits()); + } + + /** + * Start Element Handler + * + * Called by xml_set_element_handler() + * + * @access private + * @param Resource $parser + * @param String $name + * @param Array $attribs + */ + function _start_element_handler($parser, $name, $attribs) + { + //$name = strtoupper($name); + switch ($name) { + case 'MODULUS': + $this->current = &$this->components['modulus']; + break; + case 'EXPONENT': + $this->current = &$this->components['publicExponent']; + break; + case 'P': + $this->current = &$this->components['primes'][1]; + break; + case 'Q': + $this->current = &$this->components['primes'][2]; + break; + case 'DP': + $this->current = &$this->components['exponents'][1]; + break; + case 'DQ': + $this->current = &$this->components['exponents'][2]; + break; + case 'INVERSEQ': + $this->current = &$this->components['coefficients'][2]; + break; + case 'D': + $this->current = &$this->components['privateExponent']; + break; + default: + unset($this->current); + } + $this->current = ''; + } + + /** + * Stop Element Handler + * + * Called by xml_set_element_handler() + * + * @access private + * @param Resource $parser + * @param String $name + */ + function _stop_element_handler($parser, $name) + { + //$name = strtoupper($name); + if ($name == 'RSAKEYVALUE') { + return; + } + $this->current = new Math_BigInteger(base64_decode($this->current), 256); + } + + /** + * Data Handler + * + * Called by xml_set_character_data_handler() + * + * @access private + * @param Resource $parser + * @param String $data + */ + function _data_handler($parser, $data) + { + if (!isset($this->current) || is_object($this->current)) { + return; + } + $this->current.= trim($data); + } + + /** + * Loads a public or private key + * + * Returns true on success and false on failure (ie. an incorrect password was provided or the key was malformed) + * + * @access public + * @param String $key + * @param Integer $type optional + */ + function loadKey($key, $type = false) + { + if ($type === false) { + $types = array( + CRYPT_RSA_PUBLIC_FORMAT_RAW, + CRYPT_RSA_PRIVATE_FORMAT_PKCS1, + CRYPT_RSA_PRIVATE_FORMAT_XML, + CRYPT_RSA_PRIVATE_FORMAT_PUTTY, + CRYPT_RSA_PUBLIC_FORMAT_OPENSSH + ); + foreach ($types as $type) { + $components = $this->_parseKey($key, $type); + if ($components !== false) { + break; + } + } + + } else { + $components = $this->_parseKey($key, $type); + } + + if ($components === false) { + return false; + } + + $this->modulus = $components['modulus']; + $this->k = strlen($this->modulus->toBytes()); + $this->exponent = isset($components['privateExponent']) ? $components['privateExponent'] : $components['publicExponent']; + if (isset($components['primes'])) { + $this->primes = $components['primes']; + $this->exponents = $components['exponents']; + $this->coefficients = $components['coefficients']; + $this->publicExponent = $components['publicExponent']; + } else { + $this->primes = array(); + $this->exponents = array(); + $this->coefficients = array(); + $this->publicExponent = false; + } + + return true; + } + + /** + * Sets the password + * + * Private keys can be encrypted with a password. To unset the password, pass in the empty string or false. + * Or rather, pass in $password such that empty($password) && !is_string($password) is true. + * + * @see createKey() + * @see loadKey() + * @access public + * @param String $password + */ + function setPassword($password = false) + { + $this->password = $password; + } + + /** + * Defines the public key + * + * Some private key formats define the public exponent and some don't. Those that don't define it are problematic when + * used in certain contexts. For example, in SSH-2, RSA authentication works by sending the public key along with a + * message signed by the private key to the server. The SSH-2 server looks the public key up in an index of public keys + * and if it's present then proceeds to verify the signature. Problem is, if your private key doesn't include the public + * exponent this won't work unless you manually add the public exponent. + * + * Do note that when a new key is loaded the index will be cleared. + * + * Returns true on success, false on failure + * + * @see getPublicKey() + * @access public + * @param String $key optional + * @param Integer $type optional + * @return Boolean + */ + function setPublicKey($key = false, $type = false) + { + if ($key === false && !empty($this->modulus)) { + $this->publicExponent = $this->exponent; + return true; + } + + if ($type === false) { + $types = array( + CRYPT_RSA_PUBLIC_FORMAT_RAW, + CRYPT_RSA_PUBLIC_FORMAT_PKCS1, + CRYPT_RSA_PUBLIC_FORMAT_XML, + CRYPT_RSA_PUBLIC_FORMAT_OPENSSH + ); + foreach ($types as $type) { + $components = $this->_parseKey($key, $type); + if ($components !== false) { + break; + } + } + } else { + $components = $this->_parseKey($key, $type); + } + + if ($components === false) { + return false; + } + + if (empty($this->modulus) || !$this->modulus->equals($components['modulus'])) { + $this->modulus = $components['modulus']; + $this->exponent = $this->publicExponent = $components['publicExponent']; + return true; + } + + $this->publicExponent = $components['publicExponent']; + + return true; + } + + /** + * Returns the public key + * + * The public key is only returned under two circumstances - if the private key had the public key embedded within it + * or if the public key was set via setPublicKey(). If the currently loaded key is supposed to be the public key this + * function won't return it since this library, for the most part, doesn't distinguish between public and private keys. + * + * @see getPublicKey() + * @access public + * @param String $key + * @param Integer $type optional + */ + function getPublicKey($type = CRYPT_RSA_PUBLIC_FORMAT_PKCS1) + { + if (empty($this->modulus) || empty($this->publicExponent)) { + return false; + } + + $oldFormat = $this->publicKeyFormat; + $this->publicKeyFormat = $type; + $temp = $this->_convertPublicKey($this->modulus, $this->publicExponent); + $this->publicKeyFormat = $oldFormat; + return $temp; + } + + /** + * Returns the private key + * + * The private key is only returned if the currently loaded key contains the constituent prime numbers. + * + * @see getPublicKey() + * @access public + * @param String $key + * @param Integer $type optional + */ + function getPrivateKey($type = CRYPT_RSA_PUBLIC_FORMAT_PKCS1) + { + if (empty($this->primes)) { + return false; + } + + $oldFormat = $this->privateKeyFormat; + $this->privateKeyFormat = $type; + $temp = $this->_convertPrivateKey($this->modulus, $this->publicExponent, $this->exponent, $this->primes, $this->exponents, $this->coefficients); + $this->privateKeyFormat = $oldFormat; + return $temp; + } + + /** + * Returns a minimalistic private key + * + * Returns the private key without the prime number constituants. Structurally identical to a public key that + * hasn't been set as the public key + * + * @see getPrivateKey() + * @access private + * @param String $key + * @param Integer $type optional + */ + function _getPrivatePublicKey($mode = CRYPT_RSA_PUBLIC_FORMAT_PKCS1) + { + if (empty($this->modulus) || empty($this->exponent)) { + return false; + } + + $oldFormat = $this->publicKeyFormat; + $this->publicKeyFormat = $mode; + $temp = $this->_convertPublicKey($this->modulus, $this->exponent); + $this->publicKeyFormat = $oldFormat; + return $temp; + } + + /** + * __toString() magic method + * + * @access public + */ + function __toString() + { + $key = $this->getPrivateKey($this->privateKeyFormat); + if ($key !== false) { + return $key; + } + $key = $this->_getPrivatePublicKey($this->publicKeyFormat); + return $key !== false ? $key : ''; + } + + /** + * Generates the smallest and largest numbers requiring $bits bits + * + * @access private + * @param Integer $bits + * @return Array + */ + function _generateMinMax($bits) + { + $bytes = $bits >> 3; + $min = str_repeat(chr(0), $bytes); + $max = str_repeat(chr(0xFF), $bytes); + $msb = $bits & 7; + if ($msb) { + $min = chr(1 << ($msb - 1)) . $min; + $max = chr((1 << $msb) - 1) . $max; + } else { + $min[0] = chr(0x80); + } + + return array( + 'min' => new Math_BigInteger($min, 256), + 'max' => new Math_BigInteger($max, 256) + ); + } + + /** + * DER-decode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 8.1.3} for more information. + * + * @access private + * @param String $string + * @return Integer + */ + function _decodeLength(&$string) + { + $length = ord($this->_string_shift($string)); + if ( $length & 0x80 ) { // definite length, long form + $length&= 0x7F; + $temp = $this->_string_shift($string, $length); + list(, $length) = unpack('N', substr(str_pad($temp, 4, chr(0), STR_PAD_LEFT), -4)); + } + return $length; + } + + /** + * DER-encode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 8.1.3} for more information. + * + * @access private + * @param Integer $length + * @return String + */ + function _encodeLength($length) + { + if ($length <= 0x7F) { + return chr($length); + } + + $temp = ltrim(pack('N', $length), chr(0)); + return pack('Ca*', 0x80 | strlen($temp), $temp); + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param String $string + * @param optional Integer $index + * @return String + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * Determines the private key format + * + * @see createKey() + * @access public + * @param Integer $format + */ + function setPrivateKeyFormat($format) + { + $this->privateKeyFormat = $format; + } + + /** + * Determines the public key format + * + * @see createKey() + * @access public + * @param Integer $format + */ + function setPublicKeyFormat($format) + { + $this->publicKeyFormat = $format; + } + + /** + * Determines which hashing function should be used + * + * Used with signature production / verification and (if the encryption mode is CRYPT_RSA_ENCRYPTION_OAEP) encryption and + * decryption. If $hash isn't supported, sha1 is used. + * + * @access public + * @param String $hash + */ + function setHash($hash) + { + // Crypt_Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example. + switch ($hash) { + case 'md2': + case 'md5': + case 'sha1': + case 'sha256': + case 'sha384': + case 'sha512': + $this->hash = new Crypt_Hash($hash); + $this->hashName = $hash; + break; + default: + $this->hash = new Crypt_Hash('sha1'); + $this->hashName = 'sha1'; + } + $this->hLen = $this->hash->getLength(); + } + + /** + * Determines which hashing function should be used for the mask generation function + * + * The mask generation function is used by CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_SIGNATURE_PSS and although it's + * best if Hash and MGFHash are set to the same thing this is not a requirement. + * + * @access public + * @param String $hash + */ + function setMGFHash($hash) + { + // Crypt_Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example. + switch ($hash) { + case 'md2': + case 'md5': + case 'sha1': + case 'sha256': + case 'sha384': + case 'sha512': + $this->mgfHash = new Crypt_Hash($hash); + break; + default: + $this->mgfHash = new Crypt_Hash('sha1'); + } + $this->mgfHLen = $this->mgfHash->getLength(); + } + + /** + * Determines the salt length + * + * To quote from {@link http://tools.ietf.org/html/rfc3447#page-38 RFC3447#page-38}: + * + * Typical salt lengths in octets are hLen (the length of the output + * of the hash function Hash) and 0. + * + * @access public + * @param Integer $format + */ + function setSaltLength($sLen) + { + $this->sLen = $sLen; + } + + /** + * Integer-to-Octet-String primitive + * + * See {@link http://tools.ietf.org/html/rfc3447#section-4.1 RFC3447#section-4.1}. + * + * @access private + * @param Math_BigInteger $x + * @param Integer $xLen + * @return String + */ + function _i2osp($x, $xLen) + { + $x = $x->toBytes(); + if (strlen($x) > $xLen) { + user_error('Integer too large'); + return false; + } + return str_pad($x, $xLen, chr(0), STR_PAD_LEFT); + } + + /** + * Octet-String-to-Integer primitive + * + * See {@link http://tools.ietf.org/html/rfc3447#section-4.2 RFC3447#section-4.2}. + * + * @access private + * @param String $x + * @return Math_BigInteger + */ + function _os2ip($x) + { + return new Math_BigInteger($x, 256); + } + + /** + * Exponentiate with or without Chinese Remainder Theorem + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.2}. + * + * @access private + * @param Math_BigInteger $x + * @return Math_BigInteger + */ + function _exponentiate($x) + { + if (empty($this->primes) || empty($this->coefficients) || empty($this->exponents)) { + return $x->modPow($this->exponent, $this->modulus); + } + + $num_primes = count($this->primes); + + if (defined('CRYPT_RSA_DISABLE_BLINDING')) { + $m_i = array( + 1 => $x->modPow($this->exponents[1], $this->primes[1]), + 2 => $x->modPow($this->exponents[2], $this->primes[2]) + ); + $h = $m_i[1]->subtract($m_i[2]); + $h = $h->multiply($this->coefficients[2]); + list(, $h) = $h->divide($this->primes[1]); + $m = $m_i[2]->add($h->multiply($this->primes[2])); + + $r = $this->primes[1]; + for ($i = 3; $i <= $num_primes; $i++) { + $m_i = $x->modPow($this->exponents[$i], $this->primes[$i]); + + $r = $r->multiply($this->primes[$i - 1]); + + $h = $m_i->subtract($m); + $h = $h->multiply($this->coefficients[$i]); + list(, $h) = $h->divide($this->primes[$i]); + + $m = $m->add($r->multiply($h)); + } + } else { + $smallest = $this->primes[1]; + for ($i = 2; $i <= $num_primes; $i++) { + if ($smallest->compare($this->primes[$i]) > 0) { + $smallest = $this->primes[$i]; + } + } + + $one = new Math_BigInteger(1); + + $r = $one->random($one, $smallest->subtract($one)); + + $m_i = array( + 1 => $this->_blind($x, $r, 1), + 2 => $this->_blind($x, $r, 2) + ); + $h = $m_i[1]->subtract($m_i[2]); + $h = $h->multiply($this->coefficients[2]); + list(, $h) = $h->divide($this->primes[1]); + $m = $m_i[2]->add($h->multiply($this->primes[2])); + + $r = $this->primes[1]; + for ($i = 3; $i <= $num_primes; $i++) { + $m_i = $this->_blind($x, $r, $i); + + $r = $r->multiply($this->primes[$i - 1]); + + $h = $m_i->subtract($m); + $h = $h->multiply($this->coefficients[$i]); + list(, $h) = $h->divide($this->primes[$i]); + + $m = $m->add($r->multiply($h)); + } + } + + return $m; + } + + /** + * Performs RSA Blinding + * + * Protects against timing attacks by employing RSA Blinding. + * Returns $x->modPow($this->exponents[$i], $this->primes[$i]) + * + * @access private + * @param Math_BigInteger $x + * @param Math_BigInteger $r + * @param Integer $i + * @return Math_BigInteger + */ + function _blind($x, $r, $i) + { + $x = $x->multiply($r->modPow($this->publicExponent, $this->primes[$i])); + $x = $x->modPow($this->exponents[$i], $this->primes[$i]); + + $r = $r->modInverse($this->primes[$i]); + $x = $x->multiply($r); + list(, $x) = $x->divide($this->primes[$i]); + + return $x; + } + + /** + * Performs blinded RSA equality testing + * + * Protects against a particular type of timing attack described. + * + * See {@link http://codahale.com/a-lesson-in-timing-attacks/ A Lesson In Timing Attacks (or, Dont use MessageDigest.isEquals)} + * + * Thanks for the heads up singpolyma! + * + * @access private + * @param String $x + * @param String $y + * @return Boolean + */ + function _equals($x, $y) + { + if (strlen($x) != strlen($y)) { + return false; + } + + $result = 0; + for ($i = 0; $i < strlen($x); $i++) { + $result |= ord($x[$i]) ^ ord($y[$i]); + } + + return $result == 0; + } + + /** + * RSAEP + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.1}. + * + * @access private + * @param Math_BigInteger $m + * @return Math_BigInteger + */ + function _rsaep($m) + { + if ($m->compare($this->zero) < 0 || $m->compare($this->modulus) > 0) { + user_error('Message representative out of range'); + return false; + } + return $this->_exponentiate($m); + } + + /** + * RSADP + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.2 RFC3447#section-5.1.2}. + * + * @access private + * @param Math_BigInteger $c + * @return Math_BigInteger + */ + function _rsadp($c) + { + if ($c->compare($this->zero) < 0 || $c->compare($this->modulus) > 0) { + user_error('Ciphertext representative out of range'); + return false; + } + return $this->_exponentiate($c); + } + + /** + * RSASP1 + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.2.1 RFC3447#section-5.2.1}. + * + * @access private + * @param Math_BigInteger $m + * @return Math_BigInteger + */ + function _rsasp1($m) + { + if ($m->compare($this->zero) < 0 || $m->compare($this->modulus) > 0) { + user_error('Message representative out of range'); + return false; + } + return $this->_exponentiate($m); + } + + /** + * RSAVP1 + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.2.2 RFC3447#section-5.2.2}. + * + * @access private + * @param Math_BigInteger $s + * @return Math_BigInteger + */ + function _rsavp1($s) + { + if ($s->compare($this->zero) < 0 || $s->compare($this->modulus) > 0) { + user_error('Signature representative out of range'); + return false; + } + return $this->_exponentiate($s); + } + + /** + * MGF1 + * + * See {@link http://tools.ietf.org/html/rfc3447#appendix-B.2.1 RFC3447#appendix-B.2.1}. + * + * @access private + * @param String $mgfSeed + * @param Integer $mgfLen + * @return String + */ + function _mgf1($mgfSeed, $maskLen) + { + // if $maskLen would yield strings larger than 4GB, PKCS#1 suggests a "Mask too long" error be output. + + $t = ''; + $count = ceil($maskLen / $this->mgfHLen); + for ($i = 0; $i < $count; $i++) { + $c = pack('N', $i); + $t.= $this->mgfHash->hash($mgfSeed . $c); + } + + return substr($t, 0, $maskLen); + } + + /** + * RSAES-OAEP-ENCRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.1.1 RFC3447#section-7.1.1} and + * {http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding OAES}. + * + * @access private + * @param String $m + * @param String $l + * @return String + */ + function _rsaes_oaep_encrypt($m, $l = '') + { + $mLen = strlen($m); + + // Length checking + + // if $l is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + if ($mLen > $this->k - 2 * $this->hLen - 2) { + user_error('Message too long'); + return false; + } + + // EME-OAEP encoding + + $lHash = $this->hash->hash($l); + $ps = str_repeat(chr(0), $this->k - $mLen - 2 * $this->hLen - 2); + $db = $lHash . $ps . chr(1) . $m; + $seed = crypt_random_string($this->hLen); + $dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1); + $maskedDB = $db ^ $dbMask; + $seedMask = $this->_mgf1($maskedDB, $this->hLen); + $maskedSeed = $seed ^ $seedMask; + $em = chr(0) . $maskedSeed . $maskedDB; + + // RSA encryption + + $m = $this->_os2ip($em); + $c = $this->_rsaep($m); + $c = $this->_i2osp($c, $this->k); + + // Output the ciphertext C + + return $c; + } + + /** + * RSAES-OAEP-DECRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.1.2 RFC3447#section-7.1.2}. The fact that the error + * messages aren't distinguishable from one another hinders debugging, but, to quote from RFC3447#section-7.1.2: + * + * Note. Care must be taken to ensure that an opponent cannot + * distinguish the different error conditions in Step 3.g, whether by + * error message or timing, or, more generally, learn partial + * information about the encoded message EM. Otherwise an opponent may + * be able to obtain useful information about the decryption of the + * ciphertext C, leading to a chosen-ciphertext attack such as the one + * observed by Manger [36]. + * + * As for $l... to quote from {@link http://tools.ietf.org/html/rfc3447#page-17 RFC3447#page-17}: + * + * Both the encryption and the decryption operations of RSAES-OAEP take + * the value of a label L as input. In this version of PKCS #1, L is + * the empty string; other uses of the label are outside the scope of + * this document. + * + * @access private + * @param String $c + * @param String $l + * @return String + */ + function _rsaes_oaep_decrypt($c, $l = '') + { + // Length checking + + // if $l is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + if (strlen($c) != $this->k || $this->k < 2 * $this->hLen + 2) { + user_error('Decryption error'); + return false; + } + + // RSA decryption + + $c = $this->_os2ip($c); + $m = $this->_rsadp($c); + if ($m === false) { + user_error('Decryption error'); + return false; + } + $em = $this->_i2osp($m, $this->k); + + // EME-OAEP decoding + + $lHash = $this->hash->hash($l); + $y = ord($em[0]); + $maskedSeed = substr($em, 1, $this->hLen); + $maskedDB = substr($em, $this->hLen + 1); + $seedMask = $this->_mgf1($maskedDB, $this->hLen); + $seed = $maskedSeed ^ $seedMask; + $dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1); + $db = $maskedDB ^ $dbMask; + $lHash2 = substr($db, 0, $this->hLen); + $m = substr($db, $this->hLen); + if ($lHash != $lHash2) { + user_error('Decryption error'); + return false; + } + $m = ltrim($m, chr(0)); + if (ord($m[0]) != 1) { + user_error('Decryption error'); + return false; + } + + // Output the message M + + return substr($m, 1); + } + + /** + * RSAES-PKCS1-V1_5-ENCRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.2.1 RFC3447#section-7.2.1}. + * + * @access private + * @param String $m + * @return String + */ + function _rsaes_pkcs1_v1_5_encrypt($m) + { + $mLen = strlen($m); + + // Length checking + + if ($mLen > $this->k - 11) { + user_error('Message too long'); + return false; + } + + // EME-PKCS1-v1_5 encoding + $psLen = $this->k - $mLen - 3; + $ps = ''; + while (strlen($ps) != $psLen) { + $temp = crypt_random_string($psLen - strlen($ps)); + $temp = str_replace("\x00", '', $temp); + $ps.= $temp; + } + $em = chr(0) . chr(2) . $ps . chr(0) . $m; + + // RSA encryption + $m = $this->_os2ip($em); + $c = $this->_rsaep($m); + $c = $this->_i2osp($c, $this->k); + + // Output the ciphertext C + + return $c; + } + + /** + * RSAES-PKCS1-V1_5-DECRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.2.2 RFC3447#section-7.2.2}. + * + * For compatability purposes, this function departs slightly from the description given in RFC3447. + * The reason being that RFC2313#section-8.1 (PKCS#1 v1.5) states that ciphertext's encrypted by the + * private key should have the second byte set to either 0 or 1 and that ciphertext's encrypted by the + * public key should have the second byte set to 2. In RFC3447 (PKCS#1 v2.1), the second byte is supposed + * to be 2 regardless of which key is used. For compatability purposes, we'll just check to make sure the + * second byte is 2 or less. If it is, we'll accept the decrypted string as valid. + * + * As a consequence of this, a private key encrypted ciphertext produced with Crypt_RSA may not decrypt + * with a strictly PKCS#1 v1.5 compliant RSA implementation. Public key encrypted ciphertext's should but + * not private key encrypted ciphertext's. + * + * @access private + * @param String $c + * @return String + */ + function _rsaes_pkcs1_v1_5_decrypt($c) + { + // Length checking + + if (strlen($c) != $this->k) { // or if k < 11 + user_error('Decryption error'); + return false; + } + + // RSA decryption + + $c = $this->_os2ip($c); + $m = $this->_rsadp($c); + + if ($m === false) { + user_error('Decryption error'); + return false; + } + $em = $this->_i2osp($m, $this->k); + + // EME-PKCS1-v1_5 decoding + + if (ord($em[0]) != 0 || ord($em[1]) > 2) { + user_error('Decryption error'); + return false; + } + + $ps = substr($em, 2, strpos($em, chr(0), 2) - 2); + $m = substr($em, strlen($ps) + 3); + + if (strlen($ps) < 8) { + user_error('Decryption error'); + return false; + } + + // Output M + + return $m; + } + + /** + * EMSA-PSS-ENCODE + * + * See {@link http://tools.ietf.org/html/rfc3447#section-9.1.1 RFC3447#section-9.1.1}. + * + * @access private + * @param String $m + * @param Integer $emBits + */ + function _emsa_pss_encode($m, $emBits) + { + // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + $emLen = ($emBits + 1) >> 3; // ie. ceil($emBits / 8) + $sLen = $this->sLen == false ? $this->hLen : $this->sLen; + + $mHash = $this->hash->hash($m); + if ($emLen < $this->hLen + $sLen + 2) { + user_error('Encoding error'); + return false; + } + + $salt = crypt_random_string($sLen); + $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt; + $h = $this->hash->hash($m2); + $ps = str_repeat(chr(0), $emLen - $sLen - $this->hLen - 2); + $db = $ps . chr(1) . $salt; + $dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1); + $maskedDB = $db ^ $dbMask; + $maskedDB[0] = ~chr(0xFF << ($emBits & 7)) & $maskedDB[0]; + $em = $maskedDB . $h . chr(0xBC); + + return $em; + } + + /** + * EMSA-PSS-VERIFY + * + * See {@link http://tools.ietf.org/html/rfc3447#section-9.1.2 RFC3447#section-9.1.2}. + * + * @access private + * @param String $m + * @param String $em + * @param Integer $emBits + * @return String + */ + function _emsa_pss_verify($m, $em, $emBits) + { + // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + $emLen = ($emBits + 1) >> 3; // ie. ceil($emBits / 8); + $sLen = $this->sLen == false ? $this->hLen : $this->sLen; + + $mHash = $this->hash->hash($m); + if ($emLen < $this->hLen + $sLen + 2) { + return false; + } + + if ($em[strlen($em) - 1] != chr(0xBC)) { + return false; + } + + $maskedDB = substr($em, 0, -$this->hLen - 1); + $h = substr($em, -$this->hLen - 1, $this->hLen); + $temp = chr(0xFF << ($emBits & 7)); + if ((~$maskedDB[0] & $temp) != $temp) { + return false; + } + $dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1); + $db = $maskedDB ^ $dbMask; + $db[0] = ~chr(0xFF << ($emBits & 7)) & $db[0]; + $temp = $emLen - $this->hLen - $sLen - 2; + if (substr($db, 0, $temp) != str_repeat(chr(0), $temp) || ord($db[$temp]) != 1) { + return false; + } + $salt = substr($db, $temp + 1); // should be $sLen long + $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt; + $h2 = $this->hash->hash($m2); + return $this->_equals($h, $h2); + } + + /** + * RSASSA-PSS-SIGN + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.1.1 RFC3447#section-8.1.1}. + * + * @access private + * @param String $m + * @return String + */ + function _rsassa_pss_sign($m) + { + // EMSA-PSS encoding + + $em = $this->_emsa_pss_encode($m, 8 * $this->k - 1); + + // RSA signature + + $m = $this->_os2ip($em); + $s = $this->_rsasp1($m); + $s = $this->_i2osp($s, $this->k); + + // Output the signature S + + return $s; + } + + /** + * RSASSA-PSS-VERIFY + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.1.2 RFC3447#section-8.1.2}. + * + * @access private + * @param String $m + * @param String $s + * @return String + */ + function _rsassa_pss_verify($m, $s) + { + // Length checking + + if (strlen($s) != $this->k) { + user_error('Invalid signature'); + return false; + } + + // RSA verification + + $modBits = 8 * $this->k; + + $s2 = $this->_os2ip($s); + $m2 = $this->_rsavp1($s2); + if ($m2 === false) { + user_error('Invalid signature'); + return false; + } + $em = $this->_i2osp($m2, $modBits >> 3); + if ($em === false) { + user_error('Invalid signature'); + return false; + } + + // EMSA-PSS verification + + return $this->_emsa_pss_verify($m, $em, $modBits - 1); + } + + /** + * EMSA-PKCS1-V1_5-ENCODE + * + * See {@link http://tools.ietf.org/html/rfc3447#section-9.2 RFC3447#section-9.2}. + * + * @access private + * @param String $m + * @param Integer $emLen + * @return String + */ + function _emsa_pkcs1_v1_5_encode($m, $emLen) + { + $h = $this->hash->hash($m); + if ($h === false) { + return false; + } + + // see http://tools.ietf.org/html/rfc3447#page-43 + switch ($this->hashName) { + case 'md2': + $t = pack('H*', '3020300c06082a864886f70d020205000410'); + break; + case 'md5': + $t = pack('H*', '3020300c06082a864886f70d020505000410'); + break; + case 'sha1': + $t = pack('H*', '3021300906052b0e03021a05000414'); + break; + case 'sha256': + $t = pack('H*', '3031300d060960864801650304020105000420'); + break; + case 'sha384': + $t = pack('H*', '3041300d060960864801650304020205000430'); + break; + case 'sha512': + $t = pack('H*', '3051300d060960864801650304020305000440'); + } + $t.= $h; + $tLen = strlen($t); + + if ($emLen < $tLen + 11) { + user_error('Intended encoded message length too short'); + return false; + } + + $ps = str_repeat(chr(0xFF), $emLen - $tLen - 3); + + $em = "\0\1$ps\0$t"; + + return $em; + } + + /** + * RSASSA-PKCS1-V1_5-SIGN + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.2.1 RFC3447#section-8.2.1}. + * + * @access private + * @param String $m + * @return String + */ + function _rsassa_pkcs1_v1_5_sign($m) + { + // EMSA-PKCS1-v1_5 encoding + + $em = $this->_emsa_pkcs1_v1_5_encode($m, $this->k); + if ($em === false) { + user_error('RSA modulus too short'); + return false; + } + + // RSA signature + + $m = $this->_os2ip($em); + $s = $this->_rsasp1($m); + $s = $this->_i2osp($s, $this->k); + + // Output the signature S + + return $s; + } + + /** + * RSASSA-PKCS1-V1_5-VERIFY + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.2.2 RFC3447#section-8.2.2}. + * + * @access private + * @param String $m + * @return String + */ + function _rsassa_pkcs1_v1_5_verify($m, $s) + { + // Length checking + + if (strlen($s) != $this->k) { + user_error('Invalid signature'); + return false; + } + + // RSA verification + + $s = $this->_os2ip($s); + $m2 = $this->_rsavp1($s); + if ($m2 === false) { + user_error('Invalid signature'); + return false; + } + $em = $this->_i2osp($m2, $this->k); + if ($em === false) { + user_error('Invalid signature'); + return false; + } + + // EMSA-PKCS1-v1_5 encoding + + $em2 = $this->_emsa_pkcs1_v1_5_encode($m, $this->k); + if ($em2 === false) { + user_error('RSA modulus too short'); + return false; + } + + // Compare + return $this->_equals($em, $em2); + } + + /** + * Set Encryption Mode + * + * Valid values include CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_ENCRYPTION_PKCS1. + * + * @access public + * @param Integer $mode + */ + function setEncryptionMode($mode) + { + $this->encryptionMode = $mode; + } + + /** + * Set Signature Mode + * + * Valid values include CRYPT_RSA_SIGNATURE_PSS and CRYPT_RSA_SIGNATURE_PKCS1 + * + * @access public + * @param Integer $mode + */ + function setSignatureMode($mode) + { + $this->signatureMode = $mode; + } + + /** + * Encryption + * + * Both CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_ENCRYPTION_PKCS1 both place limits on how long $plaintext can be. + * If $plaintext exceeds those limits it will be broken up so that it does and the resultant ciphertext's will + * be concatenated together. + * + * @see decrypt() + * @access public + * @param String $plaintext + * @return String + */ + function encrypt($plaintext) + { + switch ($this->encryptionMode) { + case CRYPT_RSA_ENCRYPTION_PKCS1: + $length = $this->k - 11; + if ($length <= 0) { + return false; + } + + $plaintext = str_split($plaintext, $length); + $ciphertext = ''; + foreach ($plaintext as $m) { + $ciphertext.= $this->_rsaes_pkcs1_v1_5_encrypt($m); + } + return $ciphertext; + //case CRYPT_RSA_ENCRYPTION_OAEP: + default: + $length = $this->k - 2 * $this->hLen - 2; + if ($length <= 0) { + return false; + } + + $plaintext = str_split($plaintext, $length); + $ciphertext = ''; + foreach ($plaintext as $m) { + $ciphertext.= $this->_rsaes_oaep_encrypt($m); + } + return $ciphertext; + } + } + + /** + * Decryption + * + * @see encrypt() + * @access public + * @param String $plaintext + * @return String + */ + function decrypt($ciphertext) + { + if ($this->k <= 0) { + return false; + } + + $ciphertext = str_split($ciphertext, $this->k); + $ciphertext[count($ciphertext) - 1] = str_pad($ciphertext[count($ciphertext) - 1], $this->k, chr(0), STR_PAD_LEFT); + + $plaintext = ''; + + switch ($this->encryptionMode) { + case CRYPT_RSA_ENCRYPTION_PKCS1: + $decrypt = '_rsaes_pkcs1_v1_5_decrypt'; + break; + //case CRYPT_RSA_ENCRYPTION_OAEP: + default: + $decrypt = '_rsaes_oaep_decrypt'; + } + + foreach ($ciphertext as $c) { + $temp = $this->$decrypt($c); + if ($temp === false) { + return false; + } + $plaintext.= $temp; + } + + return $plaintext; + } + + /** + * Create a signature + * + * @see verify() + * @access public + * @param String $message + * @return String + */ + function sign($message) + { + if (empty($this->modulus) || empty($this->exponent)) { + return false; + } + + switch ($this->signatureMode) { + case CRYPT_RSA_SIGNATURE_PKCS1: + return $this->_rsassa_pkcs1_v1_5_sign($message); + //case CRYPT_RSA_SIGNATURE_PSS: + default: + return $this->_rsassa_pss_sign($message); + } + } + + /** + * Verifies a signature + * + * @see sign() + * @access public + * @param String $message + * @param String $signature + * @return Boolean + */ + function verify($message, $signature) + { + if (empty($this->modulus) || empty($this->exponent)) { + return false; + } + + switch ($this->signatureMode) { + case CRYPT_RSA_SIGNATURE_PKCS1: + return $this->_rsassa_pkcs1_v1_5_verify($message, $signature); + //case CRYPT_RSA_SIGNATURE_PSS: + default: + return $this->_rsassa_pss_verify($message, $signature); + } + } +} diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/Random.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/Random.php new file mode 100644 index 0000000000..a60857df95 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/Random.php @@ -0,0 +1,243 @@ + + * + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Random + * @author Jim Wigginton + * @copyright MMVII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: Random.php,v 1.9 2010/04/24 06:40:48 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/** + * Generate a random string. + * + * Although microoptimizations are generally discouraged as they impair readability this function is ripe with + * microoptimizations because this function has the potential of being called a huge number of times. + * eg. for RSA key generation. + * + * @param Integer $length + * @return String + * @access public + */ +function crypt_random_string($length) { + // PHP_OS & "\xDF\xDF\xDF" == strtoupper(substr(PHP_OS, 0, 3)), but a lot faster + if ((PHP_OS & "\xDF\xDF\xDF") === 'WIN') { + // method 1. prior to PHP 5.3 this would call rand() on windows hence the function_exists('class_alias') call. + // ie. class_alias is a function that was introduced in PHP 5.3 + if (function_exists('mcrypt_create_iv') && function_exists('class_alias')) { + return mcrypt_create_iv($length); + } + // method 2. openssl_random_pseudo_bytes was introduced in PHP 5.3.0 but prior to PHP 5.3.4 there was, + // to quote , "possible blocking behavior". as of 5.3.4 + // openssl_random_pseudo_bytes and mcrypt_create_iv do the exact same thing on Windows. ie. they both + // call php_win32_get_random_bytes(): + // + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/openssl/openssl.c#L5008 + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/mcrypt/mcrypt.c#L1392 + // + // php_win32_get_random_bytes() is defined thusly: + // + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/win32/winutil.c#L80 + // + // we're calling it, all the same, in the off chance that the mcrypt extension is not available + if (function_exists('openssl_random_pseudo_bytes') && version_compare(PHP_VERSION, '5.3.4', '>=')) { + return openssl_random_pseudo_bytes($length); + } + } else { + // method 1. the fastest + if (function_exists('openssl_random_pseudo_bytes')) { + return openssl_random_pseudo_bytes($length); + } + // method 2 + static $fp = true; + if ($fp === true) { + // warning's will be output unles the error suppression operator is used. errors such as + // "open_basedir restriction in effect", "Permission denied", "No such file or directory", etc. + $fp = @fopen('/dev/urandom', 'rb'); + } + if ($fp !== true && $fp !== false) { // surprisingly faster than !is_bool() or is_resource() + return fread($fp, $length); + } + // method 3. pretty much does the same thing as method 2 per the following url: + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/mcrypt/mcrypt.c#L1391 + // surprisingly slower than method 2. maybe that's because mcrypt_create_iv does a bunch of error checking that we're + // not doing. regardless, this'll only be called if this PHP script couldn't open /dev/urandom due to open_basedir + // restrictions or some such + if (function_exists('mcrypt_create_iv')) { + return mcrypt_create_iv($length, MCRYPT_DEV_URANDOM); + } + } + // at this point we have no choice but to use a pure-PHP CSPRNG + + // cascade entropy across multiple PHP instances by fixing the session and collecting all + // environmental variables, including the previous session data and the current session + // data. + // + // mt_rand seeds itself by looking at the PID and the time, both of which are (relatively) + // easy to guess at. linux uses mouse clicks, keyboard timings, etc, as entropy sources, but + // PHP isn't low level to be able to use those as sources and on a web server there's not likely + // going to be a ton of keyboard or mouse action. web servers do have one thing that we can use + // however. a ton of people visiting the website. obviously you don't want to base your seeding + // soley on parameters a potential attacker sends but (1) not everything in $_SERVER is controlled + // by the user and (2) this isn't just looking at the data sent by the current user - it's based + // on the data sent by all users. one user requests the page and a hash of their info is saved. + // another user visits the page and the serialization of their data is utilized along with the + // server envirnment stuff and a hash of the previous http request data (which itself utilizes + // a hash of the session data before that). certainly an attacker should be assumed to have + // full control over his own http requests. he, however, is not going to have control over + // everyone's http requests. + static $crypto = false, $v; + if ($crypto === false) { + // save old session data + $old_session_id = session_id(); + $old_use_cookies = ini_get('session.use_cookies'); + $old_session_cache_limiter = session_cache_limiter(); + if (isset($_SESSION)) { + $_OLD_SESSION = $_SESSION; + } + if ($old_session_id != '') { + session_write_close(); + } + + session_id(1); + ini_set('session.use_cookies', 0); + session_cache_limiter(''); + session_start(); + + $v = $seed = $_SESSION['seed'] = pack('H*', sha1( + serialize($_SERVER) . + serialize($_POST) . + serialize($_GET) . + serialize($_COOKIE) . + serialize($_GLOBAL) . + serialize($_SESSION) . + serialize($_OLD_SESSION) + )); + if (!isset($_SESSION['count'])) { + $_SESSION['count'] = 0; + } + $_SESSION['count']++; + + session_write_close(); + + // restore old session data + if ($old_session_id != '') { + session_id($old_session_id); + session_start(); + ini_set('session.use_cookies', $old_use_cookies); + session_cache_limiter($old_session_cache_limiter); + } else { + if (isset($_OLD_SESSION)) { + $_SESSION = $_OLD_SESSION; + unset($_OLD_SESSION); + } else { + unset($_SESSION); + } + } + + // in SSH2 a shared secret and an exchange hash are generated through the key exchange process. + // the IV client to server is the hash of that "nonce" with the letter A and for the encryption key it's the letter C. + // if the hash doesn't produce enough a key or an IV that's long enough concat successive hashes of the + // original hash and the current hash. we'll be emulating that. for more info see the following URL: + // + // http://tools.ietf.org/html/rfc4253#section-7.2 + // + // see the is_string($crypto) part for an example of how to expand the keys + $key = pack('H*', sha1($seed . 'A')); + $iv = pack('H*', sha1($seed . 'C')); + + // ciphers are used as per the nist.gov link below. also, see this link: + // + // http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator#Designs_based_on_cryptographic_primitives + switch (true) { + case class_exists('Crypt_AES'): + $crypto = new Crypt_AES(CRYPT_AES_MODE_CTR); + break; + case class_exists('Crypt_TripleDES'): + $crypto = new Crypt_TripleDES(CRYPT_DES_MODE_CTR); + break; + case class_exists('Crypt_DES'): + $crypto = new Crypt_DES(CRYPT_DES_MODE_CTR); + break; + case class_exists('Crypt_RC4'): + $crypto = new Crypt_RC4(); + break; + default: + $crypto = $seed; + return crypt_random_string($length); + } + + $crypto->setKey($key); + $crypto->setIV($iv); + $crypto->enableContinuousBuffer(); + } + + if (is_string($crypto)) { + // the following is based off of ANSI X9.31: + // + // http://csrc.nist.gov/groups/STM/cavp/documents/rng/931rngext.pdf + // + // OpenSSL uses that same standard for it's random numbers: + // + // http://www.opensource.apple.com/source/OpenSSL/OpenSSL-38/openssl/fips-1.0/rand/fips_rand.c + // (do a search for "ANS X9.31 A.2.4") + // + // ANSI X9.31 recommends ciphers be used and phpseclib does use them if they're available (see + // later on in the code) but if they're not we'll use sha1 + $result = ''; + while (strlen($result) < $length) { // each loop adds 20 bytes + // microtime() isn't packed as "densely" as it could be but then neither is that the idea. + // the idea is simply to ensure that each "block" has a unique element to it. + $i = pack('H*', sha1(microtime())); + $r = pack('H*', sha1($i ^ $v)); + $v = pack('H*', sha1($r ^ $i)); + $result.= $r; + } + return substr($result, 0, $length); + } + + //return $crypto->encrypt(str_repeat("\0", $length)); + + $result = ''; + while (strlen($result) < $length) { + $i = $crypto->encrypt(microtime()); + $r = $crypto->encrypt($i ^ $v); + $v = $crypto->encrypt($r ^ $i); + $result.= $r; + } + return substr($result, 0, $length); +} diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/Rijndael.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/Rijndael.php new file mode 100644 index 0000000000..335d5233c4 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/Rijndael.php @@ -0,0 +1,1525 @@ + + * setKey('abcdefghijklmnop'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $rijndael->decrypt($rijndael->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Rijndael + * @author Jim Wigginton + * @copyright MMVIII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: Rijndael.php,v 1.12 2010/02/09 06:10:26 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * @access public + * @see Crypt_Rijndael::encrypt() + * @see Crypt_Rijndael::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_RIJNDAEL_MODE_CTR', -1); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_RIJNDAEL_MODE_ECB', 1); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_RIJNDAEL_MODE_CBC', 2); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_RIJNDAEL_MODE_CFB', 3); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_RIJNDAEL_MODE_OFB', 4); +/**#@-*/ + +/**#@+ + * @access private + * @see Crypt_Rijndael::Crypt_Rijndael() + */ +/** + * Toggles the internal implementation + */ +define('CRYPT_RIJNDAEL_MODE_INTERNAL', 1); +/** + * Toggles the mcrypt implementation + */ +define('CRYPT_RIJNDAEL_MODE_MCRYPT', 2); +/**#@-*/ + +/** + * Pure-PHP implementation of Rijndael. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Crypt_Rijndael + */ +class Crypt_Rijndael { + /** + * The Encryption Mode + * + * @see Crypt_Rijndael::Crypt_Rijndael() + * @var Integer + * @access private + */ + var $mode; + + /** + * The Key + * + * @see Crypt_Rijndael::setKey() + * @var String + * @access private + */ + var $key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; + + /** + * The Initialization Vector + * + * @see Crypt_Rijndael::setIV() + * @var String + * @access private + */ + var $iv = ''; + + /** + * A "sliding" Initialization Vector + * + * @see Crypt_Rijndael::enableContinuousBuffer() + * @var String + * @access private + */ + var $encryptIV = ''; + + /** + * A "sliding" Initialization Vector + * + * @see Crypt_Rijndael::enableContinuousBuffer() + * @var String + * @access private + */ + var $decryptIV = ''; + + /** + * Continuous Buffer status + * + * @see Crypt_Rijndael::enableContinuousBuffer() + * @var Boolean + * @access private + */ + var $continuousBuffer = false; + + /** + * Padding status + * + * @see Crypt_Rijndael::enablePadding() + * @var Boolean + * @access private + */ + var $padding = true; + + /** + * Does the key schedule need to be (re)calculated? + * + * @see setKey() + * @see setBlockLength() + * @see setKeyLength() + * @var Boolean + * @access private + */ + var $changed = true; + + /** + * Has the key length explicitly been set or should it be derived from the key, itself? + * + * @see setKeyLength() + * @var Boolean + * @access private + */ + var $explicit_key_length = false; + + /** + * The Key Schedule + * + * @see _setup() + * @var Array + * @access private + */ + var $w; + + /** + * The Inverse Key Schedule + * + * @see _setup() + * @var Array + * @access private + */ + var $dw; + + /** + * The Block Length + * + * @see setBlockLength() + * @var Integer + * @access private + * @internal The max value is 32, the min value is 16. All valid values are multiples of 4. Exists in conjunction with + * $Nb because we need this value and not $Nb to pad strings appropriately. + */ + var $block_size = 16; + + /** + * The Block Length divided by 32 + * + * @see setBlockLength() + * @var Integer + * @access private + * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4. Exists in conjunction with $block_size + * because the encryption / decryption / key schedule creation requires this number and not $block_size. We could + * derive this from $block_size or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu + * of that, we'll just precompute it once. + * + */ + var $Nb = 4; + + /** + * The Key Length + * + * @see setKeyLength() + * @var Integer + * @access private + * @internal The max value is 256 / 8 = 32, the min value is 128 / 8 = 16. Exists in conjunction with $key_size + * because the encryption / decryption / key schedule creation requires this number and not $key_size. We could + * derive this from $key_size or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu + * of that, we'll just precompute it once. + */ + var $key_size = 16; + + /** + * The Key Length divided by 32 + * + * @see setKeyLength() + * @var Integer + * @access private + * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4 + */ + var $Nk = 4; + + /** + * The Number of Rounds + * + * @var Integer + * @access private + * @internal The max value is 14, the min value is 10. + */ + var $Nr; + + /** + * Shift offsets + * + * @var Array + * @access private + */ + var $c; + + /** + * Precomputed mixColumns table + * + * @see Crypt_Rijndael() + * @var Array + * @access private + */ + var $t0; + + /** + * Precomputed mixColumns table + * + * @see Crypt_Rijndael() + * @var Array + * @access private + */ + var $t1; + + /** + * Precomputed mixColumns table + * + * @see Crypt_Rijndael() + * @var Array + * @access private + */ + var $t2; + + /** + * Precomputed mixColumns table + * + * @see Crypt_Rijndael() + * @var Array + * @access private + */ + var $t3; + + /** + * Precomputed invMixColumns table + * + * @see Crypt_Rijndael() + * @var Array + * @access private + */ + var $dt0; + + /** + * Precomputed invMixColumns table + * + * @see Crypt_Rijndael() + * @var Array + * @access private + */ + var $dt1; + + /** + * Precomputed invMixColumns table + * + * @see Crypt_Rijndael() + * @var Array + * @access private + */ + var $dt2; + + /** + * Precomputed invMixColumns table + * + * @see Crypt_Rijndael() + * @var Array + * @access private + */ + var $dt3; + + /** + * Is the mode one that is paddable? + * + * @see Crypt_Rijndael::Crypt_Rijndael() + * @var Boolean + * @access private + */ + var $paddable = false; + + /** + * Encryption buffer for CTR, OFB and CFB modes + * + * @see Crypt_Rijndael::encrypt() + * @var String + * @access private + */ + var $enbuffer = array('encrypted' => '', 'xor' => '', 'pos' => 0); + + /** + * Decryption buffer for CTR, OFB and CFB modes + * + * @see Crypt_Rijndael::decrypt() + * @var String + * @access private + */ + var $debuffer = array('ciphertext' => '', 'xor' => '', 'pos' => 0); + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. $mode should only, at present, be + * CRYPT_RIJNDAEL_MODE_ECB or CRYPT_RIJNDAEL_MODE_CBC. If not explictly set, CRYPT_RIJNDAEL_MODE_CBC will be used. + * + * @param optional Integer $mode + * @return Crypt_Rijndael + * @access public + */ + function Crypt_Rijndael($mode = CRYPT_RIJNDAEL_MODE_CBC) + { + switch ($mode) { + case CRYPT_RIJNDAEL_MODE_ECB: + case CRYPT_RIJNDAEL_MODE_CBC: + $this->paddable = true; + $this->mode = $mode; + break; + case CRYPT_RIJNDAEL_MODE_CTR: + case CRYPT_RIJNDAEL_MODE_CFB: + case CRYPT_RIJNDAEL_MODE_OFB: + $this->mode = $mode; + break; + default: + $this->paddable = true; + $this->mode = CRYPT_RIJNDAEL_MODE_CBC; + } + + $t3 = &$this->t3; + $t2 = &$this->t2; + $t1 = &$this->t1; + $t0 = &$this->t0; + + $dt3 = &$this->dt3; + $dt2 = &$this->dt2; + $dt1 = &$this->dt1; + $dt0 = &$this->dt0; + + // according to (section 5.2.1), + // precomputed tables can be used in the mixColumns phase. in that example, they're assigned t0...t3, so + // those are the names we'll use. + $t3 = array( + 0x6363A5C6, 0x7C7C84F8, 0x777799EE, 0x7B7B8DF6, 0xF2F20DFF, 0x6B6BBDD6, 0x6F6FB1DE, 0xC5C55491, + 0x30305060, 0x01010302, 0x6767A9CE, 0x2B2B7D56, 0xFEFE19E7, 0xD7D762B5, 0xABABE64D, 0x76769AEC, + 0xCACA458F, 0x82829D1F, 0xC9C94089, 0x7D7D87FA, 0xFAFA15EF, 0x5959EBB2, 0x4747C98E, 0xF0F00BFB, + 0xADADEC41, 0xD4D467B3, 0xA2A2FD5F, 0xAFAFEA45, 0x9C9CBF23, 0xA4A4F753, 0x727296E4, 0xC0C05B9B, + 0xB7B7C275, 0xFDFD1CE1, 0x9393AE3D, 0x26266A4C, 0x36365A6C, 0x3F3F417E, 0xF7F702F5, 0xCCCC4F83, + 0x34345C68, 0xA5A5F451, 0xE5E534D1, 0xF1F108F9, 0x717193E2, 0xD8D873AB, 0x31315362, 0x15153F2A, + 0x04040C08, 0xC7C75295, 0x23236546, 0xC3C35E9D, 0x18182830, 0x9696A137, 0x05050F0A, 0x9A9AB52F, + 0x0707090E, 0x12123624, 0x80809B1B, 0xE2E23DDF, 0xEBEB26CD, 0x2727694E, 0xB2B2CD7F, 0x75759FEA, + 0x09091B12, 0x83839E1D, 0x2C2C7458, 0x1A1A2E34, 0x1B1B2D36, 0x6E6EB2DC, 0x5A5AEEB4, 0xA0A0FB5B, + 0x5252F6A4, 0x3B3B4D76, 0xD6D661B7, 0xB3B3CE7D, 0x29297B52, 0xE3E33EDD, 0x2F2F715E, 0x84849713, + 0x5353F5A6, 0xD1D168B9, 0x00000000, 0xEDED2CC1, 0x20206040, 0xFCFC1FE3, 0xB1B1C879, 0x5B5BEDB6, + 0x6A6ABED4, 0xCBCB468D, 0xBEBED967, 0x39394B72, 0x4A4ADE94, 0x4C4CD498, 0x5858E8B0, 0xCFCF4A85, + 0xD0D06BBB, 0xEFEF2AC5, 0xAAAAE54F, 0xFBFB16ED, 0x4343C586, 0x4D4DD79A, 0x33335566, 0x85859411, + 0x4545CF8A, 0xF9F910E9, 0x02020604, 0x7F7F81FE, 0x5050F0A0, 0x3C3C4478, 0x9F9FBA25, 0xA8A8E34B, + 0x5151F3A2, 0xA3A3FE5D, 0x4040C080, 0x8F8F8A05, 0x9292AD3F, 0x9D9DBC21, 0x38384870, 0xF5F504F1, + 0xBCBCDF63, 0xB6B6C177, 0xDADA75AF, 0x21216342, 0x10103020, 0xFFFF1AE5, 0xF3F30EFD, 0xD2D26DBF, + 0xCDCD4C81, 0x0C0C1418, 0x13133526, 0xECEC2FC3, 0x5F5FE1BE, 0x9797A235, 0x4444CC88, 0x1717392E, + 0xC4C45793, 0xA7A7F255, 0x7E7E82FC, 0x3D3D477A, 0x6464ACC8, 0x5D5DE7BA, 0x19192B32, 0x737395E6, + 0x6060A0C0, 0x81819819, 0x4F4FD19E, 0xDCDC7FA3, 0x22226644, 0x2A2A7E54, 0x9090AB3B, 0x8888830B, + 0x4646CA8C, 0xEEEE29C7, 0xB8B8D36B, 0x14143C28, 0xDEDE79A7, 0x5E5EE2BC, 0x0B0B1D16, 0xDBDB76AD, + 0xE0E03BDB, 0x32325664, 0x3A3A4E74, 0x0A0A1E14, 0x4949DB92, 0x06060A0C, 0x24246C48, 0x5C5CE4B8, + 0xC2C25D9F, 0xD3D36EBD, 0xACACEF43, 0x6262A6C4, 0x9191A839, 0x9595A431, 0xE4E437D3, 0x79798BF2, + 0xE7E732D5, 0xC8C8438B, 0x3737596E, 0x6D6DB7DA, 0x8D8D8C01, 0xD5D564B1, 0x4E4ED29C, 0xA9A9E049, + 0x6C6CB4D8, 0x5656FAAC, 0xF4F407F3, 0xEAEA25CF, 0x6565AFCA, 0x7A7A8EF4, 0xAEAEE947, 0x08081810, + 0xBABAD56F, 0x787888F0, 0x25256F4A, 0x2E2E725C, 0x1C1C2438, 0xA6A6F157, 0xB4B4C773, 0xC6C65197, + 0xE8E823CB, 0xDDDD7CA1, 0x74749CE8, 0x1F1F213E, 0x4B4BDD96, 0xBDBDDC61, 0x8B8B860D, 0x8A8A850F, + 0x707090E0, 0x3E3E427C, 0xB5B5C471, 0x6666AACC, 0x4848D890, 0x03030506, 0xF6F601F7, 0x0E0E121C, + 0x6161A3C2, 0x35355F6A, 0x5757F9AE, 0xB9B9D069, 0x86869117, 0xC1C15899, 0x1D1D273A, 0x9E9EB927, + 0xE1E138D9, 0xF8F813EB, 0x9898B32B, 0x11113322, 0x6969BBD2, 0xD9D970A9, 0x8E8E8907, 0x9494A733, + 0x9B9BB62D, 0x1E1E223C, 0x87879215, 0xE9E920C9, 0xCECE4987, 0x5555FFAA, 0x28287850, 0xDFDF7AA5, + 0x8C8C8F03, 0xA1A1F859, 0x89898009, 0x0D0D171A, 0xBFBFDA65, 0xE6E631D7, 0x4242C684, 0x6868B8D0, + 0x4141C382, 0x9999B029, 0x2D2D775A, 0x0F0F111E, 0xB0B0CB7B, 0x5454FCA8, 0xBBBBD66D, 0x16163A2C + ); + + $dt3 = array( + 0xF4A75051, 0x4165537E, 0x17A4C31A, 0x275E963A, 0xAB6BCB3B, 0x9D45F11F, 0xFA58ABAC, 0xE303934B, + 0x30FA5520, 0x766DF6AD, 0xCC769188, 0x024C25F5, 0xE5D7FC4F, 0x2ACBD7C5, 0x35448026, 0x62A38FB5, + 0xB15A49DE, 0xBA1B6725, 0xEA0E9845, 0xFEC0E15D, 0x2F7502C3, 0x4CF01281, 0x4697A38D, 0xD3F9C66B, + 0x8F5FE703, 0x929C9515, 0x6D7AEBBF, 0x5259DA95, 0xBE832DD4, 0x7421D358, 0xE0692949, 0xC9C8448E, + 0xC2896A75, 0x8E7978F4, 0x583E6B99, 0xB971DD27, 0xE14FB6BE, 0x88AD17F0, 0x20AC66C9, 0xCE3AB47D, + 0xDF4A1863, 0x1A3182E5, 0x51336097, 0x537F4562, 0x6477E0B1, 0x6BAE84BB, 0x81A01CFE, 0x082B94F9, + 0x48685870, 0x45FD198F, 0xDE6C8794, 0x7BF8B752, 0x73D323AB, 0x4B02E272, 0x1F8F57E3, 0x55AB2A66, + 0xEB2807B2, 0xB5C2032F, 0xC57B9A86, 0x3708A5D3, 0x2887F230, 0xBFA5B223, 0x036ABA02, 0x16825CED, + 0xCF1C2B8A, 0x79B492A7, 0x07F2F0F3, 0x69E2A14E, 0xDAF4CD65, 0x05BED506, 0x34621FD1, 0xA6FE8AC4, + 0x2E539D34, 0xF355A0A2, 0x8AE13205, 0xF6EB75A4, 0x83EC390B, 0x60EFAA40, 0x719F065E, 0x6E1051BD, + 0x218AF93E, 0xDD063D96, 0x3E05AEDD, 0xE6BD464D, 0x548DB591, 0xC45D0571, 0x06D46F04, 0x5015FF60, + 0x98FB2419, 0xBDE997D6, 0x4043CC89, 0xD99E7767, 0xE842BDB0, 0x898B8807, 0x195B38E7, 0xC8EEDB79, + 0x7C0A47A1, 0x420FE97C, 0x841EC9F8, 0x00000000, 0x80868309, 0x2BED4832, 0x1170AC1E, 0x5A724E6C, + 0x0EFFFBFD, 0x8538560F, 0xAED51E3D, 0x2D392736, 0x0FD9640A, 0x5CA62168, 0x5B54D19B, 0x362E3A24, + 0x0A67B10C, 0x57E70F93, 0xEE96D2B4, 0x9B919E1B, 0xC0C54F80, 0xDC20A261, 0x774B695A, 0x121A161C, + 0x93BA0AE2, 0xA02AE5C0, 0x22E0433C, 0x1B171D12, 0x090D0B0E, 0x8BC7ADF2, 0xB6A8B92D, 0x1EA9C814, + 0xF1198557, 0x75074CAF, 0x99DDBBEE, 0x7F60FDA3, 0x01269FF7, 0x72F5BC5C, 0x663BC544, 0xFB7E345B, + 0x4329768B, 0x23C6DCCB, 0xEDFC68B6, 0xE4F163B8, 0x31DCCAD7, 0x63851042, 0x97224013, 0xC6112084, + 0x4A247D85, 0xBB3DF8D2, 0xF93211AE, 0x29A16DC7, 0x9E2F4B1D, 0xB230F3DC, 0x8652EC0D, 0xC1E3D077, + 0xB3166C2B, 0x70B999A9, 0x9448FA11, 0xE9642247, 0xFC8CC4A8, 0xF03F1AA0, 0x7D2CD856, 0x3390EF22, + 0x494EC787, 0x38D1C1D9, 0xCAA2FE8C, 0xD40B3698, 0xF581CFA6, 0x7ADE28A5, 0xB78E26DA, 0xADBFA43F, + 0x3A9DE42C, 0x78920D50, 0x5FCC9B6A, 0x7E466254, 0x8D13C2F6, 0xD8B8E890, 0x39F75E2E, 0xC3AFF582, + 0x5D80BE9F, 0xD0937C69, 0xD52DA96F, 0x2512B3CF, 0xAC993BC8, 0x187DA710, 0x9C636EE8, 0x3BBB7BDB, + 0x267809CD, 0x5918F46E, 0x9AB701EC, 0x4F9AA883, 0x956E65E6, 0xFFE67EAA, 0xBCCF0821, 0x15E8E6EF, + 0xE79BD9BA, 0x6F36CE4A, 0x9F09D4EA, 0xB07CD629, 0xA4B2AF31, 0x3F23312A, 0xA59430C6, 0xA266C035, + 0x4EBC3774, 0x82CAA6FC, 0x90D0B0E0, 0xA7D81533, 0x04984AF1, 0xECDAF741, 0xCD500E7F, 0x91F62F17, + 0x4DD68D76, 0xEFB04D43, 0xAA4D54CC, 0x9604DFE4, 0xD1B5E39E, 0x6A881B4C, 0x2C1FB8C1, 0x65517F46, + 0x5EEA049D, 0x8C355D01, 0x877473FA, 0x0B412EFB, 0x671D5AB3, 0xDBD25292, 0x105633E9, 0xD647136D, + 0xD7618C9A, 0xA10C7A37, 0xF8148E59, 0x133C89EB, 0xA927EECE, 0x61C935B7, 0x1CE5EDE1, 0x47B13C7A, + 0xD2DF599C, 0xF2733F55, 0x14CE7918, 0xC737BF73, 0xF7CDEA53, 0xFDAA5B5F, 0x3D6F14DF, 0x44DB8678, + 0xAFF381CA, 0x68C43EB9, 0x24342C38, 0xA3405FC2, 0x1DC37216, 0xE2250CBC, 0x3C498B28, 0x0D9541FF, + 0xA8017139, 0x0CB3DE08, 0xB4E49CD8, 0x56C19064, 0xCB84617B, 0x32B670D5, 0x6C5C7448, 0xB85742D0 + ); + + for ($i = 0; $i < 256; $i++) { + $t2[] = (($t3[$i] << 8) & 0xFFFFFF00) | (($t3[$i] >> 24) & 0x000000FF); + $t1[] = (($t3[$i] << 16) & 0xFFFF0000) | (($t3[$i] >> 16) & 0x0000FFFF); + $t0[] = (($t3[$i] << 24) & 0xFF000000) | (($t3[$i] >> 8) & 0x00FFFFFF); + + $dt2[] = (($dt3[$i] << 8) & 0xFFFFFF00) | (($dt3[$i] >> 24) & 0x000000FF); + $dt1[] = (($dt3[$i] << 16) & 0xFFFF0000) | (($dt3[$i] >> 16) & 0x0000FFFF); + $dt0[] = (($dt3[$i] << 24) & 0xFF000000) | (($dt3[$i] >> 8) & 0x00FFFFFF); + } + } + + /** + * Sets the key. + * + * Keys can be of any length. Rijndael, itself, requires the use of a key that's between 128-bits and 256-bits long and + * whose length is a multiple of 32. If the key is less than 256-bits and the key length isn't set, we round the length + * up to the closest valid key length, padding $key with null bytes. If the key is more than 256-bits, we trim the + * excess bits. + * + * If the key is not explicitly set, it'll be assumed to be all null bytes. + * + * @access public + * @param String $key + */ + function setKey($key) + { + $this->key = $key; + $this->changed = true; + } + + /** + * Sets the initialization vector. (optional) + * + * SetIV is not required when CRYPT_RIJNDAEL_MODE_ECB is being used. If not explictly set, it'll be assumed + * to be all zero's. + * + * @access public + * @param String $iv + */ + function setIV($iv) + { + $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($iv, 0, $this->block_size), $this->block_size, chr(0)); + } + + /** + * Sets the key length + * + * Valid key lengths are 128, 160, 192, 224, and 256. If the length is less than 128, it will be rounded up to + * 128. If the length is greater then 128 and invalid, it will be rounded down to the closest valid amount. + * + * @access public + * @param Integer $length + */ + function setKeyLength($length) + { + $length >>= 5; + if ($length > 8) { + $length = 8; + } else if ($length < 4) { + $length = 4; + } + $this->Nk = $length; + $this->key_size = $length << 2; + + $this->explicit_key_length = true; + $this->changed = true; + } + + /** + * Sets the password. + * + * Depending on what $method is set to, setPassword()'s (optional) parameters are as follows: + * {@link http://en.wikipedia.org/wiki/PBKDF2 pbkdf2}: + * $hash, $salt, $method + * Set $dkLen by calling setKeyLength() + * + * @param String $password + * @param optional String $method + * @access public + */ + function setPassword($password, $method = 'pbkdf2') + { + $key = ''; + + switch ($method) { + default: // 'pbkdf2' + list(, , $hash, $salt, $count) = func_get_args(); + if (!isset($hash)) { + $hash = 'sha1'; + } + // WPA and WPA2 use the SSID as the salt + if (!isset($salt)) { + $salt = 'phpseclib'; + } + // RFC2898#section-4.2 uses 1,000 iterations by default + // WPA and WPA2 use 4,096. + if (!isset($count)) { + $count = 1000; + } + + if (!class_exists('Crypt_Hash')) { + require_once('Crypt/Hash.php'); + } + + $i = 1; + while (strlen($key) < $this->key_size) { // $dkLen == $this->key_size + //$dk.= $this->_pbkdf($password, $salt, $count, $i++); + $hmac = new Crypt_Hash(); + $hmac->setHash($hash); + $hmac->setKey($password); + $f = $u = $hmac->hash($salt . pack('N', $i++)); + for ($j = 2; $j <= $count; $j++) { + $u = $hmac->hash($u); + $f^= $u; + } + $key.= $f; + } + } + + $this->setKey(substr($key, 0, $this->key_size)); + } + + /** + * Sets the block length + * + * Valid block lengths are 128, 160, 192, 224, and 256. If the length is less than 128, it will be rounded up to + * 128. If the length is greater then 128 and invalid, it will be rounded down to the closest valid amount. + * + * @access public + * @param Integer $length + */ + function setBlockLength($length) + { + $length >>= 5; + if ($length > 8) { + $length = 8; + } else if ($length < 4) { + $length = 4; + } + $this->Nb = $length; + $this->block_size = $length << 2; + $this->changed = true; + } + + /** + * Generate CTR XOR encryption key + * + * Encrypt the output of this and XOR it against the ciphertext / plaintext to get the + * plaintext / ciphertext in CTR mode. + * + * @see Crypt_Rijndael::decrypt() + * @see Crypt_Rijndael::encrypt() + * @access public + * @param Integer $length + * @param String $iv + */ + function _generate_xor($length, &$iv) + { + $xor = ''; + $block_size = $this->block_size; + $num_blocks = floor(($length + ($block_size - 1)) / $block_size); + for ($i = 0; $i < $num_blocks; $i++) { + $xor.= $iv; + for ($j = 4; $j <= $block_size; $j+=4) { + $temp = substr($iv, -$j, 4); + switch ($temp) { + case "\xFF\xFF\xFF\xFF": + $iv = substr_replace($iv, "\x00\x00\x00\x00", -$j, 4); + break; + case "\x7F\xFF\xFF\xFF": + $iv = substr_replace($iv, "\x80\x00\x00\x00", -$j, 4); + break 2; + default: + extract(unpack('Ncount', $temp)); + $iv = substr_replace($iv, pack('N', $count + 1), -$j, 4); + break 2; + } + } + } + + return $xor; + } + + /** + * Encrypts a message. + * + * $plaintext will be padded with additional bytes such that it's length is a multiple of the block size. Other Rjindael + * implementations may or may not pad in the same manner. Other common approaches to padding and the reasons why it's + * necessary are discussed in the following + * URL: + * + * {@link http://www.di-mgt.com.au/cryptopad.html http://www.di-mgt.com.au/cryptopad.html} + * + * An alternative to padding is to, separately, send the length of the file. This is what SSH, in fact, does. + * strlen($plaintext) will still need to be a multiple of 8, however, arbitrary values can be added to make it that + * length. + * + * @see Crypt_Rijndael::decrypt() + * @access public + * @param String $plaintext + */ + function encrypt($plaintext) + { + $this->_setup(); + if ($this->paddable) { + $plaintext = $this->_pad($plaintext); + } + + $block_size = $this->block_size; + $buffer = &$this->enbuffer; + $ciphertext = ''; + switch ($this->mode) { + case CRYPT_RIJNDAEL_MODE_ECB: + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $ciphertext.= $this->_encryptBlock(substr($plaintext, $i, $block_size)); + } + break; + case CRYPT_RIJNDAEL_MODE_CBC: + $xor = $this->encryptIV; + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + $block = $this->_encryptBlock($block ^ $xor); + $xor = $block; + $ciphertext.= $block; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + } + break; + case CRYPT_RIJNDAEL_MODE_CTR: + $xor = $this->encryptIV; + if (strlen($buffer['encrypted'])) { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + $buffer['encrypted'].= $this->_encryptBlock($this->_generate_xor($block_size, $xor)); + $key = $this->_string_shift($buffer['encrypted'], $block_size); + $ciphertext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + $key = $this->_encryptBlock($this->_generate_xor($block_size, $xor)); + $ciphertext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) % $block_size) { + $buffer['encrypted'] = substr($key, $start) . $buffer['encrypted']; + } + } + break; + case CRYPT_RIJNDAEL_MODE_CFB: + // cfb loosely routines inspired by openssl's: + // http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1 + if ($this->continuousBuffer) { + $iv = &$this->encryptIV; + $pos = &$buffer['pos']; + } else { + $iv = $this->encryptIV; + $pos = 0; + } + $len = strlen($plaintext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + } + while ($len >= $block_size) { + $iv = $this->_encryptBlock($iv) ^ substr($plaintext, $i, $block_size); + $ciphertext.= $iv; + $len-= $block_size; + $i+= $block_size; + } + if ($len) { + $iv = $this->_encryptBlock($iv); + $block = $iv ^ substr($plaintext, $i); + $iv = substr_replace($iv, $block, 0, $len); + $ciphertext.= $block; + $pos = $len; + } + break; + case CRYPT_RIJNDAEL_MODE_OFB: + $xor = $this->encryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $xor = $this->_encryptBlock($xor); + $buffer['xor'].= $xor; + $key = $this->_string_shift($buffer['xor'], $block_size); + $ciphertext.= substr($plaintext, $i, $block_size) ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $xor = $this->_encryptBlock($xor); + $ciphertext.= substr($plaintext, $i, $block_size) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) % $block_size) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + } + + return $ciphertext; + } + + /** + * Decrypts a message. + * + * If strlen($ciphertext) is not a multiple of the block size, null bytes will be added to the end of the string until + * it is. + * + * @see Crypt_Rijndael::encrypt() + * @access public + * @param String $ciphertext + */ + function decrypt($ciphertext) + { + $this->_setup(); + + if ($this->paddable) { + // we pad with chr(0) since that's what mcrypt_generic does. to quote from http://php.net/function.mcrypt-generic : + // "The data is padded with "\0" to make sure the length of the data is n * blocksize." + $ciphertext = str_pad($ciphertext, strlen($ciphertext) + ($this->block_size - strlen($ciphertext) % $this->block_size) % $this->block_size, chr(0)); + } + + $block_size = $this->block_size; + $buffer = &$this->debuffer; + $plaintext = ''; + switch ($this->mode) { + case CRYPT_RIJNDAEL_MODE_ECB: + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $plaintext.= $this->_decryptBlock(substr($ciphertext, $i, $block_size)); + } + break; + case CRYPT_RIJNDAEL_MODE_CBC: + $xor = $this->decryptIV; + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + $plaintext.= $this->_decryptBlock($block) ^ $xor; + $xor = $block; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + } + break; + case CRYPT_RIJNDAEL_MODE_CTR: + $xor = $this->decryptIV; + if (strlen($buffer['ciphertext'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + $buffer['ciphertext'].= $this->_encryptBlock($this->_generate_xor($block_size, $xor)); + $key = $this->_string_shift($buffer['ciphertext'], $block_size); + $plaintext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + $key = $this->_encryptBlock($this->_generate_xor($block_size, $xor)); + $plaintext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($ciphertext) % $block_size) { + $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; + } + } + break; + case CRYPT_RIJNDAEL_MODE_CFB: + if ($this->continuousBuffer) { + $iv = &$this->decryptIV; + $pos = &$buffer['pos']; + } else { + $iv = $this->decryptIV; + $pos = 0; + } + $len = strlen($ciphertext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + } + while ($len >= $block_size) { + $iv = $this->_encryptBlock($iv); + $cb = substr($ciphertext, $i, $block_size); + $plaintext.= $iv ^ $cb; + $iv = $cb; + $len-= $block_size; + $i+= $block_size; + } + if ($len) { + $iv = $this->_encryptBlock($iv); + $plaintext.= $iv ^ substr($ciphertext, $i); + $iv = substr_replace($iv, substr($ciphertext, $i), 0, $len); + $pos = $len; + } + break; + case CRYPT_RIJNDAEL_MODE_OFB: + $xor = $this->decryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $xor = $this->_encryptBlock($xor); + $buffer['xor'].= $xor; + $key = $this->_string_shift($buffer['xor'], $block_size); + $plaintext.= substr($ciphertext, $i, $block_size) ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $xor = $this->_encryptBlock($xor); + $plaintext.= substr($ciphertext, $i, $block_size) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($ciphertext) % $block_size) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + } + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + /** + * Encrypts a block + * + * @access private + * @param String $in + * @return String + */ + function _encryptBlock($in) + { + $state = array(); + $words = unpack('N*word', $in); + + $w = $this->w; + $t0 = $this->t0; + $t1 = $this->t1; + $t2 = $this->t2; + $t3 = $this->t3; + $Nb = $this->Nb; + $Nr = $this->Nr; + $c = $this->c; + + // addRoundKey + $i = -1; + foreach ($words as $word) { + $state[] = $word ^ $w[0][++$i]; + } + + // fips-197.pdf#page=19, "Figure 5. Pseudo Code for the Cipher", states that this loop has four components - + // subBytes, shiftRows, mixColumns, and addRoundKey. fips-197.pdf#page=30, "Implementation Suggestions Regarding + // Various Platforms" suggests that performs enhanced implementations are described in Rijndael-ammended.pdf. + // Rijndael-ammended.pdf#page=20, "Implementation aspects / 32-bit processor", discusses such an optimization. + // Unfortunately, the description given there is not quite correct. Per aes.spec.v316.pdf#page=19 [1], + // equation (7.4.7) is supposed to use addition instead of subtraction, so we'll do that here, as well. + + // [1] http://fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.v316.pdf + $temp = array(); + for ($round = 1; $round < $Nr; ++$round) { + $i = 0; // $c[0] == 0 + $j = $c[1]; + $k = $c[2]; + $l = $c[3]; + + while ($i < $Nb) { + $temp[$i] = $t0[$state[$i] >> 24 & 0x000000FF] ^ + $t1[$state[$j] >> 16 & 0x000000FF] ^ + $t2[$state[$k] >> 8 & 0x000000FF] ^ + $t3[$state[$l] & 0x000000FF] ^ + $w[$round][$i]; + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + $state = $temp; + } + + // subWord + for ($i = 0; $i < $Nb; ++$i) { + $state[$i] = $this->_subWord($state[$i]); + } + + // shiftRows + addRoundKey + $i = 0; // $c[0] == 0 + $j = $c[1]; + $k = $c[2]; + $l = $c[3]; + while ($i < $Nb) { + $temp[$i] = ($state[$i] & 0xFF000000) ^ + ($state[$j] & 0x00FF0000) ^ + ($state[$k] & 0x0000FF00) ^ + ($state[$l] & 0x000000FF) ^ + $w[$Nr][$i]; + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + + // 100% ugly switch/case code... but ~5% faster (meaning: ~half second faster de/encrypting 1MB text, tested with php5.4.9 on linux/32bit with an AMD Athlon II P360 CPU) then the commented smart code below. Don't know it's worth or not + switch ($Nb) { + case 8: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6], $temp[7]); + case 7: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6]); + case 6: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5]); + case 5: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4]); + default: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3]); + } + /* + $state = $temp; + + array_unshift($state, 'N*'); + + return call_user_func_array('pack', $state); + */ + } + + /** + * Decrypts a block + * + * @access private + * @param String $in + * @return String + */ + function _decryptBlock($in) + { + $state = array(); + $words = unpack('N*word', $in); + + $dw = $this->dw; + $dt0 = $this->dt0; + $dt1 = $this->dt1; + $dt2 = $this->dt2; + $dt3 = $this->dt3; + $Nb = $this->Nb; + $Nr = $this->Nr; + $c = $this->c; + + // addRoundKey + $i = -1; + foreach ($words as $word) { + $state[] = $word ^ $dw[$Nr][++$i]; + } + + $temp = array(); + for ($round = $Nr - 1; $round > 0; --$round) { + $i = 0; // $c[0] == 0 + $j = $Nb - $c[1]; + $k = $Nb - $c[2]; + $l = $Nb - $c[3]; + + while ($i < $Nb) { + $temp[$i] = $dt0[$state[$i] >> 24 & 0x000000FF] ^ + $dt1[$state[$j] >> 16 & 0x000000FF] ^ + $dt2[$state[$k] >> 8 & 0x000000FF] ^ + $dt3[$state[$l] & 0x000000FF] ^ + $dw[$round][$i]; + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + $state = $temp; + } + + // invShiftRows + invSubWord + addRoundKey + $i = 0; // $c[0] == 0 + $j = $Nb - $c[1]; + $k = $Nb - $c[2]; + $l = $Nb - $c[3]; + + while ($i < $Nb) { + $temp[$i] = $dw[0][$i] ^ + $this->_invSubWord(($state[$i] & 0xFF000000) | + ($state[$j] & 0x00FF0000) | + ($state[$k] & 0x0000FF00) | + ($state[$l] & 0x000000FF)); + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + + switch ($Nb) { + case 8: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6], $temp[7]); + case 7: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6]); + case 6: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5]); + case 5: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4]); + default: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3]); + } + /* + $state = $temp; + + array_unshift($state, 'N*'); + + return call_user_func_array('pack', $state); + */ + } + + /** + * Setup Rijndael + * + * Validates all the variables and calculates $Nr - the number of rounds that need to be performed - and $w - the key + * key schedule. + * + * @access private + */ + function _setup() + { + // Each number in $rcon is equal to the previous number multiplied by two in Rijndael's finite field. + // See http://en.wikipedia.org/wiki/Finite_field_arithmetic#Multiplicative_inverse + static $rcon = array(0, + 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, + 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000, + 0x6C000000, 0xD8000000, 0xAB000000, 0x4D000000, 0x9A000000, + 0x2F000000, 0x5E000000, 0xBC000000, 0x63000000, 0xC6000000, + 0x97000000, 0x35000000, 0x6A000000, 0xD4000000, 0xB3000000, + 0x7D000000, 0xFA000000, 0xEF000000, 0xC5000000, 0x91000000 + ); + + if (!$this->changed) { + return; + } + + if (!$this->explicit_key_length) { + // we do >> 2, here, and not >> 5, as we do above, since strlen($this->key) tells us the number of bytes - not bits + $length = strlen($this->key) >> 2; + if ($length > 8) { + $length = 8; + } else if ($length < 4) { + $length = 4; + } + $this->Nk = $length; + $this->key_size = $length << 2; + } + + $this->key = str_pad(substr($this->key, 0, $this->key_size), $this->key_size, chr(0)); + $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($this->iv, 0, $this->block_size), $this->block_size, chr(0)); + + // see Rijndael-ammended.pdf#page=44 + $this->Nr = max($this->Nk, $this->Nb) + 6; + + // shift offsets for Nb = 5, 7 are defined in Rijndael-ammended.pdf#page=44, + // "Table 8: Shift offsets in Shiftrow for the alternative block lengths" + // shift offsets for Nb = 4, 6, 8 are defined in Rijndael-ammended.pdf#page=14, + // "Table 2: Shift offsets for different block lengths" + switch ($this->Nb) { + case 4: + case 5: + case 6: + $this->c = array(0, 1, 2, 3); + break; + case 7: + $this->c = array(0, 1, 2, 4); + break; + case 8: + $this->c = array(0, 1, 3, 4); + } + + $key = $this->key; + + $w = array_values(unpack('N*words', $key)); + + $length = $this->Nb * ($this->Nr + 1); + for ($i = $this->Nk; $i < $length; $i++) { + $temp = $w[$i - 1]; + if ($i % $this->Nk == 0) { + // according to , "the size of an integer is platform-dependent". + // on a 32-bit machine, it's 32-bits, and on a 64-bit machine, it's 64-bits. on a 32-bit machine, + // 0xFFFFFFFF << 8 == 0xFFFFFF00, but on a 64-bit machine, it equals 0xFFFFFFFF00. as such, doing 'and' + // with 0xFFFFFFFF (or 0xFFFFFF00) on a 32-bit machine is unnecessary, but on a 64-bit machine, it is. + $temp = (($temp << 8) & 0xFFFFFF00) | (($temp >> 24) & 0x000000FF); // rotWord + $temp = $this->_subWord($temp) ^ $rcon[$i / $this->Nk]; + } else if ($this->Nk > 6 && $i % $this->Nk == 4) { + $temp = $this->_subWord($temp); + } + $w[$i] = $w[$i - $this->Nk] ^ $temp; + } + + // convert the key schedule from a vector of $Nb * ($Nr + 1) length to a matrix with $Nr + 1 rows and $Nb columns + // and generate the inverse key schedule. more specifically, + // according to (section 5.3.3), + // "The key expansion for the Inverse Cipher is defined as follows: + // 1. Apply the Key Expansion. + // 2. Apply InvMixColumn to all Round Keys except the first and the last one." + // also, see fips-197.pdf#page=27, "5.3.5 Equivalent Inverse Cipher" + $temp = array(); + for ($i = $row = $col = 0; $i < $length; $i++, $col++) { + if ($col == $this->Nb) { + if ($row == 0) { + $this->dw[0] = $this->w[0]; + } else { + // subWord + invMixColumn + invSubWord = invMixColumn + $j = 0; + while ($j < $this->Nb) { + $dw = $this->_subWord($this->w[$row][$j]); + $temp[$j] = $this->dt0[$dw >> 24 & 0x000000FF] ^ + $this->dt1[$dw >> 16 & 0x000000FF] ^ + $this->dt2[$dw >> 8 & 0x000000FF] ^ + $this->dt3[$dw & 0x000000FF]; + $j++; + } + $this->dw[$row] = $temp; + } + + $col = 0; + $row++; + } + $this->w[$row][$col] = $w[$i]; + } + + $this->dw[$row] = $this->w[$row]; + + $this->changed = false; + } + + /** + * Performs S-Box substitutions + * + * @access private + */ + function _subWord($word) + { + static $sbox0, $sbox1, $sbox2, $sbox3; + + if (empty($sbox0)) { + $sbox0 = array( + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, + 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, + 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, + 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, + 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, + 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, + 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, + 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, + 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, + 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, + 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 + ); + + $sbox1 = array(); + $sbox2 = array(); + $sbox3 = array(); + + for ($i = 0; $i < 256; $i++) { + $sbox1[] = $sbox0[$i] << 8; + $sbox2[] = $sbox0[$i] << 16; + $sbox3[] = $sbox0[$i] << 24; + } + } + + return $sbox0[$word & 0x000000FF] | + $sbox1[$word >> 8 & 0x000000FF] | + $sbox2[$word >> 16 & 0x000000FF] | + $sbox3[$word >> 24 & 0x000000FF]; + } + + + /** + * Performs inverse S-Box substitutions + * + * @access private + */ + function _invSubWord($word) + { + static $sbox0, $sbox1, $sbox2, $sbox3; + + if (empty($sbox0)) { + $sbox0 = array( + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, + 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, + 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, + 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, + 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, + 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, + 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, + 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, + 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, + 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, + 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D + ); + + $sbox1 = array(); + $sbox2 = array(); + $sbox3 = array(); + + for ($i = 0; $i < 256; $i++) { + $sbox1[] = $sbox0[$i] << 8; + $sbox2[] = $sbox0[$i] << 16; + $sbox3[] = $sbox0[$i] << 24; + } + } + + return $sbox0[$word & 0x000000FF] | + $sbox1[$word >> 8 & 0x000000FF] | + $sbox2[$word >> 16 & 0x000000FF] | + $sbox3[$word >> 24 & 0x000000FF]; + } + + /** + * Pad "packets". + * + * Rijndael works by encrypting between sixteen and thirty-two bytes at a time, provided that number is also a multiple + * of four. If you ever need to encrypt or decrypt something that isn't of the proper length, it becomes necessary to + * pad the input so that it is of the proper length. + * + * Padding is enabled by default. Sometimes, however, it is undesirable to pad strings. Such is the case in SSH, + * where "packets" are padded with random bytes before being encrypted. Unpad these packets and you risk stripping + * away characters that shouldn't be stripped away. (SSH knows how many bytes are added because the length is + * transmitted separately) + * + * @see Crypt_Rijndael::disablePadding() + * @access public + */ + function enablePadding() + { + $this->padding = true; + } + + /** + * Do not pad packets. + * + * @see Crypt_Rijndael::enablePadding() + * @access public + */ + function disablePadding() + { + $this->padding = false; + } + + /** + * Pads a string + * + * Pads a string using the RSA PKCS padding standards so that its length is a multiple of the blocksize. + * $block_size - (strlen($text) % $block_size) bytes are added, each of which is equal to + * chr($block_size - (strlen($text) % $block_size) + * + * If padding is disabled and $text is not a multiple of the blocksize, the string will be padded regardless + * and padding will, hence forth, be enabled. + * + * @see Crypt_Rijndael::_unpad() + * @access private + */ + function _pad($text) + { + $length = strlen($text); + + if (!$this->padding) { + if ($length % $this->block_size == 0) { + return $text; + } else { + user_error("The plaintext's length ($length) is not a multiple of the block size ({$this->block_size})"); + $this->padding = true; + } + } + + $pad = $this->block_size - ($length % $this->block_size); + + return str_pad($text, $length + $pad, chr($pad)); + } + + /** + * Unpads a string. + * + * If padding is enabled and the reported padding length is invalid the encryption key will be assumed to be wrong + * and false will be returned. + * + * @see Crypt_Rijndael::_pad() + * @access private + */ + function _unpad($text) + { + if (!$this->padding) { + return $text; + } + + $length = ord($text[strlen($text) - 1]); + + if (!$length || $length > $this->block_size) { + return false; + } + + return substr($text, 0, -$length); + } + + /** + * Treat consecutive "packets" as if they are a continuous buffer. + * + * Say you have a 32-byte plaintext $plaintext. Using the default behavior, the two following code snippets + * will yield different outputs: + * + * + * echo $rijndael->encrypt(substr($plaintext, 0, 16)); + * echo $rijndael->encrypt(substr($plaintext, 16, 16)); + * + * + * echo $rijndael->encrypt($plaintext); + * + * + * The solution is to enable the continuous buffer. Although this will resolve the above discrepancy, it creates + * another, as demonstrated with the following: + * + * + * $rijndael->encrypt(substr($plaintext, 0, 16)); + * echo $rijndael->decrypt($des->encrypt(substr($plaintext, 16, 16))); + * + * + * echo $rijndael->decrypt($des->encrypt(substr($plaintext, 16, 16))); + * + * + * With the continuous buffer disabled, these would yield the same output. With it enabled, they yield different + * outputs. The reason is due to the fact that the initialization vector's change after every encryption / + * decryption round when the continuous buffer is enabled. When it's disabled, they remain constant. + * + * Put another way, when the continuous buffer is enabled, the state of the Crypt_Rijndael() object changes after each + * encryption / decryption round, whereas otherwise, it'd remain constant. For this reason, it's recommended that + * continuous buffers not be used. They do offer better security and are, in fact, sometimes required (SSH uses them), + * however, they are also less intuitive and more likely to cause you problems. + * + * @see Crypt_Rijndael::disableContinuousBuffer() + * @access public + */ + function enableContinuousBuffer() + { + $this->continuousBuffer = true; + } + + /** + * Treat consecutive packets as if they are a discontinuous buffer. + * + * The default behavior. + * + * @see Crypt_Rijndael::enableContinuousBuffer() + * @access public + */ + function disableContinuousBuffer() + { + $this->continuousBuffer = false; + $this->encryptIV = $this->iv; + $this->decryptIV = $this->iv; + $this->enbuffer = array('encrypted' => '', 'xor' => '', 'pos' => 0); + $this->debuffer = array('ciphertext' => '', 'xor' => '', 'pos' => 0); + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param String $string + * @param optional Integer $index + * @return String + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } +} + +// vim: ts=4:sw=4:et: +// vim6: fdl=1: \ No newline at end of file diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/TripleDES.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/TripleDES.php new file mode 100644 index 0000000000..3b4c8c3622 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Crypt/TripleDES.php @@ -0,0 +1,1080 @@ + + * setKey('abcdefghijklmnopqrstuvwx'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $des->decrypt($des->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_TripleDES + * @author Jim Wigginton + * @copyright MMVII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: TripleDES.php,v 1.13 2010/02/26 03:40:25 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_DES + */ +if (!class_exists('Crypt_DES')) { + require_once('DES.php'); +} + +/** + * Encrypt / decrypt using inner chaining + * + * Inner chaining is used by SSH-1 and is generally considered to be less secure then outer chaining (CRYPT_DES_MODE_CBC3). + */ +define('CRYPT_DES_MODE_3CBC', -2); + +/** + * Encrypt / decrypt using outer chaining + * + * Outer chaining is used by SSH-2 and when the mode is set to CRYPT_DES_MODE_CBC. + */ +define('CRYPT_DES_MODE_CBC3', CRYPT_DES_MODE_CBC); + +/** + * Pure-PHP implementation of Triple DES. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Crypt_TerraDES + */ +class Crypt_TripleDES { + /** + * The Three Keys + * + * @see Crypt_TripleDES::setKey() + * @var String + * @access private + */ + var $key = "\0\0\0\0\0\0\0\0"; + + /** + * The Encryption Mode + * + * @see Crypt_TripleDES::Crypt_TripleDES() + * @var Integer + * @access private + */ + var $mode = CRYPT_DES_MODE_CBC; + + /** + * Continuous Buffer status + * + * @see Crypt_TripleDES::enableContinuousBuffer() + * @var Boolean + * @access private + */ + var $continuousBuffer = false; + + /** + * Padding status + * + * @see Crypt_TripleDES::enablePadding() + * @var Boolean + * @access private + */ + var $padding = true; + + /** + * The Initialization Vector + * + * @see Crypt_TripleDES::setIV() + * @var String + * @access private + */ + var $iv = "\0\0\0\0\0\0\0\0"; + + /** + * A "sliding" Initialization Vector + * + * @see Crypt_TripleDES::enableContinuousBuffer() + * @var String + * @access private + */ + var $encryptIV = "\0\0\0\0\0\0\0\0"; + + /** + * A "sliding" Initialization Vector + * + * @see Crypt_TripleDES::enableContinuousBuffer() + * @var String + * @access private + */ + var $decryptIV = "\0\0\0\0\0\0\0\0"; + + /** + * The Crypt_DES objects + * + * @var Array + * @access private + */ + var $des; + + /** + * mcrypt resource for encryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see Crypt_TripleDES::encrypt() + * @var String + * @access private + */ + var $enmcrypt; + + /** + * mcrypt resource for decryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see Crypt_TripleDES::decrypt() + * @var String + * @access private + */ + var $demcrypt; + + /** + * Does the enmcrypt resource need to be (re)initialized? + * + * @see Crypt_TripleDES::setKey() + * @see Crypt_TripleDES::setIV() + * @var Boolean + * @access private + */ + var $enchanged = true; + + /** + * Does the demcrypt resource need to be (re)initialized? + * + * @see Crypt_TripleDES::setKey() + * @see Crypt_TripleDES::setIV() + * @var Boolean + * @access private + */ + var $dechanged = true; + + /** + * Is the mode one that is paddable? + * + * @see Crypt_TripleDES::Crypt_TripleDES() + * @var Boolean + * @access private + */ + var $paddable = false; + + /** + * Encryption buffer for CTR, OFB and CFB modes + * + * @see Crypt_TripleDES::encrypt() + * @var Array + * @access private + */ + var $enbuffer = array('encrypted' => '', 'xor' => '', 'pos' => 0, 'enmcrypt_init' => true); + + /** + * Decryption buffer for CTR, OFB and CFB modes + * + * @see Crypt_TripleDES::decrypt() + * @var Array + * @access private + */ + var $debuffer = array('ciphertext' => '', 'xor' => '', 'pos' => 0, 'demcrypt_init' => true); + + /** + * mcrypt resource for CFB mode + * + * @see Crypt_TripleDES::encrypt() + * @see Crypt_TripleDES::decrypt() + * @var String + * @access private + */ + var $ecb; + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. $mode should only, at present, be + * CRYPT_DES_MODE_ECB or CRYPT_DES_MODE_CBC. If not explictly set, CRYPT_DES_MODE_CBC will be used. + * + * @param optional Integer $mode + * @return Crypt_TripleDES + * @access public + */ + function Crypt_TripleDES($mode = CRYPT_DES_MODE_CBC) + { + if ( !defined('CRYPT_DES_MODE') ) { + switch (true) { + case extension_loaded('mcrypt') && in_array('tripledes', mcrypt_list_algorithms()): + define('CRYPT_DES_MODE', CRYPT_DES_MODE_MCRYPT); + break; + default: + define('CRYPT_DES_MODE', CRYPT_DES_MODE_INTERNAL); + } + } + + if ( $mode == CRYPT_DES_MODE_3CBC ) { + $this->mode = CRYPT_DES_MODE_3CBC; + $this->des = array( + new Crypt_DES(CRYPT_DES_MODE_CBC), + new Crypt_DES(CRYPT_DES_MODE_CBC), + new Crypt_DES(CRYPT_DES_MODE_CBC) + ); + $this->paddable = true; + + // we're going to be doing the padding, ourselves, so disable it in the Crypt_DES objects + $this->des[0]->disablePadding(); + $this->des[1]->disablePadding(); + $this->des[2]->disablePadding(); + + return; + } + + switch ( CRYPT_DES_MODE ) { + case CRYPT_DES_MODE_MCRYPT: + switch ($mode) { + case CRYPT_DES_MODE_ECB: + $this->paddable = true; + $this->mode = MCRYPT_MODE_ECB; + break; + case CRYPT_DES_MODE_CTR: + $this->mode = 'ctr'; + break; + case CRYPT_DES_MODE_CFB: + $this->mode = 'ncfb'; + $this->ecb = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, ''); + break; + case CRYPT_DES_MODE_OFB: + $this->mode = MCRYPT_MODE_NOFB; + break; + case CRYPT_DES_MODE_CBC: + default: + $this->paddable = true; + $this->mode = MCRYPT_MODE_CBC; + } + $this->enmcrypt = mcrypt_module_open(MCRYPT_3DES, '', $this->mode, ''); + $this->demcrypt = mcrypt_module_open(MCRYPT_3DES, '', $this->mode, ''); + + break; + default: + $this->des = array( + new Crypt_DES(CRYPT_DES_MODE_ECB), + new Crypt_DES(CRYPT_DES_MODE_ECB), + new Crypt_DES(CRYPT_DES_MODE_ECB) + ); + + // we're going to be doing the padding, ourselves, so disable it in the Crypt_DES objects + $this->des[0]->disablePadding(); + $this->des[1]->disablePadding(); + $this->des[2]->disablePadding(); + + switch ($mode) { + case CRYPT_DES_MODE_ECB: + case CRYPT_DES_MODE_CBC: + $this->paddable = true; + $this->mode = $mode; + break; + case CRYPT_DES_MODE_CTR: + case CRYPT_DES_MODE_CFB: + case CRYPT_DES_MODE_OFB: + $this->mode = $mode; + break; + default: + $this->paddable = true; + $this->mode = CRYPT_DES_MODE_CBC; + } + } + } + + /** + * Sets the key. + * + * Keys can be of any length. Triple DES, itself, can use 128-bit (eg. strlen($key) == 16) or + * 192-bit (eg. strlen($key) == 24) keys. This function pads and truncates $key as appropriate. + * + * DES also requires that every eighth bit be a parity bit, however, we'll ignore that. + * + * If the key is not explicitly set, it'll be assumed to be all zero's. + * + * @access public + * @param String $key + */ + function setKey($key) + { + $length = strlen($key); + if ($length > 8) { + $key = str_pad($key, 24, chr(0)); + // if $key is between 64 and 128-bits, use the first 64-bits as the last, per this: + // http://php.net/function.mcrypt-encrypt#47973 + //$key = $length <= 16 ? substr_replace($key, substr($key, 0, 8), 16) : substr($key, 0, 24); + } else { + $key = str_pad($key, 8, chr(0)); + } + $this->key = $key; + switch (true) { + case CRYPT_DES_MODE == CRYPT_DES_MODE_INTERNAL: + case $this->mode == CRYPT_DES_MODE_3CBC: + $this->des[0]->setKey(substr($key, 0, 8)); + $this->des[1]->setKey(substr($key, 8, 8)); + $this->des[2]->setKey(substr($key, 16, 8)); + } + $this->enchanged = $this->dechanged = true; + } + + /** + * Sets the password. + * + * Depending on what $method is set to, setPassword()'s (optional) parameters are as follows: + * {@link http://en.wikipedia.org/wiki/PBKDF2 pbkdf2}: + * $hash, $salt, $method + * + * @param String $password + * @param optional String $method + * @access public + */ + function setPassword($password, $method = 'pbkdf2') + { + $key = ''; + + switch ($method) { + default: // 'pbkdf2' + list(, , $hash, $salt, $count) = func_get_args(); + if (!isset($hash)) { + $hash = 'sha1'; + } + // WPA and WPA2 use the SSID as the salt + if (!isset($salt)) { + $salt = 'phpseclib'; + } + // RFC2898#section-4.2 uses 1,000 iterations by default + // WPA and WPA2 use 4,096. + if (!isset($count)) { + $count = 1000; + } + + if (!class_exists('Crypt_Hash')) { + require_once('Crypt/Hash.php'); + } + + $i = 1; + while (strlen($key) < 24) { // $dkLen == 24 + $hmac = new Crypt_Hash(); + $hmac->setHash($hash); + $hmac->setKey($password); + $f = $u = $hmac->hash($salt . pack('N', $i++)); + for ($j = 2; $j <= $count; $j++) { + $u = $hmac->hash($u); + $f^= $u; + } + $key.= $f; + } + } + + $this->setKey($key); + } + + /** + * Sets the initialization vector. (optional) + * + * SetIV is not required when CRYPT_DES_MODE_ECB is being used. If not explictly set, it'll be assumed + * to be all zero's. + * + * @access public + * @param String $iv + */ + function setIV($iv) + { + $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($iv, 0, 8), 8, chr(0)); + if ($this->mode == CRYPT_DES_MODE_3CBC) { + $this->des[0]->setIV($iv); + $this->des[1]->setIV($iv); + $this->des[2]->setIV($iv); + } + $this->enchanged = $this->dechanged = true; + } + + /** + * Generate CTR XOR encryption key + * + * Encrypt the output of this and XOR it against the ciphertext / plaintext to get the + * plaintext / ciphertext in CTR mode. + * + * @see Crypt_TripleDES::decrypt() + * @see Crypt_TripleDES::encrypt() + * @access private + * @param String $iv + */ + function _generate_xor(&$iv) + { + $xor = $iv; + for ($j = 4; $j <= 8; $j+=4) { + $temp = substr($iv, -$j, 4); + switch ($temp) { + case "\xFF\xFF\xFF\xFF": + $iv = substr_replace($iv, "\x00\x00\x00\x00", -$j, 4); + break; + case "\x7F\xFF\xFF\xFF": + $iv = substr_replace($iv, "\x80\x00\x00\x00", -$j, 4); + break 2; + default: + extract(unpack('Ncount', $temp)); + $iv = substr_replace($iv, pack('N', $count + 1), -$j, 4); + break 2; + } + } + + return $xor; + } + + /** + * Encrypts a message. + * + * @access public + * @param String $plaintext + */ + function encrypt($plaintext) + { + if ($this->paddable) { + $plaintext = $this->_pad($plaintext); + } + + // if the key is smaller then 8, do what we'd normally do + if ($this->mode == CRYPT_DES_MODE_3CBC && strlen($this->key) > 8) { + $ciphertext = $this->des[2]->encrypt($this->des[1]->decrypt($this->des[0]->encrypt($plaintext))); + + return $ciphertext; + } + + if ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) { + if ($this->enchanged) { + mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV); + if ($this->mode == 'ncfb') { + mcrypt_generic_init($this->ecb, $this->key, "\0\0\0\0\0\0\0\0"); + } + $this->enchanged = false; + } + + if ($this->mode != 'ncfb' || !$this->continuousBuffer) { + $ciphertext = mcrypt_generic($this->enmcrypt, $plaintext); + } else { + $iv = &$this->encryptIV; + $pos = &$this->enbuffer['pos']; + $len = strlen($plaintext); + $ciphertext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = 8 - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + $this->enbuffer['enmcrypt_init'] = true; + } + if ($len >= 8) { + if ($this->enbuffer['enmcrypt_init'] === false || $len > 950) { + if ($this->enbuffer['enmcrypt_init'] === true) { + mcrypt_generic_init($this->enmcrypt, $this->key, $iv); + $this->enbuffer['enmcrypt_init'] = false; + } + $ciphertext.= mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % 8)); + $iv = substr($ciphertext, -8); + $i = strlen($ciphertext); + $len%= 8; + } else { + while ($len >= 8) { + $iv = mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, 8); + $ciphertext.= $iv; + $len-= 8; + $i+= 8; + } + } + } + if ($len) { + $iv = mcrypt_generic($this->ecb, $iv); + $block = $iv ^ substr($plaintext, $i); + $iv = substr_replace($iv, $block, 0, $len); + $ciphertext.= $block; + $pos = $len; + } + return $ciphertext; + } + + if (!$this->continuousBuffer) { + mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV); + } + + return $ciphertext; + } + + if (strlen($this->key) <= 8) { + $this->des[0]->mode = $this->mode; + + return $this->des[0]->encrypt($plaintext); + } + + $des = $this->des; + + $buffer = &$this->enbuffer; + $continuousBuffer = $this->continuousBuffer; + $ciphertext = ''; + switch ($this->mode) { + case CRYPT_DES_MODE_ECB: + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $block = substr($plaintext, $i, 8); + // all of these _processBlock calls could, in theory, be put in a function - say Crypt_TripleDES::_ede_encrypt() or something. + // only problem with that: it would slow encryption and decryption down. $this->des would have to be called every time that + // function is called, instead of once for the whole string of text that's being encrypted, which would, in turn, make + // encryption and decryption take more time, per this: + // + // http://blog.libssh2.org/index.php?/archives/21-Compiled-Variables.html + $block = $des[0]->_processBlock($block, CRYPT_DES_ENCRYPT); + $block = $des[1]->_processBlock($block, CRYPT_DES_DECRYPT); + $block = $des[2]->_processBlock($block, CRYPT_DES_ENCRYPT); + $ciphertext.= $block; + } + break; + case CRYPT_DES_MODE_CBC: + $xor = $this->encryptIV; + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $block = substr($plaintext, $i, 8) ^ $xor; + $block = $des[0]->_processBlock($block, CRYPT_DES_ENCRYPT); + $block = $des[1]->_processBlock($block, CRYPT_DES_DECRYPT); + $block = $des[2]->_processBlock($block, CRYPT_DES_ENCRYPT); + $xor = $block; + $ciphertext.= $block; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + } + break; + case CRYPT_DES_MODE_CTR: + $xor = $this->encryptIV; + if (strlen($buffer['encrypted'])) { + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $block = substr($plaintext, $i, 8); + $key = $this->_generate_xor($xor); + $key = $des[0]->_processBlock($key, CRYPT_DES_ENCRYPT); + $key = $des[1]->_processBlock($key, CRYPT_DES_DECRYPT); + $key = $des[2]->_processBlock($key, CRYPT_DES_ENCRYPT); + $buffer['encrypted'].= $key; + $key = $this->_string_shift($buffer['encrypted'], 8); + $ciphertext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $block = substr($plaintext, $i, 8); + $key = $this->_generate_xor($xor); + $key = $des[0]->_processBlock($key, CRYPT_DES_ENCRYPT); + $key = $des[1]->_processBlock($key, CRYPT_DES_DECRYPT); + $key = $des[2]->_processBlock($key, CRYPT_DES_ENCRYPT); + $ciphertext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) & 7) { + $buffer['encrypted'] = substr($key, $start) . $buffer['encrypted']; + } + } + break; + case CRYPT_DES_MODE_CFB: + if (strlen($buffer['xor'])) { + $ciphertext = $plaintext ^ $buffer['xor']; + $iv = $buffer['encrypted'] . $ciphertext; + $start = strlen($ciphertext); + $buffer['encrypted'].= $ciphertext; + $buffer['xor'] = substr($buffer['xor'], strlen($ciphertext)); + } else { + $ciphertext = ''; + $iv = $this->encryptIV; + $start = 0; + } + + for ($i = $start; $i < strlen($plaintext); $i+=8) { + $block = substr($plaintext, $i, 8); + $iv = $des[0]->_processBlock($iv, CRYPT_DES_ENCRYPT); + $iv = $des[1]->_processBlock($iv, CRYPT_DES_DECRYPT); + $xor= $des[2]->_processBlock($iv, CRYPT_DES_ENCRYPT); + + $iv = $block ^ $xor; + if ($continuousBuffer && strlen($iv) != 8) { + $buffer = array( + 'encrypted' => $iv, + 'xor' => substr($xor, strlen($iv)) + ); + } + $ciphertext.= $iv; + } + + if ($this->continuousBuffer) { + $this->encryptIV = $iv; + } + break; + case CRYPT_DES_MODE_OFB: + $xor = $this->encryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $xor = $des[0]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT); + $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $buffer['xor'].= $xor; + $key = $this->_string_shift($buffer['xor'], 8); + $ciphertext.= substr($plaintext, $i, 8) ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=8) { + $xor = $des[0]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT); + $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $ciphertext.= substr($plaintext, $i, 8) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) & 7) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + } + + return $ciphertext; + } + + /** + * Decrypts a message. + * + * @access public + * @param String $ciphertext + */ + function decrypt($ciphertext) + { + if ($this->mode == CRYPT_DES_MODE_3CBC && strlen($this->key) > 8) { + $plaintext = $this->des[0]->decrypt($this->des[1]->encrypt($this->des[2]->decrypt($ciphertext))); + + return $this->_unpad($plaintext); + } + + if ($this->paddable) { + // we pad with chr(0) since that's what mcrypt_generic does. to quote from http://php.net/function.mcrypt-generic : + // "The data is padded with "\0" to make sure the length of the data is n * blocksize." + $ciphertext = str_pad($ciphertext, (strlen($ciphertext) + 7) & 0xFFFFFFF8, chr(0)); + } + + if ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) { + if ($this->dechanged) { + mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV); + if ($this->mode == 'ncfb') { + mcrypt_generic_init($this->ecb, $this->key, "\0\0\0\0\0\0\0\0"); + } + $this->dechanged = false; + } + + if ($this->mode != 'ncfb' || !$this->continuousBuffer) { + $plaintext = mdecrypt_generic($this->demcrypt, $ciphertext); + } else { + $iv = &$this->decryptIV; + $pos = &$this->debuffer['pos']; + $len = strlen($ciphertext); + $plaintext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = 8 - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + } + if ($len >= 8) { + $cb = substr($ciphertext, $i, $len - $len % 8); + $plaintext.= mcrypt_generic($this->ecb, $iv . $cb) ^ $cb; + $iv = substr($cb, -8); + $len%= 8; + } + if ($len) { + $iv = mcrypt_generic($this->ecb, $iv); + $cb = substr($ciphertext, -$len); + $plaintext.= $iv ^ $cb; + $iv = substr_replace($iv, $cb, 0, $len); + $pos = $len; + } + return $plaintext; + } + + if (!$this->continuousBuffer) { + mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV); + } + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + if (strlen($this->key) <= 8) { + $this->des[0]->mode = $this->mode; + $plaintext = $this->des[0]->decrypt($ciphertext); + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + $des = $this->des; + + $buffer = &$this->debuffer; + $continuousBuffer = $this->continuousBuffer; + $plaintext = ''; + switch ($this->mode) { + case CRYPT_DES_MODE_ECB: + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $block = substr($ciphertext, $i, 8); + $block = $des[2]->_processBlock($block, CRYPT_DES_DECRYPT); + $block = $des[1]->_processBlock($block, CRYPT_DES_ENCRYPT); + $block = $des[0]->_processBlock($block, CRYPT_DES_DECRYPT); + $plaintext.= $block; + } + break; + case CRYPT_DES_MODE_CBC: + $xor = $this->decryptIV; + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $orig = $block = substr($ciphertext, $i, 8); + $block = $des[2]->_processBlock($block, CRYPT_DES_DECRYPT); + $block = $des[1]->_processBlock($block, CRYPT_DES_ENCRYPT); + $block = $des[0]->_processBlock($block, CRYPT_DES_DECRYPT); + $plaintext.= $block ^ $xor; + $xor = $orig; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + } + break; + case CRYPT_DES_MODE_CTR: + $xor = $this->decryptIV; + if (strlen($buffer['ciphertext'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $block = substr($ciphertext, $i, 8); + $key = $this->_generate_xor($xor); + $key = $des[0]->_processBlock($key, CRYPT_DES_ENCRYPT); + $key = $des[1]->_processBlock($key, CRYPT_DES_DECRYPT); + $key = $des[2]->_processBlock($key, CRYPT_DES_ENCRYPT); + $buffer['ciphertext'].= $key; + $key = $this->_string_shift($buffer['ciphertext'], 8); + $plaintext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $block = substr($ciphertext, $i, 8); + $key = $this->_generate_xor($xor); + $key = $des[0]->_processBlock($key, CRYPT_DES_ENCRYPT); + $key = $des[1]->_processBlock($key, CRYPT_DES_DECRYPT); + $key = $des[2]->_processBlock($key, CRYPT_DES_ENCRYPT); + $plaintext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($plaintext) & 7) { + $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; + } + } + break; + case CRYPT_DES_MODE_CFB: + if (strlen($buffer['ciphertext'])) { + $plaintext = $ciphertext ^ substr($this->decryptIV, strlen($buffer['ciphertext'])); + $buffer['ciphertext'].= substr($ciphertext, 0, strlen($plaintext)); + if (strlen($buffer['ciphertext']) != 8) { + $block = $this->decryptIV; + } else { + $block = $buffer['ciphertext']; + $xor = $des[0]->_processBlock($buffer['ciphertext'], CRYPT_DES_ENCRYPT); + $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT); + $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $buffer['ciphertext'] = ''; + } + $start = strlen($plaintext); + } else { + $plaintext = ''; + $xor = $des[0]->_processBlock($this->decryptIV, CRYPT_DES_ENCRYPT); + $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT); + $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $start = 0; + } + + for ($i = $start; $i < strlen($ciphertext); $i+=8) { + $block = substr($ciphertext, $i, 8); + $plaintext.= $block ^ $xor; + if ($continuousBuffer && strlen($block) != 8) { + $buffer['ciphertext'].= $block; + $block = $xor; + } else if (strlen($block) == 8) { + $xor = $des[0]->_processBlock($block, CRYPT_DES_ENCRYPT); + $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT); + $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT); + } + } + if ($this->continuousBuffer) { + $this->decryptIV = $block; + } + break; + case CRYPT_DES_MODE_OFB: + $xor = $this->decryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $xor = $des[0]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT); + $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $buffer['xor'].= $xor; + $key = $this->_string_shift($buffer['xor'], 8); + $plaintext.= substr($ciphertext, $i, 8) ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=8) { + $xor = $des[0]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT); + $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT); + $plaintext.= substr($ciphertext, $i, 8) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($ciphertext) & 7) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + } + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + /** + * Treat consecutive "packets" as if they are a continuous buffer. + * + * Say you have a 16-byte plaintext $plaintext. Using the default behavior, the two following code snippets + * will yield different outputs: + * + * + * echo $des->encrypt(substr($plaintext, 0, 8)); + * echo $des->encrypt(substr($plaintext, 8, 8)); + * + * + * echo $des->encrypt($plaintext); + * + * + * The solution is to enable the continuous buffer. Although this will resolve the above discrepancy, it creates + * another, as demonstrated with the following: + * + * + * $des->encrypt(substr($plaintext, 0, 8)); + * echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * With the continuous buffer disabled, these would yield the same output. With it enabled, they yield different + * outputs. The reason is due to the fact that the initialization vector's change after every encryption / + * decryption round when the continuous buffer is enabled. When it's disabled, they remain constant. + * + * Put another way, when the continuous buffer is enabled, the state of the Crypt_DES() object changes after each + * encryption / decryption round, whereas otherwise, it'd remain constant. For this reason, it's recommended that + * continuous buffers not be used. They do offer better security and are, in fact, sometimes required (SSH uses them), + * however, they are also less intuitive and more likely to cause you problems. + * + * @see Crypt_TripleDES::disableContinuousBuffer() + * @access public + */ + function enableContinuousBuffer() + { + $this->continuousBuffer = true; + if ($this->mode == CRYPT_DES_MODE_3CBC) { + $this->des[0]->enableContinuousBuffer(); + $this->des[1]->enableContinuousBuffer(); + $this->des[2]->enableContinuousBuffer(); + } + } + + /** + * Treat consecutive packets as if they are a discontinuous buffer. + * + * The default behavior. + * + * @see Crypt_TripleDES::enableContinuousBuffer() + * @access public + */ + function disableContinuousBuffer() + { + $this->continuousBuffer = false; + $this->encryptIV = $this->iv; + $this->decryptIV = $this->iv; + $this->enchanged = true; + $this->dechanged = true; + $this->enbuffer = array('encrypted' => '', 'xor' => '', 'pos' => 0, 'enmcrypt_init' => true); + $this->debuffer = array('ciphertext' => '', 'xor' => '', 'pos' => 0, 'demcrypt_init' => true); + + if ($this->mode == CRYPT_DES_MODE_3CBC) { + $this->des[0]->disableContinuousBuffer(); + $this->des[1]->disableContinuousBuffer(); + $this->des[2]->disableContinuousBuffer(); + } + } + + /** + * Pad "packets". + * + * DES works by encrypting eight bytes at a time. If you ever need to encrypt or decrypt something that's not + * a multiple of eight, it becomes necessary to pad the input so that it's length is a multiple of eight. + * + * Padding is enabled by default. Sometimes, however, it is undesirable to pad strings. Such is the case in SSH1, + * where "packets" are padded with random bytes before being encrypted. Unpad these packets and you risk stripping + * away characters that shouldn't be stripped away. (SSH knows how many bytes are added because the length is + * transmitted separately) + * + * @see Crypt_TripleDES::disablePadding() + * @access public + */ + function enablePadding() + { + $this->padding = true; + } + + /** + * Do not pad packets. + * + * @see Crypt_TripleDES::enablePadding() + * @access public + */ + function disablePadding() + { + $this->padding = false; + } + + /** + * Pads a string + * + * Pads a string using the RSA PKCS padding standards so that its length is a multiple of the blocksize (8). + * 8 - (strlen($text) & 7) bytes are added, each of which is equal to chr(8 - (strlen($text) & 7) + * + * If padding is disabled and $text is not a multiple of the blocksize, the string will be padded regardless + * and padding will, hence forth, be enabled. + * + * @see Crypt_TripleDES::_unpad() + * @access private + */ + function _pad($text) + { + $length = strlen($text); + + if (!$this->padding) { + if (($length & 7) == 0) { + return $text; + } else { + user_error("The plaintext's length ($length) is not a multiple of the block size (8)", E_USER_NOTICE); + $this->padding = true; + } + } + + $pad = 8 - ($length & 7); + return str_pad($text, $length + $pad, chr($pad)); + } + + /** + * Unpads a string + * + * If padding is enabled and the reported padding length is invalid the encryption key will be assumed to be wrong + * and false will be returned. + * + * @see Crypt_TripleDES::_pad() + * @access private + */ + function _unpad($text) + { + if (!$this->padding) { + return $text; + } + + $length = ord($text[strlen($text) - 1]); + + if (!$length || $length > 8) { + return false; + } + + return substr($text, 0, -$length); + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param String $string + * @param optional Integer $index + * @return String + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } +} + +// vim: ts=4:sw=4:et: +// vim6: fdl=1: diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/File/ANSI.php b/apps/files_external/3rdparty/phpseclib/phpseclib/File/ANSI.php new file mode 100644 index 0000000000..29ad949e10 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/File/ANSI.php @@ -0,0 +1,540 @@ + + * @copyright MMXII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id$ + * @link htp://phpseclib.sourceforge.net + */ + +/** + * Pure-PHP ANSI Decoder + * + * @author Jim Wigginton + * @version 0.3.0 + * @access public + * @package File_ANSI + */ +class File_ANSI { + /** + * Max Width + * + * @var Integer + * @access private + */ + var $max_x; + + /** + * Max Height + * + * @var Integer + * @access private + */ + var $max_y; + + /** + * Max History + * + * @var Integer + * @access private + */ + var $max_history; + + /** + * History + * + * @var Array + * @access private + */ + var $history; + + /** + * History Attributes + * + * @var Array + * @access private + */ + var $history_attrs; + + /** + * Current Column + * + * @var Integer + * @access private + */ + var $x; + + /** + * Current Row + * + * @var Integer + * @access private + */ + var $y; + + /** + * Old Column + * + * @var Integer + * @access private + */ + var $old_x; + + /** + * Old Row + * + * @var Integer + * @access private + */ + var $old_y; + + /** + * An empty attribute row + * + * @var Array + * @access private + */ + var $attr_row; + + /** + * The current screen text + * + * @var Array + * @access private + */ + var $screen; + + /** + * The current screen attributes + * + * @var Array + * @access private + */ + var $attrs; + + /** + * The current foreground color + * + * @var String + * @access private + */ + var $foreground; + + /** + * The current background color + * + * @var String + * @access private + */ + var $background; + + /** + * Bold flag + * + * @var Boolean + * @access private + */ + var $bold; + + /** + * Underline flag + * + * @var Boolean + * @access private + */ + var $underline; + + /** + * Blink flag + * + * @var Boolean + * @access private + */ + var $blink; + + /** + * Reverse flag + * + * @var Boolean + * @access private + */ + var $reverse; + + /** + * Color flag + * + * @var Boolean + * @access private + */ + var $color; + + /** + * Current ANSI code + * + * @var String + * @access private + */ + var $ansi; + + /** + * Default Constructor. + * + * @return File_ANSI + * @access public + */ + function File_ANSI() + { + $this->setHistory(200); + $this->setDimensions(80, 24); + } + + /** + * Set terminal width and height + * + * Resets the screen as well + * + * @param Integer $x + * @param Integer $y + * @access public + */ + function setDimensions($x, $y) + { + $this->max_x = $x - 1; + $this->max_y = $y - 1; + $this->x = $this->y = 0; + $this->history = $this->history_attrs = array(); + $this->attr_row = array_fill(0, $this->max_x + 1, ''); + $this->screen = array_fill(0, $this->max_y + 1, ''); + $this->attrs = array_fill(0, $this->max_y + 1, $this->attr_row); + $this->foreground = 'white'; + $this->background = 'black'; + $this->bold = false; + $this->underline = false; + $this->blink = false; + $this->reverse = false; + $this->color = false; + + $this->ansi = ''; + } + + /** + * Set the number of lines that should be logged past the terminal height + * + * @param Integer $x + * @param Integer $y + * @access public + */ + function setHistory($history) + { + $this->max_history = $history; + } + + /** + * Load a string + * + * @param String $source + * @access public + */ + function loadString($source) + { + $this->setDimensions($this->max_x + 1, $this->max_y + 1); + $this->appendString($source); + } + + /** + * Appdend a string + * + * @param String $source + * @access public + */ + function appendString($source) + { + for ($i = 0; $i < strlen($source); $i++) { + if (strlen($this->ansi)) { + $this->ansi.= $source[$i]; + $chr = ord($source[$i]); + // http://en.wikipedia.org/wiki/ANSI_escape_code#Sequence_elements + // single character CSI's not currently supported + switch (true) { + case $this->ansi == "\x1B=": + $this->ansi = ''; + continue 2; + case strlen($this->ansi) == 2 && $chr >= 64 && $chr <= 95 && $chr != ord('['): + case strlen($this->ansi) > 2 && $chr >= 64 && $chr <= 126: + break; + default: + continue 2; + } + // http://ascii-table.com/ansi-escape-sequences-vt-100.php + switch ($this->ansi) { + case "\x1B[H": + $this->old_x = $this->x; + $this->old_y = $this->y; + $this->x = $this->y = 0; + break; + case "\x1B[J": + $this->history = array_merge($this->history, array_slice(array_splice($this->screen, $this->y + 1), 0, $this->old_y)); + $this->screen = array_merge($this->screen, array_fill($this->y, $this->max_y, '')); + + $this->history_attrs = array_merge($this->history_attrs, array_slice(array_splice($this->attrs, $this->y + 1), 0, $this->old_y)); + $this->attrs = array_merge($this->attrs, array_fill($this->y, $this->max_y, $this->attr_row)); + + if (count($this->history) == $this->max_history) { + array_shift($this->history); + array_shift($this->history_attrs); + } + case "\x1B[K": + $this->screen[$this->y] = substr($this->screen[$this->y], 0, $this->x); + + array_splice($this->attrs[$this->y], $this->x + 1); + break; + case "\x1B[?1h": // set cursor key to application + break; + default: + switch (true) { + case preg_match('#\x1B\[(\d+);(\d+)H#', $this->ansi, $match): + $this->old_x = $this->x; + $this->old_y = $this->y; + $this->x = $match[2] - 1; + $this->y = $match[1] - 1; + break; + case preg_match('#\x1B\[(\d+)C#', $this->ansi, $match): + $this->old_x = $this->x; + $x = $match[1] - 1; + break; + case preg_match('#\x1B\[(\d+);(\d+)r#', $this->ansi, $match): // Set top and bottom lines of a window + break; + case preg_match('#\x1B\[(\d*(?:;\d*)*)m#', $this->ansi, $match): + $mods = explode(';', $match[1]); + foreach ($mods as $mod) { + switch ($mod) { + case 0: + $this->attrs[$this->y][$this->x] = ''; + + if ($this->bold) $this->attrs[$this->y][$this->x].= ''; + if ($this->underline) $this->attrs[$this->y][$this->x].= ''; + if ($this->blink) $this->attrs[$this->y][$this->x].= ''; + if ($this->color) $this->attrs[$this->y][$this->x].= ''; + + if ($this->reverse) { + $temp = $this->background; + $this->background = $this->foreground; + $this->foreground = $temp; + } + + $this->bold = $this->underline = $this->blink = $this->color = $this->reverse = false; + break; + case 1: + if (!$this->bold) { + $this->attrs[$this->y][$this->x] = ''; + $this->bold = true; + } + break; + case 4: + if (!$this->underline) { + $this->attrs[$this->y][$this->x] = ''; + $this->underline = true; + } + break; + case 5: + if (!$this->blink) { + $this->attrs[$this->y][$this->x] = ''; + $this->blink = true; + } + break; + case 7: + $this->reverse = !$this->reverse; + $temp = $this->background; + $this->background = $this->foreground; + $this->foreground = $temp; + $this->attrs[$this->y][$this->x] = ''; + if ($this->color) { + $this->attrs[$this->y][$this->x] = '' . $this->attrs[$this->y][$this->x]; + } + $this->color = true; + break; + default: + //$front = $this->reverse ? &$this->background : &$this->foreground; + $front = &$this->{ $this->reverse ? 'background' : 'foreground' }; + //$back = $this->reverse ? &$this->foreground : &$this->background; + $back = &$this->{ $this->reverse ? 'foreground' : 'background' }; + switch ($mod) { + case 30: $front = 'black'; break; + case 31: $front = 'red'; break; + case 32: $front = 'green'; break; + case 33: $front = 'yellow'; break; + case 34: $front = 'blue'; break; + case 35: $front = 'magenta'; break; + case 36: $front = 'cyan'; break; + case 37: $front = 'white'; break; + + case 40: $back = 'black'; break; + case 41: $back = 'red'; break; + case 42: $back = 'green'; break; + case 43: $back = 'yellow'; break; + case 44: $back = 'blue'; break; + case 45: $back = 'magenta'; break; + case 46: $back = 'cyan'; break; + case 47: $back = 'white'; break; + + default: + user_error('Unsupported attribute: ' . $mod); + $this->ansi = ''; + break 2; + } + + unset($temp); + $this->attrs[$this->y][$this->x] = ''; + if ($this->color) { + $this->attrs[$this->y][$this->x] = '' . $this->attrs[$this->y][$this->x]; + } + $this->color = true; + } + } + break; + default: + echo "{$this->ansi} unsupported\r\n"; + } + } + $this->ansi = ''; + continue; + } + + switch ($source[$i]) { + case "\r": + $this->x = 0; + break; + case "\n": + //if ($this->y < $this->max_y) { + // $this->y++; + //} + + while ($this->y >= $this->max_y) { + $this->history = array_merge($this->history, array(array_shift($this->screen))); + $this->screen[] = ''; + + $this->history_attrs = array_merge($this->history_attrs, array(array_shift($this->attrs))); + $this->attrs[] = $this->attr_row; + + if (count($this->history) >= $this->max_history) { + array_shift($this->history); + array_shift($this->history_attrs); + } + + $this->y--; + } + $this->y++; + break; + case "\x0F": // shift + break; + case "\x1B": // start ANSI escape code + $this->ansi.= "\x1B"; + break; + default: + $this->screen[$this->y] = substr_replace( + $this->screen[$this->y], + $source[$i], + $this->x, + 1 + ); + + if ($this->x > $this->max_x) { + $this->x = 0; + $this->y++; + } else { + $this->x++; + } + } + } + } + + /** + * Returns the current screen without preformating + * + * @access private + * @return String + */ + function _getScreen() + { + $output = ''; + for ($i = 0; $i <= $this->max_y; $i++) { + for ($j = 0; $j <= $this->max_x + 1; $j++) { + if (isset($this->attrs[$i][$j])) { + $output.= $this->attrs[$i][$j]; + } + if (isset($this->screen[$i][$j])) { + $output.= htmlspecialchars($this->screen[$i][$j]); + } + } + $output.= "\r\n"; + } + return rtrim($output); + } + + /** + * Returns the current screen + * + * @access public + * @return String + */ + function getScreen() + { + return '
' . $this->_getScreen() . '
'; + } + + /** + * Returns the current screen and the x previous lines + * + * @access public + * @return String + */ + function getHistory() + { + $scrollback = ''; + for ($i = 0; $i < count($this->history); $i++) { + for ($j = 0; $j <= $this->max_x + 1; $j++) { + if (isset($this->history_attrs[$i][$j])) { + $scrollback.= $this->history_attrs[$i][$j]; + } + if (isset($this->history[$i][$j])) { + $scrollback.= htmlspecialchars($this->history[$i][$j]); + } + } + $scrollback.= "\r\n"; + } + $scrollback.= $this->_getScreen(); + + return '
' . $scrollback . '
'; + } +} diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/File/ASN1.php b/apps/files_external/3rdparty/phpseclib/phpseclib/File/ASN1.php new file mode 100644 index 0000000000..766c6e7ebf --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/File/ASN1.php @@ -0,0 +1,1277 @@ + + * @copyright MMXII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id$ + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Math_BigInteger + */ +if (!class_exists('Math_BigInteger')) { + require_once('Math/BigInteger.php'); +} + +/**#@+ + * Tag Classes + * + * @access private + * @link http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#page=12 + */ +define('FILE_ASN1_CLASS_UNIVERSAL', 0); +define('FILE_ASN1_CLASS_APPLICATION', 1); +define('FILE_ASN1_CLASS_CONTEXT_SPECIFIC', 2); +define('FILE_ASN1_CLASS_PRIVATE', 3); +/**#@-*/ + +/**#@+ + * Tag Classes + * + * @access private + * @link http://www.obj-sys.com/asn1tutorial/node124.html + */ +define('FILE_ASN1_TYPE_BOOLEAN', 1); +define('FILE_ASN1_TYPE_INTEGER', 2); +define('FILE_ASN1_TYPE_BIT_STRING', 3); +define('FILE_ASN1_TYPE_OCTET_STRING', 4); +define('FILE_ASN1_TYPE_NULL', 5); +define('FILE_ASN1_TYPE_OBJECT_IDENTIFIER',6); +//define('FILE_ASN1_TYPE_OBJECT_DESCRIPTOR',7); +//define('FILE_ASN1_TYPE_INSTANCE_OF', 8); // EXTERNAL +define('FILE_ASN1_TYPE_REAL', 9); +define('FILE_ASN1_TYPE_ENUMERATED', 10); +//define('FILE_ASN1_TYPE_EMBEDDED', 11); +define('FILE_ASN1_TYPE_UTF8_STRING', 12); +//define('FILE_ASN1_TYPE_RELATIVE_OID', 13); +define('FILE_ASN1_TYPE_SEQUENCE', 16); // SEQUENCE OF +define('FILE_ASN1_TYPE_SET', 17); // SET OF +/**#@-*/ +/**#@+ + * More Tag Classes + * + * @access private + * @link http://www.obj-sys.com/asn1tutorial/node10.html + */ +define('FILE_ASN1_TYPE_NUMERIC_STRING', 18); +define('FILE_ASN1_TYPE_PRINTABLE_STRING',19); +define('FILE_ASN1_TYPE_TELETEX_STRING', 20); // T61String +define('FILE_ASN1_TYPE_VIDEOTEX_STRING', 21); +define('FILE_ASN1_TYPE_IA5_STRING', 22); +define('FILE_ASN1_TYPE_UTC_TIME', 23); +define('FILE_ASN1_TYPE_GENERALIZED_TIME',24); +define('FILE_ASN1_TYPE_GRAPHIC_STRING', 25); +define('FILE_ASN1_TYPE_VISIBLE_STRING', 26); // ISO646String +define('FILE_ASN1_TYPE_GENERAL_STRING', 27); +define('FILE_ASN1_TYPE_UNIVERSAL_STRING',28); +//define('FILE_ASN1_TYPE_CHARACTER_STRING',29); +define('FILE_ASN1_TYPE_BMP_STRING', 30); +/**#@-*/ + +/**#@+ + * Tag Aliases + * + * These tags are kinda place holders for other tags. + * + * @access private + */ +define('FILE_ASN1_TYPE_CHOICE', -1); +define('FILE_ASN1_TYPE_ANY', -2); +/**#@-*/ + +/** + * ASN.1 Element + * + * Bypass normal encoding rules in File_ASN1::encodeDER() + * + * @author Jim Wigginton + * @version 0.3.0 + * @access public + * @package File_ASN1 + */ +class File_ASN1_Element { + /** + * Raw element value + * + * @var String + * @access private + */ + var $element; + + /** + * Constructor + * + * @param String $encoded + * @return File_ASN1_Element + * @access public + */ + function File_ASN1_Element($encoded) + { + $this->element = $encoded; + } +} + +/** + * Pure-PHP ASN.1 Parser + * + * @author Jim Wigginton + * @version 0.3.0 + * @access public + * @package File_ASN1 + */ +class File_ASN1 { + /** + * ASN.1 object identifier + * + * @var Array + * @access private + * @link http://en.wikipedia.org/wiki/Object_identifier + */ + var $oids = array(); + + /** + * Default date format + * + * @var String + * @access private + * @link http://php.net/class.datetime + */ + var $format = 'D, d M y H:i:s O'; + + /** + * Default date format + * + * @var Array + * @access private + * @see File_ASN1::setTimeFormat() + * @see File_ASN1::asn1map() + * @link http://php.net/class.datetime + */ + var $encoded; + + /** + * Filters + * + * If the mapping type is FILE_ASN1_TYPE_ANY what do we actually encode it as? + * + * @var Array + * @access private + * @see File_ASN1::_encode_der() + */ + var $filters; + + /** + * Type mapping table for the ANY type. + * + * Structured or unknown types are mapped to a FILE_ASN1_Element. + * Unambiguous types get the direct mapping (int/real/bool). + * Others are mapped as a choice, with an extra indexing level. + * + * @var Array + * @access public + */ + var $ANYmap = array( + FILE_ASN1_TYPE_BOOLEAN => true, + FILE_ASN1_TYPE_INTEGER => true, + FILE_ASN1_TYPE_BIT_STRING => 'bitString', + FILE_ASN1_TYPE_OCTET_STRING => 'octetString', + FILE_ASN1_TYPE_NULL => 'null', + FILE_ASN1_TYPE_OBJECT_IDENTIFIER => 'objectIdentifier', + FILE_ASN1_TYPE_REAL => true, + FILE_ASN1_TYPE_ENUMERATED => 'enumerated', + FILE_ASN1_TYPE_UTF8_STRING => 'utf8String', + FILE_ASN1_TYPE_NUMERIC_STRING => 'numericString', + FILE_ASN1_TYPE_PRINTABLE_STRING => 'printableString', + FILE_ASN1_TYPE_TELETEX_STRING => 'teletexString', + FILE_ASN1_TYPE_VIDEOTEX_STRING => 'videotexString', + FILE_ASN1_TYPE_IA5_STRING => 'ia5String', + FILE_ASN1_TYPE_UTC_TIME => 'utcTime', + FILE_ASN1_TYPE_GENERALIZED_TIME => 'generalTime', + FILE_ASN1_TYPE_GRAPHIC_STRING => 'graphicString', + FILE_ASN1_TYPE_VISIBLE_STRING => 'visibleString', + FILE_ASN1_TYPE_GENERAL_STRING => 'generalString', + FILE_ASN1_TYPE_UNIVERSAL_STRING => 'universalString', + //FILE_ASN1_TYPE_CHARACTER_STRING => 'characterString', + FILE_ASN1_TYPE_BMP_STRING => 'bmpString' + ); + + /** + * String type to character size mapping table. + * + * Non-convertable types are absent from this table. + * size == 0 indicates variable length encoding. + * + * @var Array + * @access public + */ + var $stringTypeSize = array( + FILE_ASN1_TYPE_UTF8_STRING => 0, + FILE_ASN1_TYPE_BMP_STRING => 2, + FILE_ASN1_TYPE_UNIVERSAL_STRING => 4, + FILE_ASN1_TYPE_PRINTABLE_STRING => 1, + FILE_ASN1_TYPE_TELETEX_STRING => 1, + FILE_ASN1_TYPE_IA5_STRING => 1, + FILE_ASN1_TYPE_VISIBLE_STRING => 1, + ); + + /** + * Parse BER-encoding + * + * Serves a similar purpose to openssl's asn1parse + * + * @param String $encoded + * @return Array + * @access public + */ + function decodeBER($encoded) + { + if (is_object($encoded) && strtolower(get_class($encoded)) == 'file_asn1_element') { + $encoded = $encoded->element; + } + + $this->encoded = $encoded; + return $this->_decode_ber($encoded); + } + + /** + * Parse BER-encoding (Helper function) + * + * Sometimes we want to get the BER encoding of a particular tag. $start lets us do that without having to reencode. + * $encoded is passed by reference for the recursive calls done for FILE_ASN1_TYPE_BIT_STRING and + * FILE_ASN1_TYPE_OCTET_STRING. In those cases, the indefinite length is used. + * + * @param String $encoded + * @param Integer $start + * @return Array + * @access private + */ + function _decode_ber(&$encoded, $start = 0) + { + $decoded = array(); + + while ( strlen($encoded) ) { + $current = array('start' => $start); + + $type = ord($this->_string_shift($encoded)); + $start++; + + $constructed = ($type >> 5) & 1; + + $tag = $type & 0x1F; + if ($tag == 0x1F) { + $tag = 0; + // process septets (since the eighth bit is ignored, it's not an octet) + do { + $loop = ord($encoded[0]) >> 7; + $tag <<= 7; + $tag |= ord($this->_string_shift($encoded)) & 0x7F; + $start++; + } while ( $loop ); + } + + // Length, as discussed in 8.1.3 of X.690-0207.pdf#page=13 + $length = ord($this->_string_shift($encoded)); + $start++; + if ( $length == 0x80 ) { // indefinite length + // "[A sender shall] use the indefinite form (see 8.1.3.6) if the encoding is constructed and is not all + // immediately available." -- 8.1.3.2.c + //if ( !$constructed ) { + // return false; + //} + $length = strlen($encoded); + } elseif ( $length & 0x80 ) { // definite length, long form + // technically, the long form of the length can be represented by up to 126 octets (bytes), but we'll only + // support it up to four. + $length&= 0x7F; + $temp = $this->_string_shift($encoded, $length); + $start+= $length; + extract(unpack('Nlength', substr(str_pad($temp, 4, chr(0), STR_PAD_LEFT), -4))); + } + + // End-of-content, see 8.1.1.3, 8.1.3.2, 8.1.3.6, 8.1.5, and (for an example) 8.6.4.2 + if (!$type && !$length) { + return $decoded; + } + $content = $this->_string_shift($encoded, $length); + + /* Class is UNIVERSAL, APPLICATION, PRIVATE, or CONTEXT-SPECIFIC. The UNIVERSAL class is restricted to the ASN.1 + built-in types. It defines an application-independent data type that must be distinguishable from all other + data types. The other three classes are user defined. The APPLICATION class distinguishes data types that + have a wide, scattered use within a particular presentation context. PRIVATE distinguishes data types within + a particular organization or country. CONTEXT-SPECIFIC distinguishes members of a sequence or set, the + alternatives of a CHOICE, or universally tagged set members. Only the class number appears in braces for this + data type; the term CONTEXT-SPECIFIC does not appear. + + -- http://www.obj-sys.com/asn1tutorial/node12.html */ + $class = ($type >> 6) & 3; + switch ($class) { + case FILE_ASN1_CLASS_APPLICATION: + case FILE_ASN1_CLASS_PRIVATE: + case FILE_ASN1_CLASS_CONTEXT_SPECIFIC: + $decoded[] = array( + 'type' => $class, + 'constant' => $tag, + 'content' => $constructed ? $this->_decode_ber($content, $start) : $content, + 'length' => $length + $start - $current['start'] + ) + $current; + continue 2; + } + + $current+= array('type' => $tag); + + // decode UNIVERSAL tags + switch ($tag) { + case FILE_ASN1_TYPE_BOOLEAN: + // "The contents octets shall consist of a single octet." -- 8.2.1 + //if (strlen($content) != 1) { + // return false; + //} + $current['content'] = (bool) ord($content[0]); + break; + case FILE_ASN1_TYPE_INTEGER: + case FILE_ASN1_TYPE_ENUMERATED: + $current['content'] = new Math_BigInteger($content, -256); + break; + case FILE_ASN1_TYPE_REAL: // not currently supported + return false; + case FILE_ASN1_TYPE_BIT_STRING: + // The initial octet shall encode, as an unsigned binary integer with bit 1 as the least significant bit, + // the number of unused bits in the final subsequent octet. The number shall be in the range zero to + // seven. + if (!$constructed) { + $current['content'] = $content; + } else { + $temp = $this->_decode_ber($content, $start); + $length-= strlen($content); + $last = count($temp) - 1; + for ($i = 0; $i < $last; $i++) { + // all subtags should be bit strings + //if ($temp[$i]['type'] != FILE_ASN1_TYPE_BIT_STRING) { + // return false; + //} + $current['content'].= substr($temp[$i]['content'], 1); + } + // all subtags should be bit strings + //if ($temp[$last]['type'] != FILE_ASN1_TYPE_BIT_STRING) { + // return false; + //} + $current['content'] = $temp[$last]['content'][0] . $current['content'] . substr($temp[$i]['content'], 1); + } + break; + case FILE_ASN1_TYPE_OCTET_STRING: + if (!$constructed) { + $current['content'] = $content; + } else { + $temp = $this->_decode_ber($content, $start); + $length-= strlen($content); + for ($i = 0, $size = count($temp); $i < $size; $i++) { + // all subtags should be octet strings + //if ($temp[$i]['type'] != FILE_ASN1_TYPE_OCTET_STRING) { + // return false; + //} + $current['content'].= $temp[$i]['content']; + } + // $length = + } + break; + case FILE_ASN1_TYPE_NULL: + // "The contents octets shall not contain any octets." -- 8.8.2 + //if (strlen($content)) { + // return false; + //} + break; + case FILE_ASN1_TYPE_SEQUENCE: + case FILE_ASN1_TYPE_SET: + $current['content'] = $this->_decode_ber($content, $start); + break; + case FILE_ASN1_TYPE_OBJECT_IDENTIFIER: + $temp = ord($this->_string_shift($content)); + $current['content'] = sprintf('%d.%d', floor($temp / 40), $temp % 40); + $valuen = 0; + // process septets + while (strlen($content)) { + $temp = ord($this->_string_shift($content)); + $valuen <<= 7; + $valuen |= $temp & 0x7F; + if (~$temp & 0x80) { + $current['content'].= ".$valuen"; + $valuen = 0; + } + } + // the eighth bit of the last byte should not be 1 + //if ($temp >> 7) { + // return false; + //} + break; + /* Each character string type shall be encoded as if it had been declared: + [UNIVERSAL x] IMPLICIT OCTET STRING + + -- X.690-0207.pdf#page=23 ( 8.21.3) + + Per that, we're not going to do any validation. If there are any illegal characters in the string, + we don't really care */ + case FILE_ASN1_TYPE_NUMERIC_STRING: + // 0,1,2,3,4,5,6,7,8,9, and space + case FILE_ASN1_TYPE_PRINTABLE_STRING: + // Upper and lower case letters, digits, space, apostrophe, left/right parenthesis, plus sign, comma, + // hyphen, full stop, solidus, colon, equal sign, question mark + case FILE_ASN1_TYPE_TELETEX_STRING: + // The Teletex character set in CCITT's T61, space, and delete + // see http://en.wikipedia.org/wiki/Teletex#Character_sets + case FILE_ASN1_TYPE_VIDEOTEX_STRING: + // The Videotex character set in CCITT's T.100 and T.101, space, and delete + case FILE_ASN1_TYPE_VISIBLE_STRING: + // Printing character sets of international ASCII, and space + case FILE_ASN1_TYPE_IA5_STRING: + // International Alphabet 5 (International ASCII) + case FILE_ASN1_TYPE_GRAPHIC_STRING: + // All registered G sets, and space + case FILE_ASN1_TYPE_GENERAL_STRING: + // All registered C and G sets, space and delete + case FILE_ASN1_TYPE_UTF8_STRING: + // ???? + case FILE_ASN1_TYPE_BMP_STRING: + $current['content'] = $content; + break; + case FILE_ASN1_TYPE_UTC_TIME: + case FILE_ASN1_TYPE_GENERALIZED_TIME: + $current['content'] = $this->_decodeTime($content, $tag); + default: + + } + + $start+= $length; + $decoded[] = $current + array('length' => $start - $current['start']); + } + + return $decoded; + } + + /** + * ASN.1 Decode + * + * Provides an ASN.1 semantic mapping ($mapping) from a parsed BER-encoding to a human readable format. + * + * @param Array $decoded + * @param Array $mapping + * @return Array + * @access public + */ + function asn1map($decoded, $mapping) + { + if (isset($mapping['explicit'])) { + $decoded = $decoded['content'][0]; + } + + switch (true) { + case $mapping['type'] == FILE_ASN1_TYPE_ANY: + $intype = $decoded['type']; + if (isset($decoded['constant']) || !isset($this->ANYmap[$intype]) || ($this->encoded[$decoded['start']] & 0x20)) { + return new File_ASN1_Element(substr($this->encoded, $decoded['start'], $decoded['length'])); + } + $inmap = $this->ANYmap[$intype]; + if (is_string($inmap)) { + return array($inmap => $this->asn1map($decoded, array('type' => $intype) + $mapping)); + } + break; + case $mapping['type'] == FILE_ASN1_TYPE_CHOICE: + foreach ($mapping['children'] as $key => $option) { + switch (true) { + case isset($option['constant']) && $option['constant'] == $decoded['constant']: + case !isset($option['constant']) && $option['type'] == $decoded['type']: + $value = $this->asn1map($decoded, $option); + break; + case !isset($option['constant']) && $option['type'] == FILE_ASN1_TYPE_CHOICE: + $v = $this->asn1map($decoded, $option); + if (isset($v)) { + $value = $v; + } + } + if (isset($value)) { + return array($key => $value); + } + } + return NULL; + case isset($mapping['implicit']): + case isset($mapping['explicit']): + case $decoded['type'] == $mapping['type']: + break; + default: + return NULL; + } + + if (isset($mapping['implicit'])) { + $decoded['type'] = $mapping['type']; + } + + switch ($decoded['type']) { + case FILE_ASN1_TYPE_SEQUENCE: + $map = array(); + + // ignore the min and max + if (isset($mapping['min']) && isset($mapping['max'])) { + $child = $mapping['children']; + foreach ($decoded['content'] as $content) { + if (($map[] = $this->asn1map($content, $child)) === NULL) { + return NULL; + } + } + + return $map; + } + + $n = count($decoded['content']); + $i = 0; + + foreach ($mapping['children'] as $key => $child) { + $maymatch = $i < $n; // Match only existing input. + if ($maymatch) { + $temp = $decoded['content'][$i]; + + if ($child['type'] != FILE_ASN1_TYPE_CHOICE) { + // Get the mapping and input class & constant. + $childClass = $tempClass = FILE_ASN1_CLASS_UNIVERSAL; + $constant = NULL; + if (isset($temp['constant'])) { + $tempClass = isset($temp['class']) ? $temp['class'] : FILE_ASN1_CLASS_CONTEXT_SPECIFIC; + } + if (isset($child['class'])) { + $childClass = $child['class']; + $constant = $child['cast']; + } + elseif (isset($child['constant'])) { + $childClass = FILE_ASN1_CLASS_CONTEXT_SPECIFIC; + $constant = $child['constant']; + } + + if (isset($constant) && isset($temp['constant'])) { + // Can only match if constants and class match. + $maymatch = $constant == $temp['constant'] && $childClass == $tempClass; + } else { + // Can only match if no constant expected and type matches or is generic. + $maymatch = !isset($child['constant']) && array_search($child['type'], array($temp['type'], FILE_ASN1_TYPE_ANY, FILE_ASN1_TYPE_CHOICE)) !== false; + } + } + } + + if ($maymatch) { + // Attempt submapping. + $candidate = $this->asn1map($temp, $child); + $maymatch = $candidate !== NULL; + } + + if ($maymatch) { + // Got the match: use it. + $map[$key] = $candidate; + $i++; + } elseif (isset($child['default'])) { + $map[$key] = $child['default']; // Use default. + } elseif (!isset($child['optional'])) { + return NULL; // Syntax error. + } + } + + // Fail mapping if all input items have not been consumed. + return $i < $n? NULL: $map; + + // the main diff between sets and sequences is the encapsulation of the foreach in another for loop + case FILE_ASN1_TYPE_SET: + $map = array(); + + // ignore the min and max + if (isset($mapping['min']) && isset($mapping['max'])) { + $child = $mapping['children']; + foreach ($decoded['content'] as $content) { + if (($map[] = $this->asn1map($content, $child)) === NULL) { + return NULL; + } + } + + return $map; + } + + for ($i = 0; $i < count($decoded['content']); $i++) { + $temp = $decoded['content'][$i]; + $tempClass = FILE_ASN1_CLASS_UNIVERSAL; + if (isset($temp['constant'])) { + $tempClass = isset($temp['class']) ? $temp['class'] : FILE_ASN1_CLASS_CONTEXT_SPECIFIC; + } + + foreach ($mapping['children'] as $key => $child) { + if (isset($map[$key])) { + continue; + } + $maymatch = true; + if ($child['type'] != FILE_ASN1_TYPE_CHOICE) { + $childClass = FILE_ASN1_CLASS_UNIVERSAL; + $constant = NULL; + if (isset($child['class'])) { + $childClass = $child['class']; + $constant = $child['cast']; + } + elseif (isset($child['constant'])) { + $childClass = FILE_ASN1_CLASS_CONTEXT_SPECIFIC; + $constant = $child['constant']; + } + + if (isset($constant) && isset($temp['constant'])) { + // Can only match if constants and class match. + $maymatch = $constant == $temp['constant'] && $childClass == $tempClass; + } else { + // Can only match if no constant expected and type matches or is generic. + $maymatch = !isset($child['constant']) && array_search($child['type'], array($temp['type'], FILE_ASN1_TYPE_ANY, FILE_ASN1_TYPE_CHOICE)) !== false; + } + } + + if ($maymatch) { + // Attempt submapping. + $candidate = $this->asn1map($temp, $child); + $maymatch = $candidate !== NULL; + } + + if (!$maymatch) { + break; + } + + // Got the match: use it. + $map[$key] = $candidate; + break; + } + } + + foreach ($mapping['children'] as $key => $child) { + if (!isset($map[$key])) { + if (isset($child['default'])) { + $map[$key] = $child['default']; + } elseif (!isset($child['optional'])) { + return NULL; + } + } + } + return $map; + case FILE_ASN1_TYPE_OBJECT_IDENTIFIER: + return isset($this->oids[$decoded['content']]) ? $this->oids[$decoded['content']] : $decoded['content']; + case FILE_ASN1_TYPE_UTC_TIME: + case FILE_ASN1_TYPE_GENERALIZED_TIME: + if (isset($mapping['implicit'])) { + $decoded['content'] = $this->_decodeTime($decoded['content'], $decoded['type']); + } + return @date($this->format, $decoded['content']); + case FILE_ASN1_TYPE_BIT_STRING: + if (isset($mapping['mapping'])) { + $offset = ord($decoded['content'][0]); + $size = (strlen($decoded['content']) - 1) * 8 - $offset; + /* + From X.680-0207.pdf#page=46 (21.7): + + "When a "NamedBitList" is used in defining a bitstring type ASN.1 encoding rules are free to add (or remove) + arbitrarily any trailing 0 bits to (or from) values that are being encoded or decoded. Application designers should + therefore ensure that different semantics are not associated with such values which differ only in the number of trailing + 0 bits." + */ + $bits = count($mapping['mapping']) == $size ? array() : array_fill(0, count($mapping['mapping']) - $size, false); + for ($i = strlen($decoded['content']) - 1; $i > 0; $i--) { + $current = ord($decoded['content'][$i]); + for ($j = $offset; $j < 8; $j++) { + $bits[] = (bool) ($current & (1 << $j)); + } + $offset = 0; + } + $values = array(); + $map = array_reverse($mapping['mapping']); + foreach ($map as $i => $value) { + if ($bits[$i]) { + $values[] = $value; + } + } + return $values; + } + case FILE_ASN1_TYPE_OCTET_STRING: + return base64_encode($decoded['content']); + case FILE_ASN1_TYPE_NULL: + return ''; + case FILE_ASN1_TYPE_BOOLEAN: + return $decoded['content']; + case FILE_ASN1_TYPE_NUMERIC_STRING: + case FILE_ASN1_TYPE_PRINTABLE_STRING: + case FILE_ASN1_TYPE_TELETEX_STRING: + case FILE_ASN1_TYPE_VIDEOTEX_STRING: + case FILE_ASN1_TYPE_IA5_STRING: + case FILE_ASN1_TYPE_GRAPHIC_STRING: + case FILE_ASN1_TYPE_VISIBLE_STRING: + case FILE_ASN1_TYPE_GENERAL_STRING: + case FILE_ASN1_TYPE_UNIVERSAL_STRING: + case FILE_ASN1_TYPE_UTF8_STRING: + case FILE_ASN1_TYPE_BMP_STRING: + return $decoded['content']; + case FILE_ASN1_TYPE_INTEGER: + case FILE_ASN1_TYPE_ENUMERATED: + $temp = $decoded['content']; + if (isset($mapping['implicit'])) { + $temp = new Math_BigInteger($decoded['content'], -256); + } + if (isset($mapping['mapping'])) { + $temp = (int) $temp->toString(); + return isset($mapping['mapping'][$temp]) ? + $mapping['mapping'][$temp] : + false; + } + return $temp; + } + } + + /** + * ASN.1 Encode + * + * DER-encodes an ASN.1 semantic mapping ($mapping). Some libraries would probably call this function + * an ASN.1 compiler. + * + * @param String $source + * @param String $mapping + * @param Integer $idx + * @return String + * @access public + */ + function encodeDER($source, $mapping) + { + $this->location = array(); + return $this->_encode_der($source, $mapping); + } + + /** + * ASN.1 Encode (Helper function) + * + * @param String $source + * @param String $mapping + * @param Integer $idx + * @return String + * @access private + */ + function _encode_der($source, $mapping, $idx = NULL) + { + if (is_object($source) && strtolower(get_class($source)) == 'file_asn1_element') { + return $source->element; + } + + // do not encode (implicitly optional) fields with value set to default + if (isset($mapping['default']) && $source === $mapping['default']) { + return ''; + } + + if (isset($idx)) { + $this->location[] = $idx; + } + + $tag = $mapping['type']; + + switch ($tag) { + case FILE_ASN1_TYPE_SET: // Children order is not important, thus process in sequence. + case FILE_ASN1_TYPE_SEQUENCE: + $tag|= 0x20; // set the constructed bit + $value = ''; + + // ignore the min and max + if (isset($mapping['min']) && isset($mapping['max'])) { + $child = $mapping['children']; + + foreach ($source as $content) { + $temp = $this->_encode_der($content, $child); + if ($temp === false) { + return false; + } + $value.= $temp; + } + break; + } + + foreach ($mapping['children'] as $key => $child) { + if (!isset($source[$key])) { + if (!isset($child['optional'])) { + return false; + } + continue; + } + + $temp = $this->_encode_der($source[$key], $child, $key); + if ($temp === false) { + return false; + } + + // An empty child encoding means it has been optimized out. + // Else we should have at least one tag byte. + if ($temp === '') { + continue; + } + + // if isset($child['constant']) is true then isset($child['optional']) should be true as well + if (isset($child['constant'])) { + /* + From X.680-0207.pdf#page=58 (30.6): + + "The tagging construction specifies explicit tagging if any of the following holds: + ... + c) the "Tag Type" alternative is used and the value of "TagDefault" for the module is IMPLICIT TAGS or + AUTOMATIC TAGS, but the type defined by "Type" is an untagged choice type, an untagged open type, or + an untagged "DummyReference" (see ITU-T Rec. X.683 | ISO/IEC 8824-4, 8.3)." + */ + if (isset($child['explicit']) || $child['type'] == FILE_ASN1_TYPE_CHOICE) { + $subtag = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | 0x20 | $child['constant']); + $temp = $subtag . $this->_encodeLength(strlen($temp)) . $temp; + } else { + $subtag = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | (ord($temp[0]) & 0x20) | $child['constant']); + $temp = $subtag . substr($temp, 1); + } + } + $value.= $temp; + } + break; + case FILE_ASN1_TYPE_CHOICE: + $temp = false; + + foreach ($mapping['children'] as $key => $child) { + if (!isset($source[$key])) { + continue; + } + + $temp = $this->_encode_der($source[$key], $child, $key); + if ($temp === false) { + return false; + } + + // An empty child encoding means it has been optimized out. + // Else we should have at least one tag byte. + if ($temp === '') { + continue; + } + + $tag = ord($temp[0]); + + // if isset($child['constant']) is true then isset($child['optional']) should be true as well + if (isset($child['constant'])) { + if (isset($child['explicit']) || $child['type'] == FILE_ASN1_TYPE_CHOICE) { + $subtag = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | 0x20 | $child['constant']); + $temp = $subtag . $this->_encodeLength(strlen($temp)) . $temp; + } else { + $subtag = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | (ord($temp[0]) & 0x20) | $child['constant']); + $temp = $subtag . substr($temp, 1); + } + } + } + + if (isset($idx)) { + array_pop($this->location); + } + + if ($temp && isset($mapping['cast'])) { + $temp[0] = chr(($mapping['class'] << 6) | ($tag & 0x20) | $mapping['cast']); + } + + return $temp; + case FILE_ASN1_TYPE_INTEGER: + case FILE_ASN1_TYPE_ENUMERATED: + if (!isset($mapping['mapping'])) { + $value = $source->toBytes(true); + } else { + $value = array_search($source, $mapping['mapping']); + if ($value === false) { + return false; + } + $value = new Math_BigInteger($value); + $value = $value->toBytes(true); + } + break; + case FILE_ASN1_TYPE_UTC_TIME: + case FILE_ASN1_TYPE_GENERALIZED_TIME: + $format = $mapping['type'] == FILE_ASN1_TYPE_UTC_TIME ? 'y' : 'Y'; + $format.= 'mdHis'; + $value = @gmdate($format, strtotime($source)) . 'Z'; + break; + case FILE_ASN1_TYPE_BIT_STRING: + if (isset($mapping['mapping'])) { + $bits = array_fill(0, count($mapping['mapping']), 0); + $size = 0; + for ($i = 0; $i < count($mapping['mapping']); $i++) { + if (in_array($mapping['mapping'][$i], $source)) { + $bits[$i] = 1; + $size = $i; + } + } + + $offset = 8 - (($size + 1) & 7); + $offset = $offset !== 8 ? $offset : 0; + + $value = chr($offset); + + for ($i = $size + 1; $i < count($mapping['mapping']); $i++) { + unset($bits[$i]); + } + + $bits = implode('', array_pad($bits, $size + $offset + 1, 0)); + $bytes = explode(' ', rtrim(chunk_split($bits, 8, ' '))); + foreach ($bytes as $byte) { + $value.= chr(bindec($byte)); + } + + break; + } + case FILE_ASN1_TYPE_OCTET_STRING: + /* The initial octet shall encode, as an unsigned binary integer with bit 1 as the least significant bit, + the number of unused bits in the final subsequent octet. The number shall be in the range zero to seven. + + -- http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#page=16 */ + $value = base64_decode($source); + break; + case FILE_ASN1_TYPE_OBJECT_IDENTIFIER: + $oid = preg_match('#(?:\d+\.)+#', $source) ? $source : array_search($source, $this->oids); + if ($oid === false) { + user_error('Invalid OID'); + return false; + } + $value = ''; + $parts = explode('.', $oid); + $value = chr(40 * $parts[0] + $parts[1]); + for ($i = 2; $i < count($parts); $i++) { + $temp = ''; + if (!$parts[$i]) { + $temp = "\0"; + } else { + while ($parts[$i]) { + $temp = chr(0x80 | ($parts[$i] & 0x7F)) . $temp; + $parts[$i] >>= 7; + } + $temp[strlen($temp) - 1] = $temp[strlen($temp) - 1] & chr(0x7F); + } + $value.= $temp; + } + break; + case FILE_ASN1_TYPE_ANY: + $loc = $this->location; + if (isset($idx)) { + array_pop($this->location); + } + + switch (true) { + case !isset($source): + return $this->_encode_der(NULL, array('type' => FILE_ASN1_TYPE_NULL) + $mapping); + case is_int($source): + case is_object($source) && strtolower(get_class($source)) == 'math_biginteger': + return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_INTEGER) + $mapping); + case is_float($source): + return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_REAL) + $mapping); + case is_bool($source): + return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_BOOLEAN) + $mapping); + case is_array($source) && count($source) == 1: + $typename = implode('', array_keys($source)); + $outtype = array_search($typename, $this->ANYmap, true); + if ($outtype !== false) { + return $this->_encode_der($source[$typename], array('type' => $outtype) + $mapping); + } + } + + $filters = $this->filters; + foreach ($loc as $part) { + if (!isset($filters[$part])) { + $filters = false; + break; + } + $filters = $filters[$part]; + } + if ($filters === false) { + user_error('No filters defined for ' . implode('/', $loc)); + return false; + } + return $this->_encode_der($source, $filters + $mapping); + case FILE_ASN1_TYPE_NULL: + $value = ''; + break; + case FILE_ASN1_TYPE_NUMERIC_STRING: + case FILE_ASN1_TYPE_TELETEX_STRING: + case FILE_ASN1_TYPE_PRINTABLE_STRING: + case FILE_ASN1_TYPE_UNIVERSAL_STRING: + case FILE_ASN1_TYPE_UTF8_STRING: + case FILE_ASN1_TYPE_BMP_STRING: + case FILE_ASN1_TYPE_IA5_STRING: + case FILE_ASN1_TYPE_VISIBLE_STRING: + case FILE_ASN1_TYPE_VIDEOTEX_STRING: + case FILE_ASN1_TYPE_GRAPHIC_STRING: + case FILE_ASN1_TYPE_GENERAL_STRING: + $value = $source; + break; + case FILE_ASN1_TYPE_BOOLEAN: + $value = $source ? "\xFF" : "\x00"; + break; + default: + user_error('Mapping provides no type definition for ' . implode('/', $this->location)); + return false; + } + + if (isset($idx)) { + array_pop($this->location); + } + + if (isset($mapping['cast'])) { + $tag = ($mapping['class'] << 6) | ($tag & 0x20) | $mapping['cast']; + } + + return chr($tag) . $this->_encodeLength(strlen($value)) . $value; + } + + /** + * DER-encode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 8.1.3} for more information. + * + * @access private + * @param Integer $length + * @return String + */ + function _encodeLength($length) + { + if ($length <= 0x7F) { + return chr($length); + } + + $temp = ltrim(pack('N', $length), chr(0)); + return pack('Ca*', 0x80 | strlen($temp), $temp); + } + + /** + * BER-decode the time + * + * Called by _decode_ber() and in the case of implicit tags asn1map(). + * + * @access private + * @param String $content + * @param Integer $tag + * @return String + */ + function _decodeTime($content, $tag) + { + /* UTCTime: + http://tools.ietf.org/html/rfc5280#section-4.1.2.5.1 + http://www.obj-sys.com/asn1tutorial/node15.html + + GeneralizedTime: + http://tools.ietf.org/html/rfc5280#section-4.1.2.5.2 + http://www.obj-sys.com/asn1tutorial/node14.html */ + + $pattern = $tag == FILE_ASN1_TYPE_UTC_TIME ? + '#(..)(..)(..)(..)(..)(..)(.*)#' : + '#(....)(..)(..)(..)(..)(..).*([Z+-].*)$#'; + + preg_match($pattern, $content, $matches); + + list(, $year, $month, $day, $hour, $minute, $second, $timezone) = $matches; + + if ($tag == FILE_ASN1_TYPE_UTC_TIME) { + $year = $year >= 50 ? "19$year" : "20$year"; + } + + if ($timezone == 'Z') { + $mktime = 'gmmktime'; + $timezone = 0; + } elseif (preg_match('#([+-])(\d\d)(\d\d)#', $timezone, $matches)) { + $mktime = 'gmmktime'; + $timezone = 60 * $matches[3] + 3600 * $matches[2]; + if ($matches[1] == '-') { + $timezone = -$timezone; + } + } else { + $mktime = 'mktime'; + $timezone = 0; + } + + return @$mktime($hour, $minute, $second, $month, $day, $year) + $timezone; + } + + /** + * Set the time format + * + * Sets the time / date format for asn1map(). + * + * @access public + * @param String $format + */ + function setTimeFormat($format) + { + $this->format = $format; + } + + /** + * Load OIDs + * + * Load the relevant OIDs for a particular ASN.1 semantic mapping. + * + * @access public + * @param Array $oids + */ + function loadOIDs($oids) + { + $this->oids = $oids; + } + + /** + * Load filters + * + * See File_X509, etc, for an example. + * + * @access public + * @param Array $filters + */ + function loadFilters($filters) + { + $this->filters = $filters; + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param String $string + * @param optional Integer $index + * @return String + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * String type conversion + * + * This is a lazy conversion, dealing only with character size. + * No real conversion table is used. + * + * @param String $in + * @param optional Integer $from + * @param optional Integer $to + * @return String + * @access public + */ + function convert($in, $from = FILE_ASN1_TYPE_UTF8_STRING, $to = FILE_ASN1_TYPE_UTF8_STRING) + { + if (!isset($this->stringTypeSize[$from]) || !isset($this->stringTypeSize[$to])) { + return false; + } + $insize = $this->stringTypeSize[$from]; + $outsize = $this->stringTypeSize[$to]; + $inlength = strlen($in); + $out = ''; + + for ($i = 0; $i < $inlength;) { + if ($inlength - $i < $insize) { + return false; + } + + // Get an input character as a 32-bit value. + $c = ord($in[$i++]); + switch (true) { + case $insize == 4: + $c = ($c << 8) | ord($in[$i++]); + $c = ($c << 8) | ord($in[$i++]); + case $insize == 2: + $c = ($c << 8) | ord($in[$i++]); + case $insize == 1: + break; + case ($c & 0x80) == 0x00: + break; + case ($c & 0x40) == 0x00: + return false; + default: + $bit = 6; + do { + if ($bit > 25 || $i >= $inlength || (ord($in[$i]) & 0xC0) != 0x80) { + return false; + } + $c = ($c << 6) | (ord($in[$i++]) & 0x3F); + $bit += 5; + $mask = 1 << $bit; + } while ($c & $bit); + $c &= $mask - 1; + break; + } + + // Convert and append the character to output string. + $v = ''; + switch (true) { + case $outsize == 4: + $v .= chr($c & 0xFF); + $c >>= 8; + $v .= chr($c & 0xFF); + $c >>= 8; + case $outsize == 2: + $v .= chr($c & 0xFF); + $c >>= 8; + case $outsize == 1: + $v .= chr($c & 0xFF); + $c >>= 8; + if ($c) { + return false; + } + break; + case ($c & 0x80000000) != 0: + return false; + case $c >= 0x04000000: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x04000000; + case $c >= 0x00200000: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x00200000; + case $c >= 0x00010000: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x00010000; + case $c >= 0x00000800: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x00000800; + case $c >= 0x00000080: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x000000C0; + default: + $v .= chr($c); + break; + } + $out .= strrev($v); + } + return $out; + } +} diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/File/X509.php b/apps/files_external/3rdparty/phpseclib/phpseclib/File/X509.php new file mode 100644 index 0000000000..278da62e26 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/File/X509.php @@ -0,0 +1,4323 @@ + + * @copyright MMXII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id$ + * @link htp://phpseclib.sourceforge.net + */ + +/** + * Include File_ASN1 + */ +if (!class_exists('File_ASN1')) { + require_once('File/ASN1.php'); +} + +/** + * Flag to only accept signatures signed by certificate authorities + * + * @access public + * @see File_X509::validateSignature() + */ +define('FILE_X509_VALIDATE_SIGNATURE_BY_CA', 1); + +/**#@+ + * @access public + * @see File_X509::getDN() + */ +/** + * Return internal array representation + */ +define('FILE_X509_DN_ARRAY', 0); +/** + * Return string + */ +define('FILE_X509_DN_STRING', 1); +/** + * Return ASN.1 name string + */ +define('FILE_X509_DN_ASN1', 2); +/** + * Return OpenSSL compatible array + */ +define('FILE_X509_DN_OPENSSL', 3); +/** + * Return canonical ASN.1 RDNs string + */ +define('FILE_X509_DN_CANON', 4); +/** + * Return name hash for file indexing + */ +define('FILE_X509_DN_HASH', 5); +/**#@-*/ + +/**#@+ + * @access public + * @see File_X509::saveX509() + * @see File_X509::saveCSR() + * @see File_X509::saveCRL() + */ +/** + * Save as PEM + * + * ie. a base64-encoded PEM with a header and a footer + */ +define('FILE_X509_FORMAT_PEM', 0); +/** + * Save as DER + */ +define('FILE_X509_FORMAT_DER', 1); +/** + * Save as a SPKAC + * + * Only works on CSRs. Not currently supported. + */ +define('FILE_X509_FORMAT_SPKAC', 2); +/**#@-*/ + +/** + * Attribute value disposition. + * If disposition is >= 0, this is the index of the target value. + */ +define('FILE_X509_ATTR_ALL', -1); // All attribute values (array). +define('FILE_X509_ATTR_APPEND', -2); // Add a value. +define('FILE_X509_ATTR_REPLACE', -3); // Clear first, then add a value. + +/** + * Pure-PHP X.509 Parser + * + * @author Jim Wigginton + * @version 0.3.1 + * @access public + * @package File_X509 + */ +class File_X509 { + /** + * ASN.1 syntax for X.509 certificates + * + * @var Array + * @access private + */ + var $Certificate; + + /**#@+ + * ASN.1 syntax for various extensions + * + * @access private + */ + var $DirectoryString; + var $PKCS9String; + var $AttributeValue; + var $Extensions; + var $KeyUsage; + var $ExtKeyUsageSyntax; + var $BasicConstraints; + var $KeyIdentifier; + var $CRLDistributionPoints; + var $AuthorityKeyIdentifier; + var $CertificatePolicies; + var $AuthorityInfoAccessSyntax; + var $SubjectAltName; + var $PrivateKeyUsagePeriod; + var $IssuerAltName; + var $PolicyMappings; + var $NameConstraints; + + var $CPSuri; + var $UserNotice; + + var $netscape_cert_type; + var $netscape_comment; + var $netscape_ca_policy_url; + + var $Name; + var $RelativeDistinguishedName; + var $CRLNumber; + var $CRLReason; + var $IssuingDistributionPoint; + var $InvalidityDate; + var $CertificateIssuer; + var $HoldInstructionCode; + var $SignedPublicKeyAndChallenge; + /**#@-*/ + + /** + * ASN.1 syntax for Certificate Signing Requests (RFC2986) + * + * @var Array + * @access private + */ + var $CertificationRequest; + + /** + * ASN.1 syntax for Certificate Revocation Lists (RFC5280) + * + * @var Array + * @access private + */ + var $CertificateList; + + /** + * Distinguished Name + * + * @var Array + * @access private + */ + var $dn; + + /** + * Public key + * + * @var String + * @access private + */ + var $publicKey; + + /** + * Private key + * + * @var String + * @access private + */ + var $privateKey; + + /** + * Object identifiers for X.509 certificates + * + * @var Array + * @access private + * @link http://en.wikipedia.org/wiki/Object_identifier + */ + var $oids; + + /** + * The certificate authorities + * + * @var Array + * @access private + */ + var $CAs; + + /** + * The currently loaded certificate + * + * @var Array + * @access private + */ + var $currentCert; + + /** + * The signature subject + * + * There's no guarantee File_X509 is going to reencode an X.509 cert in the same way it was originally + * encoded so we take save the portion of the original cert that the signature would have made for. + * + * @var String + * @access private + */ + var $signatureSubject; + + /** + * Certificate Start Date + * + * @var String + * @access private + */ + var $startDate; + + /** + * Certificate End Date + * + * @var String + * @access private + */ + var $endDate; + + /** + * Serial Number + * + * @var String + * @access private + */ + var $serialNumber; + + /** + * Key Identifier + * + * See {@link http://tools.ietf.org/html/rfc5280#section-4.2.1.1 RFC5280#section-4.2.1.1} and + * {@link http://tools.ietf.org/html/rfc5280#section-4.2.1.2 RFC5280#section-4.2.1.2}. + * + * @var String + * @access private + */ + var $currentKeyIdentifier; + + /** + * CA Flag + * + * @var Boolean + * @access private + */ + var $caFlag = false; + + /** + * Default Constructor. + * + * @return File_X509 + * @access public + */ + function File_X509() + { + // Explicitly Tagged Module, 1988 Syntax + // http://tools.ietf.org/html/rfc5280#appendix-A.1 + + $this->DirectoryString = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'teletexString' => array('type' => FILE_ASN1_TYPE_TELETEX_STRING), + 'printableString' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING), + 'universalString' => array('type' => FILE_ASN1_TYPE_UNIVERSAL_STRING), + 'utf8String' => array('type' => FILE_ASN1_TYPE_UTF8_STRING), + 'bmpString' => array('type' => FILE_ASN1_TYPE_BMP_STRING) + ) + ); + + $this->PKCS9String = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'ia5String' => array('type' => FILE_ASN1_TYPE_IA5_STRING), + 'directoryString' => $this->DirectoryString + ) + ); + + $this->AttributeValue = array('type' => FILE_ASN1_TYPE_ANY); + + $AttributeType = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $AttributeTypeAndValue = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'type' => $AttributeType, + 'value'=> $this->AttributeValue + ) + ); + + /* + In practice, RDNs containing multiple name-value pairs (called "multivalued RDNs") are rare, + but they can be useful at times when either there is no unique attribute in the entry or you + want to ensure that the entry's DN contains some useful identifying information. + + - https://www.opends.org/wiki/page/DefinitionRelativeDistinguishedName + */ + $this->RelativeDistinguishedName = array( + 'type' => FILE_ASN1_TYPE_SET, + 'min' => 1, + 'max' => -1, + 'children' => $AttributeTypeAndValue + ); + + // http://tools.ietf.org/html/rfc5280#section-4.1.2.4 + $RDNSequence = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + // RDNSequence does not define a min or a max, which means it doesn't have one + 'min' => 0, + 'max' => -1, + 'children' => $this->RelativeDistinguishedName + ); + + $this->Name = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'rdnSequence' => $RDNSequence + ) + ); + + // http://tools.ietf.org/html/rfc5280#section-4.1.1.2 + $AlgorithmIdentifier = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'algorithm' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER), + 'parameters' => array( + 'type' => FILE_ASN1_TYPE_ANY, + 'optional' => true + ) + ) + ); + + /* + A certificate using system MUST reject the certificate if it encounters + a critical extension it does not recognize; however, a non-critical + extension may be ignored if it is not recognized. + + http://tools.ietf.org/html/rfc5280#section-4.2 + */ + $Extension = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'extnId' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER), + 'critical' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'optional' => true, + 'default' => false + ), + 'extnValue' => array('type' => FILE_ASN1_TYPE_OCTET_STRING) + ) + ); + + $this->Extensions = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + // technically, it's MAX, but we'll assume anything < 0 is MAX + 'max' => -1, + // if 'children' isn't an array then 'min' and 'max' must be defined + 'children' => $Extension + ); + + $SubjectPublicKeyInfo = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'algorithm' => $AlgorithmIdentifier, + 'subjectPublicKey' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + $UniqueIdentifier = array('type' => FILE_ASN1_TYPE_BIT_STRING); + + $Time = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'utcTime' => array('type' => FILE_ASN1_TYPE_UTC_TIME), + 'generalTime' => array('type' => FILE_ASN1_TYPE_GENERALIZED_TIME) + ) + ); + + // http://tools.ietf.org/html/rfc5280#section-4.1.2.5 + $Validity = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'notBefore' => $Time, + 'notAfter' => $Time + ) + ); + + $CertificateSerialNumber = array('type' => FILE_ASN1_TYPE_INTEGER); + + $Version = array( + 'type' => FILE_ASN1_TYPE_INTEGER, + 'mapping' => array('v1', 'v2', 'v3') + ); + + // assert($TBSCertificate['children']['signature'] == $Certificate['children']['signatureAlgorithm']) + $TBSCertificate = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + // technically, default implies optional, but we'll define it as being optional, none-the-less, just to + // reenforce that fact + 'version' => array( + 'constant' => 0, + 'optional' => true, + 'explicit' => true, + 'default' => 'v1' + ) + $Version, + 'serialNumber' => $CertificateSerialNumber, + 'signature' => $AlgorithmIdentifier, + 'issuer' => $this->Name, + 'validity' => $Validity, + 'subject' => $this->Name, + 'subjectPublicKeyInfo' => $SubjectPublicKeyInfo, + // implicit means that the T in the TLV structure is to be rewritten, regardless of the type + 'issuerUniqueID' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $UniqueIdentifier, + 'subjectUniqueID' => array( + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ) + $UniqueIdentifier, + // doesn't use the EXPLICIT keyword but if + // it's not IMPLICIT, it's EXPLICIT + 'extensions' => array( + 'constant' => 3, + 'optional' => true, + 'explicit' => true + ) + $this->Extensions + ) + ); + + $this->Certificate = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'tbsCertificate' => $TBSCertificate, + 'signatureAlgorithm' => $AlgorithmIdentifier, + 'signature' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + $this->KeyUsage = array( + 'type' => FILE_ASN1_TYPE_BIT_STRING, + 'mapping' => array( + 'digitalSignature', + 'nonRepudiation', + 'keyEncipherment', + 'dataEncipherment', + 'keyAgreement', + 'keyCertSign', + 'cRLSign', + 'encipherOnly', + 'decipherOnly' + ) + ); + + $this->BasicConstraints = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'cA' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'optional' => true, + 'default' => false + ), + 'pathLenConstraint' => array( + 'type' => FILE_ASN1_TYPE_INTEGER, + 'optional' => true + ) + ) + ); + + $this->KeyIdentifier = array('type' => FILE_ASN1_TYPE_OCTET_STRING); + + $OrganizationalUnitNames = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => 4, // ub-organizational-units + 'children' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ); + + $PersonalName = array( + 'type' => FILE_ASN1_TYPE_SET, + 'children' => array( + 'surname' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ), + 'given-name' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ), + 'initials' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ), + 'generation-qualifier' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 3, + 'optional' => true, + 'implicit' => true + ) + ) + ); + + $NumericUserIdentifier = array('type' => FILE_ASN1_TYPE_NUMERIC_STRING); + + $OrganizationName = array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING); + + $PrivateDomainName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'numeric' => array('type' => FILE_ASN1_TYPE_NUMERIC_STRING), + 'printable' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ) + ); + + $TerminalIdentifier = array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING); + + $NetworkAddress = array('type' => FILE_ASN1_TYPE_NUMERIC_STRING); + + $AdministrationDomainName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + // if class isn't present it's assumed to be FILE_ASN1_CLASS_UNIVERSAL or + // (if constant is present) FILE_ASN1_CLASS_CONTEXT_SPECIFIC + 'class' => FILE_ASN1_CLASS_APPLICATION, + 'cast' => 2, + 'children' => array( + 'numeric' => array('type' => FILE_ASN1_TYPE_NUMERIC_STRING), + 'printable' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ) + ); + + $CountryName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + // if class isn't present it's assumed to be FILE_ASN1_CLASS_UNIVERSAL or + // (if constant is present) FILE_ASN1_CLASS_CONTEXT_SPECIFIC + 'class' => FILE_ASN1_CLASS_APPLICATION, + 'cast' => 1, + 'children' => array( + 'x121-dcc-code' => array('type' => FILE_ASN1_TYPE_NUMERIC_STRING), + 'iso-3166-alpha2-code' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ) + ); + + $AnotherName = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'type-id' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER), + 'value' => array( + 'type' => FILE_ASN1_TYPE_ANY, + 'constant' => 0, + 'optional' => true, + 'explicit' => true + ) + ) + ); + + $ExtensionAttribute = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'extension-attribute-type' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ), + 'extension-attribute-value' => array( + 'type' => FILE_ASN1_TYPE_ANY, + 'constant' => 1, + 'optional' => true, + 'explicit' => true + ) + ) + ); + + $ExtensionAttributes = array( + 'type' => FILE_ASN1_TYPE_SET, + 'min' => 1, + 'max' => 256, // ub-extension-attributes + 'children' => $ExtensionAttribute + ); + + $BuiltInDomainDefinedAttribute = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'type' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING), + 'value' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ) + ); + + $BuiltInDomainDefinedAttributes = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => 4, // ub-domain-defined-attributes + 'children' => $BuiltInDomainDefinedAttribute + ); + + $BuiltInStandardAttributes = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'country-name' => array('optional' => true) + $CountryName, + 'administration-domain-name' => array('optional' => true) + $AdministrationDomainName, + 'network-address' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $NetworkAddress, + 'terminal-identifier' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $TerminalIdentifier, + 'private-domain-name' => array( + 'constant' => 2, + 'optional' => true, + 'explicit' => true + ) + $PrivateDomainName, + 'organization-name' => array( + 'constant' => 3, + 'optional' => true, + 'implicit' => true + ) + $OrganizationName, + 'numeric-user-identifier' => array( + 'constant' => 4, + 'optional' => true, + 'implicit' => true + ) + $NumericUserIdentifier, + 'personal-name' => array( + 'constant' => 5, + 'optional' => true, + 'implicit' => true + ) + $PersonalName, + 'organizational-unit-names' => array( + 'constant' => 6, + 'optional' => true, + 'implicit' => true + ) + $OrganizationalUnitNames + ) + ); + + $ORAddress = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'built-in-standard-attributes' => $BuiltInStandardAttributes, + 'built-in-domain-defined-attributes' => array('optional' => true) + $BuiltInDomainDefinedAttributes, + 'extension-attributes' => array('optional' => true) + $ExtensionAttributes + ) + ); + + $EDIPartyName = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'nameAssigner' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $this->DirectoryString, + // partyName is technically required but File_ASN1 doesn't currently support non-optional constants and + // setting it to optional gets the job done in any event. + 'partyName' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $this->DirectoryString + ) + ); + + $GeneralName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'otherName' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $AnotherName, + 'rfc822Name' => array( + 'type' => FILE_ASN1_TYPE_IA5_STRING, + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ), + 'dNSName' => array( + 'type' => FILE_ASN1_TYPE_IA5_STRING, + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ), + 'x400Address' => array( + 'constant' => 3, + 'optional' => true, + 'implicit' => true + ) + $ORAddress, + 'directoryName' => array( + 'constant' => 4, + 'optional' => true, + 'explicit' => true + ) + $this->Name, + 'ediPartyName' => array( + 'constant' => 5, + 'optional' => true, + 'implicit' => true + ) + $EDIPartyName, + 'uniformResourceIdentifier' => array( + 'type' => FILE_ASN1_TYPE_IA5_STRING, + 'constant' => 6, + 'optional' => true, + 'implicit' => true + ), + 'iPAddress' => array( + 'type' => FILE_ASN1_TYPE_OCTET_STRING, + 'constant' => 7, + 'optional' => true, + 'implicit' => true + ), + 'registeredID' => array( + 'type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER, + 'constant' => 8, + 'optional' => true, + 'implicit' => true + ) + ) + ); + + $GeneralNames = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $GeneralName + ); + + $this->IssuerAltName = $GeneralNames; + + $ReasonFlags = array( + 'type' => FILE_ASN1_TYPE_BIT_STRING, + 'mapping' => array( + 'unused', + 'keyCompromise', + 'cACompromise', + 'affiliationChanged', + 'superseded', + 'cessationOfOperation', + 'certificateHold', + 'privilegeWithdrawn', + 'aACompromise' + ) + ); + + $DistributionPointName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'fullName' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $GeneralNames, + 'nameRelativeToCRLIssuer' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $this->RelativeDistinguishedName + ) + ); + + $DistributionPoint = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'distributionPoint' => array( + 'constant' => 0, + 'optional' => true, + 'explicit' => true + ) + $DistributionPointName, + 'reasons' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $ReasonFlags, + 'cRLIssuer' => array( + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ) + $GeneralNames + ) + ); + + $this->CRLDistributionPoints = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $DistributionPoint + ); + + $this->AuthorityKeyIdentifier = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'keyIdentifier' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $this->KeyIdentifier, + 'authorityCertIssuer' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $GeneralNames, + 'authorityCertSerialNumber' => array( + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ) + $CertificateSerialNumber + ) + ); + + $PolicyQualifierId = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $PolicyQualifierInfo = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'policyQualifierId' => $PolicyQualifierId, + 'qualifier' => array('type' => FILE_ASN1_TYPE_ANY) + ) + ); + + $CertPolicyId = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $PolicyInformation = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'policyIdentifier' => $CertPolicyId, + 'policyQualifiers' => array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 0, + 'max' => -1, + 'optional' => true, + 'children' => $PolicyQualifierInfo + ) + ) + ); + + $this->CertificatePolicies = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $PolicyInformation + ); + + $this->PolicyMappings = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'issuerDomainPolicy' => $CertPolicyId, + 'subjectDomainPolicy' => $CertPolicyId + ) + ) + ); + + $KeyPurposeId = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $this->ExtKeyUsageSyntax = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $KeyPurposeId + ); + + $AccessDescription = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'accessMethod' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER), + 'accessLocation' => $GeneralName + ) + ); + + $this->AuthorityInfoAccessSyntax = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $AccessDescription + ); + + $this->SubjectAltName = $GeneralNames; + + $this->PrivateKeyUsagePeriod = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'notBefore' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true, + 'type' => FILE_ASN1_TYPE_GENERALIZED_TIME), + 'notAfter' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true, + 'type' => FILE_ASN1_TYPE_GENERALIZED_TIME) + ) + ); + + $BaseDistance = array('type' => FILE_ASN1_TYPE_INTEGER); + + $GeneralSubtree = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'base' => $GeneralName, + 'minimum' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true, + 'default' => new Math_BigInteger(0) + ) + $BaseDistance, + 'maximum' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true, + ) + $BaseDistance + ) + ); + + $GeneralSubtrees = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $GeneralSubtree + ); + + $this->NameConstraints = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'permittedSubtrees' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $GeneralSubtrees, + 'excludedSubtrees' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $GeneralSubtrees + ) + ); + + $this->CPSuri = array('type' => FILE_ASN1_TYPE_IA5_STRING); + + $DisplayText = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'ia5String' => array('type' => FILE_ASN1_TYPE_IA5_STRING), + 'visibleString' => array('type' => FILE_ASN1_TYPE_VISIBLE_STRING), + 'bmpString' => array('type' => FILE_ASN1_TYPE_BMP_STRING), + 'utf8String' => array('type' => FILE_ASN1_TYPE_UTF8_STRING) + ) + ); + + $NoticeReference = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'organization' => $DisplayText, + 'noticeNumbers' => array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => 200, + 'children' => array('type' => FILE_ASN1_TYPE_INTEGER) + ) + ) + ); + + $this->UserNotice = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'noticeRef' => array( + 'optional' => true, + 'implicit' => true + ) + $NoticeReference, + 'explicitText' => array( + 'optional' => true, + 'implicit' => true + ) + $DisplayText + ) + ); + + // mapping is from + $this->netscape_cert_type = array( + 'type' => FILE_ASN1_TYPE_BIT_STRING, + 'mapping' => array( + 'SSLClient', + 'SSLServer', + 'Email', + 'ObjectSigning', + 'Reserved', + 'SSLCA', + 'EmailCA', + 'ObjectSigningCA' + ) + ); + + $this->netscape_comment = array('type' => FILE_ASN1_TYPE_IA5_STRING); + $this->netscape_ca_policy_url = array('type' => FILE_ASN1_TYPE_IA5_STRING); + + // attribute is used in RFC2986 but we're using the RFC5280 definition + + $Attribute = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'type' => $AttributeType, + 'value'=> array( + 'type' => FILE_ASN1_TYPE_SET, + 'min' => 1, + 'max' => -1, + 'children' => $this->AttributeValue + ) + ) + ); + + // adapted from + + $Attributes = array( + 'type' => FILE_ASN1_TYPE_SET, + 'min' => 1, + 'max' => -1, + 'children' => $Attribute + ); + + $CertificationRequestInfo = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'version' => array( + 'type' => FILE_ASN1_TYPE_INTEGER, + 'mapping' => array('v1') + ), + 'subject' => $this->Name, + 'subjectPKInfo' => $SubjectPublicKeyInfo, + 'attributes' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $Attributes, + ) + ); + + $this->CertificationRequest = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'certificationRequestInfo' => $CertificationRequestInfo, + 'signatureAlgorithm' => $AlgorithmIdentifier, + 'signature' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + $RevokedCertificate = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'userCertificate' => $CertificateSerialNumber, + 'revocationDate' => $Time, + 'crlEntryExtensions' => array( + 'optional' => true + ) + $this->Extensions + ) + ); + + $TBSCertList = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'version' => array( + 'optional' => true, + 'default' => 'v1' + ) + $Version, + 'signature' => $AlgorithmIdentifier, + 'issuer' => $this->Name, + 'thisUpdate' => $Time, + 'nextUpdate' => array( + 'optional' => true + ) + $Time, + 'revokedCertificates' => array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'optional' => true, + 'min' => 0, + 'max' => -1, + 'children' => $RevokedCertificate + ), + 'crlExtensions' => array( + 'constant' => 0, + 'optional' => true, + 'explicit' => true + ) + $this->Extensions + ) + ); + + $this->CertificateList = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'tbsCertList' => $TBSCertList, + 'signatureAlgorithm' => $AlgorithmIdentifier, + 'signature' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + $this->CRLNumber = array('type' => FILE_ASN1_TYPE_INTEGER); + + $this->CRLReason = array('type' => FILE_ASN1_TYPE_ENUMERATED, + 'mapping' => array( + 'unspecified', + 'keyCompromise', + 'cACompromise', + 'affiliationChanged', + 'superseded', + 'cessationOfOperation', + 'certificateHold', + // Value 7 is not used. + 8 => 'removeFromCRL', + 'privilegeWithdrawn', + 'aACompromise' + ) + ); + + $this->IssuingDistributionPoint = array('type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'distributionPoint' => array( + 'constant' => 0, + 'optional' => true, + 'explicit' => true + ) + $DistributionPointName, + 'onlyContainsUserCerts' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'constant' => 1, + 'optional' => true, + 'default' => false, + 'implicit' => true + ), + 'onlyContainsCACerts' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'constant' => 2, + 'optional' => true, + 'default' => false, + 'implicit' => true + ), + 'onlySomeReasons' => array( + 'constant' => 3, + 'optional' => true, + 'implicit' => true + ) + $ReasonFlags, + 'indirectCRL' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'constant' => 4, + 'optional' => true, + 'default' => false, + 'implicit' => true + ), + 'onlyContainsAttributeCerts' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'constant' => 5, + 'optional' => true, + 'default' => false, + 'implicit' => true + ) + ) + ); + + $this->InvalidityDate = array('type' => FILE_ASN1_TYPE_GENERALIZED_TIME); + + $this->CertificateIssuer = $GeneralNames; + + $this->HoldInstructionCode = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $PublicKeyAndChallenge = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'spki' => $SubjectPublicKeyInfo, + 'challenge' => array('type' => FILE_ASN1_TYPE_IA5_STRING) + ) + ); + + $this->SignedPublicKeyAndChallenge = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'publicKeyAndChallenge' => $PublicKeyAndChallenge, + 'signatureAlgorithm' => $AlgorithmIdentifier, + 'signature' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + // OIDs from RFC5280 and those RFCs mentioned in RFC5280#section-4.1.1.2 + $this->oids = array( + '1.3.6.1.5.5.7' => 'id-pkix', + '1.3.6.1.5.5.7.1' => 'id-pe', + '1.3.6.1.5.5.7.2' => 'id-qt', + '1.3.6.1.5.5.7.3' => 'id-kp', + '1.3.6.1.5.5.7.48' => 'id-ad', + '1.3.6.1.5.5.7.2.1' => 'id-qt-cps', + '1.3.6.1.5.5.7.2.2' => 'id-qt-unotice', + '1.3.6.1.5.5.7.48.1' =>'id-ad-ocsp', + '1.3.6.1.5.5.7.48.2' => 'id-ad-caIssuers', + '1.3.6.1.5.5.7.48.3' => 'id-ad-timeStamping', + '1.3.6.1.5.5.7.48.5' => 'id-ad-caRepository', + '2.5.4' => 'id-at', + '2.5.4.41' => 'id-at-name', + '2.5.4.4' => 'id-at-surname', + '2.5.4.42' => 'id-at-givenName', + '2.5.4.43' => 'id-at-initials', + '2.5.4.44' => 'id-at-generationQualifier', + '2.5.4.3' => 'id-at-commonName', + '2.5.4.7' => 'id-at-localityName', + '2.5.4.8' => 'id-at-stateOrProvinceName', + '2.5.4.10' => 'id-at-organizationName', + '2.5.4.11' => 'id-at-organizationalUnitName', + '2.5.4.12' => 'id-at-title', + '2.5.4.13' => 'id-at-description', + '2.5.4.46' => 'id-at-dnQualifier', + '2.5.4.6' => 'id-at-countryName', + '2.5.4.5' => 'id-at-serialNumber', + '2.5.4.65' => 'id-at-pseudonym', + '2.5.4.17' => 'id-at-postalCode', + '2.5.4.9' => 'id-at-streetAddress', + '2.5.4.45' => 'id-at-uniqueIdentifier', + '2.5.4.72' => 'id-at-role', + + '0.9.2342.19200300.100.1.25' => 'id-domainComponent', + '1.2.840.113549.1.9' => 'pkcs-9', + '1.2.840.113549.1.9.1' => 'pkcs-9-at-emailAddress', + '2.5.29' => 'id-ce', + '2.5.29.35' => 'id-ce-authorityKeyIdentifier', + '2.5.29.14' => 'id-ce-subjectKeyIdentifier', + '2.5.29.15' => 'id-ce-keyUsage', + '2.5.29.16' => 'id-ce-privateKeyUsagePeriod', + '2.5.29.32' => 'id-ce-certificatePolicies', + '2.5.29.32.0' => 'anyPolicy', + + '2.5.29.33' => 'id-ce-policyMappings', + '2.5.29.17' => 'id-ce-subjectAltName', + '2.5.29.18' => 'id-ce-issuerAltName', + '2.5.29.9' => 'id-ce-subjectDirectoryAttributes', + '2.5.29.19' => 'id-ce-basicConstraints', + '2.5.29.30' => 'id-ce-nameConstraints', + '2.5.29.36' => 'id-ce-policyConstraints', + '2.5.29.31' => 'id-ce-cRLDistributionPoints', + '2.5.29.37' => 'id-ce-extKeyUsage', + '2.5.29.37.0' => 'anyExtendedKeyUsage', + '1.3.6.1.5.5.7.3.1' => 'id-kp-serverAuth', + '1.3.6.1.5.5.7.3.2' => 'id-kp-clientAuth', + '1.3.6.1.5.5.7.3.3' => 'id-kp-codeSigning', + '1.3.6.1.5.5.7.3.4' => 'id-kp-emailProtection', + '1.3.6.1.5.5.7.3.8' => 'id-kp-timeStamping', + '1.3.6.1.5.5.7.3.9' => 'id-kp-OCSPSigning', + '2.5.29.54' => 'id-ce-inhibitAnyPolicy', + '2.5.29.46' => 'id-ce-freshestCRL', + '1.3.6.1.5.5.7.1.1' => 'id-pe-authorityInfoAccess', + '1.3.6.1.5.5.7.1.11' => 'id-pe-subjectInfoAccess', + '2.5.29.20' => 'id-ce-cRLNumber', + '2.5.29.28' => 'id-ce-issuingDistributionPoint', + '2.5.29.27' => 'id-ce-deltaCRLIndicator', + '2.5.29.21' => 'id-ce-cRLReasons', + '2.5.29.29' => 'id-ce-certificateIssuer', + '2.5.29.23' => 'id-ce-holdInstructionCode', + '1.2.840.10040.2' => 'holdInstruction', + '1.2.840.10040.2.1' => 'id-holdinstruction-none', + '1.2.840.10040.2.2' => 'id-holdinstruction-callissuer', + '1.2.840.10040.2.3' => 'id-holdinstruction-reject', + '2.5.29.24' => 'id-ce-invalidityDate', + + '1.2.840.113549.2.2' => 'md2', + '1.2.840.113549.2.5' => 'md5', + '1.3.14.3.2.26' => 'id-sha1', + '1.2.840.10040.4.1' => 'id-dsa', + '1.2.840.10040.4.3' => 'id-dsa-with-sha1', + '1.2.840.113549.1.1' => 'pkcs-1', + '1.2.840.113549.1.1.1' => 'rsaEncryption', + '1.2.840.113549.1.1.2' => 'md2WithRSAEncryption', + '1.2.840.113549.1.1.4' => 'md5WithRSAEncryption', + '1.2.840.113549.1.1.5' => 'sha1WithRSAEncryption', + '1.2.840.10046.2.1' => 'dhpublicnumber', + '2.16.840.1.101.2.1.1.22' => 'id-keyExchangeAlgorithm', + '1.2.840.10045' => 'ansi-X9-62', + '1.2.840.10045.4' => 'id-ecSigType', + '1.2.840.10045.4.1' => 'ecdsa-with-SHA1', + '1.2.840.10045.1' => 'id-fieldType', + '1.2.840.10045.1.1' => 'prime-field', + '1.2.840.10045.1.2' => 'characteristic-two-field', + '1.2.840.10045.1.2.3' => 'id-characteristic-two-basis', + '1.2.840.10045.1.2.3.1' => 'gnBasis', + '1.2.840.10045.1.2.3.2' => 'tpBasis', + '1.2.840.10045.1.2.3.3' => 'ppBasis', + '1.2.840.10045.2' => 'id-publicKeyType', + '1.2.840.10045.2.1' => 'id-ecPublicKey', + '1.2.840.10045.3' => 'ellipticCurve', + '1.2.840.10045.3.0' => 'c-TwoCurve', + '1.2.840.10045.3.0.1' => 'c2pnb163v1', + '1.2.840.10045.3.0.2' => 'c2pnb163v2', + '1.2.840.10045.3.0.3' => 'c2pnb163v3', + '1.2.840.10045.3.0.4' => 'c2pnb176w1', + '1.2.840.10045.3.0.5' => 'c2pnb191v1', + '1.2.840.10045.3.0.6' => 'c2pnb191v2', + '1.2.840.10045.3.0.7' => 'c2pnb191v3', + '1.2.840.10045.3.0.8' => 'c2pnb191v4', + '1.2.840.10045.3.0.9' => 'c2pnb191v5', + '1.2.840.10045.3.0.10' => 'c2pnb208w1', + '1.2.840.10045.3.0.11' => 'c2pnb239v1', + '1.2.840.10045.3.0.12' => 'c2pnb239v2', + '1.2.840.10045.3.0.13' => 'c2pnb239v3', + '1.2.840.10045.3.0.14' => 'c2pnb239v4', + '1.2.840.10045.3.0.15' => 'c2pnb239v5', + '1.2.840.10045.3.0.16' => 'c2pnb272w1', + '1.2.840.10045.3.0.17' => 'c2pnb304w1', + '1.2.840.10045.3.0.18' => 'c2pnb359v1', + '1.2.840.10045.3.0.19' => 'c2pnb368w1', + '1.2.840.10045.3.0.20' => 'c2pnb431r1', + '1.2.840.10045.3.1' => 'primeCurve', + '1.2.840.10045.3.1.1' => 'prime192v1', + '1.2.840.10045.3.1.2' => 'prime192v2', + '1.2.840.10045.3.1.3' => 'prime192v3', + '1.2.840.10045.3.1.4' => 'prime239v1', + '1.2.840.10045.3.1.5' => 'prime239v2', + '1.2.840.10045.3.1.6' => 'prime239v3', + '1.2.840.10045.3.1.7' => 'prime256v1', + '1.2.840.113549.1.1.7' => 'id-RSAES-OAEP', + '1.2.840.113549.1.1.9' => 'id-pSpecified', + '1.2.840.113549.1.1.10' => 'id-RSASSA-PSS', + '1.2.840.113549.1.1.8' => 'id-mgf1', + '1.2.840.113549.1.1.14' => 'sha224WithRSAEncryption', + '1.2.840.113549.1.1.11' => 'sha256WithRSAEncryption', + '1.2.840.113549.1.1.12' => 'sha384WithRSAEncryption', + '1.2.840.113549.1.1.13' => 'sha512WithRSAEncryption', + '2.16.840.1.101.3.4.2.4' => 'id-sha224', + '2.16.840.1.101.3.4.2.1' => 'id-sha256', + '2.16.840.1.101.3.4.2.2' => 'id-sha384', + '2.16.840.1.101.3.4.2.3' => 'id-sha512', + '1.2.643.2.2.4' => 'id-GostR3411-94-with-GostR3410-94', + '1.2.643.2.2.3' => 'id-GostR3411-94-with-GostR3410-2001', + '1.2.643.2.2.20' => 'id-GostR3410-2001', + '1.2.643.2.2.19' => 'id-GostR3410-94', + // Netscape Object Identifiers from "Netscape Certificate Extensions" + '2.16.840.1.113730' => 'netscape', + '2.16.840.1.113730.1' => 'netscape-cert-extension', + '2.16.840.1.113730.1.1' => 'netscape-cert-type', + '2.16.840.1.113730.1.13' => 'netscape-comment', + '2.16.840.1.113730.1.8' => 'netscape-ca-policy-url', + // the following are X.509 extensions not supported by phpseclib + '1.3.6.1.5.5.7.1.12' => 'id-pe-logotype', + '1.2.840.113533.7.65.0' => 'entrustVersInfo', + '2.16.840.1.113733.1.6.9' => 'verisignPrivate', + // for Certificate Signing Requests + // see http://tools.ietf.org/html/rfc2985 + '1.2.840.113549.1.9.2' => 'pkcs-9-at-unstructuredName', // PKCS #9 unstructured name + '1.2.840.113549.1.9.7' => 'pkcs-9-at-challengePassword', // Challenge password for certificate revocations + '1.2.840.113549.1.9.14' => 'pkcs-9-at-extensionRequest' // Certificate extension request + ); + } + + /** + * Load X.509 certificate + * + * Returns an associative array describing the X.509 cert or a false if the cert failed to load + * + * @param String $cert + * @access public + * @return Mixed + */ + function loadX509($cert) + { + if (is_array($cert) && isset($cert['tbsCertificate'])) { + unset($this->currentCert); + unset($this->currentKeyIdentifier); + $this->dn = $cert['tbsCertificate']['subject']; + if (!isset($this->dn)) { + return false; + } + $this->currentCert = $cert; + + $currentKeyIdentifier = $this->getExtension('id-ce-subjectKeyIdentifier'); + $this->currentKeyIdentifier = is_string($currentKeyIdentifier) ? $currentKeyIdentifier : NULL; + + unset($this->signatureSubject); + + return $cert; + } + + $asn1 = new File_ASN1(); + + /* + X.509 certs are assumed to be base64 encoded but sometimes they'll have additional things in them above and beyond the ceritificate. ie. + some may have the following preceeding the -----BEGIN CERTIFICATE----- line: + + subject=/O=organization/OU=org unit/CN=common name + issuer=/O=organization/CN=common name + */ + $temp = preg_replace('#^(?:[^-].+[\r\n]+)+|-.+-|[\r\n]| #', '', $cert); + $temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false; + if ($temp != false) { + $cert = $temp; + } + + if ($cert === false) { + $this->currentCert = false; + return false; + } + + $asn1->loadOIDs($this->oids); + $decoded = $asn1->decodeBER($cert); + + if (!empty($decoded)) { + $x509 = $asn1->asn1map($decoded[0], $this->Certificate); + } + if (!isset($x509) || $x509 === false) { + $this->currentCert = false; + return false; + } + + $this->signatureSubject = substr($cert, $decoded[0]['content'][0]['start'], $decoded[0]['content'][0]['length']); + + $this->_mapInExtensions($x509, 'tbsCertificate/extensions', $asn1); + + $key = &$x509['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']; + $key = $this->_reformatKey($x509['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['algorithm'], $key); + + $this->currentCert = $x509; + $this->dn = $x509['tbsCertificate']['subject']; + + $currentKeyIdentifier = $this->getExtension('id-ce-subjectKeyIdentifier'); + $this->currentKeyIdentifier = is_string($currentKeyIdentifier) ? $currentKeyIdentifier : NULL; + + return $x509; + } + + /** + * Save X.509 certificate + * + * @param Array $cert + * @param Integer $format optional + * @access public + * @return String + */ + function saveX509($cert, $format = FILE_X509_FORMAT_PEM) + { + if (!is_array($cert) || !isset($cert['tbsCertificate'])) { + return false; + } + + switch (true) { + // "case !$a: case !$b: break; default: whatever();" is the same thing as "if ($a && $b) whatever()" + case !($algorithm = $this->_subArray($cert, 'tbsCertificate/subjectPublicKeyInfo/algorithm/algorithm')): + case is_object($cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']): + break; + default: + switch ($algorithm) { + case 'rsaEncryption': + $cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'] = + base64_encode("\0" . base64_decode(preg_replace('#-.+-|[\r\n]#', '', $cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']))); + } + } + + $asn1 = new File_ASN1(); + + $asn1->loadOIDs($this->oids); + + $filters = array(); + $filters['tbsCertificate']['signature']['parameters'] = + $filters['tbsCertificate']['signature']['issuer']['rdnSequence']['value'] = + $filters['tbsCertificate']['issuer']['rdnSequence']['value'] = + $filters['tbsCertificate']['subject']['rdnSequence']['value'] = + $filters['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['parameters'] = + $filters['signatureAlgorithm']['parameters'] = + $filters['authorityCertIssuer']['directoryName']['rdnSequence']['value'] = + //$filters['policyQualifiers']['qualifier'] = + $filters['distributionPoint']['fullName']['directoryName']['rdnSequence']['value'] = + $filters['directoryName']['rdnSequence']['value'] = + array('type' => FILE_ASN1_TYPE_UTF8_STRING); + /* in the case of policyQualifiers/qualifier, the type has to be FILE_ASN1_TYPE_IA5_STRING. + FILE_ASN1_TYPE_PRINTABLE_STRING will cause OpenSSL's X.509 parser to spit out random + characters. + */ + $filters['policyQualifiers']['qualifier'] = + array('type' => FILE_ASN1_TYPE_IA5_STRING); + + $asn1->loadFilters($filters); + + $this->_mapOutExtensions($cert, 'tbsCertificate/extensions', $asn1); + + $cert = $asn1->encodeDER($cert, $this->Certificate); + + switch ($format) { + case FILE_X509_FORMAT_DER: + return $cert; + // case FILE_X509_FORMAT_PEM: + default: + return "-----BEGIN CERTIFICATE-----\r\n" . chunk_split(base64_encode($cert), 64) . '-----END CERTIFICATE-----'; + } + } + + /** + * Map extension values from octet string to extension-specific internal + * format. + * + * @param Array ref $root + * @param String $path + * @param Object $asn1 + * @access private + */ + function _mapInExtensions(&$root, $path, $asn1) + { + $extensions = &$this->_subArray($root, $path); + + if (is_array($extensions)) { + for ($i = 0; $i < count($extensions); $i++) { + $id = $extensions[$i]['extnId']; + $value = &$extensions[$i]['extnValue']; + $value = base64_decode($value); + $decoded = $asn1->decodeBER($value); + /* [extnValue] contains the DER encoding of an ASN.1 value + corresponding to the extension type identified by extnID */ + $map = $this->_getMapping($id); + if (!is_bool($map)) { + $mapped = $asn1->asn1map($decoded[0], $map); + $value = $mapped === false ? $decoded[0] : $mapped; + + if ($id == 'id-ce-certificatePolicies') { + for ($j = 0; $j < count($value); $j++) { + if (!isset($value[$j]['policyQualifiers'])) { + continue; + } + for ($k = 0; $k < count($value[$j]['policyQualifiers']); $k++) { + $subid = $value[$j]['policyQualifiers'][$k]['policyQualifierId']; + $map = $this->_getMapping($subid); + $subvalue = &$value[$j]['policyQualifiers'][$k]['qualifier']; + if ($map !== false) { + $decoded = $asn1->decodeBER($subvalue); + $mapped = $asn1->asn1map($decoded[0], $map); + $subvalue = $mapped === false ? $decoded[0] : $mapped; + } + } + } + } + } elseif ($map) { + $value = base64_encode($value); + } + } + } + } + + /** + * Map extension values from extension-specific internal format to + * octet string. + * + * @param Array ref $root + * @param String $path + * @param Object $asn1 + * @access private + */ + function _mapOutExtensions(&$root, $path, $asn1) + { + $extensions = &$this->_subArray($root, $path); + + if (is_array($extensions)) { + $size = count($extensions); + for ($i = 0; $i < $size; $i++) { + $id = $extensions[$i]['extnId']; + $value = &$extensions[$i]['extnValue']; + + switch ($id) { + case 'id-ce-certificatePolicies': + for ($j = 0; $j < count($value); $j++) { + if (!isset($value[$j]['policyQualifiers'])) { + continue; + } + for ($k = 0; $k < count($value[$j]['policyQualifiers']); $k++) { + $subid = $value[$j]['policyQualifiers'][$k]['policyQualifierId']; + $map = $this->_getMapping($subid); + $subvalue = &$value[$j]['policyQualifiers'][$k]['qualifier']; + if ($map !== false) { + // by default File_ASN1 will try to render qualifier as a FILE_ASN1_TYPE_IA5_STRING since it's + // actual type is FILE_ASN1_TYPE_ANY + $subvalue = new File_ASN1_Element($asn1->encodeDER($subvalue, $map)); + } + } + } + break; + case 'id-ce-authorityKeyIdentifier': // use 00 as the serial number instead of an empty string + if (isset($value['authorityCertSerialNumber'])) { + if ($value['authorityCertSerialNumber']->toBytes() == '') { + $temp = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | 2) . "\1\0"; + $value['authorityCertSerialNumber'] = new File_ASN1_Element($temp); + } + } + } + + /* [extnValue] contains the DER encoding of an ASN.1 value + corresponding to the extension type identified by extnID */ + $map = $this->_getMapping($id); + if (is_bool($map)) { + if (!$map) { + user_error($id . ' is not a currently supported extension'); + unset($extensions[$i]); + } + } else { + $temp = $asn1->encodeDER($value, $map); + $value = base64_encode($temp); + } + } + } + } + + /** + * Map attribute values from ANY type to attribute-specific internal + * format. + * + * @param Array ref $root + * @param String $path + * @param Object $asn1 + * @access private + */ + function _mapInAttributes(&$root, $path, $asn1) + { + $attributes = &$this->_subArray($root, $path); + + if (is_array($attributes)) { + for ($i = 0; $i < count($attributes); $i++) { + $id = $attributes[$i]['type']; + /* $value contains the DER encoding of an ASN.1 value + corresponding to the attribute type identified by type */ + $map = $this->_getMapping($id); + if (is_array($attributes[$i]['value'])) { + $values = &$attributes[$i]['value']; + for ($j = 0; $j < count($values); $j++) { + $value = $asn1->encodeDER($values[$j], $this->AttributeValue); + $decoded = $asn1->decodeBER($value); + if (!is_bool($map)) { + $mapped = $asn1->asn1map($decoded[0], $map); + if ($mapped !== false) { + $values[$j] = $mapped; + } + if ($id == 'pkcs-9-at-extensionRequest') { + $this->_mapInExtensions($values, $j, $asn1); + } + } elseif ($map) { + $values[$j] = base64_encode($value); + } + } + } + } + } + } + + /** + * Map attribute values from attribute-specific internal format to + * ANY type. + * + * @param Array ref $root + * @param String $path + * @param Object $asn1 + * @access private + */ + function _mapOutAttributes(&$root, $path, $asn1) + { + $attributes = &$this->_subArray($root, $path); + + if (is_array($attributes)) { + $size = count($attributes); + for ($i = 0; $i < $size; $i++) { + /* [value] contains the DER encoding of an ASN.1 value + corresponding to the attribute type identified by type */ + $id = $attributes[$i]['type']; + $map = $this->_getMapping($id); + if ($map === false) { + user_error($id . ' is not a currently supported attribute', E_USER_NOTICE); + unset($attributes[$i]); + } + elseif (is_array($attributes[$i]['value'])) { + $values = &$attributes[$i]['value']; + for ($j = 0; $j < count($values); $j++) { + switch ($id) { + case 'pkcs-9-at-extensionRequest': + $this->_mapOutExtensions($values, $j, $asn1); + break; + } + + if (!is_bool($map)) { + $temp = $asn1->encodeDER($values[$j], $map); + $decoded = $asn1->decodeBER($temp); + $values[$j] = $asn1->asn1map($decoded[0], $this->AttributeValue); + } + } + } + } + } + } + + /** + * Associate an extension ID to an extension mapping + * + * @param String $extnId + * @access private + * @return Mixed + */ + function _getMapping($extnId) + { + if (!is_string($extnId)) { // eg. if it's a File_ASN1_Element object + return true; + } + + switch ($extnId) { + case 'id-ce-keyUsage': + return $this->KeyUsage; + case 'id-ce-basicConstraints': + return $this->BasicConstraints; + case 'id-ce-subjectKeyIdentifier': + return $this->KeyIdentifier; + case 'id-ce-cRLDistributionPoints': + return $this->CRLDistributionPoints; + case 'id-ce-authorityKeyIdentifier': + return $this->AuthorityKeyIdentifier; + case 'id-ce-certificatePolicies': + return $this->CertificatePolicies; + case 'id-ce-extKeyUsage': + return $this->ExtKeyUsageSyntax; + case 'id-pe-authorityInfoAccess': + return $this->AuthorityInfoAccessSyntax; + case 'id-ce-subjectAltName': + return $this->SubjectAltName; + case 'id-ce-privateKeyUsagePeriod': + return $this->PrivateKeyUsagePeriod; + case 'id-ce-issuerAltName': + return $this->IssuerAltName; + case 'id-ce-policyMappings': + return $this->PolicyMappings; + case 'id-ce-nameConstraints': + return $this->NameConstraints; + + case 'netscape-cert-type': + return $this->netscape_cert_type; + case 'netscape-comment': + return $this->netscape_comment; + case 'netscape-ca-policy-url': + return $this->netscape_ca_policy_url; + + // since id-qt-cps isn't a constructed type it will have already been decoded as a string by the time it gets + // back around to asn1map() and we don't want it decoded again. + //case 'id-qt-cps': + // return $this->CPSuri; + case 'id-qt-unotice': + return $this->UserNotice; + + // the following OIDs are unsupported but we don't want them to give notices when calling saveX509(). + case 'id-pe-logotype': // http://www.ietf.org/rfc/rfc3709.txt + case 'entrustVersInfo': + // http://support.microsoft.com/kb/287547 + case '1.3.6.1.4.1.311.20.2': // szOID_ENROLL_CERTTYPE_EXTENSION + case '1.3.6.1.4.1.311.21.1': // szOID_CERTSRV_CA_VERSION + // "SET Secure Electronic Transaction Specification" + // http://www.maithean.com/docs/set_bk3.pdf + case '2.23.42.7.0': // id-set-hashedRootKey + return true; + + // CSR attributes + case 'pkcs-9-at-unstructuredName': + return $this->PKCS9String; + case 'pkcs-9-at-challengePassword': + return $this->DirectoryString; + case 'pkcs-9-at-extensionRequest': + return $this->Extensions; + + // CRL extensions. + case 'id-ce-cRLNumber': + return $this->CRLNumber; + case 'id-ce-deltaCRLIndicator': + return $this->CRLNumber; + case 'id-ce-issuingDistributionPoint': + return $this->IssuingDistributionPoint; + case 'id-ce-freshestCRL': + return $this->CRLDistributionPoints; + case 'id-ce-cRLReasons': + return $this->CRLReason; + case 'id-ce-invalidityDate': + return $this->InvalidityDate; + case 'id-ce-certificateIssuer': + return $this->CertificateIssuer; + case 'id-ce-holdInstructionCode': + return $this->HoldInstructionCode; + } + + return false; + } + + /** + * Load an X.509 certificate as a certificate authority + * + * @param String $cert + * @access public + * @return Boolean + */ + function loadCA($cert) + { + $olddn = $this->dn; + $oldcert = $this->currentCert; + $oldsigsubj = $this->signatureSubject; + $oldkeyid = $this->currentKeyIdentifier; + + $cert = $this->loadX509($cert); + if (!$cert) { + $this->dn = $olddn; + $this->currentCert = $oldcert; + $this->signatureSubject = $oldsigsubj; + $this->currentKeyIdentifier = $oldkeyid; + + return false; + } + + /* From RFC5280 "PKIX Certificate and CRL Profile": + + If the keyUsage extension is present, then the subject public key + MUST NOT be used to verify signatures on certificates or CRLs unless + the corresponding keyCertSign or cRLSign bit is set. */ + //$keyUsage = $this->getExtension('id-ce-keyUsage'); + //if ($keyUsage && !in_array('keyCertSign', $keyUsage)) { + // return false; + //} + + /* From RFC5280 "PKIX Certificate and CRL Profile": + + The cA boolean indicates whether the certified public key may be used + to verify certificate signatures. If the cA boolean is not asserted, + then the keyCertSign bit in the key usage extension MUST NOT be + asserted. If the basic constraints extension is not present in a + version 3 certificate, or the extension is present but the cA boolean + is not asserted, then the certified public key MUST NOT be used to + verify certificate signatures. */ + //$basicConstraints = $this->getExtension('id-ce-basicConstraints'); + //if (!$basicConstraints || !$basicConstraints['cA']) { + // return false; + //} + + $this->CAs[] = $cert; + + $this->dn = $olddn; + $this->currentCert = $oldcert; + $this->signatureSubject = $oldsigsubj; + + return true; + } + + /** + * Validate an X.509 certificate against a URL + * + * From RFC2818 "HTTP over TLS": + * + * Matching is performed using the matching rules specified by + * [RFC2459]. If more than one identity of a given type is present in + * the certificate (e.g., more than one dNSName name, a match in any one + * of the set is considered acceptable.) Names may contain the wildcard + * character * which is considered to match any single domain name + * component or component fragment. E.g., *.a.com matches foo.a.com but + * not bar.foo.a.com. f*.com matches foo.com but not bar.com. + * + * @param String $url + * @access public + * @return Boolean + */ + function validateURL($url) + { + if (!is_array($this->currentCert) || !isset($this->currentCert['tbsCertificate'])) { + return false; + } + + $components = parse_url($url); + if (!isset($components['host'])) { + return false; + } + + if ($names = $this->getExtension('id-ce-subjectAltName')) { + foreach ($names as $key => $value) { + $value = str_replace(array('.', '*'), array('\.', '[^.]*'), $value); + switch ($key) { + case 'dNSName': + /* From RFC2818 "HTTP over TLS": + + If a subjectAltName extension of type dNSName is present, that MUST + be used as the identity. Otherwise, the (most specific) Common Name + field in the Subject field of the certificate MUST be used. Although + the use of the Common Name is existing practice, it is deprecated and + Certification Authorities are encouraged to use the dNSName instead. */ + if (preg_match('#^' . $value . '$#', $components['host'])) { + return true; + } + break; + case 'iPAddress': + /* From RFC2818 "HTTP over TLS": + + In some cases, the URI is specified as an IP address rather than a + hostname. In this case, the iPAddress subjectAltName must be present + in the certificate and must exactly match the IP in the URI. */ + if (preg_match('#(?:\d{1-3}\.){4}#', $components['host'] . '.') && preg_match('#^' . $value . '$#', $components['host'])) { + return true; + } + } + } + return false; + } + + if ($value = $this->getDNProp('id-at-commonName')) { + $value = str_replace(array('.', '*'), array('\.', '[^.]*'), $value[0]); + return preg_match('#^' . $value . '$#', $components['host']); + } + + return false; + } + + /** + * Validate a date + * + * If $date isn't defined it is assumed to be the current date. + * + * @param Integer $date optional + * @access public + */ + function validateDate($date = NULL) + { + if (!is_array($this->currentCert) || !isset($this->currentCert['tbsCertificate'])) { + return false; + } + + if (!isset($date)) { + $date = time(); + } + + $notBefore = $this->currentCert['tbsCertificate']['validity']['notBefore']; + $notBefore = isset($notBefore['generalTime']) ? $notBefore['generalTime'] : $notBefore['utcTime']; + + $notAfter = $this->currentCert['tbsCertificate']['validity']['notAfter']; + $notAfter = isset($notAfter['generalTime']) ? $notAfter['generalTime'] : $notAfter['utcTime']; + + switch (true) { + case $date < @strtotime($notBefore): + case $date > @strtotime($notAfter): + return false; + } + + return true; + } + + /** + * Validate a signature + * + * Works on X.509 certs, CSR's and CRL's. + * Returns true if the signature is verified, false if it is not correct or NULL on error + * + * The behavior of this function is inspired by {@link http://php.net/openssl-verify openssl_verify}. + * + * @param Integer $options optional + * @access public + * @return Mixed + */ + function validateSignature($options = 0) + { + if (!is_array($this->currentCert) || !isset($this->signatureSubject)) { + return 0; + } + + /* TODO: + "emailAddress attribute values are not case-sensitive (e.g., "subscriber@example.com" is the same as "SUBSCRIBER@EXAMPLE.COM")." + -- http://tools.ietf.org/html/rfc5280#section-4.1.2.6 + + implement pathLenConstraint in the id-ce-basicConstraints extension */ + + switch (true) { + case isset($this->currentCert['tbsCertificate']): + // self-signed cert + if ($this->currentCert['tbsCertificate']['issuer'] === $this->currentCert['tbsCertificate']['subject']) { + $authorityKey = $this->getExtension('id-ce-authorityKeyIdentifier'); + $subjectKeyID = $this->getExtension('id-ce-subjectKeyIdentifier'); + switch (true) { + case !is_array($authorityKey): + case is_array($authorityKey) && isset($authorityKey['keyIdentifier']) && $authorityKey['keyIdentifier'] === $subjectKeyID: + $signingCert = $this->currentCert; // working cert + } + } + + if (!empty($this->CAs)) { + for ($i = 0; $i < count($this->CAs); $i++) { + // even if the cert is a self-signed one we still want to see if it's a CA; + // if not, we'll conditionally return an error + $ca = $this->CAs[$i]; + if ($this->currentCert['tbsCertificate']['issuer'] === $ca['tbsCertificate']['subject']) { + $authorityKey = $this->getExtension('id-ce-authorityKeyIdentifier'); + $subjectKeyID = $this->getExtension('id-ce-subjectKeyIdentifier', $ca); + switch (true) { + case !is_array($authorityKey): + case is_array($authorityKey) && isset($authorityKey['keyIdentifier']) && $authorityKey['keyIdentifier'] === $subjectKeyID: + $signingCert = $ca; // working cert + break 2; + } + } + } + if (count($this->CAs) == $i && ($options & FILE_X509_VALIDATE_SIGNATURE_BY_CA)) { + return false; + } + } elseif (!isset($signingCert) || ($options & FILE_X509_VALIDATE_SIGNATURE_BY_CA)) { + return false; + } + return $this->_validateSignature( + $signingCert['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['algorithm'], + $signingCert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'], + $this->currentCert['signatureAlgorithm']['algorithm'], + substr(base64_decode($this->currentCert['signature']), 1), + $this->signatureSubject + ); + case isset($this->currentCert['certificationRequestInfo']): + return $this->_validateSignature( + $this->currentCert['certificationRequestInfo']['subjectPKInfo']['algorithm']['algorithm'], + $this->currentCert['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey'], + $this->currentCert['signatureAlgorithm']['algorithm'], + substr(base64_decode($this->currentCert['signature']), 1), + $this->signatureSubject + ); + case isset($this->currentCert['publicKeyAndChallenge']): + return $this->_validateSignature( + $this->currentCert['publicKeyAndChallenge']['spki']['algorithm']['algorithm'], + $this->currentCert['publicKeyAndChallenge']['spki']['subjectPublicKey'], + $this->currentCert['signatureAlgorithm']['algorithm'], + substr(base64_decode($this->currentCert['signature']), 1), + $this->signatureSubject + ); + case isset($this->currentCert['tbsCertList']): + if (!empty($this->CAs)) { + for ($i = 0; $i < count($this->CAs); $i++) { + $ca = $this->CAs[$i]; + if ($this->currentCert['tbsCertList']['issuer'] === $ca['tbsCertificate']['subject']) { + $authorityKey = $this->getExtension('id-ce-authorityKeyIdentifier'); + $subjectKeyID = $this->getExtension('id-ce-subjectKeyIdentifier', $ca); + switch (true) { + case !is_array($authorityKey): + case is_array($authorityKey) && isset($authorityKey['keyIdentifier']) && $authorityKey['keyIdentifier'] === $subjectKeyID: + $signingCert = $ca; // working cert + break 2; + } + } + } + } + if (!isset($signingCert)) { + return false; + } + return $this->_validateSignature( + $signingCert['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['algorithm'], + $signingCert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'], + $this->currentCert['signatureAlgorithm']['algorithm'], + substr(base64_decode($this->currentCert['signature']), 1), + $this->signatureSubject + ); + default: + return false; + } + } + + /** + * Validates a signature + * + * Returns true if the signature is verified, false if it is not correct or NULL on error + * + * @param String $publicKeyAlgorithm + * @param String $publicKey + * @param String $signatureAlgorithm + * @param String $signature + * @param String $signatureSubject + * @access private + * @return Integer + */ + function _validateSignature($publicKeyAlgorithm, $publicKey, $signatureAlgorithm, $signature, $signatureSubject) + { + switch ($publicKeyAlgorithm) { + case 'rsaEncryption': + if (!class_exists('Crypt_RSA')) { + require_once('Crypt/RSA.php'); + } + $rsa = new Crypt_RSA(); + $rsa->loadKey($publicKey); + + switch ($signatureAlgorithm) { + case 'md2WithRSAEncryption': + case 'md5WithRSAEncryption': + case 'sha1WithRSAEncryption': + case 'sha224WithRSAEncryption': + case 'sha256WithRSAEncryption': + case 'sha384WithRSAEncryption': + case 'sha512WithRSAEncryption': + $rsa->setHash(preg_replace('#WithRSAEncryption$#', '', $signatureAlgorithm)); + $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + if (!@$rsa->verify($signatureSubject, $signature)) { + return false; + } + break; + default: + return NULL; + } + break; + default: + return NULL; + } + + return true; + } + + /** + * Reformat public keys + * + * Reformats a public key to a format supported by phpseclib (if applicable) + * + * @param String $algorithm + * @param String $key + * @access private + * @return String + */ + function _reformatKey($algorithm, $key) + { + switch ($algorithm) { + case 'rsaEncryption': + return + "-----BEGIN PUBLIC KEY-----\r\n" . + // subjectPublicKey is stored as a bit string in X.509 certs. the first byte of a bit string represents how many bits + // in the last byte should be ignored. the following only supports non-zero stuff but as none of the X.509 certs Firefox + // uses as a cert authority actually use a non-zero bit I think it's safe to assume that none do. + chunk_split(base64_encode(substr(base64_decode($key), 1)), 64) . + '-----END PUBLIC KEY-----'; + default: + return $key; + } + } + + /** + * "Normalizes" a Distinguished Name property + * + * @param String $propName + * @access private + * @return Mixed + */ + function _translateDNProp($propName) + { + switch (strtolower($propName)) { + case 'id-at-countryname': + case 'countryname': + case 'c': + return 'id-at-countryName'; + case 'id-at-organizationname': + case 'organizationname': + case 'o': + return 'id-at-organizationName'; + case 'id-at-dnqualifier': + case 'dnqualifier': + return 'id-at-dnQualifier'; + case 'id-at-commonname': + case 'commonname': + case 'cn': + return 'id-at-commonName'; + case 'id-at-stateorprovinceName': + case 'stateorprovincename': + case 'state': + case 'province': + case 'provincename': + case 'st': + return 'id-at-stateOrProvinceName'; + case 'id-at-localityname': + case 'localityname': + case 'l': + return 'id-at-localityName'; + case 'id-emailaddress': + case 'emailaddress': + return 'pkcs-9-at-emailAddress'; + case 'id-at-serialnumber': + case 'serialnumber': + return 'id-at-serialNumber'; + case 'id-at-postalcode': + case 'postalcode': + return 'id-at-postalCode'; + case 'id-at-streetaddress': + case 'streetaddress': + return 'id-at-streetAddress'; + case 'id-at-name': + case 'name': + return 'id-at-name'; + case 'id-at-givenname': + case 'givenname': + return 'id-at-givenName'; + case 'id-at-surname': + case 'surname': + case 'sn': + return 'id-at-surname'; + case 'id-at-initials': + case 'initials': + return 'id-at-initials'; + case 'id-at-generationqualifier': + case 'generationqualifier': + return 'id-at-generationQualifier'; + case 'id-at-organizationalunitname': + case 'organizationalunitname': + case 'ou': + return 'id-at-organizationalUnitName'; + case 'id-at-pseudonym': + case 'pseudonym': + return 'id-at-pseudonym'; + case 'id-at-title': + case 'title': + return 'id-at-title'; + case 'id-at-description': + case 'description': + return 'id-at-description'; + case 'id-at-role': + case 'role': + return 'id-at-role'; + case 'id-at-uniqueidentifier': + case 'uniqueidentifier': + case 'x500uniqueidentifier': + return 'id-at-uniqueIdentifier'; + default: + return false; + } + } + + /** + * Set a Distinguished Name property + * + * @param String $propName + * @param Mixed $propValue + * @param String $type optional + * @access public + * @return Boolean + */ + function setDNProp($propName, $propValue, $type = 'utf8String') + { + if (empty($this->dn)) { + $this->dn = array('rdnSequence' => array()); + } + + if (($propName = $this->_translateDNProp($propName)) === false) { + return false; + } + + foreach ((array) $propValue as $v) { + if (!is_array($v) && isset($type)) { + $v = array($type => $v); + } + $this->dn['rdnSequence'][] = array( + array( + 'type' => $propName, + 'value'=> $v + ) + ); + } + + return true; + } + + /** + * Remove Distinguished Name properties + * + * @param String $propName + * @access public + */ + function removeDNProp($propName) + { + if (empty($this->dn)) { + return; + } + + if (($propName = $this->_translateDNProp($propName)) === false) { + return; + } + + $dn = &$this->dn['rdnSequence']; + $size = count($dn); + for ($i = 0; $i < $size; $i++) { + if ($dn[$i][0]['type'] == $propName) { + unset($dn[$i]); + } + } + + $dn = array_values($dn); + } + + /** + * Get Distinguished Name properties + * + * @param String $propName + * @param Array $dn optional + * @param Boolean $withType optional + * @return Mixed + * @access public + */ + function getDNProp($propName, $dn = NULL, $withType = false) + { + if (!isset($dn)) { + $dn = $this->dn; + } + + if (empty($dn)) { + return false; + } + + if (($propName = $this->_translateDNProp($propName)) === false) { + return false; + } + + $dn = $dn['rdnSequence']; + $result = array(); + $asn1 = new File_ASN1(); + for ($i = 0; $i < count($dn); $i++) { + if ($dn[$i][0]['type'] == $propName) { + $v = $dn[$i][0]['value']; + if (!$withType && is_array($v)) { + foreach ($v as $type => $s) { + $type = array_search($type, $asn1->ANYmap, true); + if ($type !== false && isset($asn1->stringTypeSize[$type])) { + $s = $asn1->convert($s, $type); + if ($s !== false) { + $v = $s; + break; + } + } + } + if (is_array($v)) { + $v = array_pop($v); // Always strip data type. + } + } + $result[] = $v; + } + } + + return $result; + } + + /** + * Set a Distinguished Name + * + * @param Mixed $dn + * @param Boolean $merge optional + * @param String $type optional + * @access public + * @return Boolean + */ + function setDN($dn, $merge = false, $type = 'utf8String') + { + if (!$merge) { + $this->dn = NULL; + } + + if (is_array($dn)) { + if (isset($dn['rdnSequence'])) { + $this->dn = $dn; // No merge here. + return true; + } + + // handles stuff generated by openssl_x509_parse() + foreach ($dn as $prop => $value) { + if (!$this->setDNProp($prop, $value, $type)) { + return false; + } + } + return true; + } + + // handles everything else + $results = preg_split('#((?:^|, *|/)(?:C=|O=|OU=|CN=|L=|ST=|SN=|postalCode=|streetAddress=|emailAddress=|serialNumber=|organizationalUnitName=|title=|description=|role=|x500UniqueIdentifier=))#', $dn, -1, PREG_SPLIT_DELIM_CAPTURE); + for ($i = 1; $i < count($results); $i+=2) { + $prop = trim($results[$i], ', =/'); + $value = $results[$i + 1]; + if (!$this->setDNProp($prop, $value, $type)) { + return false; + } + } + + return true; + } + + /** + * Get the Distinguished Name for a certificates subject + * + * @param Mixed $format optional + * @param Array $dn optional + * @access public + * @return Boolean + */ + function getDN($format = FILE_X509_DN_ARRAY, $dn = NULL) + { + if (!isset($dn)) { + $dn = isset($this->currentCert['tbsCertList']) ? $this->currentCert['tbsCertList']['issuer'] : $this->dn; + } + + switch ((int) $format) { + case FILE_X509_DN_ARRAY: + return $dn; + case FILE_X509_DN_ASN1: + $asn1 = new File_ASN1(); + $asn1->loadOIDs($this->oids); + $filters = array(); + $filters['rdnSequence']['value'] = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + $asn1->loadFilters($filters); + return $asn1->encodeDER($dn, $this->Name); + case FILE_X509_DN_OPENSSL: + $dn = $this->getDN(FILE_X509_DN_STRING, $dn); + if ($dn === false) { + return false; + } + $attrs = preg_split('#((?:^|, *|/)[a-z][a-z0-9]*=)#i', $dn, -1, PREG_SPLIT_DELIM_CAPTURE); + $dn = array(); + for ($i = 1; $i < count($attrs); $i += 2) { + $prop = trim($attrs[$i], ', =/'); + $value = $attrs[$i + 1]; + if (!isset($dn[$prop])) { + $dn[$prop] = $value; + } else { + $dn[$prop] = array_merge((array) $dn[$prop], array($value)); + } + } + return $dn; + case FILE_X509_DN_CANON: + // No SEQUENCE around RDNs and all string values normalized as + // trimmed lowercase UTF-8 with all spacing as one blank. + $asn1 = new File_ASN1(); + $asn1->loadOIDs($this->oids); + $filters = array(); + $filters['value'] = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + $asn1->loadFilters($filters); + $result = ''; + foreach ($dn['rdnSequence'] as $rdn) { + foreach ($rdn as &$attr) { + if (is_array($attr['value'])) { + foreach ($attr['value'] as $type => $v) { + $type = array_search($type, $asn1->ANYmap, true); + if ($type !== false && isset($asn1->stringTypeSize[$type])) { + $v = $asn1->convert($v, $type); + if ($v !== false) { + $v = preg_replace('/\s+/', ' ', $v); + $attr['value'] = strtolower(trim($v)); + break; + } + } + } + } + } + $result .= $asn1->encodeDER($rdn, $this->RelativeDistinguishedName); + } + return $result; + case FILE_X509_DN_HASH: + $dn = $this->getDN(FILE_X509_DN_CANON, $dn); + if (!class_exists('Crypt_Hash')) { + require_once('Crypt/Hash.php'); + } + $hash = new Crypt_Hash('sha1'); + $hash = $hash->hash($dn); + extract(unpack('Vhash', $hash)); + return strtolower(bin2hex(pack('N', $hash))); + } + + // Defaut is to return a string. + $start = true; + $output = ''; + $asn1 = new File_ASN1(); + foreach ($dn['rdnSequence'] as $field) { + $prop = $field[0]['type']; + $value = $field[0]['value']; + + $delim = ', '; + switch ($prop) { + case 'id-at-countryName': + $desc = 'C='; + break; + case 'id-at-stateOrProvinceName': + $desc = 'ST='; + break; + case 'id-at-organizationName': + $desc = 'O='; + break; + case 'id-at-organizationalUnitName': + $desc = 'OU='; + break; + case 'id-at-commonName': + $desc = 'CN='; + break; + case 'id-at-localityName': + $desc = 'L='; + break; + case 'id-at-surname': + $desc = 'SN='; + break; + case 'id-at-uniqueIdentifier': + $delim = '/'; + $desc = 'x500UniqueIdentifier='; + break; + default: + $delim = '/'; + $desc = preg_replace('#.+-([^-]+)$#', '$1', $prop) . '='; + } + + if (!$start) { + $output.= $delim; + } + if (is_array($value)) { + foreach ($value as $type => $v) { + $type = array_search($type, $asn1->ANYmap, true); + if ($type !== false && isset($asn1->stringTypeSize[$type])) { + $v = $asn1->convert($v, $type); + if ($v !== false) { + $value = $v; + break; + } + } + } + if (is_array($value)) { + $value = array_pop($value); // Always strip data type. + } + } + $output.= $desc . $value; + $start = false; + } + + return $output; + } + + /** + * Get the Distinguished Name for a certificate/crl issuer + * + * @param Integer $format optional + * @access public + * @return Mixed + */ + function getIssuerDN($format = FILE_X509_DN_ARRAY) + { + switch (true) { + case !isset($this->currentCert) || !is_array($this->currentCert): + break; + case isset($this->currentCert['tbsCertificate']): + return $this->getDN($format, $this->currentCert['tbsCertificate']['issuer']); + case isset($this->currentCert['tbsCertList']): + return $this->getDN($format, $this->currentCert['tbsCertList']['issuer']); + } + + return false; + } + + /** + * Get the Distinguished Name for a certificate/csr subject + * Alias of getDN() + * + * @param Integer $format optional + * @access public + * @return Mixed + */ + function getSubjectDN($format = FILE_X509_DN_ARRAY) + { + switch (true) { + case !empty($this->dn): + return $this->getDN($format); + case !isset($this->currentCert) || !is_array($this->currentCert): + break; + case isset($this->currentCert['tbsCertificate']): + return $this->getDN($format, $this->currentCert['tbsCertificate']['subject']); + case isset($this->currentCert['certificationRequestInfo']): + return $this->getDN($format, $this->currentCert['certificationRequestInfo']['subject']); + } + + return false; + } + + /** + * Get an individual Distinguished Name property for a certificate/crl issuer + * + * @param String $propName + * @param Boolean $withType optional + * @access public + * @return Mixed + */ + function getIssuerDNProp($propName, $withType = false) + { + switch (true) { + case !isset($this->currentCert) || !is_array($this->currentCert): + break; + case isset($this->currentCert['tbsCertificate']): + return $this->getDNProp($propname, $this->currentCert['tbsCertificate']['issuer'], $withType); + case isset($this->currentCert['tbsCertList']): + return $this->getDNProp($propname, $this->currentCert['tbsCertList']['issuer'], $withType); + } + + return false; + } + + /** + * Get an individual Distinguished Name property for a certificate/csr subject + * + * @param String $propName + * @param Boolean $withType optional + * @access public + * @return Mixed + */ + function getSubjectDNProp($propName, $withType = false) + { + switch (true) { + case !empty($this->dn): + return $this->getDNProp($propName, NULL, $withType); + case !isset($this->currentCert) || !is_array($this->currentCert): + break; + case isset($this->currentCert['tbsCertificate']): + return $this->getDNProp($propName, $this->currentCert['tbsCertificate']['subject'], $withType); + case isset($this->currentCert['certificationRequestInfo']): + return $this->getDNProp($propname, $this->currentCert['certificationRequestInfo']['subject'], $withType); + } + + return false; + } + + /** + * Get the certificate chain for the current cert + * + * @access public + * @return Mixed + */ + function getChain() + { + $chain = array($this->currentCert); + + if (!is_array($this->currentCert) || !isset($this->currentCert['tbsCertificate'])) { + return false; + } + if (empty($this->CAs)) { + return $chain; + } + while (true) { + $currentCert = $chain[count($chain) - 1]; + for ($i = 0; $i < count($this->CAs); $i++) { + $ca = $this->CAs[$i]; + if ($currentCert['tbsCertificate']['issuer'] === $ca['tbsCertificate']['subject']) { + $authorityKey = $this->getExtension('id-ce-authorityKeyIdentifier', $currentCert); + $subjectKeyID = $this->getExtension('id-ce-subjectKeyIdentifier', $ca); + switch (true) { + case !is_array($authorityKey): + case is_array($authorityKey) && isset($authorityKey['keyIdentifier']) && $authorityKey['keyIdentifier'] === $subjectKeyID: + if ($currentCert === $ca) { + break 3; + } + $chain[] = $ca; + break 2; + } + } + } + if ($i == count($this->CAs)) { + break; + } + } + foreach ($chain as $key=>$value) { + $chain[$key] = new File_X509(); + $chain[$key]->loadX509($value); + } + return $chain; + } + + /** + * Set public key + * + * Key needs to be a Crypt_RSA object + * + * @param Object $key + * @access public + * @return Boolean + */ + function setPublicKey($key) + { + $this->publicKey = $key; + } + + /** + * Set private key + * + * Key needs to be a Crypt_RSA object + * + * @param Object $key + * @access public + */ + function setPrivateKey($key) + { + $this->privateKey = $key; + } + + /** + * Gets the public key + * + * Returns a Crypt_RSA object or a false. + * + * @access public + * @return Mixed + */ + function getPublicKey() + { + if (isset($this->publicKey)) { + return $this->publicKey; + } + + if (isset($this->currentCert) && is_array($this->currentCert)) { + foreach (array('tbsCertificate/subjectPublicKeyInfo', 'certificationRequestInfo/subjectPKInfo') as $path) { + $keyinfo = $this->_subArray($this->currentCert, $path); + if (!empty($keyinfo)) { + break; + } + } + } + if (empty($keyinfo)) { + return false; + } + + $key = $keyinfo['subjectPublicKey']; + + switch ($keyinfo['algorithm']['algorithm']) { + case 'rsaEncryption': + if (!class_exists('Crypt_RSA')) { + require_once('Crypt/RSA.php'); + } + $publicKey = new Crypt_RSA(); + $publicKey->loadKey($key); + $publicKey->setPublicKey(); + break; + default: + return false; + } + + return $publicKey; + } + + /** + * Load a Certificate Signing Request + * + * @param String $csr + * @access public + * @return Mixed + */ + function loadCSR($csr) + { + if (is_array($csr) && isset($csr['certificationRequestInfo'])) { + unset($this->currentCert); + unset($this->currentKeyIdentifier); + unset($this->signatureSubject); + $this->dn = $csr['certificationRequestInfo']['subject']; + if (!isset($this->dn)) { + return false; + } + + $this->currentCert = $csr; + return $csr; + } + + // see http://tools.ietf.org/html/rfc2986 + + $asn1 = new File_ASN1(); + + $temp = preg_replace('#^(?:[^-].+[\r\n]+)+|-.+-|[\r\n]| #', '', $csr); + $temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false; + if ($temp != false) { + $csr = $temp; + } + $orig = $csr; + + if ($csr === false) { + $this->currentCert = false; + return false; + } + + $asn1->loadOIDs($this->oids); + $decoded = $asn1->decodeBER($csr); + + if (empty($decoded)) { + $this->currentCert = false; + return false; + } + + $csr = $asn1->asn1map($decoded[0], $this->CertificationRequest); + if (!isset($csr) || $csr === false) { + $this->currentCert = false; + return false; + } + + $this->dn = $csr['certificationRequestInfo']['subject']; + $this->_mapInAttributes($csr, 'certificationRequestInfo/attributes', $asn1); + + $this->signatureSubject = substr($orig, $decoded[0]['content'][0]['start'], $decoded[0]['content'][0]['length']); + + $algorithm = &$csr['certificationRequestInfo']['subjectPKInfo']['algorithm']['algorithm']; + $key = &$csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey']; + $key = $this->_reformatKey($algorithm, $key); + + switch ($algorithm) { + case 'rsaEncryption': + if (!class_exists('Crypt_RSA')) { + require_once('Crypt/RSA.php'); + } + $this->publicKey = new Crypt_RSA(); + $this->publicKey->loadKey($key); + $this->publicKey->setPublicKey(); + break; + default: + $this->publicKey = NULL; + } + + $this->currentKeyIdentifier = NULL; + $this->currentCert = $csr; + + return $csr; + } + + /** + * Save CSR request + * + * @param Array $csr + * @param Integer $format optional + * @access public + * @return String + */ + function saveCSR($csr, $format = FILE_X509_FORMAT_PEM) + { + if (!is_array($csr) || !isset($csr['certificationRequestInfo'])) { + return false; + } + + switch (true) { + case !($algorithm = $this->_subArray($csr, 'certificationRequestInfo/subjectPKInfo/algorithm/algorithm')): + case is_object($csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey']); + break; + default: + switch ($algorithm) { + case 'rsaEncryption': + $csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey'] = + base64_encode("\0" . base64_decode(preg_replace('#-.+-|[\r\n]#', '', $csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey']))); + } + } + + $asn1 = new File_ASN1(); + + $asn1->loadOIDs($this->oids); + + $filters = array(); + $filters['certificationRequestInfo']['subject']['rdnSequence']['value'] = + array('type' => FILE_ASN1_TYPE_UTF8_STRING); + + $asn1->loadFilters($filters); + + $this->_mapOutAttributes($csr, 'certificationRequestInfo/attributes', $asn1); + $csr = $asn1->encodeDER($csr, $this->CertificationRequest); + + switch ($format) { + case FILE_X509_FORMAT_DER: + return $csr; + // case FILE_X509_FORMAT_PEM: + default: + return "-----BEGIN CERTIFICATE REQUEST-----\r\n" . chunk_split(base64_encode($csr), 64) . '-----END CERTIFICATE REQUEST-----'; + } + } + + /** + * Load a SPKAC CSR + * + * SPKAC's are produced by the HTML5 keygen element: + * + * https://developer.mozilla.org/en-US/docs/HTML/Element/keygen + * + * @param String $csr + * @access public + * @return Mixed + */ + function loadSPKAC($csr) + { + if (is_array($csr) && isset($csr['publicKeyAndChallenge'])) { + unset($this->currentCert); + unset($this->currentKeyIdentifier); + unset($this->signatureSubject); + $this->currentCert = $csr; + return $csr; + } + + // see http://www.w3.org/html/wg/drafts/html/master/forms.html#signedpublickeyandchallenge + + $asn1 = new File_ASN1(); + + $temp = preg_replace('#(?:^[^=]+=)|[\r\n\\\]#', '', $csr); + $temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false; + if ($temp != false) { + $csr = $temp; + } + $orig = $csr; + + if ($csr === false) { + $this->currentCert = false; + return false; + } + + $asn1->loadOIDs($this->oids); + $decoded = $asn1->decodeBER($csr); + + if (empty($decoded)) { + $this->currentCert = false; + return false; + } + + $csr = $asn1->asn1map($decoded[0], $this->SignedPublicKeyAndChallenge); + + if (!isset($csr) || $csr === false) { + $this->currentCert = false; + return false; + } + + $this->signatureSubject = substr($orig, $decoded[0]['content'][0]['start'], $decoded[0]['content'][0]['length']); + + $algorithm = &$csr['publicKeyAndChallenge']['spki']['algorithm']['algorithm']; + $key = &$csr['publicKeyAndChallenge']['spki']['subjectPublicKey']; + $key = $this->_reformatKey($algorithm, $key); + + switch ($algorithm) { + case 'rsaEncryption': + if (!class_exists('Crypt_RSA')) { + require_once('Crypt/RSA.php'); + } + $this->publicKey = new Crypt_RSA(); + $this->publicKey->loadKey($key); + $this->publicKey->setPublicKey(); + break; + default: + $this->publicKey = NULL; + } + + $this->currentKeyIdentifier = NULL; + $this->currentCert = $csr; + + return $csr; + } + + /** + * Load a Certificate Revocation List + * + * @param String $crl + * @access public + * @return Mixed + */ + function loadCRL($crl) + { + if (is_array($crl) && isset($crl['tbsCertList'])) { + $this->currentCert = $crl; + unset($this->signatureSubject); + return $crl; + } + + $asn1 = new File_ASN1(); + + $temp = preg_replace('#^(?:[^-].+[\r\n]+)+|-.+-|[\r\n]| #', '', $crl); + $temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false; + if ($temp != false) { + $crl = $temp; + } + $orig = $crl; + + if ($crl === false) { + $this->currentCert = false; + return false; + } + + $asn1->loadOIDs($this->oids); + $decoded = $asn1->decodeBER($crl); + + if (empty($decoded)) { + $this->currentCert = false; + return false; + } + + $crl = $asn1->asn1map($decoded[0], $this->CertificateList); + if (!isset($crl) || $crl === false) { + $this->currentCert = false; + return false; + } + + $this->signatureSubject = substr($orig, $decoded[0]['content'][0]['start'], $decoded[0]['content'][0]['length']); + + $this->_mapInExtensions($crl, 'tbsCertList/crlExtensions', $asn1); + $rclist = &$this->_subArray($crl,'tbsCertList/revokedCertificates'); + if (is_array($rclist)) { + foreach ($rclist as $i => $extension) { + $this->_mapInExtensions($rclist, "$i/crlEntryExtensions", $asn1); + } + } + + $this->currentKeyIdentifier = NULL; + $this->currentCert = $crl; + + return $crl; + } + + /** + * Save Certificate Revocation List. + * + * @param Array $crl + * @param Integer $format optional + * @access public + * @return String + */ + function saveCRL($crl, $format = FILE_X509_FORMAT_PEM) + { + if (!is_array($crl) || !isset($crl['tbsCertList'])) { + return false; + } + + $asn1 = new File_ASN1(); + + $asn1->loadOIDs($this->oids); + + $filters = array(); + $filters['tbsCertList']['issuer']['rdnSequence']['value'] = + $filters['tbsCertList']['signature']['parameters'] = + $filters['signatureAlgorithm']['parameters'] = + array('type' => FILE_ASN1_TYPE_UTF8_STRING); + + if (empty($crl['tbsCertList']['signature']['parameters'])) { + $filters['tbsCertList']['signature']['parameters'] = + array('type' => FILE_ASN1_TYPE_NULL); + } + + if (empty($crl['signatureAlgorithm']['parameters'])) { + $filters['signatureAlgorithm']['parameters'] = + array('type' => FILE_ASN1_TYPE_NULL); + } + + $asn1->loadFilters($filters); + + $this->_mapOutExtensions($crl, 'tbsCertList/crlExtensions', $asn1); + $rclist = &$this->_subArray($crl,'tbsCertList/revokedCertificates'); + if (is_array($rclist)) { + foreach ($rclist as $i => $extension) { + $this->_mapOutExtensions($rclist, "$i/crlEntryExtensions", $asn1); + } + } + + $crl = $asn1->encodeDER($crl, $this->CertificateList); + + switch ($format) { + case FILE_X509_FORMAT_DER: + return $crl; + // case FILE_X509_FORMAT_PEM: + default: + return "-----BEGIN X509 CRL-----\r\n" . chunk_split(base64_encode($crl), 64) . '-----END X509 CRL-----'; + } + } + + /** + * Sign an X.509 certificate + * + * $issuer's private key needs to be loaded. + * $subject can be either an existing X.509 cert (if you want to resign it), + * a CSR or something with the DN and public key explicitly set. + * + * @param File_X509 $issuer + * @param File_X509 $subject + * @param String $signatureAlgorithm optional + * @access public + * @return Mixed + */ + function sign($issuer, $subject, $signatureAlgorithm = 'sha1WithRSAEncryption') + { + if (!is_object($issuer->privateKey) || empty($issuer->dn)) { + return false; + } + + if (isset($subject->publicKey) && !($subjectPublicKey = $subject->_formatSubjectPublicKey())) { + return false; + } + + $currentCert = isset($this->currentCert) ? $this->currentCert : NULL; + $signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject: NULL; + + if (isset($subject->currentCert) && is_array($subject->currentCert) && isset($subject->currentCert['tbsCertificate'])) { + $this->currentCert = $subject->currentCert; + $this->currentCert['tbsCertificate']['signature']['algorithm'] = + $this->currentCert['signatureAlgorithm']['algorithm'] = + $signatureAlgorithm; + if (!empty($this->startDate)) { + $this->currentCert['tbsCertificate']['validity']['notBefore']['generalTime'] = $this->startDate; + unset($this->currentCert['tbsCertificate']['validity']['notBefore']['utcTime']); + } + if (!empty($this->endDate)) { + $this->currentCert['tbsCertificate']['validity']['notAfter']['generalTime'] = $this->endDate; + unset($this->currentCert['tbsCertificate']['validity']['notAfter']['utcTime']); + } + if (!empty($this->serialNumber)) { + $this->currentCert['tbsCertificate']['serialNumber'] = $this->serialNumber; + } + if (!empty($subject->dn)) { + $this->currentCert['tbsCertificate']['subject'] = $subject->dn; + } + if (!empty($subject->publicKey)) { + $this->currentCert['tbsCertificate']['subjectPublicKeyInfo'] = $subjectPublicKey; + } + $this->removeExtension('id-ce-authorityKeyIdentifier'); + if (isset($subject->domains)) { + $this->removeExtension('id-ce-subjectAltName'); + } + } else if (isset($subject->currentCert) && is_array($subject->currentCert) && isset($subject->currentCert['tbsCertList'])) { + return false; + } else { + if (!isset($subject->publicKey)) { + return false; + } + + $startDate = !empty($this->startDate) ? $this->startDate : @date('D, d M y H:i:s O'); + $endDate = !empty($this->endDate) ? $this->endDate : @date('D, d M y H:i:s O', strtotime('+1 year')); + $serialNumber = !empty($this->serialNumber) ? $this->serialNumber : new Math_BigInteger(); + + $this->currentCert = array( + 'tbsCertificate' => + array( + 'version' => 'v3', + 'serialNumber' => $serialNumber, // $this->setserialNumber() + 'signature' => array('algorithm' => $signatureAlgorithm), + 'issuer' => false, // this is going to be overwritten later + 'validity' => array( + 'notBefore' => array('generalTime' => $startDate), // $this->setStartDate() + 'notAfter' => array('generalTime' => $endDate) // $this->setEndDate() + ), + 'subject' => $subject->dn, + 'subjectPublicKeyInfo' => $subjectPublicKey + ), + 'signatureAlgorithm' => array('algorithm' => $signatureAlgorithm), + 'signature' => false // this is going to be overwritten later + ); + + // Copy extensions from CSR. + $csrexts = $subject->getAttribute('pkcs-9-at-extensionRequest', 0); + + if (!empty($csrexts)) { + $this->currentCert['tbsCertificate']['extensions'] = $csrexts; + } + } + + $this->currentCert['tbsCertificate']['issuer'] = $issuer->dn; + + if (isset($issuer->currentKeyIdentifier)) { + $this->setExtension('id-ce-authorityKeyIdentifier', array( + //'authorityCertIssuer' => array( + // array( + // 'directoryName' => $issuer->dn + // ) + //), + 'keyIdentifier' => $issuer->currentKeyIdentifier + ) + ); + //$extensions = &$this->currentCert['tbsCertificate']['extensions']; + //if (isset($issuer->serialNumber)) { + // $extensions[count($extensions) - 1]['authorityCertSerialNumber'] = $issuer->serialNumber; + //} + //unset($extensions); + } + + if (isset($subject->currentKeyIdentifier)) { + $this->setExtension('id-ce-subjectKeyIdentifier', $subject->currentKeyIdentifier); + } + + if (isset($subject->domains) && count($subject->domains) > 1) { + $this->setExtension('id-ce-subjectAltName', + array_map(array('File_X509', '_dnsName'), $subject->domains)); + } + + if ($this->caFlag) { + $keyUsage = $this->getExtension('id-ce-keyUsage'); + if (!$keyUsage) { + $keyUsage = array(); + } + + $this->setExtension('id-ce-keyUsage', + array_values(array_unique(array_merge($keyUsage, array('cRLSign', 'keyCertSign')))) + ); + + $basicConstraints = $this->getExtension('id-ce-basicConstraints'); + if (!$basicConstraints) { + $basicConstraints = array(); + } + + $this->setExtension('id-ce-basicConstraints', + array_unique(array_merge(array('cA' => true), $basicConstraints)), true); + + if (!isset($subject->currentKeyIdentifier)) { + $this->setExtension('id-ce-subjectKeyIdentifier', base64_encode($this->computeKeyIdentifier($this->currentCert)), false, false); + } + } + + // resync $this->signatureSubject + // save $tbsCertificate in case there are any File_ASN1_Element objects in it + $tbsCertificate = $this->currentCert['tbsCertificate']; + $this->loadX509($this->saveX509($this->currentCert)); + + $result = $this->_sign($issuer->privateKey, $signatureAlgorithm); + $result['tbsCertificate'] = $tbsCertificate; + + $this->currentCert = $currentCert; + $this->signatureSubject = $signatureSubject; + + return $result; + } + + /** + * Sign a CSR + * + * @access public + * @return Mixed + */ + function signCSR($signatureAlgorithm = 'sha1WithRSAEncryption') + { + if (!is_object($this->privateKey) || empty($this->dn)) { + return false; + } + + $origPublicKey = $this->publicKey; + $class = get_class($this->privateKey); + $this->publicKey = new $class(); + $this->publicKey->loadKey($this->privateKey->getPublicKey()); + $this->publicKey->setPublicKey(); + if (!($publicKey = $this->_formatSubjectPublicKey())) { + return false; + } + $this->publicKey = $origPublicKey; + + $currentCert = isset($this->currentCert) ? $this->currentCert : NULL; + $signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject: NULL; + + if (isset($this->currentCert) && is_array($this->currentCert) && isset($this->currentCert['certificationRequestInfo'])) { + $this->currentCert['signatureAlgorithm']['algorithm'] = + $signatureAlgorithm; + if (!empty($this->dn)) { + $this->currentCert['certificationRequestInfo']['subject'] = $this->dn; + } + $this->currentCert['certificationRequestInfo']['subjectPKInfo'] = $publicKey; + } else { + $this->currentCert = array( + 'certificationRequestInfo' => + array( + 'version' => 'v1', + 'subject' => $this->dn, + 'subjectPKInfo' => $publicKey + ), + 'signatureAlgorithm' => array('algorithm' => $signatureAlgorithm), + 'signature' => false // this is going to be overwritten later + ); + } + + // resync $this->signatureSubject + // save $certificationRequestInfo in case there are any File_ASN1_Element objects in it + $certificationRequestInfo = $this->currentCert['certificationRequestInfo']; + $this->loadCSR($this->saveCSR($this->currentCert)); + + $result = $this->_sign($this->privateKey, $signatureAlgorithm); + $result['certificationRequestInfo'] = $certificationRequestInfo; + + $this->currentCert = $currentCert; + $this->signatureSubject = $signatureSubject; + + return $result; + } + + /** + * Sign a CRL + * + * $issuer's private key needs to be loaded. + * + * @param File_X509 $issuer + * @param File_X509 $crl + * @param String $signatureAlgorithm optional + * @access public + * @return Mixed + */ + function signCRL($issuer, $crl, $signatureAlgorithm = 'sha1WithRSAEncryption') + { + if (!is_object($issuer->privateKey) || empty($issuer->dn)) { + return false; + } + + $currentCert = isset($this->currentCert) ? $this->currentCert : NULL; + $signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject : NULL; + $thisUpdate = !empty($this->startDate) ? $this->startDate : @date('D, d M y H:i:s O'); + + if (isset($crl->currentCert) && is_array($crl->currentCert) && isset($crl->currentCert['tbsCertList'])) { + $this->currentCert = $crl->currentCert; + $this->currentCert['tbsCertList']['signature']['algorithm'] = $signatureAlgorithm; + $this->currentCert['signatureAlgorithm']['algorithm'] = $signatureAlgorithm; + } else { + $this->currentCert = array( + 'tbsCertList' => + array( + 'version' => 'v2', + 'signature' => array('algorithm' => $signatureAlgorithm), + 'issuer' => false, // this is going to be overwritten later + 'thisUpdate' => array('generalTime' => $thisUpdate) // $this->setStartDate() + ), + 'signatureAlgorithm' => array('algorithm' => $signatureAlgorithm), + 'signature' => false // this is going to be overwritten later + ); + } + + $tbsCertList = &$this->currentCert['tbsCertList']; + $tbsCertList['issuer'] = $issuer->dn; + $tbsCertList['thisUpdate'] = array('generalTime' => $thisUpdate); + + if (!empty($this->endDate)) { + $tbsCertList['nextUpdate'] = array('generalTime' => $this->endDate); // $this->setEndDate() + } else { + unset($tbsCertList['nextUpdate']); + } + + if (!empty($this->serialNumber)) { + $crlNumber = $this->serialNumber; + } + else { + $crlNumber = $this->getExtension('id-ce-cRLNumber'); + $crlNumber = $crlNumber !== false ? $crlNumber->add(new Math_BigInteger(1)) : NULL; + } + + $this->removeExtension('id-ce-authorityKeyIdentifier'); + $this->removeExtension('id-ce-issuerAltName'); + + // Be sure version >= v2 if some extension found. + $version = isset($tbsCertList['version']) ? $tbsCertList['version'] : 0; + if (!$version) { + if (!empty($tbsCertList['crlExtensions'])) { + $version = 1; // v2. + } + elseif (!empty($tbsCertList['revokedCertificates'])) { + foreach ($tbsCertList['revokedCertificates'] as $cert) { + if (!empty($cert['crlEntryExtensions'])) { + $version = 1; // v2. + } + } + } + + if ($version) { + $tbsCertList['version'] = $version; + } + } + + // Store additional extensions. + if (!empty($tbsCertList['version'])) { // At least v2. + if (!empty($crlNumber)) { + $this->setExtension('id-ce-cRLNumber', $crlNumber); + } + + if (isset($issuer->currentKeyIdentifier)) { + $this->setExtension('id-ce-authorityKeyIdentifier', array( + //'authorityCertIssuer' => array( + // array( + // 'directoryName' => $issuer->dn + // ) + //), + 'keyIdentifier' => $issuer->currentKeyIdentifier + ) + ); + //$extensions = &$tbsCertList['crlExtensions']; + //if (isset($issuer->serialNumber)) { + // $extensions[count($extensions) - 1]['authorityCertSerialNumber'] = $issuer->serialNumber; + //} + //unset($extensions); + } + + $issuerAltName = $this->getExtension('id-ce-subjectAltName', $issuer->currentCert); + + if ($issuerAltName !== false) { + $this->setExtension('id-ce-issuerAltName', $issuerAltName); + } + } + + if (empty($tbsCertList['revokedCertificates'])) { + unset($tbsCertList['revokedCertificates']); + } + + unset($tbsCertList); + + // resync $this->signatureSubject + // save $tbsCertList in case there are any File_ASN1_Element objects in it + $tbsCertList = $this->currentCert['tbsCertList']; + $this->loadCRL($this->saveCRL($this->currentCert)); + + $result = $this->_sign($issuer->privateKey, $signatureAlgorithm); + $result['tbsCertList'] = $tbsCertList; + + $this->currentCert = $currentCert; + $this->signatureSubject = $signatureSubject; + + return $result; + } + + /** + * X.509 certificate signing helper function. + * + * @param Object $key + * @param File_X509 $subject + * @param String $signatureAlgorithm + * @access public + * @return Mixed + */ + function _sign($key, $signatureAlgorithm) + { + switch (strtolower(get_class($key))) { + case 'crypt_rsa': + switch ($signatureAlgorithm) { + case 'md2WithRSAEncryption': + case 'md5WithRSAEncryption': + case 'sha1WithRSAEncryption': + case 'sha224WithRSAEncryption': + case 'sha256WithRSAEncryption': + case 'sha384WithRSAEncryption': + case 'sha512WithRSAEncryption': + $key->setHash(preg_replace('#WithRSAEncryption$#', '', $signatureAlgorithm)); + $key->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + + $this->currentCert['signature'] = base64_encode("\0" . $key->sign($this->signatureSubject)); + return $this->currentCert; + } + default: + return false; + } + } + + /** + * Set certificate start date + * + * @param String $date + * @access public + */ + function setStartDate($date) + { + $this->startDate = @date('D, d M y H:i:s O', @strtotime($date)); + } + + /** + * Set certificate end date + * + * @param String $date + * @access public + */ + function setEndDate($date) + { + /* + To indicate that a certificate has no well-defined expiration date, + the notAfter SHOULD be assigned the GeneralizedTime value of + 99991231235959Z. + + -- http://tools.ietf.org/html/rfc5280#section-4.1.2.5 + */ + if (strtolower($date) == 'lifetime') { + $temp = '99991231235959Z'; + $asn1 = new File_ASN1(); + $temp = chr(FILE_ASN1_TYPE_GENERALIZED_TIME) . $asn1->_encodeLength(strlen($temp)) . $temp; + $this->endDate = new File_ASN1_Element($temp); + } else { + $this->endDate = @date('D, d M y H:i:s O', @strtotime($date)); + } + } + + /** + * Set Serial Number + * + * @param String $serial + * @param $base optional + * @access public + */ + function setSerialNumber($serial, $base = -256) + { + $this->serialNumber = new Math_BigInteger($serial, $base); + } + + /** + * Turns the certificate into a certificate authority + * + * @access public + */ + function makeCA() + { + $this->caFlag = true; + } + + /** + * Get a reference to a subarray + * + * @param array $root + * @param String $path absolute path with / as component separator + * @param Boolean $create optional + * @access private + * @return array item ref or false + */ + function &_subArray(&$root, $path, $create = false) + { + $false = false; + + if (!is_array($root)) { + return $false; + } + + foreach (explode('/', $path) as $i) { + if (!is_array($root)) { + return $false; + } + + if (!isset($root[$i])) { + if (!$create) { + return $false; + } + + $root[$i] = array(); + } + + $root = &$root[$i]; + } + + return $root; + } + + /** + * Get a reference to an extension subarray + * + * @param array $root + * @param String $path optional absolute path with / as component separator + * @param Boolean $create optional + * @access private + * @return array ref or false + */ + function &_extensions(&$root, $path = NULL, $create = false) + { + if (!isset($root)) { + $root = $this->currentCert; + } + + switch (true) { + case !empty($path): + case !is_array($root): + break; + case isset($root['tbsCertificate']): + $path = 'tbsCertificate/extensions'; + break; + case isset($root['tbsCertList']): + $path = 'tbsCertList/crlExtensions'; + break; + case isset($root['certificationRequestInfo']): + $pth = 'certificationRequestInfo/attributes'; + $attributes = &$this->_subArray($root, $pth, $create); + + if (is_array($attributes)) { + foreach ($attributes as $key => $value) { + if ($value['type'] == 'pkcs-9-at-extensionRequest') { + $path = "$pth/$key/value/0"; + break 2; + } + } + if ($create) { + $key = count($attributes); + $attributes[] = array('type' => 'pkcs-9-at-extensionRequest', 'value' => array()); + $path = "$pth/$key/value/0"; + } + } + break; + } + + $extensions = &$this->_subArray($root, $path, $create); + + if (!is_array($extensions)) { + $false = false; + return $false; + } + + return $extensions; + } + + /** + * Remove an Extension + * + * @param String $id + * @param String $path optional + * @access private + * @return Boolean + */ + function _removeExtension($id, $path = NULL) + { + $extensions = &$this->_extensions($this->currentCert, $path); + + if (!is_array($extensions)) { + return false; + } + + $result = false; + foreach ($extensions as $key => $value) { + if ($value['extnId'] == $id) { + unset($extensions[$key]); + $result = true; + } + } + + $extensions = array_values($extensions); + return $result; + } + + /** + * Get an Extension + * + * Returns the extension if it exists and false if not + * + * @param String $id + * @param Array $cert optional + * @param String $path optional + * @access private + * @return Mixed + */ + function _getExtension($id, $cert = NULL, $path = NULL) + { + $extensions = $this->_extensions($cert, $path); + + if (!is_array($extensions)) { + return false; + } + + foreach ($extensions as $key => $value) { + if ($value['extnId'] == $id) { + return $value['extnValue']; + } + } + + return false; + } + + /** + * Returns a list of all extensions in use + * + * @param array $cert optional + * @param String $path optional + * @access private + * @return Array + */ + function _getExtensions($cert = NULL, $path = NULL) + { + $exts = $this->_extensions($cert, $path); + $extensions = array(); + + if (is_array($exts)) { + foreach ($exts as $extension) { + $extensions[] = $extension['extnId']; + } + } + + return $extensions; + } + + /** + * Set an Extension + * + * @param String $id + * @param Mixed $value + * @param Boolean $critical optional + * @param Boolean $replace optional + * @param String $path optional + * @access private + * @return Boolean + */ + function _setExtension($id, $value, $critical = false, $replace = true, $path = NULL) + { + $extensions = &$this->_extensions($this->currentCert, $path, true); + + if (!is_array($extensions)) { + return false; + } + + $newext = array('extnId' => $id, 'critical' => $critical, 'extnValue' => $value); + + foreach ($extensions as $key => $value) { + if ($value['extnId'] == $id) { + if (!$replace) { + return false; + } + + $extensions[$key] = $newext; + return true; + } + } + + $extensions[] = $newext; + return true; + } + + /** + * Remove a certificate, CSR or CRL Extension + * + * @param String $id + * @access public + * @return Boolean + */ + function removeExtension($id) + { + return $this->_removeExtension($id); + } + + /** + * Get a certificate, CSR or CRL Extension + * + * Returns the extension if it exists and false if not + * + * @param String $id + * @param Array $cert optional + * @access public + * @return Mixed + */ + function getExtension($id, $cert = NULL) + { + return $this->_getExtension($id, $cert); + } + + /** + * Returns a list of all extensions in use in certificate, CSR or CRL + * + * @param array $cert optional + * @access public + * @return Array + */ + function getExtensions($cert = NULL) + { + return $this->_getExtensions($cert); + } + + /** + * Set a certificate, CSR or CRL Extension + * + * @param String $id + * @param Mixed $value + * @param Boolean $critical optional + * @param Boolean $replace optional + * @access public + * @return Boolean + */ + function setExtension($id, $value, $critical = false, $replace = true) + { + return $this->_setExtension($id, $value, $critical, $replace); + } + + /** + * Remove a CSR attribute. + * + * @param String $id + * @param Integer $disposition optional + * @access public + * @return Boolean + */ + function removeAttribute($id, $disposition = FILE_X509_ATTR_ALL) + { + $attributes = &$this->_subArray($this->currentCert, 'certificationRequestInfo/attributes'); + + if (!is_array($attributes)) { + return false; + } + + $result = false; + foreach ($attributes as $key => $attribute) { + if ($attribute['type'] == $id) { + $n = count($attribute['value']); + switch (true) { + case $disposition == FILE_X509_ATTR_APPEND: + case $disposition == FILE_X509_ATTR_REPLACE: + return false; + case $disposition >= $n: + $disposition -= $n; + break; + case $disposition == FILE_X509_ATTR_ALL: + case $n == 1: + unset($attributes[$key]); + $result = true; + break; + default: + unset($attributes[$key]['value'][$disposition]); + $attributes[$key]['value'] = array_values($attributes[$key]['value']); + $result = true; + break; + } + if ($result && $disposition != FILE_X509_ATTR_ALL) { + break; + } + } + } + + $attributes = array_values($attributes); + return $result; + } + + /** + * Get a CSR attribute + * + * Returns the attribute if it exists and false if not + * + * @param String $id + * @param Integer $disposition optional + * @param Array $csr optional + * @access public + * @return Mixed + */ + function getAttribute($id, $disposition = FILE_X509_ATTR_ALL, $csr = NULL) + { + if (empty($csr)) { + $csr = $this->currentCert; + } + + $attributes = $this->_subArray($csr, 'certificationRequestInfo/attributes'); + + if (!is_array($attributes)) { + return false; + } + + foreach ($attributes as $key => $attribute) { + if ($attribute['type'] == $id) { + $n = count($attribute['value']); + switch (true) { + case $disposition == FILE_X509_ATTR_APPEND: + case $disposition == FILE_X509_ATTR_REPLACE: + return false; + case $disposition == FILE_X509_ATTR_ALL: + return $attribute['value']; + case $disposition >= $n: + $disposition -= $n; + break; + default: + return $attribute['value'][$disposition]; + } + } + } + + return false; + } + + /** + * Returns a list of all CSR attributes in use + * + * @param array $csr optional + * @access public + * @return Array + */ + function getAttributes($csr = NULL) + { + if (empty($csr)) { + $csr = $this->currentCert; + } + + $attributes = $this->_subArray($csr, 'certificationRequestInfo/attributes'); + $attrs = array(); + + if (is_array($attributes)) { + foreach ($attributes as $attribute) { + $attrs[] = $attribute['type']; + } + } + + return $attrs; + } + + /** + * Set a CSR attribute + * + * @param String $id + * @param Mixed $value + * @param Boolean $disposition optional + * @access public + * @return Boolean + */ + function setAttribute($id, $value, $disposition = FILE_X509_ATTR_ALL) + { + $attributes = &$this->_subArray($this->currentCert, 'certificationRequestInfo/attributes', true); + + if (!is_array($attributes)) { + return false; + } + + switch ($disposition) { + case FILE_X509_ATTR_REPLACE: + $disposition = FILE_X509_ATTR_APPEND; + case FILE_X509_ATTR_ALL: + $this->removeAttribute($id); + break; + } + + foreach ($attributes as $key => $attribute) { + if ($attribute['type'] == $id) { + $n = count($attribute['value']); + switch (true) { + case $disposition == FILE_X509_ATTR_APPEND: + $last = $key; + break; + case $disposition >= $n; + $disposition -= $n; + break; + default: + $attributes[$key]['value'][$disposition] = $value; + return true; + } + } + } + + switch (true) { + case $disposition >= 0: + return false; + case isset($last): + $attributes[$last]['value'][] = $value; + break; + default: + $attributes[] = array('type' => $id, 'value' => $disposition == FILE_X509_ATTR_ALL ? $value: array($value)); + break; + } + + return true; + } + + /** + * Sets the subject key identifier + * + * This is used by the id-ce-authorityKeyIdentifier and the id-ce-subjectKeyIdentifier extensions. + * + * @param String $value + * @access public + */ + function setKeyIdentifier($value) + { + if (empty($value)) { + unset($this->currentKeyIdentifier); + } else { + $this->currentKeyIdentifier = base64_encode($value); + } + } + + /** + * Compute a public key identifier. + * + * Although key identifiers may be set to any unique value, this function + * computes key identifiers from public key according to the two + * recommended methods (4.2.1.2 RFC 3280). + * Highly polymorphic: try to accept all possible forms of key: + * - Key object + * - File_X509 object with public or private key defined + * - Certificate or CSR array + * - File_ASN1_Element object + * - PEM or DER string + * + * @param Mixed $key optional + * @param Integer $method optional + * @access public + * @return String binary key identifier + */ + function computeKeyIdentifier($key = NULL, $method = 1) + { + if (is_null($key)) { + $key = $this; + } + + switch (true) { + case is_string($key): + break; + case is_array($key) && isset($key['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']): + return $this->computeKeyIdentifier($key['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'], $method); + case is_array($key) && isset($key['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey']): + return $this->computeKeyIdentifier($key['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey'], $method); + case !is_object($key): + return false; + case strtolower(get_class($key)) == 'file_asn1_element': + $asn1 = new File_ASN1(); + $decoded = $asn1->decodeBER($cert); + if (empty($decoded)) { + return false; + } + $key = $asn1->asn1map($decoded[0], array('type' => FILE_ASN1_TYPE_BIT_STRING)); + break; + case strtolower(get_class($key)) == 'file_x509': + if (isset($key->publicKey)) { + return $this->computeKeyIdentifier($key->publicKey, $method); + } + if (isset($key->privateKey)) { + return $this->computeKeyIdentifier($key->privateKey, $method); + } + if (isset($key->currentCert['tbsCertificate']) || isset($key->currentCert['certificationRequestInfo'])) { + return $this->computeKeyIdentifier($key->currentCert, $method); + } + return false; + default: // Should be a key object (i.e.: Crypt_RSA). + $key = $key->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW); + break; + } + + // If in PEM format, convert to binary. + if (preg_match('#^-----BEGIN #', $key)) { + $key = base64_decode(preg_replace('#-.+-|[\r\n]#', '', $key)); + } + + // Now we have the key string: compute its sha-1 sum. + if (!class_exists('Crypt_Hash')) { + require_once('Crypt/Hash.php'); + } + $hash = new Crypt_Hash('sha1'); + $hash = $hash->hash($key); + + if ($method == 2) { + $hash = substr($hash, -8); + $hash[0] = chr((ord($hash[0]) & 0x0F) | 0x40); + } + + return $hash; + } + + /** + * Format a public key as appropriate + * + * @access private + * @return Array + */ + function _formatSubjectPublicKey() + { + if (!isset($this->publicKey) || !is_object($this->publicKey)) { + return false; + } + + switch (strtolower(get_class($this->publicKey))) { + case 'crypt_rsa': + // the following two return statements do the same thing. i dunno.. i just prefer the later for some reason. + // the former is a good example of how to do fuzzing on the public key + //return new File_ASN1_Element(base64_decode(preg_replace('#-.+-|[\r\n]#', '', $this->publicKey->getPublicKey()))); + return array( + 'algorithm' => array('algorithm' => 'rsaEncryption'), + 'subjectPublicKey' => $this->publicKey->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW) + ); + default: + return false; + } + } + + /** + * Set the domain name's which the cert is to be valid for + * + * @access public + * @return Array + */ + function setDomain() + { + $this->domains = func_get_args(); + $this->removeDNProp('id-at-commonName'); + $this->setDNProp('id-at-commonName', $this->domains[0]); + } + + /** + * Helper function to build domain array + * + * @access private + * @param String $domain + * @return Array + */ + function _dnsName($domain) + { + return array('dNSName' => $domain); + } + + /** + * Get the index of a revoked certificate. + * + * @param array $rclist + * @param String $serial + * @param Boolean $create optional + * @access private + * @return Integer or false + */ + function _revokedCertificate(&$rclist, $serial, $create = false) + { + $serial = new Math_BigInteger($serial); + + foreach ($rclist as $i => $rc) { + if (!($serial->compare($rc['userCertificate']))) { + return $i; + } + } + + if (!$create) { + return false; + } + + $i = count($rclist); + $rclist[] = array('userCertificate' => $serial, + 'revocationDate' => array('generalTime' => @date('D, d M y H:i:s O'))); + return $i; + } + + /** + * Revoke a certificate. + * + * @param String $serial + * @param String $date optional + * @access public + * @return Boolean + */ + function revoke($serial, $date = NULL) + { + if (isset($this->currentCert['tbsCertList'])) { + if (is_array($rclist = &$this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates', true))) { + if ($this->_revokedCertificate($rclist, $serial) === false) { // If not yet revoked + if (($i = $this->_revokedCertificate($rclist, $serial, true)) !== false) { + + if (!empty($date)) { + $rclist[$i]['revocationDate'] = array('generalTime' => $date); + } + + return true; + } + } + } + } + + return false; + } + + /** + * Unrevoke a certificate. + * + * @param String $serial + * @access public + * @return Boolean + */ + function unrevoke($serial) + { + if (is_array($rclist = &$this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + unset($rclist[$i]); + $rclist = array_values($rclist); + return true; + } + } + + return false; + } + + /** + * Get a revoked certificate. + * + * @param String $serial + * @access public + * @return Mixed + */ + function getRevoked($serial) + { + if (is_array($rclist = $this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + return $rclist[$i]; + } + } + + return false; + } + + /** + * List revoked certificates + * + * @param array $crl optional + * @access public + * @return array + */ + function listRevoked($crl = NULL) + { + if (!isset($crl)) { + $crl = $this->currentCert; + } + + if (!isset($crl['tbsCertList'])) { + return false; + } + + $result = array(); + + if (is_array($rclist = $this->_subArray($crl, 'tbsCertList/revokedCertificates'))) { + foreach ($rclist as $rc) { + $result[] = $rc['userCertificate']->toString(); + } + } + + return $result; + } + + /** + * Remove a Revoked Certificate Extension + * + * @param String $serial + * @param String $id + * @access public + * @return Boolean + */ + function removeRevokedCertificateExtension($serial, $id) + { + if (is_array($rclist = &$this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + return $this->_removeExtension($id, "tbsCertList/revokedCertificates/$i/crlEntryExtensions"); + } + } + + return false; + } + + /** + * Get a Revoked Certificate Extension + * + * Returns the extension if it exists and false if not + * + * @param String $serial + * @param String $id + * @param Array $crl optional + * @access public + * @return Mixed + */ + function getRevokedCertificateExtension($serial, $id, $crl = NULL) + { + if (!isset($crl)) { + $crl = $this->currentCert; + } + + if (is_array($rclist = $this->_subArray($crl, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + return $this->_getExtension($id, $crl, "tbsCertList/revokedCertificates/$i/crlEntryExtensions"); + } + } + + return false; + } + + /** + * Returns a list of all extensions in use for a given revoked certificate + * + * @param String $serial + * @param array $crl optional + * @access public + * @return Array + */ + function getRevokedCertificateExtensions($serial, $crl = NULL) + { + if (!isset($crl)) { + $crl = $this->currentCert; + } + + if (is_array($rclist = $this->_subArray($crl, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + return $this->_getExtensions($crl, "tbsCertList/revokedCertificates/$i/crlEntryExtensions"); + } + } + + return false; + } + + /** + * Set a Revoked Certificate Extension + * + * @param String $serial + * @param String $id + * @param Mixed $value + * @param Boolean $critical optional + * @param Boolean $replace optional + * @access public + * @return Boolean + */ + function setRevokedCertificateExtension($serial, $id, $value, $critical = false, $replace = true) + { + if (isset($this->currentCert['tbsCertList'])) { + if (is_array($rclist = &$this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates', true))) { + if (($i = $this->_revokedCertificate($rclist, $serial, true)) !== false) { + return $this->_setExtension($id, $value, $critical, $replace, "tbsCertList/revokedCertificates/$i/crlEntryExtensions"); + } + } + } + + return false; + } +} diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Math/BigInteger.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Math/BigInteger.php new file mode 100644 index 0000000000..d048cb032c --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Math/BigInteger.php @@ -0,0 +1,3633 @@ +> and << cannot be used, nor can the modulo operator %, + * which only supports integers. Although this fact will slow this library down, the fact that such a high + * base is being used should more than compensate. + * + * When PHP version 6 is officially released, we'll be able to use 64-bit integers. This should, once again, + * allow bitwise operators, and will increase the maximum possible base to 2**31 (or 2**62 for addition / + * subtraction). + * + * Numbers are stored in {@link http://en.wikipedia.org/wiki/Endianness little endian} format. ie. + * (new Math_BigInteger(pow(2, 26)))->value = array(0, 1) + * + * Useful resources are as follows: + * + * - {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf Handbook of Applied Cryptography (HAC)} + * - {@link http://math.libtomcrypt.com/files/tommath.pdf Multi-Precision Math (MPM)} + * - Java's BigInteger classes. See /j2se/src/share/classes/java/math in jdk-1_5_0-src-jrl.zip + * + * Here's an example of how to use this library: + * + * add($b); + * + * echo $c->toString(); // outputs 5 + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Math + * @package Math_BigInteger + * @author Jim Wigginton + * @copyright MMVI Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: BigInteger.php,v 1.33 2010/03/22 22:32:03 terrafrost Exp $ + * @link http://pear.php.net/package/Math_BigInteger + */ + +/**#@+ + * Reduction constants + * + * @access private + * @see Math_BigInteger::_reduce() + */ +/** + * @see Math_BigInteger::_montgomery() + * @see Math_BigInteger::_prepMontgomery() + */ +define('MATH_BIGINTEGER_MONTGOMERY', 0); +/** + * @see Math_BigInteger::_barrett() + */ +define('MATH_BIGINTEGER_BARRETT', 1); +/** + * @see Math_BigInteger::_mod2() + */ +define('MATH_BIGINTEGER_POWEROF2', 2); +/** + * @see Math_BigInteger::_remainder() + */ +define('MATH_BIGINTEGER_CLASSIC', 3); +/** + * @see Math_BigInteger::__clone() + */ +define('MATH_BIGINTEGER_NONE', 4); +/**#@-*/ + +/**#@+ + * Array constants + * + * Rather than create a thousands and thousands of new Math_BigInteger objects in repeated function calls to add() and + * multiply() or whatever, we'll just work directly on arrays, taking them in as parameters and returning them. + * + * @access private + */ +/** + * $result[MATH_BIGINTEGER_VALUE] contains the value. + */ +define('MATH_BIGINTEGER_VALUE', 0); +/** + * $result[MATH_BIGINTEGER_SIGN] contains the sign. + */ +define('MATH_BIGINTEGER_SIGN', 1); +/**#@-*/ + +/**#@+ + * @access private + * @see Math_BigInteger::_montgomery() + * @see Math_BigInteger::_barrett() + */ +/** + * Cache constants + * + * $cache[MATH_BIGINTEGER_VARIABLE] tells us whether or not the cached data is still valid. + */ +define('MATH_BIGINTEGER_VARIABLE', 0); +/** + * $cache[MATH_BIGINTEGER_DATA] contains the cached data. + */ +define('MATH_BIGINTEGER_DATA', 1); +/**#@-*/ + +/**#@+ + * Mode constants. + * + * @access private + * @see Math_BigInteger::Math_BigInteger() + */ +/** + * To use the pure-PHP implementation + */ +define('MATH_BIGINTEGER_MODE_INTERNAL', 1); +/** + * To use the BCMath library + * + * (if enabled; otherwise, the internal implementation will be used) + */ +define('MATH_BIGINTEGER_MODE_BCMATH', 2); +/** + * To use the GMP library + * + * (if present; otherwise, either the BCMath or the internal implementation will be used) + */ +define('MATH_BIGINTEGER_MODE_GMP', 3); +/**#@-*/ + +/** + * The largest digit that may be used in addition / subtraction + * + * (we do pow(2, 52) instead of using 4503599627370496, directly, because some PHP installations + * will truncate 4503599627370496) + * + * @access private + */ +define('MATH_BIGINTEGER_MAX_DIGIT52', pow(2, 52)); + +/** + * Karatsuba Cutoff + * + * At what point do we switch between Karatsuba multiplication and schoolbook long multiplication? + * + * @access private + */ +define('MATH_BIGINTEGER_KARATSUBA_CUTOFF', 25); + +/** + * Pure-PHP arbitrary precision integer arithmetic library. Supports base-2, base-10, base-16, and base-256 + * numbers. + * + * @author Jim Wigginton + * @version 1.0.0RC4 + * @access public + * @package Math_BigInteger + */ +class Math_BigInteger { + /** + * Holds the BigInteger's value. + * + * @var Array + * @access private + */ + var $value; + + /** + * Holds the BigInteger's magnitude. + * + * @var Boolean + * @access private + */ + var $is_negative = false; + + /** + * Random number generator function + * + * @see setRandomGenerator() + * @access private + */ + var $generator = 'mt_rand'; + + /** + * Precision + * + * @see setPrecision() + * @access private + */ + var $precision = -1; + + /** + * Precision Bitmask + * + * @see setPrecision() + * @access private + */ + var $bitmask = false; + + /** + * Mode independant value used for serialization. + * + * If the bcmath or gmp extensions are installed $this->value will be a non-serializable resource, hence the need for + * a variable that'll be serializable regardless of whether or not extensions are being used. Unlike $this->value, + * however, $this->hex is only calculated when $this->__sleep() is called. + * + * @see __sleep() + * @see __wakeup() + * @var String + * @access private + */ + var $hex; + + /** + * Converts base-2, base-10, base-16, and binary strings (eg. base-256) to BigIntegers. + * + * If the second parameter - $base - is negative, then it will be assumed that the number's are encoded using + * two's compliment. The sole exception to this is -10, which is treated the same as 10 is. + * + * Here's an example: + * + * toString(); // outputs 50 + * ?> + * + * + * @param optional $x base-10 number or base-$base number if $base set. + * @param optional integer $base + * @return Math_BigInteger + * @access public + */ + function Math_BigInteger($x = 0, $base = 10) + { + if ( !defined('MATH_BIGINTEGER_MODE') ) { + switch (true) { + case extension_loaded('gmp'): + define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_GMP); + break; + case extension_loaded('bcmath'): + define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_BCMATH); + break; + default: + define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_INTERNAL); + } + } + + if (function_exists('openssl_public_encrypt') && !defined('MATH_BIGINTEGER_OPENSSL_DISABLE') && !defined('MATH_BIGINTEGER_OPENSSL_ENABLED')) { + define('MATH_BIGINTEGER_OPENSSL_ENABLED', true); + } + + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + if (is_resource($x) && get_resource_type($x) == 'GMP integer') { + $this->value = $x; + return; + } + $this->value = gmp_init(0); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $this->value = '0'; + break; + default: + $this->value = array(); + } + + // '0' counts as empty() but when the base is 256 '0' is equal to ord('0') or 48 + // '0' is the only value like this per http://php.net/empty + if (empty($x) && (abs($base) != 256 || $x !== '0')) { + return; + } + + switch ($base) { + case -256: + if (ord($x[0]) & 0x80) { + $x = ~$x; + $this->is_negative = true; + } + case 256: + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $sign = $this->is_negative ? '-' : ''; + $this->value = gmp_init($sign . '0x' . bin2hex($x)); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + // round $len to the nearest 4 (thanks, DavidMJ!) + $len = (strlen($x) + 3) & 0xFFFFFFFC; + + $x = str_pad($x, $len, chr(0), STR_PAD_LEFT); + + for ($i = 0; $i < $len; $i+= 4) { + $this->value = bcmul($this->value, '4294967296', 0); // 4294967296 == 2**32 + $this->value = bcadd($this->value, 0x1000000 * ord($x[$i]) + ((ord($x[$i + 1]) << 16) | (ord($x[$i + 2]) << 8) | ord($x[$i + 3])), 0); + } + + if ($this->is_negative) { + $this->value = '-' . $this->value; + } + + break; + // converts a base-2**8 (big endian / msb) number to base-2**26 (little endian / lsb) + default: + while (strlen($x)) { + $this->value[] = $this->_bytes2int($this->_base256_rshift($x, 26)); + } + } + + if ($this->is_negative) { + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL) { + $this->is_negative = false; + } + $temp = $this->add(new Math_BigInteger('-1')); + $this->value = $temp->value; + } + break; + case 16: + case -16: + if ($base > 0 && $x[0] == '-') { + $this->is_negative = true; + $x = substr($x, 1); + } + + $x = preg_replace('#^(?:0x)?([A-Fa-f0-9]*).*#', '$1', $x); + + $is_negative = false; + if ($base < 0 && hexdec($x[0]) >= 8) { + $this->is_negative = $is_negative = true; + $x = bin2hex(~pack('H*', $x)); + } + + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = $this->is_negative ? '-0x' . $x : '0x' . $x; + $this->value = gmp_init($temp); + $this->is_negative = false; + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $x = ( strlen($x) & 1 ) ? '0' . $x : $x; + $temp = new Math_BigInteger(pack('H*', $x), 256); + $this->value = $this->is_negative ? '-' . $temp->value : $temp->value; + $this->is_negative = false; + break; + default: + $x = ( strlen($x) & 1 ) ? '0' . $x : $x; + $temp = new Math_BigInteger(pack('H*', $x), 256); + $this->value = $temp->value; + } + + if ($is_negative) { + $temp = $this->add(new Math_BigInteger('-1')); + $this->value = $temp->value; + } + break; + case 10: + case -10: + $x = preg_replace('#^(-?[0-9]*).*#', '$1', $x); + + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $this->value = gmp_init($x); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + // explicitly casting $x to a string is necessary, here, since doing $x[0] on -1 yields different + // results then doing it on '-1' does (modInverse does $x[0]) + $this->value = (string) $x; + break; + default: + $temp = new Math_BigInteger(); + + // array(10000000) is 10**7 in base-2**26. 10**7 is the closest to 2**26 we can get without passing it. + $multiplier = new Math_BigInteger(); + $multiplier->value = array(10000000); + + if ($x[0] == '-') { + $this->is_negative = true; + $x = substr($x, 1); + } + + $x = str_pad($x, strlen($x) + (6 * strlen($x)) % 7, 0, STR_PAD_LEFT); + + while (strlen($x)) { + $temp = $temp->multiply($multiplier); + $temp = $temp->add(new Math_BigInteger($this->_int2bytes(substr($x, 0, 7)), 256)); + $x = substr($x, 7); + } + + $this->value = $temp->value; + } + break; + case 2: // base-2 support originally implemented by Lluis Pamies - thanks! + case -2: + if ($base > 0 && $x[0] == '-') { + $this->is_negative = true; + $x = substr($x, 1); + } + + $x = preg_replace('#^([01]*).*#', '$1', $x); + $x = str_pad($x, strlen($x) + (3 * strlen($x)) % 4, 0, STR_PAD_LEFT); + + $str = '0x'; + while (strlen($x)) { + $part = substr($x, 0, 4); + $str.= dechex(bindec($part)); + $x = substr($x, 4); + } + + if ($this->is_negative) { + $str = '-' . $str; + } + + $temp = new Math_BigInteger($str, 8 * $base); // ie. either -16 or +16 + $this->value = $temp->value; + $this->is_negative = $temp->is_negative; + + break; + default: + // base not supported, so we'll let $this == 0 + } + } + + /** + * Converts a BigInteger to a byte string (eg. base-256). + * + * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're + * saved as two's compliment. + * + * Here's an example: + * + * toBytes(); // outputs chr(65) + * ?> + * + * + * @param Boolean $twos_compliment + * @return String + * @access public + * @internal Converts a base-2**26 number to base-2**8 + */ + function toBytes($twos_compliment = false) + { + if ($twos_compliment) { + $comparison = $this->compare(new Math_BigInteger()); + if ($comparison == 0) { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + + $temp = $comparison < 0 ? $this->add(new Math_BigInteger(1)) : $this->copy(); + $bytes = $temp->toBytes(); + + if (empty($bytes)) { // eg. if the number we're trying to convert is -1 + $bytes = chr(0); + } + + if (ord($bytes[0]) & 0x80) { + $bytes = chr(0) . $bytes; + } + + return $comparison < 0 ? ~$bytes : $bytes; + } + + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + if (gmp_cmp($this->value, gmp_init(0)) == 0) { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + + $temp = gmp_strval(gmp_abs($this->value), 16); + $temp = ( strlen($temp) & 1 ) ? '0' . $temp : $temp; + $temp = pack('H*', $temp); + + return $this->precision > 0 ? + substr(str_pad($temp, $this->precision >> 3, chr(0), STR_PAD_LEFT), -($this->precision >> 3)) : + ltrim($temp, chr(0)); + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value === '0') { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + + $value = ''; + $current = $this->value; + + if ($current[0] == '-') { + $current = substr($current, 1); + } + + while (bccomp($current, '0', 0) > 0) { + $temp = bcmod($current, '16777216'); + $value = chr($temp >> 16) . chr($temp >> 8) . chr($temp) . $value; + $current = bcdiv($current, '16777216', 0); + } + + return $this->precision > 0 ? + substr(str_pad($value, $this->precision >> 3, chr(0), STR_PAD_LEFT), -($this->precision >> 3)) : + ltrim($value, chr(0)); + } + + if (!count($this->value)) { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + $result = $this->_int2bytes($this->value[count($this->value) - 1]); + + $temp = $this->copy(); + + for ($i = count($temp->value) - 2; $i >= 0; --$i) { + $temp->_base256_lshift($result, 26); + $result = $result | str_pad($temp->_int2bytes($temp->value[$i]), strlen($result), chr(0), STR_PAD_LEFT); + } + + return $this->precision > 0 ? + str_pad(substr($result, -(($this->precision + 7) >> 3)), ($this->precision + 7) >> 3, chr(0), STR_PAD_LEFT) : + $result; + } + + /** + * Converts a BigInteger to a hex string (eg. base-16)). + * + * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're + * saved as two's compliment. + * + * Here's an example: + * + * toHex(); // outputs '41' + * ?> + * + * + * @param Boolean $twos_compliment + * @return String + * @access public + * @internal Converts a base-2**26 number to base-2**8 + */ + function toHex($twos_compliment = false) + { + return bin2hex($this->toBytes($twos_compliment)); + } + + /** + * Converts a BigInteger to a bit string (eg. base-2). + * + * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're + * saved as two's compliment. + * + * Here's an example: + * + * toBits(); // outputs '1000001' + * ?> + * + * + * @param Boolean $twos_compliment + * @return String + * @access public + * @internal Converts a base-2**26 number to base-2**2 + */ + function toBits($twos_compliment = false) + { + $hex = $this->toHex($twos_compliment); + $bits = ''; + for ($i = strlen($hex) - 8, $start = strlen($hex) & 7; $i >= $start; $i-=8) { + $bits = str_pad(decbin(hexdec(substr($hex, $i, 8))), 32, '0', STR_PAD_LEFT) . $bits; + } + if ($start) { // hexdec('') == 0 + $bits = str_pad(decbin(hexdec(substr($hex, 0, $start))), 8, '0', STR_PAD_LEFT) . $bits; + } + $result = $this->precision > 0 ? substr($bits, -$this->precision) : ltrim($bits, '0'); + + if ($twos_compliment && $this->compare(new Math_BigInteger()) > 0 && $this->precision <= 0) { + return '0' . $result; + } + + return $result; + } + + /** + * Converts a BigInteger to a base-10 number. + * + * Here's an example: + * + * toString(); // outputs 50 + * ?> + * + * + * @return String + * @access public + * @internal Converts a base-2**26 number to base-10**7 (which is pretty much base-10) + */ + function toString() + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_strval($this->value); + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value === '0') { + return '0'; + } + + return ltrim($this->value, '0'); + } + + if (!count($this->value)) { + return '0'; + } + + $temp = $this->copy(); + $temp->is_negative = false; + + $divisor = new Math_BigInteger(); + $divisor->value = array(10000000); // eg. 10**7 + $result = ''; + while (count($temp->value)) { + list($temp, $mod) = $temp->divide($divisor); + $result = str_pad(isset($mod->value[0]) ? $mod->value[0] : '', 7, '0', STR_PAD_LEFT) . $result; + } + $result = ltrim($result, '0'); + if (empty($result)) { + $result = '0'; + } + + if ($this->is_negative) { + $result = '-' . $result; + } + + return $result; + } + + /** + * Copy an object + * + * PHP5 passes objects by reference while PHP4 passes by value. As such, we need a function to guarantee + * that all objects are passed by value, when appropriate. More information can be found here: + * + * {@link http://php.net/language.oop5.basic#51624} + * + * @access public + * @see __clone() + * @return Math_BigInteger + */ + function copy() + { + $temp = new Math_BigInteger(); + $temp->value = $this->value; + $temp->is_negative = $this->is_negative; + $temp->generator = $this->generator; + $temp->precision = $this->precision; + $temp->bitmask = $this->bitmask; + return $temp; + } + + /** + * __toString() magic method + * + * Will be called, automatically, if you're supporting just PHP5. If you're supporting PHP4, you'll need to call + * toString(). + * + * @access public + * @internal Implemented per a suggestion by Techie-Michael - thanks! + */ + function __toString() + { + return $this->toString(); + } + + /** + * __clone() magic method + * + * Although you can call Math_BigInteger::__toString() directly in PHP5, you cannot call Math_BigInteger::__clone() + * directly in PHP5. You can in PHP4 since it's not a magic method, but in PHP5, you have to call it by using the PHP5 + * only syntax of $y = clone $x. As such, if you're trying to write an application that works on both PHP4 and PHP5, + * call Math_BigInteger::copy(), instead. + * + * @access public + * @see copy() + * @return Math_BigInteger + */ + function __clone() + { + return $this->copy(); + } + + /** + * __sleep() magic method + * + * Will be called, automatically, when serialize() is called on a Math_BigInteger object. + * + * @see __wakeup() + * @access public + */ + function __sleep() + { + $this->hex = $this->toHex(true); + $vars = array('hex'); + if ($this->generator != 'mt_rand') { + $vars[] = 'generator'; + } + if ($this->precision > 0) { + $vars[] = 'precision'; + } + return $vars; + + } + + /** + * __wakeup() magic method + * + * Will be called, automatically, when unserialize() is called on a Math_BigInteger object. + * + * @see __sleep() + * @access public + */ + function __wakeup() + { + $temp = new Math_BigInteger($this->hex, -16); + $this->value = $temp->value; + $this->is_negative = $temp->is_negative; + $this->setRandomGenerator($this->generator); + if ($this->precision > 0) { + // recalculate $this->bitmask + $this->setPrecision($this->precision); + } + } + + /** + * Adds two BigIntegers. + * + * Here's an example: + * + * add($b); + * + * echo $c->toString(); // outputs 30 + * ?> + * + * + * @param Math_BigInteger $y + * @return Math_BigInteger + * @access public + * @internal Performs base-2**52 addition + */ + function add($y) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_add($this->value, $y->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $temp = new Math_BigInteger(); + $temp->value = bcadd($this->value, $y->value, 0); + + return $this->_normalize($temp); + } + + $temp = $this->_add($this->value, $this->is_negative, $y->value, $y->is_negative); + + $result = new Math_BigInteger(); + $result->value = $temp[MATH_BIGINTEGER_VALUE]; + $result->is_negative = $temp[MATH_BIGINTEGER_SIGN]; + + return $this->_normalize($result); + } + + /** + * Performs addition. + * + * @param Array $x_value + * @param Boolean $x_negative + * @param Array $y_value + * @param Boolean $y_negative + * @return Array + * @access private + */ + function _add($x_value, $x_negative, $y_value, $y_negative) + { + $x_size = count($x_value); + $y_size = count($y_value); + + if ($x_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $y_value, + MATH_BIGINTEGER_SIGN => $y_negative + ); + } else if ($y_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $x_value, + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + // subtract, if appropriate + if ( $x_negative != $y_negative ) { + if ( $x_value == $y_value ) { + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + $temp = $this->_subtract($x_value, false, $y_value, false); + $temp[MATH_BIGINTEGER_SIGN] = $this->_compare($x_value, false, $y_value, false) > 0 ? + $x_negative : $y_negative; + + return $temp; + } + + if ($x_size < $y_size) { + $size = $x_size; + $value = $y_value; + } else { + $size = $y_size; + $value = $x_value; + } + + $value[] = 0; // just in case the carry adds an extra digit + + $carry = 0; + for ($i = 0, $j = 1; $j < $size; $i+=2, $j+=2) { + $sum = $x_value[$j] * 0x4000000 + $x_value[$i] + $y_value[$j] * 0x4000000 + $y_value[$i] + $carry; + $carry = $sum >= MATH_BIGINTEGER_MAX_DIGIT52; // eg. floor($sum / 2**52); only possible values (in any base) are 0 and 1 + $sum = $carry ? $sum - MATH_BIGINTEGER_MAX_DIGIT52 : $sum; + + $temp = (int) ($sum / 0x4000000); + + $value[$i] = (int) ($sum - 0x4000000 * $temp); // eg. a faster alternative to fmod($sum, 0x4000000) + $value[$j] = $temp; + } + + if ($j == $size) { // ie. if $y_size is odd + $sum = $x_value[$i] + $y_value[$i] + $carry; + $carry = $sum >= 0x4000000; + $value[$i] = $carry ? $sum - 0x4000000 : $sum; + ++$i; // ie. let $i = $j since we've just done $value[$i] + } + + if ($carry) { + for (; $value[$i] == 0x3FFFFFF; ++$i) { + $value[$i] = 0; + } + ++$value[$i]; + } + + return array( + MATH_BIGINTEGER_VALUE => $this->_trim($value), + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + /** + * Subtracts two BigIntegers. + * + * Here's an example: + * + * subtract($b); + * + * echo $c->toString(); // outputs -10 + * ?> + * + * + * @param Math_BigInteger $y + * @return Math_BigInteger + * @access public + * @internal Performs base-2**52 subtraction + */ + function subtract($y) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_sub($this->value, $y->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $temp = new Math_BigInteger(); + $temp->value = bcsub($this->value, $y->value, 0); + + return $this->_normalize($temp); + } + + $temp = $this->_subtract($this->value, $this->is_negative, $y->value, $y->is_negative); + + $result = new Math_BigInteger(); + $result->value = $temp[MATH_BIGINTEGER_VALUE]; + $result->is_negative = $temp[MATH_BIGINTEGER_SIGN]; + + return $this->_normalize($result); + } + + /** + * Performs subtraction. + * + * @param Array $x_value + * @param Boolean $x_negative + * @param Array $y_value + * @param Boolean $y_negative + * @return Array + * @access private + */ + function _subtract($x_value, $x_negative, $y_value, $y_negative) + { + $x_size = count($x_value); + $y_size = count($y_value); + + if ($x_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $y_value, + MATH_BIGINTEGER_SIGN => !$y_negative + ); + } else if ($y_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $x_value, + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + // add, if appropriate (ie. -$x - +$y or +$x - -$y) + if ( $x_negative != $y_negative ) { + $temp = $this->_add($x_value, false, $y_value, false); + $temp[MATH_BIGINTEGER_SIGN] = $x_negative; + + return $temp; + } + + $diff = $this->_compare($x_value, $x_negative, $y_value, $y_negative); + + if ( !$diff ) { + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + // switch $x and $y around, if appropriate. + if ( (!$x_negative && $diff < 0) || ($x_negative && $diff > 0) ) { + $temp = $x_value; + $x_value = $y_value; + $y_value = $temp; + + $x_negative = !$x_negative; + + $x_size = count($x_value); + $y_size = count($y_value); + } + + // at this point, $x_value should be at least as big as - if not bigger than - $y_value + + $carry = 0; + for ($i = 0, $j = 1; $j < $y_size; $i+=2, $j+=2) { + $sum = $x_value[$j] * 0x4000000 + $x_value[$i] - $y_value[$j] * 0x4000000 - $y_value[$i] - $carry; + $carry = $sum < 0; // eg. floor($sum / 2**52); only possible values (in any base) are 0 and 1 + $sum = $carry ? $sum + MATH_BIGINTEGER_MAX_DIGIT52 : $sum; + + $temp = (int) ($sum / 0x4000000); + + $x_value[$i] = (int) ($sum - 0x4000000 * $temp); + $x_value[$j] = $temp; + } + + if ($j == $y_size) { // ie. if $y_size is odd + $sum = $x_value[$i] - $y_value[$i] - $carry; + $carry = $sum < 0; + $x_value[$i] = $carry ? $sum + 0x4000000 : $sum; + ++$i; + } + + if ($carry) { + for (; !$x_value[$i]; ++$i) { + $x_value[$i] = 0x3FFFFFF; + } + --$x_value[$i]; + } + + return array( + MATH_BIGINTEGER_VALUE => $this->_trim($x_value), + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + /** + * Multiplies two BigIntegers + * + * Here's an example: + * + * multiply($b); + * + * echo $c->toString(); // outputs 200 + * ?> + * + * + * @param Math_BigInteger $x + * @return Math_BigInteger + * @access public + */ + function multiply($x) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_mul($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $temp = new Math_BigInteger(); + $temp->value = bcmul($this->value, $x->value, 0); + + return $this->_normalize($temp); + } + + $temp = $this->_multiply($this->value, $this->is_negative, $x->value, $x->is_negative); + + $product = new Math_BigInteger(); + $product->value = $temp[MATH_BIGINTEGER_VALUE]; + $product->is_negative = $temp[MATH_BIGINTEGER_SIGN]; + + return $this->_normalize($product); + } + + /** + * Performs multiplication. + * + * @param Array $x_value + * @param Boolean $x_negative + * @param Array $y_value + * @param Boolean $y_negative + * @return Array + * @access private + */ + function _multiply($x_value, $x_negative, $y_value, $y_negative) + { + //if ( $x_value == $y_value ) { + // return array( + // MATH_BIGINTEGER_VALUE => $this->_square($x_value), + // MATH_BIGINTEGER_SIGN => $x_sign != $y_value + // ); + //} + + $x_length = count($x_value); + $y_length = count($y_value); + + if ( !$x_length || !$y_length ) { // a 0 is being multiplied + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + return array( + MATH_BIGINTEGER_VALUE => min($x_length, $y_length) < 2 * MATH_BIGINTEGER_KARATSUBA_CUTOFF ? + $this->_trim($this->_regularMultiply($x_value, $y_value)) : + $this->_trim($this->_karatsuba($x_value, $y_value)), + MATH_BIGINTEGER_SIGN => $x_negative != $y_negative + ); + } + + /** + * Performs long multiplication on two BigIntegers + * + * Modeled after 'multiply' in MutableBigInteger.java. + * + * @param Array $x_value + * @param Array $y_value + * @return Array + * @access private + */ + function _regularMultiply($x_value, $y_value) + { + $x_length = count($x_value); + $y_length = count($y_value); + + if ( !$x_length || !$y_length ) { // a 0 is being multiplied + return array(); + } + + if ( $x_length < $y_length ) { + $temp = $x_value; + $x_value = $y_value; + $y_value = $temp; + + $x_length = count($x_value); + $y_length = count($y_value); + } + + $product_value = $this->_array_repeat(0, $x_length + $y_length); + + // the following for loop could be removed if the for loop following it + // (the one with nested for loops) initially set $i to 0, but + // doing so would also make the result in one set of unnecessary adds, + // since on the outermost loops first pass, $product->value[$k] is going + // to always be 0 + + $carry = 0; + + for ($j = 0; $j < $x_length; ++$j) { // ie. $i = 0 + $temp = $x_value[$j] * $y_value[0] + $carry; // $product_value[$k] == 0 + $carry = (int) ($temp / 0x4000000); + $product_value[$j] = (int) ($temp - 0x4000000 * $carry); + } + + $product_value[$j] = $carry; + + // the above for loop is what the previous comment was talking about. the + // following for loop is the "one with nested for loops" + for ($i = 1; $i < $y_length; ++$i) { + $carry = 0; + + for ($j = 0, $k = $i; $j < $x_length; ++$j, ++$k) { + $temp = $product_value[$k] + $x_value[$j] * $y_value[$i] + $carry; + $carry = (int) ($temp / 0x4000000); + $product_value[$k] = (int) ($temp - 0x4000000 * $carry); + } + + $product_value[$k] = $carry; + } + + return $product_value; + } + + /** + * Performs Karatsuba multiplication on two BigIntegers + * + * See {@link http://en.wikipedia.org/wiki/Karatsuba_algorithm Karatsuba algorithm} and + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=120 MPM 5.2.3}. + * + * @param Array $x_value + * @param Array $y_value + * @return Array + * @access private + */ + function _karatsuba($x_value, $y_value) + { + $m = min(count($x_value) >> 1, count($y_value) >> 1); + + if ($m < MATH_BIGINTEGER_KARATSUBA_CUTOFF) { + return $this->_regularMultiply($x_value, $y_value); + } + + $x1 = array_slice($x_value, $m); + $x0 = array_slice($x_value, 0, $m); + $y1 = array_slice($y_value, $m); + $y0 = array_slice($y_value, 0, $m); + + $z2 = $this->_karatsuba($x1, $y1); + $z0 = $this->_karatsuba($x0, $y0); + + $z1 = $this->_add($x1, false, $x0, false); + $temp = $this->_add($y1, false, $y0, false); + $z1 = $this->_karatsuba($z1[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_VALUE]); + $temp = $this->_add($z2, false, $z0, false); + $z1 = $this->_subtract($z1, false, $temp[MATH_BIGINTEGER_VALUE], false); + + $z2 = array_merge(array_fill(0, 2 * $m, 0), $z2); + $z1[MATH_BIGINTEGER_VALUE] = array_merge(array_fill(0, $m, 0), $z1[MATH_BIGINTEGER_VALUE]); + + $xy = $this->_add($z2, false, $z1[MATH_BIGINTEGER_VALUE], $z1[MATH_BIGINTEGER_SIGN]); + $xy = $this->_add($xy[MATH_BIGINTEGER_VALUE], $xy[MATH_BIGINTEGER_SIGN], $z0, false); + + return $xy[MATH_BIGINTEGER_VALUE]; + } + + /** + * Performs squaring + * + * @param Array $x + * @return Array + * @access private + */ + function _square($x = false) + { + return count($x) < 2 * MATH_BIGINTEGER_KARATSUBA_CUTOFF ? + $this->_trim($this->_baseSquare($x)) : + $this->_trim($this->_karatsubaSquare($x)); + } + + /** + * Performs traditional squaring on two BigIntegers + * + * Squaring can be done faster than multiplying a number by itself can be. See + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=7 HAC 14.2.4} / + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=141 MPM 5.3} for more information. + * + * @param Array $value + * @return Array + * @access private + */ + function _baseSquare($value) + { + if ( empty($value) ) { + return array(); + } + $square_value = $this->_array_repeat(0, 2 * count($value)); + + for ($i = 0, $max_index = count($value) - 1; $i <= $max_index; ++$i) { + $i2 = $i << 1; + + $temp = $square_value[$i2] + $value[$i] * $value[$i]; + $carry = (int) ($temp / 0x4000000); + $square_value[$i2] = (int) ($temp - 0x4000000 * $carry); + + // note how we start from $i+1 instead of 0 as we do in multiplication. + for ($j = $i + 1, $k = $i2 + 1; $j <= $max_index; ++$j, ++$k) { + $temp = $square_value[$k] + 2 * $value[$j] * $value[$i] + $carry; + $carry = (int) ($temp / 0x4000000); + $square_value[$k] = (int) ($temp - 0x4000000 * $carry); + } + + // the following line can yield values larger 2**15. at this point, PHP should switch + // over to floats. + $square_value[$i + $max_index + 1] = $carry; + } + + return $square_value; + } + + /** + * Performs Karatsuba "squaring" on two BigIntegers + * + * See {@link http://en.wikipedia.org/wiki/Karatsuba_algorithm Karatsuba algorithm} and + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=151 MPM 5.3.4}. + * + * @param Array $value + * @return Array + * @access private + */ + function _karatsubaSquare($value) + { + $m = count($value) >> 1; + + if ($m < MATH_BIGINTEGER_KARATSUBA_CUTOFF) { + return $this->_baseSquare($value); + } + + $x1 = array_slice($value, $m); + $x0 = array_slice($value, 0, $m); + + $z2 = $this->_karatsubaSquare($x1); + $z0 = $this->_karatsubaSquare($x0); + + $z1 = $this->_add($x1, false, $x0, false); + $z1 = $this->_karatsubaSquare($z1[MATH_BIGINTEGER_VALUE]); + $temp = $this->_add($z2, false, $z0, false); + $z1 = $this->_subtract($z1, false, $temp[MATH_BIGINTEGER_VALUE], false); + + $z2 = array_merge(array_fill(0, 2 * $m, 0), $z2); + $z1[MATH_BIGINTEGER_VALUE] = array_merge(array_fill(0, $m, 0), $z1[MATH_BIGINTEGER_VALUE]); + + $xx = $this->_add($z2, false, $z1[MATH_BIGINTEGER_VALUE], $z1[MATH_BIGINTEGER_SIGN]); + $xx = $this->_add($xx[MATH_BIGINTEGER_VALUE], $xx[MATH_BIGINTEGER_SIGN], $z0, false); + + return $xx[MATH_BIGINTEGER_VALUE]; + } + + /** + * Divides two BigIntegers. + * + * Returns an array whose first element contains the quotient and whose second element contains the + * "common residue". If the remainder would be positive, the "common residue" and the remainder are the + * same. If the remainder would be negative, the "common residue" is equal to the sum of the remainder + * and the divisor (basically, the "common residue" is the first positive modulo). + * + * Here's an example: + * + * divide($b); + * + * echo $quotient->toString(); // outputs 0 + * echo "\r\n"; + * echo $remainder->toString(); // outputs 10 + * ?> + * + * + * @param Math_BigInteger $y + * @return Array + * @access public + * @internal This function is based off of {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=9 HAC 14.20}. + */ + function divide($y) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $quotient = new Math_BigInteger(); + $remainder = new Math_BigInteger(); + + list($quotient->value, $remainder->value) = gmp_div_qr($this->value, $y->value); + + if (gmp_sign($remainder->value) < 0) { + $remainder->value = gmp_add($remainder->value, gmp_abs($y->value)); + } + + return array($this->_normalize($quotient), $this->_normalize($remainder)); + case MATH_BIGINTEGER_MODE_BCMATH: + $quotient = new Math_BigInteger(); + $remainder = new Math_BigInteger(); + + $quotient->value = bcdiv($this->value, $y->value, 0); + $remainder->value = bcmod($this->value, $y->value); + + if ($remainder->value[0] == '-') { + $remainder->value = bcadd($remainder->value, $y->value[0] == '-' ? substr($y->value, 1) : $y->value, 0); + } + + return array($this->_normalize($quotient), $this->_normalize($remainder)); + } + + if (count($y->value) == 1) { + list($q, $r) = $this->_divide_digit($this->value, $y->value[0]); + $quotient = new Math_BigInteger(); + $remainder = new Math_BigInteger(); + $quotient->value = $q; + $remainder->value = array($r); + $quotient->is_negative = $this->is_negative != $y->is_negative; + return array($this->_normalize($quotient), $this->_normalize($remainder)); + } + + static $zero; + if ( !isset($zero) ) { + $zero = new Math_BigInteger(); + } + + $x = $this->copy(); + $y = $y->copy(); + + $x_sign = $x->is_negative; + $y_sign = $y->is_negative; + + $x->is_negative = $y->is_negative = false; + + $diff = $x->compare($y); + + if ( !$diff ) { + $temp = new Math_BigInteger(); + $temp->value = array(1); + $temp->is_negative = $x_sign != $y_sign; + return array($this->_normalize($temp), $this->_normalize(new Math_BigInteger())); + } + + if ( $diff < 0 ) { + // if $x is negative, "add" $y. + if ( $x_sign ) { + $x = $y->subtract($x); + } + return array($this->_normalize(new Math_BigInteger()), $this->_normalize($x)); + } + + // normalize $x and $y as described in HAC 14.23 / 14.24 + $msb = $y->value[count($y->value) - 1]; + for ($shift = 0; !($msb & 0x2000000); ++$shift) { + $msb <<= 1; + } + $x->_lshift($shift); + $y->_lshift($shift); + $y_value = &$y->value; + + $x_max = count($x->value) - 1; + $y_max = count($y->value) - 1; + + $quotient = new Math_BigInteger(); + $quotient_value = &$quotient->value; + $quotient_value = $this->_array_repeat(0, $x_max - $y_max + 1); + + static $temp, $lhs, $rhs; + if (!isset($temp)) { + $temp = new Math_BigInteger(); + $lhs = new Math_BigInteger(); + $rhs = new Math_BigInteger(); + } + $temp_value = &$temp->value; + $rhs_value = &$rhs->value; + + // $temp = $y << ($x_max - $y_max-1) in base 2**26 + $temp_value = array_merge($this->_array_repeat(0, $x_max - $y_max), $y_value); + + while ( $x->compare($temp) >= 0 ) { + // calculate the "common residue" + ++$quotient_value[$x_max - $y_max]; + $x = $x->subtract($temp); + $x_max = count($x->value) - 1; + } + + for ($i = $x_max; $i >= $y_max + 1; --$i) { + $x_value = &$x->value; + $x_window = array( + isset($x_value[$i]) ? $x_value[$i] : 0, + isset($x_value[$i - 1]) ? $x_value[$i - 1] : 0, + isset($x_value[$i - 2]) ? $x_value[$i - 2] : 0 + ); + $y_window = array( + $y_value[$y_max], + ( $y_max > 0 ) ? $y_value[$y_max - 1] : 0 + ); + + $q_index = $i - $y_max - 1; + if ($x_window[0] == $y_window[0]) { + $quotient_value[$q_index] = 0x3FFFFFF; + } else { + $quotient_value[$q_index] = (int) ( + ($x_window[0] * 0x4000000 + $x_window[1]) + / + $y_window[0] + ); + } + + $temp_value = array($y_window[1], $y_window[0]); + + $lhs->value = array($quotient_value[$q_index]); + $lhs = $lhs->multiply($temp); + + $rhs_value = array($x_window[2], $x_window[1], $x_window[0]); + + while ( $lhs->compare($rhs) > 0 ) { + --$quotient_value[$q_index]; + + $lhs->value = array($quotient_value[$q_index]); + $lhs = $lhs->multiply($temp); + } + + $adjust = $this->_array_repeat(0, $q_index); + $temp_value = array($quotient_value[$q_index]); + $temp = $temp->multiply($y); + $temp_value = &$temp->value; + $temp_value = array_merge($adjust, $temp_value); + + $x = $x->subtract($temp); + + if ($x->compare($zero) < 0) { + $temp_value = array_merge($adjust, $y_value); + $x = $x->add($temp); + + --$quotient_value[$q_index]; + } + + $x_max = count($x_value) - 1; + } + + // unnormalize the remainder + $x->_rshift($shift); + + $quotient->is_negative = $x_sign != $y_sign; + + // calculate the "common residue", if appropriate + if ( $x_sign ) { + $y->_rshift($shift); + $x = $y->subtract($x); + } + + return array($this->_normalize($quotient), $this->_normalize($x)); + } + + /** + * Divides a BigInteger by a regular integer + * + * abc / x = a00 / x + b0 / x + c / x + * + * @param Array $dividend + * @param Array $divisor + * @return Array + * @access private + */ + function _divide_digit($dividend, $divisor) + { + $carry = 0; + $result = array(); + + for ($i = count($dividend) - 1; $i >= 0; --$i) { + $temp = 0x4000000 * $carry + $dividend[$i]; + $result[$i] = (int) ($temp / $divisor); + $carry = (int) ($temp - $divisor * $result[$i]); + } + + return array($result, $carry); + } + + /** + * Performs modular exponentiation. + * + * Here's an example: + * + * modPow($b, $c); + * + * echo $c->toString(); // outputs 10 + * ?> + * + * + * @param Math_BigInteger $e + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + * @internal The most naive approach to modular exponentiation has very unreasonable requirements, and + * and although the approach involving repeated squaring does vastly better, it, too, is impractical + * for our purposes. The reason being that division - by far the most complicated and time-consuming + * of the basic operations (eg. +,-,*,/) - occurs multiple times within it. + * + * Modular reductions resolve this issue. Although an individual modular reduction takes more time + * then an individual division, when performed in succession (with the same modulo), they're a lot faster. + * + * The two most commonly used modular reductions are Barrett and Montgomery reduction. Montgomery reduction, + * although faster, only works when the gcd of the modulo and of the base being used is 1. In RSA, when the + * base is a power of two, the modulo - a product of two primes - is always going to have a gcd of 1 (because + * the product of two odd numbers is odd), but what about when RSA isn't used? + * + * In contrast, Barrett reduction has no such constraint. As such, some bigint implementations perform a + * Barrett reduction after every operation in the modpow function. Others perform Barrett reductions when the + * modulo is even and Montgomery reductions when the modulo is odd. BigInteger.java's modPow method, however, + * uses a trick involving the Chinese Remainder Theorem to factor the even modulo into two numbers - one odd and + * the other, a power of two - and recombine them, later. This is the method that this modPow function uses. + * {@link http://islab.oregonstate.edu/papers/j34monex.pdf Montgomery Reduction with Even Modulus} elaborates. + */ + function modPow($e, $n) + { + $n = $this->bitmask !== false && $this->bitmask->compare($n) < 0 ? $this->bitmask : $n->abs(); + + if ($e->compare(new Math_BigInteger()) < 0) { + $e = $e->abs(); + + $temp = $this->modInverse($n); + if ($temp === false) { + return false; + } + + return $this->_normalize($temp->modPow($e, $n)); + } + + if ( MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_GMP ) { + $temp = new Math_BigInteger(); + $temp->value = gmp_powm($this->value, $e->value, $n->value); + + return $this->_normalize($temp); + } + + if ($this->compare(new Math_BigInteger()) < 0 || $this->compare($n) > 0) { + list(, $temp) = $this->divide($n); + return $temp->modPow($e, $n); + } + + if (defined('MATH_BIGINTEGER_OPENSSL_ENABLED')) { + $components = array( + 'modulus' => $n->toBytes(true), + 'publicExponent' => $e->toBytes(true) + ); + + $components = array( + 'modulus' => pack('Ca*a*', 2, $this->_encodeASN1Length(strlen($components['modulus'])), $components['modulus']), + 'publicExponent' => pack('Ca*a*', 2, $this->_encodeASN1Length(strlen($components['publicExponent'])), $components['publicExponent']) + ); + + $RSAPublicKey = pack('Ca*a*a*', + 48, $this->_encodeASN1Length(strlen($components['modulus']) + strlen($components['publicExponent'])), + $components['modulus'], $components['publicExponent'] + ); + + $rsaOID = pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA + $RSAPublicKey = chr(0) . $RSAPublicKey; + $RSAPublicKey = chr(3) . $this->_encodeASN1Length(strlen($RSAPublicKey)) . $RSAPublicKey; + + $encapsulated = pack('Ca*a*', + 48, $this->_encodeASN1Length(strlen($rsaOID . $RSAPublicKey)), $rsaOID . $RSAPublicKey + ); + + $RSAPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" . + chunk_split(base64_encode($encapsulated)) . + '-----END PUBLIC KEY-----'; + + $plaintext = str_pad($this->toBytes(), strlen($n->toBytes(true)) - 1, "\0", STR_PAD_LEFT); + + if (openssl_public_encrypt($plaintext, $result, $RSAPublicKey, OPENSSL_NO_PADDING)) { + return new Math_BigInteger($result, 256); + } + } + + if ( MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH ) { + $temp = new Math_BigInteger(); + $temp->value = bcpowmod($this->value, $e->value, $n->value, 0); + + return $this->_normalize($temp); + } + + if ( empty($e->value) ) { + $temp = new Math_BigInteger(); + $temp->value = array(1); + return $this->_normalize($temp); + } + + if ( $e->value == array(1) ) { + list(, $temp) = $this->divide($n); + return $this->_normalize($temp); + } + + if ( $e->value == array(2) ) { + $temp = new Math_BigInteger(); + $temp->value = $this->_square($this->value); + list(, $temp) = $temp->divide($n); + return $this->_normalize($temp); + } + + return $this->_normalize($this->_slidingWindow($e, $n, MATH_BIGINTEGER_BARRETT)); + + // is the modulo odd? + if ( $n->value[0] & 1 ) { + return $this->_normalize($this->_slidingWindow($e, $n, MATH_BIGINTEGER_MONTGOMERY)); + } + // if it's not, it's even + + // find the lowest set bit (eg. the max pow of 2 that divides $n) + for ($i = 0; $i < count($n->value); ++$i) { + if ( $n->value[$i] ) { + $temp = decbin($n->value[$i]); + $j = strlen($temp) - strrpos($temp, '1') - 1; + $j+= 26 * $i; + break; + } + } + // at this point, 2^$j * $n/(2^$j) == $n + + $mod1 = $n->copy(); + $mod1->_rshift($j); + $mod2 = new Math_BigInteger(); + $mod2->value = array(1); + $mod2->_lshift($j); + + $part1 = ( $mod1->value != array(1) ) ? $this->_slidingWindow($e, $mod1, MATH_BIGINTEGER_MONTGOMERY) : new Math_BigInteger(); + $part2 = $this->_slidingWindow($e, $mod2, MATH_BIGINTEGER_POWEROF2); + + $y1 = $mod2->modInverse($mod1); + $y2 = $mod1->modInverse($mod2); + + $result = $part1->multiply($mod2); + $result = $result->multiply($y1); + + $temp = $part2->multiply($mod1); + $temp = $temp->multiply($y2); + + $result = $result->add($temp); + list(, $result) = $result->divide($n); + + return $this->_normalize($result); + } + + /** + * Performs modular exponentiation. + * + * Alias for Math_BigInteger::modPow() + * + * @param Math_BigInteger $e + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + */ + function powMod($e, $n) + { + return $this->modPow($e, $n); + } + + /** + * Sliding Window k-ary Modular Exponentiation + * + * Based on {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=27 HAC 14.85} / + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=210 MPM 7.7}. In a departure from those algorithims, + * however, this function performs a modular reduction after every multiplication and squaring operation. + * As such, this function has the same preconditions that the reductions being used do. + * + * @param Math_BigInteger $e + * @param Math_BigInteger $n + * @param Integer $mode + * @return Math_BigInteger + * @access private + */ + function _slidingWindow($e, $n, $mode) + { + static $window_ranges = array(7, 25, 81, 241, 673, 1793); // from BigInteger.java's oddModPow function + //static $window_ranges = array(0, 7, 36, 140, 450, 1303, 3529); // from MPM 7.3.1 + + $e_value = $e->value; + $e_length = count($e_value) - 1; + $e_bits = decbin($e_value[$e_length]); + for ($i = $e_length - 1; $i >= 0; --$i) { + $e_bits.= str_pad(decbin($e_value[$i]), 26, '0', STR_PAD_LEFT); + } + + $e_length = strlen($e_bits); + + // calculate the appropriate window size. + // $window_size == 3 if $window_ranges is between 25 and 81, for example. + for ($i = 0, $window_size = 1; $e_length > $window_ranges[$i] && $i < count($window_ranges); ++$window_size, ++$i); + + $n_value = $n->value; + + // precompute $this^0 through $this^$window_size + $powers = array(); + $powers[1] = $this->_prepareReduce($this->value, $n_value, $mode); + $powers[2] = $this->_squareReduce($powers[1], $n_value, $mode); + + // we do every other number since substr($e_bits, $i, $j+1) (see below) is supposed to end + // in a 1. ie. it's supposed to be odd. + $temp = 1 << ($window_size - 1); + for ($i = 1; $i < $temp; ++$i) { + $i2 = $i << 1; + $powers[$i2 + 1] = $this->_multiplyReduce($powers[$i2 - 1], $powers[2], $n_value, $mode); + } + + $result = array(1); + $result = $this->_prepareReduce($result, $n_value, $mode); + + for ($i = 0; $i < $e_length; ) { + if ( !$e_bits[$i] ) { + $result = $this->_squareReduce($result, $n_value, $mode); + ++$i; + } else { + for ($j = $window_size - 1; $j > 0; --$j) { + if ( !empty($e_bits[$i + $j]) ) { + break; + } + } + + for ($k = 0; $k <= $j; ++$k) {// eg. the length of substr($e_bits, $i, $j+1) + $result = $this->_squareReduce($result, $n_value, $mode); + } + + $result = $this->_multiplyReduce($result, $powers[bindec(substr($e_bits, $i, $j + 1))], $n_value, $mode); + + $i+=$j + 1; + } + } + + $temp = new Math_BigInteger(); + $temp->value = $this->_reduce($result, $n_value, $mode); + + return $temp; + } + + /** + * Modular reduction + * + * For most $modes this will return the remainder. + * + * @see _slidingWindow() + * @access private + * @param Array $x + * @param Array $n + * @param Integer $mode + * @return Array + */ + function _reduce($x, $n, $mode) + { + switch ($mode) { + case MATH_BIGINTEGER_MONTGOMERY: + return $this->_montgomery($x, $n); + case MATH_BIGINTEGER_BARRETT: + return $this->_barrett($x, $n); + case MATH_BIGINTEGER_POWEROF2: + $lhs = new Math_BigInteger(); + $lhs->value = $x; + $rhs = new Math_BigInteger(); + $rhs->value = $n; + return $x->_mod2($n); + case MATH_BIGINTEGER_CLASSIC: + $lhs = new Math_BigInteger(); + $lhs->value = $x; + $rhs = new Math_BigInteger(); + $rhs->value = $n; + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + case MATH_BIGINTEGER_NONE: + return $x; + default: + // an invalid $mode was provided + } + } + + /** + * Modular reduction preperation + * + * @see _slidingWindow() + * @access private + * @param Array $x + * @param Array $n + * @param Integer $mode + * @return Array + */ + function _prepareReduce($x, $n, $mode) + { + if ($mode == MATH_BIGINTEGER_MONTGOMERY) { + return $this->_prepMontgomery($x, $n); + } + return $this->_reduce($x, $n, $mode); + } + + /** + * Modular multiply + * + * @see _slidingWindow() + * @access private + * @param Array $x + * @param Array $y + * @param Array $n + * @param Integer $mode + * @return Array + */ + function _multiplyReduce($x, $y, $n, $mode) + { + if ($mode == MATH_BIGINTEGER_MONTGOMERY) { + return $this->_montgomeryMultiply($x, $y, $n); + } + $temp = $this->_multiply($x, false, $y, false); + return $this->_reduce($temp[MATH_BIGINTEGER_VALUE], $n, $mode); + } + + /** + * Modular square + * + * @see _slidingWindow() + * @access private + * @param Array $x + * @param Array $n + * @param Integer $mode + * @return Array + */ + function _squareReduce($x, $n, $mode) + { + if ($mode == MATH_BIGINTEGER_MONTGOMERY) { + return $this->_montgomeryMultiply($x, $x, $n); + } + return $this->_reduce($this->_square($x), $n, $mode); + } + + /** + * Modulos for Powers of Two + * + * Calculates $x%$n, where $n = 2**$e, for some $e. Since this is basically the same as doing $x & ($n-1), + * we'll just use this function as a wrapper for doing that. + * + * @see _slidingWindow() + * @access private + * @param Math_BigInteger + * @return Math_BigInteger + */ + function _mod2($n) + { + $temp = new Math_BigInteger(); + $temp->value = array(1); + return $this->bitwise_and($n->subtract($temp)); + } + + /** + * Barrett Modular Reduction + * + * See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=14 HAC 14.3.3} / + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=165 MPM 6.2.5} for more information. Modified slightly, + * so as not to require negative numbers (initially, this script didn't support negative numbers). + * + * Employs "folding", as described at + * {@link http://www.cosic.esat.kuleuven.be/publications/thesis-149.pdf#page=66 thesis-149.pdf#page=66}. To quote from + * it, "the idea [behind folding] is to find a value x' such that x (mod m) = x' (mod m), with x' being smaller than x." + * + * Unfortunately, the "Barrett Reduction with Folding" algorithm described in thesis-149.pdf is not, as written, all that + * usable on account of (1) its not using reasonable radix points as discussed in + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=162 MPM 6.2.2} and (2) the fact that, even with reasonable + * radix points, it only works when there are an even number of digits in the denominator. The reason for (2) is that + * (x >> 1) + (x >> 1) != x / 2 + x / 2. If x is even, they're the same, but if x is odd, they're not. See the in-line + * comments for details. + * + * @see _slidingWindow() + * @access private + * @param Array $n + * @param Array $m + * @return Array + */ + function _barrett($n, $m) + { + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + $m_length = count($m); + + // if ($this->_compare($n, $this->_square($m)) >= 0) { + if (count($n) > 2 * $m_length) { + $lhs = new Math_BigInteger(); + $rhs = new Math_BigInteger(); + $lhs->value = $n; + $rhs->value = $m; + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + } + + // if (m.length >> 1) + 2 <= m.length then m is too small and n can't be reduced + if ($m_length < 5) { + return $this->_regularBarrett($n, $m); + } + + // n = 2 * m.length + + if ( ($key = array_search($m, $cache[MATH_BIGINTEGER_VARIABLE])) === false ) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $m; + + $lhs = new Math_BigInteger(); + $lhs_value = &$lhs->value; + $lhs_value = $this->_array_repeat(0, $m_length + ($m_length >> 1)); + $lhs_value[] = 1; + $rhs = new Math_BigInteger(); + $rhs->value = $m; + + list($u, $m1) = $lhs->divide($rhs); + $u = $u->value; + $m1 = $m1->value; + + $cache[MATH_BIGINTEGER_DATA][] = array( + 'u' => $u, // m.length >> 1 (technically (m.length >> 1) + 1) + 'm1'=> $m1 // m.length + ); + } else { + extract($cache[MATH_BIGINTEGER_DATA][$key]); + } + + $cutoff = $m_length + ($m_length >> 1); + $lsd = array_slice($n, 0, $cutoff); // m.length + (m.length >> 1) + $msd = array_slice($n, $cutoff); // m.length >> 1 + $lsd = $this->_trim($lsd); + $temp = $this->_multiply($msd, false, $m1, false); + $n = $this->_add($lsd, false, $temp[MATH_BIGINTEGER_VALUE], false); // m.length + (m.length >> 1) + 1 + + if ($m_length & 1) { + return $this->_regularBarrett($n[MATH_BIGINTEGER_VALUE], $m); + } + + // (m.length + (m.length >> 1) + 1) - (m.length - 1) == (m.length >> 1) + 2 + $temp = array_slice($n[MATH_BIGINTEGER_VALUE], $m_length - 1); + // if even: ((m.length >> 1) + 2) + (m.length >> 1) == m.length + 2 + // if odd: ((m.length >> 1) + 2) + (m.length >> 1) == (m.length - 1) + 2 == m.length + 1 + $temp = $this->_multiply($temp, false, $u, false); + // if even: (m.length + 2) - ((m.length >> 1) + 1) = m.length - (m.length >> 1) + 1 + // if odd: (m.length + 1) - ((m.length >> 1) + 1) = m.length - (m.length >> 1) + $temp = array_slice($temp[MATH_BIGINTEGER_VALUE], ($m_length >> 1) + 1); + // if even: (m.length - (m.length >> 1) + 1) + m.length = 2 * m.length - (m.length >> 1) + 1 + // if odd: (m.length - (m.length >> 1)) + m.length = 2 * m.length - (m.length >> 1) + $temp = $this->_multiply($temp, false, $m, false); + + // at this point, if m had an odd number of digits, we'd be subtracting a 2 * m.length - (m.length >> 1) digit + // number from a m.length + (m.length >> 1) + 1 digit number. ie. there'd be an extra digit and the while loop + // following this comment would loop a lot (hence our calling _regularBarrett() in that situation). + + $result = $this->_subtract($n[MATH_BIGINTEGER_VALUE], false, $temp[MATH_BIGINTEGER_VALUE], false); + + while ($this->_compare($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $m, false) >= 0) { + $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $m, false); + } + + return $result[MATH_BIGINTEGER_VALUE]; + } + + /** + * (Regular) Barrett Modular Reduction + * + * For numbers with more than four digits Math_BigInteger::_barrett() is faster. The difference between that and this + * is that this function does not fold the denominator into a smaller form. + * + * @see _slidingWindow() + * @access private + * @param Array $x + * @param Array $n + * @return Array + */ + function _regularBarrett($x, $n) + { + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + $n_length = count($n); + + if (count($x) > 2 * $n_length) { + $lhs = new Math_BigInteger(); + $rhs = new Math_BigInteger(); + $lhs->value = $x; + $rhs->value = $n; + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + } + + if ( ($key = array_search($n, $cache[MATH_BIGINTEGER_VARIABLE])) === false ) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $n; + $lhs = new Math_BigInteger(); + $lhs_value = &$lhs->value; + $lhs_value = $this->_array_repeat(0, 2 * $n_length); + $lhs_value[] = 1; + $rhs = new Math_BigInteger(); + $rhs->value = $n; + list($temp, ) = $lhs->divide($rhs); // m.length + $cache[MATH_BIGINTEGER_DATA][] = $temp->value; + } + + // 2 * m.length - (m.length - 1) = m.length + 1 + $temp = array_slice($x, $n_length - 1); + // (m.length + 1) + m.length = 2 * m.length + 1 + $temp = $this->_multiply($temp, false, $cache[MATH_BIGINTEGER_DATA][$key], false); + // (2 * m.length + 1) - (m.length - 1) = m.length + 2 + $temp = array_slice($temp[MATH_BIGINTEGER_VALUE], $n_length + 1); + + // m.length + 1 + $result = array_slice($x, 0, $n_length + 1); + // m.length + 1 + $temp = $this->_multiplyLower($temp, false, $n, false, $n_length + 1); + // $temp == array_slice($temp->_multiply($temp, false, $n, false)->value, 0, $n_length + 1) + + if ($this->_compare($result, false, $temp[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_SIGN]) < 0) { + $corrector_value = $this->_array_repeat(0, $n_length + 1); + $corrector_value[] = 1; + $result = $this->_add($result, false, $corrector, false); + $result = $result[MATH_BIGINTEGER_VALUE]; + } + + // at this point, we're subtracting a number with m.length + 1 digits from another number with m.length + 1 digits + $result = $this->_subtract($result, false, $temp[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_SIGN]); + while ($this->_compare($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $n, false) > 0) { + $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $n, false); + } + + return $result[MATH_BIGINTEGER_VALUE]; + } + + /** + * Performs long multiplication up to $stop digits + * + * If you're going to be doing array_slice($product->value, 0, $stop), some cycles can be saved. + * + * @see _regularBarrett() + * @param Array $x_value + * @param Boolean $x_negative + * @param Array $y_value + * @param Boolean $y_negative + * @return Array + * @access private + */ + function _multiplyLower($x_value, $x_negative, $y_value, $y_negative, $stop) + { + $x_length = count($x_value); + $y_length = count($y_value); + + if ( !$x_length || !$y_length ) { // a 0 is being multiplied + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + if ( $x_length < $y_length ) { + $temp = $x_value; + $x_value = $y_value; + $y_value = $temp; + + $x_length = count($x_value); + $y_length = count($y_value); + } + + $product_value = $this->_array_repeat(0, $x_length + $y_length); + + // the following for loop could be removed if the for loop following it + // (the one with nested for loops) initially set $i to 0, but + // doing so would also make the result in one set of unnecessary adds, + // since on the outermost loops first pass, $product->value[$k] is going + // to always be 0 + + $carry = 0; + + for ($j = 0; $j < $x_length; ++$j) { // ie. $i = 0, $k = $i + $temp = $x_value[$j] * $y_value[0] + $carry; // $product_value[$k] == 0 + $carry = (int) ($temp / 0x4000000); + $product_value[$j] = (int) ($temp - 0x4000000 * $carry); + } + + if ($j < $stop) { + $product_value[$j] = $carry; + } + + // the above for loop is what the previous comment was talking about. the + // following for loop is the "one with nested for loops" + + for ($i = 1; $i < $y_length; ++$i) { + $carry = 0; + + for ($j = 0, $k = $i; $j < $x_length && $k < $stop; ++$j, ++$k) { + $temp = $product_value[$k] + $x_value[$j] * $y_value[$i] + $carry; + $carry = (int) ($temp / 0x4000000); + $product_value[$k] = (int) ($temp - 0x4000000 * $carry); + } + + if ($k < $stop) { + $product_value[$k] = $carry; + } + } + + return array( + MATH_BIGINTEGER_VALUE => $this->_trim($product_value), + MATH_BIGINTEGER_SIGN => $x_negative != $y_negative + ); + } + + /** + * Montgomery Modular Reduction + * + * ($x->_prepMontgomery($n))->_montgomery($n) yields $x % $n. + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=170 MPM 6.3} provides insights on how this can be + * improved upon (basically, by using the comba method). gcd($n, 2) must be equal to one for this function + * to work correctly. + * + * @see _prepMontgomery() + * @see _slidingWindow() + * @access private + * @param Array $x + * @param Array $n + * @return Array + */ + function _montgomery($x, $n) + { + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + if ( ($key = array_search($n, $cache[MATH_BIGINTEGER_VARIABLE])) === false ) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $x; + $cache[MATH_BIGINTEGER_DATA][] = $this->_modInverse67108864($n); + } + + $k = count($n); + + $result = array(MATH_BIGINTEGER_VALUE => $x); + + for ($i = 0; $i < $k; ++$i) { + $temp = $result[MATH_BIGINTEGER_VALUE][$i] * $cache[MATH_BIGINTEGER_DATA][$key]; + $temp = (int) ($temp - 0x4000000 * ((int) ($temp / 0x4000000))); + $temp = $this->_regularMultiply(array($temp), $n); + $temp = array_merge($this->_array_repeat(0, $i), $temp); + $result = $this->_add($result[MATH_BIGINTEGER_VALUE], false, $temp, false); + } + + $result[MATH_BIGINTEGER_VALUE] = array_slice($result[MATH_BIGINTEGER_VALUE], $k); + + if ($this->_compare($result, false, $n, false) >= 0) { + $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], false, $n, false); + } + + return $result[MATH_BIGINTEGER_VALUE]; + } + + /** + * Montgomery Multiply + * + * Interleaves the montgomery reduction and long multiplication algorithms together as described in + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=13 HAC 14.36} + * + * @see _prepMontgomery() + * @see _montgomery() + * @access private + * @param Array $x + * @param Array $y + * @param Array $m + * @return Array + */ + function _montgomeryMultiply($x, $y, $m) + { + $temp = $this->_multiply($x, false, $y, false); + return $this->_montgomery($temp[MATH_BIGINTEGER_VALUE], $m); + + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + if ( ($key = array_search($m, $cache[MATH_BIGINTEGER_VARIABLE])) === false ) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $m; + $cache[MATH_BIGINTEGER_DATA][] = $this->_modInverse67108864($m); + } + + $n = max(count($x), count($y), count($m)); + $x = array_pad($x, $n, 0); + $y = array_pad($y, $n, 0); + $m = array_pad($m, $n, 0); + $a = array(MATH_BIGINTEGER_VALUE => $this->_array_repeat(0, $n + 1)); + for ($i = 0; $i < $n; ++$i) { + $temp = $a[MATH_BIGINTEGER_VALUE][0] + $x[$i] * $y[0]; + $temp = (int) ($temp - 0x4000000 * ((int) ($temp / 0x4000000))); + $temp = $temp * $cache[MATH_BIGINTEGER_DATA][$key]; + $temp = (int) ($temp - 0x4000000 * ((int) ($temp / 0x4000000))); + $temp = $this->_add($this->_regularMultiply(array($x[$i]), $y), false, $this->_regularMultiply(array($temp), $m), false); + $a = $this->_add($a[MATH_BIGINTEGER_VALUE], false, $temp[MATH_BIGINTEGER_VALUE], false); + $a[MATH_BIGINTEGER_VALUE] = array_slice($a[MATH_BIGINTEGER_VALUE], 1); + } + if ($this->_compare($a[MATH_BIGINTEGER_VALUE], false, $m, false) >= 0) { + $a = $this->_subtract($a[MATH_BIGINTEGER_VALUE], false, $m, false); + } + return $a[MATH_BIGINTEGER_VALUE]; + } + + /** + * Prepare a number for use in Montgomery Modular Reductions + * + * @see _montgomery() + * @see _slidingWindow() + * @access private + * @param Array $x + * @param Array $n + * @return Array + */ + function _prepMontgomery($x, $n) + { + $lhs = new Math_BigInteger(); + $lhs->value = array_merge($this->_array_repeat(0, count($n)), $x); + $rhs = new Math_BigInteger(); + $rhs->value = $n; + + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + } + + /** + * Modular Inverse of a number mod 2**26 (eg. 67108864) + * + * Based off of the bnpInvDigit function implemented and justified in the following URL: + * + * {@link http://www-cs-students.stanford.edu/~tjw/jsbn/jsbn.js} + * + * The following URL provides more info: + * + * {@link http://groups.google.com/group/sci.crypt/msg/7a137205c1be7d85} + * + * As for why we do all the bitmasking... strange things can happen when converting from floats to ints. For + * instance, on some computers, var_dump((int) -4294967297) yields int(-1) and on others, it yields + * int(-2147483648). To avoid problems stemming from this, we use bitmasks to guarantee that ints aren't + * auto-converted to floats. The outermost bitmask is present because without it, there's no guarantee that + * the "residue" returned would be the so-called "common residue". We use fmod, in the last step, because the + * maximum possible $x is 26 bits and the maximum $result is 16 bits. Thus, we have to be able to handle up to + * 40 bits, which only 64-bit floating points will support. + * + * Thanks to Pedro Gimeno Fortea for input! + * + * @see _montgomery() + * @access private + * @param Array $x + * @return Integer + */ + function _modInverse67108864($x) // 2**26 == 67108864 + { + $x = -$x[0]; + $result = $x & 0x3; // x**-1 mod 2**2 + $result = ($result * (2 - $x * $result)) & 0xF; // x**-1 mod 2**4 + $result = ($result * (2 - ($x & 0xFF) * $result)) & 0xFF; // x**-1 mod 2**8 + $result = ($result * ((2 - ($x & 0xFFFF) * $result) & 0xFFFF)) & 0xFFFF; // x**-1 mod 2**16 + $result = fmod($result * (2 - fmod($x * $result, 0x4000000)), 0x4000000); // x**-1 mod 2**26 + return $result & 0x3FFFFFF; + } + + /** + * Calculates modular inverses. + * + * Say you have (30 mod 17 * x mod 17) mod 17 == 1. x can be found using modular inverses. + * + * Here's an example: + * + * modInverse($b); + * echo $c->toString(); // outputs 4 + * + * echo "\r\n"; + * + * $d = $a->multiply($c); + * list(, $d) = $d->divide($b); + * echo $d; // outputs 1 (as per the definition of modular inverse) + * ?> + * + * + * @param Math_BigInteger $n + * @return mixed false, if no modular inverse exists, Math_BigInteger, otherwise. + * @access public + * @internal See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=21 HAC 14.64} for more information. + */ + function modInverse($n) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_invert($this->value, $n->value); + + return ( $temp->value === false ) ? false : $this->_normalize($temp); + } + + static $zero, $one; + if (!isset($zero)) { + $zero = new Math_BigInteger(); + $one = new Math_BigInteger(1); + } + + // $x mod -$n == $x mod $n. + $n = $n->abs(); + + if ($this->compare($zero) < 0) { + $temp = $this->abs(); + $temp = $temp->modInverse($n); + return $this->_normalize($n->subtract($temp)); + } + + extract($this->extendedGCD($n)); + + if (!$gcd->equals($one)) { + return false; + } + + $x = $x->compare($zero) < 0 ? $x->add($n) : $x; + + return $this->compare($zero) < 0 ? $this->_normalize($n->subtract($x)) : $this->_normalize($x); + } + + /** + * Calculates the greatest common divisor and Bzout's identity. + * + * Say you have 693 and 609. The GCD is 21. Bzout's identity states that there exist integers x and y such that + * 693*x + 609*y == 21. In point of fact, there are actually an infinite number of x and y combinations and which + * combination is returned is dependant upon which mode is in use. See + * {@link http://en.wikipedia.org/wiki/B%C3%A9zout%27s_identity Bzout's identity - Wikipedia} for more information. + * + * Here's an example: + * + * extendedGCD($b)); + * + * echo $gcd->toString() . "\r\n"; // outputs 21 + * echo $a->toString() * $x->toString() + $b->toString() * $y->toString(); // outputs 21 + * ?> + * + * + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + * @internal Calculates the GCD using the binary xGCD algorithim described in + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=19 HAC 14.61}. As the text above 14.61 notes, + * the more traditional algorithim requires "relatively costly multiple-precision divisions". + */ + function extendedGCD($n) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + extract(gmp_gcdext($this->value, $n->value)); + + return array( + 'gcd' => $this->_normalize(new Math_BigInteger($g)), + 'x' => $this->_normalize(new Math_BigInteger($s)), + 'y' => $this->_normalize(new Math_BigInteger($t)) + ); + case MATH_BIGINTEGER_MODE_BCMATH: + // it might be faster to use the binary xGCD algorithim here, as well, but (1) that algorithim works + // best when the base is a power of 2 and (2) i don't think it'd make much difference, anyway. as is, + // the basic extended euclidean algorithim is what we're using. + + $u = $this->value; + $v = $n->value; + + $a = '1'; + $b = '0'; + $c = '0'; + $d = '1'; + + while (bccomp($v, '0', 0) != 0) { + $q = bcdiv($u, $v, 0); + + $temp = $u; + $u = $v; + $v = bcsub($temp, bcmul($v, $q, 0), 0); + + $temp = $a; + $a = $c; + $c = bcsub($temp, bcmul($a, $q, 0), 0); + + $temp = $b; + $b = $d; + $d = bcsub($temp, bcmul($b, $q, 0), 0); + } + + return array( + 'gcd' => $this->_normalize(new Math_BigInteger($u)), + 'x' => $this->_normalize(new Math_BigInteger($a)), + 'y' => $this->_normalize(new Math_BigInteger($b)) + ); + } + + $y = $n->copy(); + $x = $this->copy(); + $g = new Math_BigInteger(); + $g->value = array(1); + + while ( !(($x->value[0] & 1)|| ($y->value[0] & 1)) ) { + $x->_rshift(1); + $y->_rshift(1); + $g->_lshift(1); + } + + $u = $x->copy(); + $v = $y->copy(); + + $a = new Math_BigInteger(); + $b = new Math_BigInteger(); + $c = new Math_BigInteger(); + $d = new Math_BigInteger(); + + $a->value = $d->value = $g->value = array(1); + $b->value = $c->value = array(); + + while ( !empty($u->value) ) { + while ( !($u->value[0] & 1) ) { + $u->_rshift(1); + if ( (!empty($a->value) && ($a->value[0] & 1)) || (!empty($b->value) && ($b->value[0] & 1)) ) { + $a = $a->add($y); + $b = $b->subtract($x); + } + $a->_rshift(1); + $b->_rshift(1); + } + + while ( !($v->value[0] & 1) ) { + $v->_rshift(1); + if ( (!empty($d->value) && ($d->value[0] & 1)) || (!empty($c->value) && ($c->value[0] & 1)) ) { + $c = $c->add($y); + $d = $d->subtract($x); + } + $c->_rshift(1); + $d->_rshift(1); + } + + if ($u->compare($v) >= 0) { + $u = $u->subtract($v); + $a = $a->subtract($c); + $b = $b->subtract($d); + } else { + $v = $v->subtract($u); + $c = $c->subtract($a); + $d = $d->subtract($b); + } + } + + return array( + 'gcd' => $this->_normalize($g->multiply($v)), + 'x' => $this->_normalize($c), + 'y' => $this->_normalize($d) + ); + } + + /** + * Calculates the greatest common divisor + * + * Say you have 693 and 609. The GCD is 21. + * + * Here's an example: + * + * extendedGCD($b); + * + * echo $gcd->toString() . "\r\n"; // outputs 21 + * ?> + * + * + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + */ + function gcd($n) + { + extract($this->extendedGCD($n)); + return $gcd; + } + + /** + * Absolute value. + * + * @return Math_BigInteger + * @access public + */ + function abs() + { + $temp = new Math_BigInteger(); + + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $temp->value = gmp_abs($this->value); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $temp->value = (bccomp($this->value, '0', 0) < 0) ? substr($this->value, 1) : $this->value; + break; + default: + $temp->value = $this->value; + } + + return $temp; + } + + /** + * Compares two numbers. + * + * Although one might think !$x->compare($y) means $x != $y, it, in fact, means the opposite. The reason for this is + * demonstrated thusly: + * + * $x > $y: $x->compare($y) > 0 + * $x < $y: $x->compare($y) < 0 + * $x == $y: $x->compare($y) == 0 + * + * Note how the same comparison operator is used. If you want to test for equality, use $x->equals($y). + * + * @param Math_BigInteger $x + * @return Integer < 0 if $this is less than $x; > 0 if $this is greater than $x, and 0 if they are equal. + * @access public + * @see equals() + * @internal Could return $this->subtract($x), but that's not as fast as what we do do. + */ + function compare($y) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_cmp($this->value, $y->value); + case MATH_BIGINTEGER_MODE_BCMATH: + return bccomp($this->value, $y->value, 0); + } + + return $this->_compare($this->value, $this->is_negative, $y->value, $y->is_negative); + } + + /** + * Compares two numbers. + * + * @param Array $x_value + * @param Boolean $x_negative + * @param Array $y_value + * @param Boolean $y_negative + * @return Integer + * @see compare() + * @access private + */ + function _compare($x_value, $x_negative, $y_value, $y_negative) + { + if ( $x_negative != $y_negative ) { + return ( !$x_negative && $y_negative ) ? 1 : -1; + } + + $result = $x_negative ? -1 : 1; + + if ( count($x_value) != count($y_value) ) { + return ( count($x_value) > count($y_value) ) ? $result : -$result; + } + $size = max(count($x_value), count($y_value)); + + $x_value = array_pad($x_value, $size, 0); + $y_value = array_pad($y_value, $size, 0); + + for ($i = count($x_value) - 1; $i >= 0; --$i) { + if ($x_value[$i] != $y_value[$i]) { + return ( $x_value[$i] > $y_value[$i] ) ? $result : -$result; + } + } + + return 0; + } + + /** + * Tests the equality of two numbers. + * + * If you need to see if one number is greater than or less than another number, use Math_BigInteger::compare() + * + * @param Math_BigInteger $x + * @return Boolean + * @access public + * @see compare() + */ + function equals($x) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_cmp($this->value, $x->value) == 0; + default: + return $this->value === $x->value && $this->is_negative == $x->is_negative; + } + } + + /** + * Set Precision + * + * Some bitwise operations give different results depending on the precision being used. Examples include left + * shift, not, and rotates. + * + * @param Math_BigInteger $x + * @access public + * @return Math_BigInteger + */ + function setPrecision($bits) + { + $this->precision = $bits; + if ( MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_BCMATH ) { + $this->bitmask = new Math_BigInteger(chr((1 << ($bits & 0x7)) - 1) . str_repeat(chr(0xFF), $bits >> 3), 256); + } else { + $this->bitmask = new Math_BigInteger(bcpow('2', $bits, 0)); + } + + $temp = $this->_normalize($this); + $this->value = $temp->value; + } + + /** + * Logical And + * + * @param Math_BigInteger $x + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_and($x) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_and($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $left = $this->toBytes(); + $right = $x->toBytes(); + + $length = max(strlen($left), strlen($right)); + + $left = str_pad($left, $length, chr(0), STR_PAD_LEFT); + $right = str_pad($right, $length, chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($left & $right, 256)); + } + + $result = $this->copy(); + + $length = min(count($x->value), count($this->value)); + + $result->value = array_slice($result->value, 0, $length); + + for ($i = 0; $i < $length; ++$i) { + $result->value[$i] = $result->value[$i] & $x->value[$i]; + } + + return $this->_normalize($result); + } + + /** + * Logical Or + * + * @param Math_BigInteger $x + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_or($x) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_or($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $left = $this->toBytes(); + $right = $x->toBytes(); + + $length = max(strlen($left), strlen($right)); + + $left = str_pad($left, $length, chr(0), STR_PAD_LEFT); + $right = str_pad($right, $length, chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($left | $right, 256)); + } + + $length = max(count($this->value), count($x->value)); + $result = $this->copy(); + $result->value = array_pad($result->value, 0, $length); + $x->value = array_pad($x->value, 0, $length); + + for ($i = 0; $i < $length; ++$i) { + $result->value[$i] = $this->value[$i] | $x->value[$i]; + } + + return $this->_normalize($result); + } + + /** + * Logical Exclusive-Or + * + * @param Math_BigInteger $x + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_xor($x) + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_xor($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $left = $this->toBytes(); + $right = $x->toBytes(); + + $length = max(strlen($left), strlen($right)); + + $left = str_pad($left, $length, chr(0), STR_PAD_LEFT); + $right = str_pad($right, $length, chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($left ^ $right, 256)); + } + + $length = max(count($this->value), count($x->value)); + $result = $this->copy(); + $result->value = array_pad($result->value, 0, $length); + $x->value = array_pad($x->value, 0, $length); + + for ($i = 0; $i < $length; ++$i) { + $result->value[$i] = $this->value[$i] ^ $x->value[$i]; + } + + return $this->_normalize($result); + } + + /** + * Logical Not + * + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_not() + { + // calculuate "not" without regard to $this->precision + // (will always result in a smaller number. ie. ~1 isn't 1111 1110 - it's 0) + $temp = $this->toBytes(); + $pre_msb = decbin(ord($temp[0])); + $temp = ~$temp; + $msb = decbin(ord($temp[0])); + if (strlen($msb) == 8) { + $msb = substr($msb, strpos($msb, '0')); + } + $temp[0] = chr(bindec($msb)); + + // see if we need to add extra leading 1's + $current_bits = strlen($pre_msb) + 8 * strlen($temp) - 8; + $new_bits = $this->precision - $current_bits; + if ($new_bits <= 0) { + return $this->_normalize(new Math_BigInteger($temp, 256)); + } + + // generate as many leading 1's as we need to. + $leading_ones = chr((1 << ($new_bits & 0x7)) - 1) . str_repeat(chr(0xFF), $new_bits >> 3); + $this->_base256_lshift($leading_ones, $current_bits); + + $temp = str_pad($temp, ceil($this->bits / 8), chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($leading_ones | $temp, 256)); + } + + /** + * Logical Right Shift + * + * Shifts BigInteger's by $shift bits, effectively dividing by 2**$shift. + * + * @param Integer $shift + * @return Math_BigInteger + * @access public + * @internal The only version that yields any speed increases is the internal version. + */ + function bitwise_rightShift($shift) + { + $temp = new Math_BigInteger(); + + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + static $two; + + if (!isset($two)) { + $two = gmp_init('2'); + } + + $temp->value = gmp_div_q($this->value, gmp_pow($two, $shift)); + + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $temp->value = bcdiv($this->value, bcpow('2', $shift, 0), 0); + + break; + default: // could just replace _lshift with this, but then all _lshift() calls would need to be rewritten + // and I don't want to do that... + $temp->value = $this->value; + $temp->_rshift($shift); + } + + return $this->_normalize($temp); + } + + /** + * Logical Left Shift + * + * Shifts BigInteger's by $shift bits, effectively multiplying by 2**$shift. + * + * @param Integer $shift + * @return Math_BigInteger + * @access public + * @internal The only version that yields any speed increases is the internal version. + */ + function bitwise_leftShift($shift) + { + $temp = new Math_BigInteger(); + + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + static $two; + + if (!isset($two)) { + $two = gmp_init('2'); + } + + $temp->value = gmp_mul($this->value, gmp_pow($two, $shift)); + + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $temp->value = bcmul($this->value, bcpow('2', $shift, 0), 0); + + break; + default: // could just replace _rshift with this, but then all _lshift() calls would need to be rewritten + // and I don't want to do that... + $temp->value = $this->value; + $temp->_lshift($shift); + } + + return $this->_normalize($temp); + } + + /** + * Logical Left Rotate + * + * Instead of the top x bits being dropped they're appended to the shifted bit string. + * + * @param Integer $shift + * @return Math_BigInteger + * @access public + */ + function bitwise_leftRotate($shift) + { + $bits = $this->toBytes(); + + if ($this->precision > 0) { + $precision = $this->precision; + if ( MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH ) { + $mask = $this->bitmask->subtract(new Math_BigInteger(1)); + $mask = $mask->toBytes(); + } else { + $mask = $this->bitmask->toBytes(); + } + } else { + $temp = ord($bits[0]); + for ($i = 0; $temp >> $i; ++$i); + $precision = 8 * strlen($bits) - 8 + $i; + $mask = chr((1 << ($precision & 0x7)) - 1) . str_repeat(chr(0xFF), $precision >> 3); + } + + if ($shift < 0) { + $shift+= $precision; + } + $shift%= $precision; + + if (!$shift) { + return $this->copy(); + } + + $left = $this->bitwise_leftShift($shift); + $left = $left->bitwise_and(new Math_BigInteger($mask, 256)); + $right = $this->bitwise_rightShift($precision - $shift); + $result = MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_BCMATH ? $left->bitwise_or($right) : $left->add($right); + return $this->_normalize($result); + } + + /** + * Logical Right Rotate + * + * Instead of the bottom x bits being dropped they're prepended to the shifted bit string. + * + * @param Integer $shift + * @return Math_BigInteger + * @access public + */ + function bitwise_rightRotate($shift) + { + return $this->bitwise_leftRotate(-$shift); + } + + /** + * Set random number generator function + * + * This function is deprecated. + * + * @param String $generator + * @access public + */ + function setRandomGenerator($generator) + { + } + + /** + * Generate a random number + * + * @param optional Integer $min + * @param optional Integer $max + * @return Math_BigInteger + * @access public + */ + function random($min = false, $max = false) + { + if ($min === false) { + $min = new Math_BigInteger(0); + } + + if ($max === false) { + $max = new Math_BigInteger(0x7FFFFFFF); + } + + $compare = $max->compare($min); + + if (!$compare) { + return $this->_normalize($min); + } else if ($compare < 0) { + // if $min is bigger then $max, swap $min and $max + $temp = $max; + $max = $min; + $min = $temp; + } + + $generator = $this->generator; + + $max = $max->subtract($min); + $max = ltrim($max->toBytes(), chr(0)); + $size = strlen($max) - 1; + + $crypt_random = function_exists('crypt_random_string') || (!class_exists('Crypt_Random') && function_exists('crypt_random_string')); + if ($crypt_random) { + $random = crypt_random_string($size); + } else { + $random = ''; + + if ($size & 1) { + $random.= chr(mt_rand(0, 255)); + } + + $blocks = $size >> 1; + for ($i = 0; $i < $blocks; ++$i) { + // mt_rand(-2147483648, 0x7FFFFFFF) always produces -2147483648 on some systems + $random.= pack('n', mt_rand(0, 0xFFFF)); + } + } + + $fragment = new Math_BigInteger($random, 256); + $leading = $fragment->compare(new Math_BigInteger(substr($max, 1), 256)) > 0 ? + ord($max[0]) - 1 : ord($max[0]); + + if (!$crypt_random) { + $msb = chr(mt_rand(0, $leading)); + } else { + $cutoff = floor(0xFF / $leading) * $leading; + while (true) { + $msb = ord(crypt_random_string(1)); + if ($msb <= $cutoff) { + $msb%= $leading; + break; + } + } + $msb = chr($msb); + } + + $random = new Math_BigInteger($msb . $random, 256); + + return $this->_normalize($random->add($min)); + } + + /** + * Generate a random prime number. + * + * If there's not a prime within the given range, false will be returned. If more than $timeout seconds have elapsed, + * give up and return false. + * + * @param optional Integer $min + * @param optional Integer $max + * @param optional Integer $timeout + * @return Math_BigInteger + * @access public + * @internal See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap4.pdf#page=15 HAC 4.44}. + */ + function randomPrime($min = false, $max = false, $timeout = false) + { + $compare = $max->compare($min); + + if (!$compare) { + return $min; + } else if ($compare < 0) { + // if $min is bigger then $max, swap $min and $max + $temp = $max; + $max = $min; + $min = $temp; + } + + // gmp_nextprime() requires PHP 5 >= 5.2.0 per . + if ( MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_GMP && function_exists('gmp_nextprime') ) { + // we don't rely on Math_BigInteger::random()'s min / max when gmp_nextprime() is being used since this function + // does its own checks on $max / $min when gmp_nextprime() is used. When gmp_nextprime() is not used, however, + // the same $max / $min checks are not performed. + if ($min === false) { + $min = new Math_BigInteger(0); + } + + if ($max === false) { + $max = new Math_BigInteger(0x7FFFFFFF); + } + + $x = $this->random($min, $max); + + $x->value = gmp_nextprime($x->value); + + if ($x->compare($max) <= 0) { + return $x; + } + + $x->value = gmp_nextprime($min->value); + + if ($x->compare($max) <= 0) { + return $x; + } + + return false; + } + + static $one, $two; + if (!isset($one)) { + $one = new Math_BigInteger(1); + $two = new Math_BigInteger(2); + } + + $start = time(); + + $x = $this->random($min, $max); + if ($x->equals($two)) { + return $x; + } + + $x->_make_odd(); + if ($x->compare($max) > 0) { + // if $x > $max then $max is even and if $min == $max then no prime number exists between the specified range + if ($min->equals($max)) { + return false; + } + $x = $min->copy(); + $x->_make_odd(); + } + + $initial_x = $x->copy(); + + while (true) { + if ($timeout !== false && time() - $start > $timeout) { + return false; + } + + if ($x->isPrime()) { + return $x; + } + + $x = $x->add($two); + + if ($x->compare($max) > 0) { + $x = $min->copy(); + if ($x->equals($two)) { + return $x; + } + $x->_make_odd(); + } + + if ($x->equals($initial_x)) { + return false; + } + } + } + + /** + * Make the current number odd + * + * If the current number is odd it'll be unchanged. If it's even, one will be added to it. + * + * @see randomPrime() + * @access private + */ + function _make_odd() + { + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + gmp_setbit($this->value, 0); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value[strlen($this->value) - 1] % 2 == 0) { + $this->value = bcadd($this->value, '1'); + } + break; + default: + $this->value[0] |= 1; + } + } + + /** + * Checks a numer to see if it's prime + * + * Assuming the $t parameter is not set, this function has an error rate of 2**-80. The main motivation for the + * $t parameter is distributability. Math_BigInteger::randomPrime() can be distributed accross multiple pageloads + * on a website instead of just one. + * + * @param optional Integer $t + * @return Boolean + * @access public + * @internal Uses the + * {@link http://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test Miller-Rabin primality test}. See + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap4.pdf#page=8 HAC 4.24}. + */ + function isPrime($t = false) + { + $length = strlen($this->toBytes()); + + if (!$t) { + // see HAC 4.49 "Note (controlling the error probability)" + if ($length >= 163) { $t = 2; } // floor(1300 / 8) + else if ($length >= 106) { $t = 3; } // floor( 850 / 8) + else if ($length >= 81 ) { $t = 4; } // floor( 650 / 8) + else if ($length >= 68 ) { $t = 5; } // floor( 550 / 8) + else if ($length >= 56 ) { $t = 6; } // floor( 450 / 8) + else if ($length >= 50 ) { $t = 7; } // floor( 400 / 8) + else if ($length >= 43 ) { $t = 8; } // floor( 350 / 8) + else if ($length >= 37 ) { $t = 9; } // floor( 300 / 8) + else if ($length >= 31 ) { $t = 12; } // floor( 250 / 8) + else if ($length >= 25 ) { $t = 15; } // floor( 200 / 8) + else if ($length >= 18 ) { $t = 18; } // floor( 150 / 8) + else { $t = 27; } + } + + // ie. gmp_testbit($this, 0) + // ie. isEven() or !isOdd() + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_prob_prime($this->value, $t) != 0; + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value === '2') { + return true; + } + if ($this->value[strlen($this->value) - 1] % 2 == 0) { + return false; + } + break; + default: + if ($this->value == array(2)) { + return true; + } + if (~$this->value[0] & 1) { + return false; + } + } + + static $primes, $zero, $one, $two; + + if (!isset($primes)) { + $primes = array( + 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, + 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, + 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, + 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, + 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, + 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, + 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, + 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, + 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, + 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, + 953, 967, 971, 977, 983, 991, 997 + ); + + if ( MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL ) { + for ($i = 0; $i < count($primes); ++$i) { + $primes[$i] = new Math_BigInteger($primes[$i]); + } + } + + $zero = new Math_BigInteger(); + $one = new Math_BigInteger(1); + $two = new Math_BigInteger(2); + } + + if ($this->equals($one)) { + return false; + } + + // see HAC 4.4.1 "Random search for probable primes" + if ( MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL ) { + foreach ($primes as $prime) { + list(, $r) = $this->divide($prime); + if ($r->equals($zero)) { + return $this->equals($prime); + } + } + } else { + $value = $this->value; + foreach ($primes as $prime) { + list(, $r) = $this->_divide_digit($value, $prime); + if (!$r) { + return count($value) == 1 && $value[0] == $prime; + } + } + } + + $n = $this->copy(); + $n_1 = $n->subtract($one); + $n_2 = $n->subtract($two); + + $r = $n_1->copy(); + $r_value = $r->value; + // ie. $s = gmp_scan1($n, 0) and $r = gmp_div_q($n, gmp_pow(gmp_init('2'), $s)); + if ( MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH ) { + $s = 0; + // if $n was 1, $r would be 0 and this would be an infinite loop, hence our $this->equals($one) check earlier + while ($r->value[strlen($r->value) - 1] % 2 == 0) { + $r->value = bcdiv($r->value, '2', 0); + ++$s; + } + } else { + for ($i = 0, $r_length = count($r_value); $i < $r_length; ++$i) { + $temp = ~$r_value[$i] & 0xFFFFFF; + for ($j = 1; ($temp >> $j) & 1; ++$j); + if ($j != 25) { + break; + } + } + $s = 26 * $i + $j - 1; + $r->_rshift($s); + } + + for ($i = 0; $i < $t; ++$i) { + $a = $this->random($two, $n_2); + $y = $a->modPow($r, $n); + + if (!$y->equals($one) && !$y->equals($n_1)) { + for ($j = 1; $j < $s && !$y->equals($n_1); ++$j) { + $y = $y->modPow($two, $n); + if ($y->equals($one)) { + return false; + } + } + + if (!$y->equals($n_1)) { + return false; + } + } + } + return true; + } + + /** + * Logical Left Shift + * + * Shifts BigInteger's by $shift bits. + * + * @param Integer $shift + * @access private + */ + function _lshift($shift) + { + if ( $shift == 0 ) { + return; + } + + $num_digits = (int) ($shift / 26); + $shift %= 26; + $shift = 1 << $shift; + + $carry = 0; + + for ($i = 0; $i < count($this->value); ++$i) { + $temp = $this->value[$i] * $shift + $carry; + $carry = (int) ($temp / 0x4000000); + $this->value[$i] = (int) ($temp - $carry * 0x4000000); + } + + if ( $carry ) { + $this->value[] = $carry; + } + + while ($num_digits--) { + array_unshift($this->value, 0); + } + } + + /** + * Logical Right Shift + * + * Shifts BigInteger's by $shift bits. + * + * @param Integer $shift + * @access private + */ + function _rshift($shift) + { + if ($shift == 0) { + return; + } + + $num_digits = (int) ($shift / 26); + $shift %= 26; + $carry_shift = 26 - $shift; + $carry_mask = (1 << $shift) - 1; + + if ( $num_digits ) { + $this->value = array_slice($this->value, $num_digits); + } + + $carry = 0; + + for ($i = count($this->value) - 1; $i >= 0; --$i) { + $temp = $this->value[$i] >> $shift | $carry; + $carry = ($this->value[$i] & $carry_mask) << $carry_shift; + $this->value[$i] = $temp; + } + + $this->value = $this->_trim($this->value); + } + + /** + * Normalize + * + * Removes leading zeros and truncates (if necessary) to maintain the appropriate precision + * + * @param Math_BigInteger + * @return Math_BigInteger + * @see _trim() + * @access private + */ + function _normalize($result) + { + $result->precision = $this->precision; + $result->bitmask = $this->bitmask; + + switch ( MATH_BIGINTEGER_MODE ) { + case MATH_BIGINTEGER_MODE_GMP: + if (!empty($result->bitmask->value)) { + $result->value = gmp_and($result->value, $result->bitmask->value); + } + + return $result; + case MATH_BIGINTEGER_MODE_BCMATH: + if (!empty($result->bitmask->value)) { + $result->value = bcmod($result->value, $result->bitmask->value); + } + + return $result; + } + + $value = &$result->value; + + if ( !count($value) ) { + return $result; + } + + $value = $this->_trim($value); + + if (!empty($result->bitmask->value)) { + $length = min(count($value), count($this->bitmask->value)); + $value = array_slice($value, 0, $length); + + for ($i = 0; $i < $length; ++$i) { + $value[$i] = $value[$i] & $this->bitmask->value[$i]; + } + } + + return $result; + } + + /** + * Trim + * + * Removes leading zeros + * + * @return Math_BigInteger + * @access private + */ + function _trim($value) + { + for ($i = count($value) - 1; $i >= 0; --$i) { + if ( $value[$i] ) { + break; + } + unset($value[$i]); + } + + return $value; + } + + /** + * Array Repeat + * + * @param $input Array + * @param $multiplier mixed + * @return Array + * @access private + */ + function _array_repeat($input, $multiplier) + { + return ($multiplier) ? array_fill(0, $multiplier, $input) : array(); + } + + /** + * Logical Left Shift + * + * Shifts binary strings $shift bits, essentially multiplying by 2**$shift. + * + * @param $x String + * @param $shift Integer + * @return String + * @access private + */ + function _base256_lshift(&$x, $shift) + { + if ($shift == 0) { + return; + } + + $num_bytes = $shift >> 3; // eg. floor($shift/8) + $shift &= 7; // eg. $shift % 8 + + $carry = 0; + for ($i = strlen($x) - 1; $i >= 0; --$i) { + $temp = ord($x[$i]) << $shift | $carry; + $x[$i] = chr($temp); + $carry = $temp >> 8; + } + $carry = ($carry != 0) ? chr($carry) : ''; + $x = $carry . $x . str_repeat(chr(0), $num_bytes); + } + + /** + * Logical Right Shift + * + * Shifts binary strings $shift bits, essentially dividing by 2**$shift and returning the remainder. + * + * @param $x String + * @param $shift Integer + * @return String + * @access private + */ + function _base256_rshift(&$x, $shift) + { + if ($shift == 0) { + $x = ltrim($x, chr(0)); + return ''; + } + + $num_bytes = $shift >> 3; // eg. floor($shift/8) + $shift &= 7; // eg. $shift % 8 + + $remainder = ''; + if ($num_bytes) { + $start = $num_bytes > strlen($x) ? -strlen($x) : -$num_bytes; + $remainder = substr($x, $start); + $x = substr($x, 0, -$num_bytes); + } + + $carry = 0; + $carry_shift = 8 - $shift; + for ($i = 0; $i < strlen($x); ++$i) { + $temp = (ord($x[$i]) >> $shift) | $carry; + $carry = (ord($x[$i]) << $carry_shift) & 0xFF; + $x[$i] = chr($temp); + } + $x = ltrim($x, chr(0)); + + $remainder = chr($carry >> $carry_shift) . $remainder; + + return ltrim($remainder, chr(0)); + } + + // one quirk about how the following functions are implemented is that PHP defines N to be an unsigned long + // at 32-bits, while java's longs are 64-bits. + + /** + * Converts 32-bit integers to bytes. + * + * @param Integer $x + * @return String + * @access private + */ + function _int2bytes($x) + { + return ltrim(pack('N', $x), chr(0)); + } + + /** + * Converts bytes to 32-bit integers + * + * @param String $x + * @return Integer + * @access private + */ + function _bytes2int($x) + { + $temp = unpack('Nint', str_pad($x, 4, chr(0), STR_PAD_LEFT)); + return $temp['int']; + } + + /** + * DER-encode an integer + * + * The ability to DER-encode integers is needed to create RSA public keys for use with OpenSSL + * + * @see modPow() + * @access private + * @param Integer $length + * @return String + */ + function _encodeASN1Length($length) + { + if ($length <= 0x7F) { + return chr($length); + } + + $temp = ltrim(pack('N', $length), chr(0)); + return pack('Ca*', 0x80 | strlen($temp), $temp); + } +} \ No newline at end of file diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Net/SFTP.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Net/SFTP.php new file mode 100644 index 0000000000..8db087d3d9 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Net/SFTP.php @@ -0,0 +1,2029 @@ + + * login('username', 'password')) { + * exit('Login Failed'); + * } + * + * echo $sftp->pwd() . "\r\n"; + * $sftp->put('filename.ext', 'hello, world!'); + * print_r($sftp->nlist()); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Net + * @package Net_SFTP + * @author Jim Wigginton + * @copyright MMIX Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Net_SSH2 + */ +if (!class_exists('Net_SSH2')) { + require_once('Net/SSH2.php'); +} + +/**#@+ + * @access public + * @see Net_SFTP::getLog() + */ +/** + * Returns the message numbers + */ +define('NET_SFTP_LOG_SIMPLE', NET_SSH2_LOG_SIMPLE); +/** + * Returns the message content + */ +define('NET_SFTP_LOG_COMPLEX', NET_SSH2_LOG_COMPLEX); +/** + * Outputs the message content in real-time. + */ +define('NET_SFTP_LOG_REALTIME', 3); +/**#@-*/ + +/** + * SFTP channel constant + * + * Net_SSH2::exec() uses 0 and Net_SSH2::read() / Net_SSH2::write() use 1. + * + * @see Net_SSH2::_send_channel_packet() + * @see Net_SSH2::_get_channel_packet() + * @access private + */ +define('NET_SFTP_CHANNEL', 2); + +/**#@+ + * @access public + * @see Net_SFTP::put() + */ +/** + * Reads data from a local file. + */ +define('NET_SFTP_LOCAL_FILE', 1); +/** + * Reads data from a string. + */ +// this value isn't really used anymore but i'm keeping it reserved for historical reasons +define('NET_SFTP_STRING', 2); +/** + * Resumes an upload + */ +define('NET_SFTP_RESUME', 4); +/**#@-*/ + +/** + * Pure-PHP implementations of SFTP. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Net_SFTP + */ +class Net_SFTP extends Net_SSH2 { + /** + * Packet Types + * + * @see Net_SFTP::Net_SFTP() + * @var Array + * @access private + */ + var $packet_types = array(); + + /** + * Status Codes + * + * @see Net_SFTP::Net_SFTP() + * @var Array + * @access private + */ + var $status_codes = array(); + + /** + * The Request ID + * + * The request ID exists in the off chance that a packet is sent out-of-order. Of course, this library doesn't support + * concurrent actions, so it's somewhat academic, here. + * + * @var Integer + * @see Net_SFTP::_send_sftp_packet() + * @access private + */ + var $request_id = false; + + /** + * The Packet Type + * + * The request ID exists in the off chance that a packet is sent out-of-order. Of course, this library doesn't support + * concurrent actions, so it's somewhat academic, here. + * + * @var Integer + * @see Net_SFTP::_get_sftp_packet() + * @access private + */ + var $packet_type = -1; + + /** + * Packet Buffer + * + * @var String + * @see Net_SFTP::_get_sftp_packet() + * @access private + */ + var $packet_buffer = ''; + + /** + * Extensions supported by the server + * + * @var Array + * @see Net_SFTP::_initChannel() + * @access private + */ + var $extensions = array(); + + /** + * Server SFTP version + * + * @var Integer + * @see Net_SFTP::_initChannel() + * @access private + */ + var $version; + + /** + * Current working directory + * + * @var String + * @see Net_SFTP::_realpath() + * @see Net_SFTP::chdir() + * @access private + */ + var $pwd = false; + + /** + * Packet Type Log + * + * @see Net_SFTP::getLog() + * @var Array + * @access private + */ + var $packet_type_log = array(); + + /** + * Packet Log + * + * @see Net_SFTP::getLog() + * @var Array + * @access private + */ + var $packet_log = array(); + + /** + * Error information + * + * @see Net_SFTP::getSFTPErrors() + * @see Net_SFTP::getLastSFTPError() + * @var String + * @access private + */ + var $sftp_errors = array(); + + /** + * File Type + * + * @see Net_SFTP::_parseLongname() + * @var Integer + * @access private + */ + var $fileType = 0; + + /** + * Directory Cache + * + * Rather than always having to open a directory and close it immediately there after to see if a file is a directory or + * rather than always + * + * @see Net_SFTP::_save_dir() + * @see Net_SFTP::_remove_dir() + * @see Net_SFTP::_is_dir() + * @var Array + * @access private + */ + var $dirs = array(); + + /** + * Default Constructor. + * + * Connects to an SFTP server + * + * @param String $host + * @param optional Integer $port + * @param optional Integer $timeout + * @return Net_SFTP + * @access public + */ + function Net_SFTP($host, $port = 22, $timeout = 10) + { + parent::Net_SSH2($host, $port, $timeout); + $this->packet_types = array( + 1 => 'NET_SFTP_INIT', + 2 => 'NET_SFTP_VERSION', + /* the format of SSH_FXP_OPEN changed between SFTPv4 and SFTPv5+: + SFTPv5+: http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.1.1 + pre-SFTPv5 : http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-6.3 */ + 3 => 'NET_SFTP_OPEN', + 4 => 'NET_SFTP_CLOSE', + 5 => 'NET_SFTP_READ', + 6 => 'NET_SFTP_WRITE', + 7 => 'NET_SFTP_LSTAT', + 9 => 'NET_SFTP_SETSTAT', + 11 => 'NET_SFTP_OPENDIR', + 12 => 'NET_SFTP_READDIR', + 13 => 'NET_SFTP_REMOVE', + 14 => 'NET_SFTP_MKDIR', + 15 => 'NET_SFTP_RMDIR', + 16 => 'NET_SFTP_REALPATH', + 17 => 'NET_SFTP_STAT', + /* the format of SSH_FXP_RENAME changed between SFTPv4 and SFTPv5+: + SFTPv5+: http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.3 + pre-SFTPv5 : http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-6.5 */ + 18 => 'NET_SFTP_RENAME', + + 101=> 'NET_SFTP_STATUS', + 102=> 'NET_SFTP_HANDLE', + /* the format of SSH_FXP_NAME changed between SFTPv3 and SFTPv4+: + SFTPv4+: http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.4 + pre-SFTPv4 : http://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-7 */ + 103=> 'NET_SFTP_DATA', + 104=> 'NET_SFTP_NAME', + 105=> 'NET_SFTP_ATTRS', + + 200=> 'NET_SFTP_EXTENDED' + ); + $this->status_codes = array( + 0 => 'NET_SFTP_STATUS_OK', + 1 => 'NET_SFTP_STATUS_EOF', + 2 => 'NET_SFTP_STATUS_NO_SUCH_FILE', + 3 => 'NET_SFTP_STATUS_PERMISSION_DENIED', + 4 => 'NET_SFTP_STATUS_FAILURE', + 5 => 'NET_SFTP_STATUS_BAD_MESSAGE', + 6 => 'NET_SFTP_STATUS_NO_CONNECTION', + 7 => 'NET_SFTP_STATUS_CONNECTION_LOST', + 8 => 'NET_SFTP_STATUS_OP_UNSUPPORTED' + ); + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-7.1 + // the order, in this case, matters quite a lot - see Net_SFTP::_parseAttributes() to understand why + $this->attributes = array( + 0x00000001 => 'NET_SFTP_ATTR_SIZE', + 0x00000002 => 'NET_SFTP_ATTR_UIDGID', // defined in SFTPv3, removed in SFTPv4+ + 0x00000004 => 'NET_SFTP_ATTR_PERMISSIONS', + 0x00000008 => 'NET_SFTP_ATTR_ACCESSTIME', + // 0x80000000 will yield a floating point on 32-bit systems and converting floating points to integers + // yields inconsistent behavior depending on how php is compiled. so we left shift -1 (which, in + // two's compliment, consists of all 1 bits) by 31. on 64-bit systems this'll yield 0xFFFFFFFF80000000. + // that's not a problem, however, and 'anded' and a 32-bit number, as all the leading 1 bits are ignored. + -1 << 31 => 'NET_SFTP_ATTR_EXTENDED' + ); + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-6.3 + // the flag definitions change somewhat in SFTPv5+. if SFTPv5+ support is added to this library, maybe name + // the array for that $this->open5_flags and similarily alter the constant names. + $this->open_flags = array( + 0x00000001 => 'NET_SFTP_OPEN_READ', + 0x00000002 => 'NET_SFTP_OPEN_WRITE', + 0x00000004 => 'NET_SFTP_OPEN_APPEND', + 0x00000008 => 'NET_SFTP_OPEN_CREATE', + 0x00000010 => 'NET_SFTP_OPEN_TRUNCATE' + ); + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-5.2 + // see Net_SFTP::_parseLongname() for an explanation + $this->file_types = array( + 1 => 'NET_SFTP_TYPE_REGULAR', + 2 => 'NET_SFTP_TYPE_DIRECTORY', + 3 => 'NET_SFTP_TYPE_SYMLINK', + 4 => 'NET_SFTP_TYPE_SPECIAL' + ); + $this->_define_array( + $this->packet_types, + $this->status_codes, + $this->attributes, + $this->open_flags, + $this->file_types + ); + } + + /** + * Login + * + * @param String $username + * @param optional String $password + * @return Boolean + * @access public + */ + function login($username, $password = '') + { + if (!parent::login($username, $password)) { + return false; + } + + $this->window_size_client_to_server[NET_SFTP_CHANNEL] = $this->window_size; + + $packet = pack('CNa*N3', + NET_SSH2_MSG_CHANNEL_OPEN, strlen('session'), 'session', NET_SFTP_CHANNEL, $this->window_size, 0x4000); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_OPEN; + + $response = $this->_get_channel_packet(NET_SFTP_CHANNEL); + if ($response === false) { + return false; + } + + $packet = pack('CNNa*CNa*', + NET_SSH2_MSG_CHANNEL_REQUEST, $this->server_channels[NET_SFTP_CHANNEL], strlen('subsystem'), 'subsystem', 1, strlen('sftp'), 'sftp'); + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_REQUEST; + + $response = $this->_get_channel_packet(NET_SFTP_CHANNEL); + if ($response === false) { + return false; + } + + $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_DATA; + + if (!$this->_send_sftp_packet(NET_SFTP_INIT, "\0\0\0\3")) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_VERSION) { + user_error('Expected SSH_FXP_VERSION'); + return false; + } + + extract(unpack('Nversion', $this->_string_shift($response, 4))); + $this->version = $version; + while (!empty($response)) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $key = $this->_string_shift($response, $length); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $value = $this->_string_shift($response, $length); + $this->extensions[$key] = $value; + } + + /* + SFTPv4+ defines a 'newline' extension. SFTPv3 seems to have unofficial support for it via 'newline@vandyke.com', + however, I'm not sure what 'newline@vandyke.com' is supposed to do (the fact that it's unofficial means that it's + not in the official SFTPv3 specs) and 'newline@vandyke.com' / 'newline' are likely not drop-in substitutes for + one another due to the fact that 'newline' comes with a SSH_FXF_TEXT bitmask whereas it seems unlikely that + 'newline@vandyke.com' would. + */ + /* + if (isset($this->extensions['newline@vandyke.com'])) { + $this->extensions['newline'] = $this->extensions['newline@vandyke.com']; + unset($this->extensions['newline@vandyke.com']); + } + */ + + $this->request_id = 1; + + /* + A Note on SFTPv4/5/6 support: + states the following: + + "If the client wishes to interoperate with servers that support noncontiguous version + numbers it SHOULD send '3'" + + Given that the server only sends its version number after the client has already done so, the above + seems to be suggesting that v3 should be the default version. This makes sense given that v3 is the + most popular. + + states the following; + + "If the server did not send the "versions" extension, or the version-from-list was not included, the + server MAY send a status response describing the failure, but MUST then close the channel without + processing any further requests." + + So what do you do if you have a client whose initial SSH_FXP_INIT packet says it implements v3 and + a server whose initial SSH_FXP_VERSION reply says it implements v4 and only v4? If it only implements + v4, the "versions" extension is likely not going to have been sent so version re-negotiation as discussed + in draft-ietf-secsh-filexfer-13 would be quite impossible. As such, what Net_SFTP would do is close the + channel and reopen it with a new and updated SSH_FXP_INIT packet. + */ + switch ($this->version) { + case 2: + case 3: + break; + default: + return false; + } + + $this->pwd = $this->_realpath('.', false); + + $this->_save_dir($this->pwd); + + return true; + } + + /** + * Returns the current directory name + * + * @return Mixed + * @access public + */ + function pwd() + { + return $this->pwd; + } + + /** + * Logs errors + * + * @param String $response + * @param optional Integer $status + * @access public + */ + function _logError($response, $status = -1) { + if ($status == -1) { + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + } + + $error = $this->status_codes[$status]; + + if ($this->version > 2) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->sftp_errors[] = $error . ': ' . $this->_string_shift($response, $length); + } else { + $this->sftp_errors[] = $error; + } + } + + /** + * Canonicalize the Server-Side Path Name + * + * SFTP doesn't provide a mechanism by which the current working directory can be changed, so we'll emulate it. Returns + * the absolute (canonicalized) path. + * + * @see Net_SFTP::chdir() + * @param String $dir + * @return Mixed + * @access private + */ + function _realpath($dir, $check_dir = true) + { + if ($check_dir && $this->_is_dir($dir)) { + return true; + } + + /* + "This protocol represents file names as strings. File names are + assumed to use the slash ('/') character as a directory separator. + + File names starting with a slash are "absolute", and are relative to + the root of the file system. Names starting with any other character + are relative to the user's default directory (home directory). Note + that identifying the user is assumed to take place outside of this + protocol." + + -- http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-6 + */ + $file = ''; + if ($this->pwd !== false) { + // if the SFTP server returned the canonicalized path even for non-existant files this wouldn't be necessary + // on OpenSSH it isn't necessary but on other SFTP servers it is. that and since the specs say nothing on + // the subject, we'll go ahead and work around it with the following. + if (empty($dir) || $dir[strlen($dir) - 1] != '/') { + $file = basename($dir); + $dir = dirname($dir); + } + + $dir = $dir[0] == '/' ? '/' . rtrim(substr($dir, 1), '/') : rtrim($dir, '/'); + + if ($dir == '.' || $dir == $this->pwd) { + $temp = $this->pwd; + if (!empty($file)) { + $temp.= '/' . $file; + } + return $temp; + } + + if ($dir[0] != '/') { + $dir = $this->pwd . '/' . $dir; + } + // on the surface it seems like maybe resolving a path beginning with / is unnecessary, but such paths + // can contain .'s and ..'s just like any other. we could parse those out as appropriate or we can let + // the server do it. we'll do the latter. + } + + /* + that SSH_FXP_REALPATH returns SSH_FXP_NAME does not necessarily mean that anything actually exists at the + specified path. generally speaking, no attributes are returned with this particular SSH_FXP_NAME packet + regardless of whether or not a file actually exists. and in SFTPv3, the longname field and the filename + field match for this particular SSH_FXP_NAME packet. for other SSH_FXP_NAME packets, this will likely + not be the case, but for this one, it is. + */ + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.9 + if (!$this->_send_sftp_packet(NET_SFTP_REALPATH, pack('Na*', strlen($dir), $dir))) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_NAME: + // although SSH_FXP_NAME is implemented differently in SFTPv3 than it is in SFTPv4+, the following + // should work on all SFTP versions since the only part of the SSH_FXP_NAME packet the following looks + // at is the first part and that part is defined the same in SFTP versions 3 through 6. + $this->_string_shift($response, 4); // skip over the count - it should be 1, anyway + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $realpath = $this->_string_shift($response, $length); + // the following is SFTPv3 only code. see Net_SFTP::_parseLongname() for more information. + // per the above comment, this is a shot in the dark that, on most servers, won't help us in determining + // the file type for Net_SFTP::stat() and Net_SFTP::lstat() but it's worth a shot. + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->fileType = $this->_parseLongname($this->_string_shift($response, $length)); + break; + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_NAME or SSH_FXP_STATUS'); + return false; + } + + // if $this->pwd isn't set than the only thing $realpath could be is for '.', which is pretty much guaranteed to + // be a bonafide directory + if (!empty($file)) { + $realpath.= '/' . $file; + } + + return $realpath; + } + + /** + * Changes the current directory + * + * @param String $dir + * @return Boolean + * @access public + */ + function chdir($dir) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + if ($dir[strlen($dir) - 1] != '/') { + $dir.= '/'; + } + + // confirm that $dir is, in fact, a valid directory + if ($this->_is_dir($dir)) { + $this->pwd = $dir; + return true; + } + + $dir = $this->_realpath($dir, false); + + if ($this->_is_dir($dir)) { + $this->pwd = $dir; + return true; + } + + if (!$this->_send_sftp_packet(NET_SFTP_OPENDIR, pack('Na*', strlen($dir), $dir))) { + return false; + } + + // see Net_SFTP::nlist() for a more thorough explanation of the following + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + $handle = substr($response, 4); + break; + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + + if (!$this->_send_sftp_packet(NET_SFTP_CLOSE, pack('Na*', strlen($handle), $handle))) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + $this->_save_dir($dir); + + $this->pwd = $dir; + return true; + } + + /** + * Returns a list of files in the given directory + * + * @param optional String $dir + * @return Mixed + * @access public + */ + function nlist($dir = '.') + { + return $this->_list($dir, false); + } + + /** + * Returns a detailed list of files in the given directory + * + * @param optional String $dir + * @return Mixed + * @access public + */ + function rawlist($dir = '.') + { + return $this->_list($dir, true); + } + + /** + * Reads a list, be it detailed or not, of files in the given directory + * + * $realpath exists because, in the case of the recursive deletes and recursive chmod's $realpath has already + * been calculated. + * + * @param String $dir + * @param optional Boolean $raw + * @param optional Boolean $realpath + * @return Mixed + * @access private + */ + function _list($dir, $raw = true, $realpath = true) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $dir = $this->_realpath($dir . '/'); + if ($dir === false) { + return false; + } + + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.1.2 + if (!$this->_send_sftp_packet(NET_SFTP_OPENDIR, pack('Na*', strlen($dir), $dir))) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.2 + // since 'handle' is the last field in the SSH_FXP_HANDLE packet, we'll just remove the first four bytes that + // represent the length of the string and leave it at that + $handle = substr($response, 4); + break; + case NET_SFTP_STATUS: + // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + + $this->_save_dir($dir); + + $contents = array(); + while (true) { + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.2.2 + // why multiple SSH_FXP_READDIR packets would be sent when the response to a single one can span arbitrarily many + // SSH_MSG_CHANNEL_DATA messages is not known to me. + if (!$this->_send_sftp_packet(NET_SFTP_READDIR, pack('Na*', strlen($handle), $handle))) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_NAME: + extract(unpack('Ncount', $this->_string_shift($response, 4))); + for ($i = 0; $i < $count; $i++) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $shortname = $this->_string_shift($response, $length); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $longname = $this->_string_shift($response, $length); + $attributes = $this->_parseAttributes($response); // we also don't care about the attributes + if (!$raw) { + $contents[] = $shortname; + } else { + $contents[$shortname] = $attributes; + $fileType = $this->_parseLongname($longname); + if ($fileType) { + if ($fileType == NET_SFTP_TYPE_DIRECTORY && ($shortname != '.' && $shortname != '..')) { + $this->_save_dir($dir . '/' . $shortname); + } + $contents[$shortname]['type'] = $fileType; + } + } + // SFTPv6 has an optional boolean end-of-list field, but we'll ignore that, since the + // final SSH_FXP_STATUS packet should tell us that, already. + } + break; + case NET_SFTP_STATUS: + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_EOF) { + $this->_logError($response, $status); + return false; + } + break 2; + default: + user_error('Expected SSH_FXP_NAME or SSH_FXP_STATUS'); + return false; + } + } + + if (!$this->_send_sftp_packet(NET_SFTP_CLOSE, pack('Na*', strlen($handle), $handle))) { + return false; + } + + // "The client MUST release all resources associated with the handle regardless of the status." + // -- http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.1.3 + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + return $contents; + } + + /** + * Returns the file size, in bytes, or false, on failure + * + * Files larger than 4GB will show up as being exactly 4GB. + * + * @param String $filename + * @return Mixed + * @access public + */ + function size($filename) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $filename = $this->_realpath($filename); + if ($filename === false) { + return false; + } + + return $this->_size($filename); + } + + /** + * Save directories to cache + * + * @param String $dir + * @access private + */ + function _save_dir($dir) + { + // preg_replace('#^/|/(?=/)|/$#', '', $dir) == str_replace('//', '/', trim($dir, '/')) + $dirs = explode('/', preg_replace('#^/|/(?=/)|/$#', '', $dir)); + + $temp = &$this->dirs; + foreach ($dirs as $dir) { + if (!isset($temp[$dir])) { + $temp[$dir] = array(); + } + $temp = &$temp[$dir]; + } + } + + /** + * Remove directories from cache + * + * @param String $dir + * @access private + */ + function _remove_dir($dir) + { + $dirs = explode('/', preg_replace('#^/|/(?=/)|/$#', '', $dir)); + + $temp = &$this->dirs; + foreach ($dirs as $dir) { + if ($dir == end($dirs)) { + unset($temp[$dir]); + return true; + } + if (!isset($temp[$dir])) { + return false; + } + $temp = &$temp[$dir]; + } + } + + /** + * Checks cache for directory + * + * @param String $dir + * @access private + */ + function _is_dir($dir) + { + $dirs = explode('/', preg_replace('#^/|/(?=/)|/$#', '', $dir)); + + $temp = &$this->dirs; + foreach ($dirs as $dir) { + if (!isset($temp[$dir])) { + return false; + } + $temp = &$temp[$dir]; + } + } + + /** + * Returns general information about a file. + * + * Returns an array on success and false otherwise. + * + * @param String $filename + * @return Mixed + * @access public + */ + function stat($filename) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $filename = $this->_realpath($filename); + if ($filename === false) { + return false; + } + + $stat = $this->_stat($filename, NET_SFTP_STAT); + if ($stat === false) { + return false; + } + + $pwd = $this->pwd; + $stat['type'] = $this->chdir($filename) ? + NET_SFTP_TYPE_DIRECTORY : + NET_SFTP_TYPE_REGULAR; + $this->pwd = $pwd; + + return $stat; + } + + /** + * Returns general information about a file or symbolic link. + * + * Returns an array on success and false otherwise. + * + * @param String $filename + * @return Mixed + * @access public + */ + function lstat($filename) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $filename = $this->_realpath($filename); + if ($filename === false) { + return false; + } + + $lstat = $this->_stat($filename, NET_SFTP_LSTAT); + $stat = $this->_stat($filename, NET_SFTP_STAT); + if ($stat === false) { + return false; + } + + if ($lstat != $stat) { + return array_merge($lstat, array('type' => NET_SFTP_TYPE_SYMLINK)); + } + + $pwd = $this->pwd; + $lstat['type'] = $this->chdir($filename) ? + NET_SFTP_TYPE_DIRECTORY : + NET_SFTP_TYPE_REGULAR; + $this->pwd = $pwd; + + return $lstat; + } + + /** + * Returns general information about a file or symbolic link + * + * Determines information without calling Net_SFTP::_realpath(). + * The second parameter can be either NET_SFTP_STAT or NET_SFTP_LSTAT. + * + * @param String $filename + * @param Integer $type + * @return Mixed + * @access private + */ + function _stat($filename, $type) + { + // SFTPv4+ adds an additional 32-bit integer field - flags - to the following: + $packet = pack('Na*', strlen($filename), $filename); + if (!$this->_send_sftp_packet($type, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_ATTRS: + $attributes = $this->_parseAttributes($response); + if ($this->fileType) { + $attributes['type'] = $this->fileType; + } + return $attributes; + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + } + + user_error('Expected SSH_FXP_ATTRS or SSH_FXP_STATUS'); + return false; + } + + /** + * Attempt to identify the file type + * + * @param String $path + * @param Array $stat + * @param Array $lstat + * @return Integer + * @access private + */ + function _identify_type($path, $stat1, $stat2) + { + $stat1 = $this->_stat($path, $stat1); + $stat2 = $this->_stat($path, $stat2); + + if ($stat1 != $stat2) { + return array_merge($stat1, array('type' => NET_SFTP_TYPE_SYMLINK)); + } + + $pwd = $this->pwd; + $stat1['type'] = $this->chdir($path) ? + NET_SFTP_TYPE_DIRECTORY : + NET_SFTP_TYPE_REGULAR; + $this->pwd = $pwd; + + return $stat1; + } + + /** + * Returns the file size, in bytes, or false, on failure + * + * Determines the size without calling Net_SFTP::_realpath() + * + * @param String $filename + * @return Mixed + * @access private + */ + function _size($filename) + { + $result = $this->_stat($filename, NET_SFTP_LSTAT); + if ($result === false) { + return false; + } + return isset($result['size']) ? $result['size'] : -1; + } + + /** + * Set permissions on a file. + * + * Returns the new file permissions on success or FALSE on error. + * + * @param Integer $mode + * @param String $filename + * @return Mixed + * @access public + */ + function chmod($mode, $filename, $recursive = false) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $filename = $this->_realpath($filename); + if ($filename === false) { + return false; + } + + if ($recursive) { + $i = 0; + $result = $this->_chmod_recursive($mode, $filename, $i); + $this->_read_put_responses($i); + return $result; + } + + // SFTPv4+ has an additional byte field - type - that would need to be sent, as well. setting it to + // SSH_FILEXFER_TYPE_UNKNOWN might work. if not, we'd have to do an SSH_FXP_STAT before doing an SSH_FXP_SETSTAT. + $attr = pack('N2', NET_SFTP_ATTR_PERMISSIONS, $mode & 07777); + if (!$this->_send_sftp_packet(NET_SFTP_SETSTAT, pack('Na*a*', strlen($filename), $filename, $attr))) { + return false; + } + + /* + "Because some systems must use separate system calls to set various attributes, it is possible that a failure + response will be returned, but yet some of the attributes may be have been successfully modified. If possible, + servers SHOULD avoid this situation; however, clients MUST be aware that this is possible." + + -- http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.6 + */ + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + } + + // rather than return what the permissions *should* be, we'll return what they actually are. this will also + // tell us if the file actually exists. + // incidentally, SFTPv4+ adds an additional 32-bit integer field - flags - to the following: + $packet = pack('Na*', strlen($filename), $filename); + if (!$this->_send_sftp_packet(NET_SFTP_STAT, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_ATTRS: + $attrs = $this->_parseAttributes($response); + return $attrs['permissions']; + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + } + + user_error('Expected SSH_FXP_ATTRS or SSH_FXP_STATUS'); + return false; + } + + /** + * Recursively chmods directories on the SFTP server + * + * Minimizes directory lookups and SSH_FXP_STATUS requests for speed. + * + * @param Integer $mode + * @param String $filename + * @return Boolean + * @access private + */ + function _chmod_recursive($mode, $path, &$i) + { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + $entries = $this->_list($path, true, false); + + if ($entries === false) { + return $this->chmod($mode, $path); + } + + // normally $entries would have at least . and .. but it might not if the directories + // permissions didn't allow reading + if (empty($entries)) { + return false; + } + + foreach ($entries as $filename=>$props) { + if ($filename == '.' || $filename == '..') { + continue; + } + + if (!isset($props['type'])) { + return false; + } + + $temp = $path . '/' . $filename; + if ($props['type'] == NET_SFTP_TYPE_DIRECTORY) { + if (!$this->_chmod_recursive($mode, $temp, $i)) { + return false; + } + } else { + $attr = pack('N2', NET_SFTP_ATTR_PERMISSIONS, $mode & 07777); + if (!$this->_send_sftp_packet(NET_SFTP_SETSTAT, pack('Na*a*', strlen($temp), $temp, $attr))) { + return false; + } + + $i++; + + if ($i >= 50) { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + } + } + } + + $attr = pack('N2', NET_SFTP_ATTR_PERMISSIONS, $mode & 07777); + if (!$this->_send_sftp_packet(NET_SFTP_SETSTAT, pack('Na*a*', strlen($path), $path, $attr))) { + return false; + } + + $i++; + + if ($i >= 50) { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + } + + return true; + } + + /** + * Creates a directory. + * + * @param String $dir + * @return Boolean + * @access public + */ + function mkdir($dir) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + if ($dir[0] != '/') { + $dir = $this->_realpath(rtrim($dir, '/')); + if ($dir === false) { + return false; + } + if (!$this->_mkdir_helper($dir)) { + return false; + } + } else { + $dirs = explode('/', preg_replace('#^/|/(?=/)|/$#', '', $dir)); + $temp = ''; + foreach ($dirs as $dir) { + $temp.= '/' . $dir; + $result = $this->_mkdir_helper($temp); + } + if (!$result) { + return false; + } + } + + return true; + } + + /** + * Helper function for directory creation + * + * @param String $dir + * @return Boolean + * @access private + */ + function _mkdir_helper($dir) + { + // by not providing any permissions, hopefully the server will use the logged in users umask - their + // default permissions. + if (!$this->_send_sftp_packet(NET_SFTP_MKDIR, pack('Na*N', strlen($dir), $dir, 0))) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + $this->_save_dir($dir); + + return true; + } + + /** + * Removes a directory. + * + * @param String $dir + * @return Boolean + * @access public + */ + function rmdir($dir) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $dir = $this->_realpath($dir); + if ($dir === false) { + return false; + } + + if (!$this->_send_sftp_packet(NET_SFTP_RMDIR, pack('Na*', strlen($dir), $dir))) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED? + $this->_logError($response, $status); + return false; + } + + $this->_remove_dir($dir); + + return true; + } + + /** + * Uploads a file to the SFTP server. + * + * By default, Net_SFTP::put() does not read from the local filesystem. $data is dumped directly into $remote_file. + * So, for example, if you set $data to 'filename.ext' and then do Net_SFTP::get(), you will get a file, twelve bytes + * long, containing 'filename.ext' as its contents. + * + * Setting $mode to NET_SFTP_LOCAL_FILE will change the above behavior. With NET_SFTP_LOCAL_FILE, $remote_file will + * contain as many bytes as filename.ext does on your local filesystem. If your filename.ext is 1MB then that is how + * large $remote_file will be, as well. + * + * Currently, only binary mode is supported. As such, if the line endings need to be adjusted, you will need to take + * care of that, yourself. + * + * @param String $remote_file + * @param String $data + * @param optional Integer $mode + * @return Boolean + * @access public + * @internal ASCII mode for SFTPv4/5/6 can be supported by adding a new function - Net_SFTP::setMode(). + */ + function put($remote_file, $data, $mode = NET_SFTP_STRING) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $remote_file = $this->_realpath($remote_file); + if ($remote_file === false) { + return false; + } + + $flags = NET_SFTP_OPEN_WRITE | NET_SFTP_OPEN_CREATE; + // according to the SFTP specs, NET_SFTP_OPEN_APPEND should "force all writes to append data at the end of the file." + // in practice, it doesn't seem to do that. + //$flags|= ($mode & NET_SFTP_RESUME) ? NET_SFTP_OPEN_APPEND : NET_SFTP_OPEN_TRUNCATE; + + // if NET_SFTP_OPEN_APPEND worked as it should the following (up until the -----------) wouldn't be necessary + $offset = 0; + if ($mode & NET_SFTP_RESUME) { + $size = $this->_size($remote_file); + $offset = $size !== false ? $size : 0; + } else { + $flags|= NET_SFTP_OPEN_TRUNCATE; + } + // -------------- + + $packet = pack('Na*N2', strlen($remote_file), $remote_file, $flags, 0); + if (!$this->_send_sftp_packet(NET_SFTP_OPEN, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + $handle = substr($response, 4); + break; + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + + $initialize = true; + + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.2.3 + if ($mode & NET_SFTP_LOCAL_FILE) { + if (!is_file($data)) { + user_error("$data is not a valid file"); + return false; + } + $fp = @fopen($data, 'rb'); + if (!$fp) { + return false; + } + $size = filesize($data); + } else { + $size = strlen($data); + } + + $sent = 0; + $size = $size < 0 ? ($size & 0x7FFFFFFF) + 0x80000000 : $size; + + $sftp_packet_size = 4096; // PuTTY uses 4096 + $i = 0; + while ($sent < $size) { + $temp = $mode & NET_SFTP_LOCAL_FILE ? fread($fp, $sftp_packet_size) : $this->_string_shift($data, $sftp_packet_size); + $packet = pack('Na*N3a*', strlen($handle), $handle, 0, $offset + $sent, strlen($temp), $temp); + if (!$this->_send_sftp_packet(NET_SFTP_WRITE, $packet)) { + fclose($fp); + return false; + } + $sent+= strlen($temp); + + $i++; + + if ($i == 50) { + if (!$this->_read_put_responses($i)) { + $i = 0; + break; + } + $i = 0; + } + } + + if (!$this->_read_put_responses($i)) { + return false; + } + + if ($mode & NET_SFTP_LOCAL_FILE) { + fclose($fp); + } + + if (!$this->_send_sftp_packet(NET_SFTP_CLOSE, pack('Na*', strlen($handle), $handle))) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + return true; + } + + /** + * Reads multiple successive SSH_FXP_WRITE responses + * + * Sending an SSH_FXP_WRITE packet and immediately reading its response isn't as efficient as blindly sending out $i + * SSH_FXP_WRITEs, in succession, and then reading $i responses. + * + * @param Integer $i + * @return Boolean + * @access private + */ + function _read_put_responses($i) + { + while ($i--) { + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + break; + } + } + + return $i < 0; + } + + /** + * Downloads a file from the SFTP server. + * + * Returns a string containing the contents of $remote_file if $local_file is left undefined or a boolean false if + * the operation was unsuccessful. If $local_file is defined, returns true or false depending on the success of the + * operation + * + * @param String $remote_file + * @param optional String $local_file + * @return Mixed + * @access public + */ + function get($remote_file, $local_file = false, $offset = 0, $length = -1) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $remote_file = $this->_realpath($remote_file); + if ($remote_file === false) { + return false; + } + + $packet = pack('Na*N2', strlen($remote_file), $remote_file, NET_SFTP_OPEN_READ, 0); + if (!$this->_send_sftp_packet(NET_SFTP_OPEN, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + $handle = substr($response, 4); + break; + case NET_SFTP_STATUS: // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + + if ($local_file !== false) { + $fp = fopen($local_file, 'wb'); + if (!$fp) { + return false; + } + } else { + $content = ''; + } + + $size = (1 << 20) < $length || $length < 0 ? 1 << 20 : $length; + $start = $offset; + while (true) { + $packet = pack('Na*N3', strlen($handle), $handle, 0, $offset, $size); + if (!$this->_send_sftp_packet(NET_SFTP_READ, $packet)) { + if ($local_file !== false) { + fclose($fp); + } + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_DATA: + $temp = substr($response, 4); + $offset+= strlen($temp); + if ($local_file === false) { + $content.= $temp; + } else { + fputs($fp, $temp); + } + break; + case NET_SFTP_STATUS: + $this->_logError($response); + break 2; + default: + user_error('Expected SSH_FXP_DATA or SSH_FXP_STATUS'); + if ($local_file !== false) { + fclose($fp); + } + return false; + } + + if ($length > 0 && $length <= $offset - $size) { + if ($local_file === false) { + $content = substr($content, 0, $length); + } else { + ftruncate($fp, $length); + } + break; + } + } + + if ($local_file !== false) { + fclose($fp); + } + + if (!$this->_send_sftp_packet(NET_SFTP_CLOSE, pack('Na*', strlen($handle), $handle))) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + if (isset($content)) { + return $content; + } + + return true; + } + + /** + * Deletes a file on the SFTP server. + * + * @param String $path + * @param Boolean $recursive + * @return Boolean + * @access public + */ + function delete($path, $recursive = true) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $path = $this->_realpath($path); + if ($path === false) { + return false; + } + + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.3 + if (!$this->_send_sftp_packet(NET_SFTP_REMOVE, pack('Na*', strlen($path), $path))) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + // if $status isn't SSH_FX_OK it's probably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + if (!$recursive) { + return false; + } + $i = 0; + $result = $this->_delete_recursive($path, $i); + $this->_read_put_responses($i); + return $result; + } + + return true; + } + + /** + * Recursively deletes directories on the SFTP server + * + * Minimizes directory lookups and SSH_FXP_STATUS requests for speed. + * + * @param String $path + * @param Integer $i + * @return Boolean + * @access private + */ + function _delete_recursive($path, &$i) + { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + $entries = $this->_list($path, true, false); + + // normally $entries would have at least . and .. but it might not if the directories + // permissions didn't allow reading + if (empty($entries)) { + return false; + } + + foreach ($entries as $filename=>$props) { + if ($filename == '.' || $filename == '..') { + continue; + } + + if (!isset($props['type'])) { + return false; + } + + $temp = $path . '/' . $filename; + if ($props['type'] == NET_SFTP_TYPE_DIRECTORY) { + if (!$this->_delete_recursive($temp, $i)) { + return false; + } + } else { + if (!$this->_send_sftp_packet(NET_SFTP_REMOVE, pack('Na*', strlen($temp), $temp))) { + return false; + } + + $i++; + + if ($i >= 50) { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + } + } + } + + if (!$this->_send_sftp_packet(NET_SFTP_RMDIR, pack('Na*', strlen($path), $path))) { + return false; + } + $this->_remove_dir($path); + + $i++; + + if ($i >= 50) { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + } + + return true; + } + + /** + * Renames a file or a directory on the SFTP server + * + * @param String $oldname + * @param String $newname + * @return Boolean + * @access public + */ + function rename($oldname, $newname) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $oldname = $this->_realpath($oldname); + $newname = $this->_realpath($newname); + if ($oldname === false || $newname === false) { + return false; + } + + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.3 + $packet = pack('Na*Na*', strlen($oldname), $oldname, strlen($newname), $newname); + if (!$this->_send_sftp_packet(NET_SFTP_RENAME, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + // if $status isn't SSH_FX_OK it's probably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + return true; + } + + /** + * Parse Attributes + * + * See '7. File Attributes' of draft-ietf-secsh-filexfer-13 for more info. + * + * @param String $response + * @return Array + * @access private + */ + function _parseAttributes(&$response) + { + $attr = array(); + extract(unpack('Nflags', $this->_string_shift($response, 4))); + // SFTPv4+ have a type field (a byte) that follows the above flag field + foreach ($this->attributes as $key => $value) { + switch ($flags & $key) { + case NET_SFTP_ATTR_SIZE: // 0x00000001 + // size is represented by a 64-bit integer, so we perhaps ought to be doing the following: + // $attr['size'] = new Math_BigInteger($this->_string_shift($response, 8), 256); + // of course, you shouldn't be using Net_SFTP to transfer files that are in excess of 4GB + // (0xFFFFFFFF bytes), anyway. as such, we'll just represent all file sizes that are bigger than + // 4GB as being 4GB. + extract(unpack('Nupper/Nsize', $this->_string_shift($response, 8))); + if ($upper) { + $attr['size'] = 0xFFFFFFFF; + } else { + $attr['size'] = $size < 0 ? ($size & 0x7FFFFFFF) + 0x80000000 : $size; + } + break; + case NET_SFTP_ATTR_UIDGID: // 0x00000002 (SFTPv3 only) + $attr+= unpack('Nuid/Ngid', $this->_string_shift($response, 8)); + break; + case NET_SFTP_ATTR_PERMISSIONS: // 0x00000004 + $attr+= unpack('Npermissions', $this->_string_shift($response, 4)); + break; + case NET_SFTP_ATTR_ACCESSTIME: // 0x00000008 + $attr+= unpack('Natime/Nmtime', $this->_string_shift($response, 8)); + break; + case NET_SFTP_ATTR_EXTENDED: // 0x80000000 + extract(unpack('Ncount', $this->_string_shift($response, 4))); + for ($i = 0; $i < $count; $i++) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $key = $this->_string_shift($response, $length); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $attr[$key] = $this->_string_shift($response, $length); + } + } + } + return $attr; + } + + /** + * Parse Longname + * + * SFTPv3 doesn't provide any easy way of identifying a file type. You could try to open + * a file as a directory and see if an error is returned or you could try to parse the + * SFTPv3-specific longname field of the SSH_FXP_NAME packet. That's what this function does. + * The result is returned using the + * {@link http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-5.2 SFTPv4 type constants}. + * + * If the longname is in an unrecognized format bool(false) is returned. + * + * @param String $longname + * @return Mixed + * @access private + */ + function _parseLongname($longname) + { + // http://en.wikipedia.org/wiki/Unix_file_types + // http://en.wikipedia.org/wiki/Filesystem_permissions#Notation_of_traditional_Unix_permissions + if (preg_match('#^[^/]([r-][w-][xstST-]){3}#', $longname)) { + switch ($longname[0]) { + case '-': + return NET_SFTP_TYPE_REGULAR; + case 'd': + return NET_SFTP_TYPE_DIRECTORY; + case 'l': + return NET_SFTP_TYPE_SYMLINK; + default: + return NET_SFTP_TYPE_SPECIAL; + } + } + + return false; + } + + /** + * Sends SFTP Packets + * + * See '6. General Packet Format' of draft-ietf-secsh-filexfer-13 for more info. + * + * @param Integer $type + * @param String $data + * @see Net_SFTP::_get_sftp_packet() + * @see Net_SSH2::_send_channel_packet() + * @return Boolean + * @access private + */ + function _send_sftp_packet($type, $data) + { + $packet = $this->request_id !== false ? + pack('NCNa*', strlen($data) + 5, $type, $this->request_id, $data) : + pack('NCa*', strlen($data) + 1, $type, $data); + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $result = $this->_send_channel_packet(NET_SFTP_CHANNEL, $packet); + $stop = strtok(microtime(), ' ') + strtok(''); + + if (defined('NET_SFTP_LOGGING')) { + $packet_type = '-> ' . $this->packet_types[$type] . + ' (' . round($stop - $start, 4) . 's)'; + if (NET_SFTP_LOGGING == NET_SFTP_LOG_REALTIME) { + echo "
\r\n" . $this->_format_log(array($data), array($packet_type)) . "\r\n
\r\n"; + flush(); + ob_flush(); + } else { + $this->packet_type_log[] = $packet_type; + if (NET_SFTP_LOGGING == NET_SFTP_LOG_COMPLEX) { + $this->packet_log[] = $data; + } + } + } + + return $result; + } + + /** + * Receives SFTP Packets + * + * See '6. General Packet Format' of draft-ietf-secsh-filexfer-13 for more info. + * + * Incidentally, the number of SSH_MSG_CHANNEL_DATA messages has no bearing on the number of SFTP packets present. + * There can be one SSH_MSG_CHANNEL_DATA messages containing two SFTP packets or there can be two SSH_MSG_CHANNEL_DATA + * messages containing one SFTP packet. + * + * @see Net_SFTP::_send_sftp_packet() + * @return String + * @access private + */ + function _get_sftp_packet() + { + $this->curTimeout = false; + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + + // SFTP packet length + while (strlen($this->packet_buffer) < 4) { + $temp = $this->_get_channel_packet(NET_SFTP_CHANNEL); + if (is_bool($temp)) { + $this->packet_type = false; + $this->packet_buffer = ''; + return false; + } + $this->packet_buffer.= $temp; + } + extract(unpack('Nlength', $this->_string_shift($this->packet_buffer, 4))); + $tempLength = $length; + $tempLength-= strlen($this->packet_buffer); + + // SFTP packet type and data payload + while ($tempLength > 0) { + $temp = $this->_get_channel_packet(NET_SFTP_CHANNEL); + if (is_bool($temp)) { + $this->packet_type = false; + $this->packet_buffer = ''; + return false; + } + $this->packet_buffer.= $temp; + $tempLength-= strlen($temp); + } + + $stop = strtok(microtime(), ' ') + strtok(''); + + $this->packet_type = ord($this->_string_shift($this->packet_buffer)); + + if ($this->request_id !== false) { + $this->_string_shift($this->packet_buffer, 4); // remove the request id + $length-= 5; // account for the request id and the packet type + } else { + $length-= 1; // account for the packet type + } + + $packet = $this->_string_shift($this->packet_buffer, $length); + + if (defined('NET_SFTP_LOGGING')) { + $packet_type = '<- ' . $this->packet_types[$this->packet_type] . + ' (' . round($stop - $start, 4) . 's)'; + if (NET_SFTP_LOGGING == NET_SFTP_LOG_REALTIME) { + echo "
\r\n" . $this->_format_log(array($packet), array($packet_type)) . "\r\n
\r\n"; + flush(); + ob_flush(); + } else { + $this->packet_type_log[] = $packet_type; + if (NET_SFTP_LOGGING == NET_SFTP_LOG_COMPLEX) { + $this->packet_log[] = $packet; + } + } + } + + return $packet; + } + + /** + * Returns a log of the packets that have been sent and received. + * + * Returns a string if NET_SFTP_LOGGING == NET_SFTP_LOG_COMPLEX, an array if NET_SFTP_LOGGING == NET_SFTP_LOG_SIMPLE and false if !defined('NET_SFTP_LOGGING') + * + * @access public + * @return String or Array + */ + function getSFTPLog() + { + if (!defined('NET_SFTP_LOGGING')) { + return false; + } + + switch (NET_SFTP_LOGGING) { + case NET_SFTP_LOG_COMPLEX: + return $this->_format_log($this->packet_log, $this->packet_type_log); + break; + //case NET_SFTP_LOG_SIMPLE: + default: + return $this->packet_type_log; + } + } + + /** + * Returns all errors + * + * @return String + * @access public + */ + function getSFTPErrors() + { + return $this->sftp_errors; + } + + /** + * Returns the last error + * + * @return String + * @access public + */ + function getLastSFTPError() + { + return count($this->sftp_errors) ? $this->sftp_errors[count($this->sftp_errors) - 1] : ''; + } + + /** + * Get supported SFTP versions + * + * @return Array + * @access public + */ + function getSupportedVersions() + { + $temp = array('version' => $this->version); + if (isset($this->extensions['versions'])) { + $temp['extensions'] = $this->extensions['versions']; + } + return $temp; + } + + /** + * Disconnect + * + * @param Integer $reason + * @return Boolean + * @access private + */ + function _disconnect($reason) + { + $this->pwd = false; + parent::_disconnect($reason); + } +} \ No newline at end of file diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Net/SSH1.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Net/SSH1.php new file mode 100644 index 0000000000..8f5c79938e --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Net/SSH1.php @@ -0,0 +1,1577 @@ + + * login('username', 'password')) { + * exit('Login Failed'); + * } + * + * echo $ssh->exec('ls -la'); + * ?> + * + * + * Here's another short example: + * + * login('username', 'password')) { + * exit('Login Failed'); + * } + * + * echo $ssh->read('username@username:~$'); + * $ssh->write("ls -la\n"); + * echo $ssh->read('username@username:~$'); + * ?> + * + * + * More information on the SSHv1 specification can be found by reading + * {@link http://www.snailbook.com/docs/protocol-1.5.txt protocol-1.5.txt}. + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Net + * @package Net_SSH1 + * @author Jim Wigginton + * @copyright MMVII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: SSH1.php,v 1.15 2010/03/22 22:01:38 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Math_BigInteger + * + * Used to do RSA encryption. + */ +if (!class_exists('Math_BigInteger')) { + require_once('Math/BigInteger.php'); +} + +/** + * Include Crypt_Null + */ +//require_once('Crypt/Null.php'); + +/** + * Include Crypt_DES + */ +if (!class_exists('Crypt_DES')) { + require_once('Crypt/DES.php'); +} + +/** + * Include Crypt_TripleDES + */ +if (!class_exists('Crypt_TripleDES')) { + require_once('Crypt/TripleDES.php'); +} + +/** + * Include Crypt_RC4 + */ +if (!class_exists('Crypt_RC4')) { + require_once('Crypt/RC4.php'); +} + +/** + * Include Crypt_Random + */ +// the class_exists() will only be called if the crypt_random_string function hasn't been defined and +// will trigger a call to __autoload() if you're wanting to auto-load classes +// call function_exists() a second time to stop the require_once from being called outside +// of the auto loader +if (!function_exists('crypt_random_string') && !class_exists('Crypt_Random') && !function_exists('crypt_random_string')) { + require_once('Crypt/Random.php'); +} + +/**#@+ + * Encryption Methods + * + * @see Net_SSH1::getSupportedCiphers() + * @access public + */ +/** + * No encryption + * + * Not supported. + */ +define('NET_SSH1_CIPHER_NONE', 0); +/** + * IDEA in CFB mode + * + * Not supported. + */ +define('NET_SSH1_CIPHER_IDEA', 1); +/** + * DES in CBC mode + */ +define('NET_SSH1_CIPHER_DES', 2); +/** + * Triple-DES in CBC mode + * + * All implementations are required to support this + */ +define('NET_SSH1_CIPHER_3DES', 3); +/** + * TRI's Simple Stream encryption CBC + * + * Not supported nor is it defined in the official SSH1 specs. OpenSSH, however, does define it (see cipher.h), + * although it doesn't use it (see cipher.c) + */ +define('NET_SSH1_CIPHER_BROKEN_TSS', 4); +/** + * RC4 + * + * Not supported. + * + * @internal According to the SSH1 specs: + * + * "The first 16 bytes of the session key are used as the key for + * the server to client direction. The remaining 16 bytes are used + * as the key for the client to server direction. This gives + * independent 128-bit keys for each direction." + * + * This library currently only supports encryption when the same key is being used for both directions. This is + * because there's only one $crypto object. Two could be added ($encrypt and $decrypt, perhaps). + */ +define('NET_SSH1_CIPHER_RC4', 5); +/** + * Blowfish + * + * Not supported nor is it defined in the official SSH1 specs. OpenSSH, however, defines it (see cipher.h) and + * uses it (see cipher.c) + */ +define('NET_SSH1_CIPHER_BLOWFISH', 6); +/**#@-*/ + +/**#@+ + * Authentication Methods + * + * @see Net_SSH1::getSupportedAuthentications() + * @access public + */ +/** + * .rhosts or /etc/hosts.equiv + */ +define('NET_SSH1_AUTH_RHOSTS', 1); +/** + * pure RSA authentication + */ +define('NET_SSH1_AUTH_RSA', 2); +/** + * password authentication + * + * This is the only method that is supported by this library. + */ +define('NET_SSH1_AUTH_PASSWORD', 3); +/** + * .rhosts with RSA host authentication + */ +define('NET_SSH1_AUTH_RHOSTS_RSA', 4); +/**#@-*/ + +/**#@+ + * Terminal Modes + * + * @link http://3sp.com/content/developer/maverick-net/docs/Maverick.SSH.PseudoTerminalModesMembers.html + * @access private + */ +define('NET_SSH1_TTY_OP_END', 0); +/**#@-*/ + +/** + * The Response Type + * + * @see Net_SSH1::_get_binary_packet() + * @access private + */ +define('NET_SSH1_RESPONSE_TYPE', 1); + +/** + * The Response Data + * + * @see Net_SSH1::_get_binary_packet() + * @access private + */ +define('NET_SSH1_RESPONSE_DATA', 2); + +/**#@+ + * Execution Bitmap Masks + * + * @see Net_SSH1::bitmap + * @access private + */ +define('NET_SSH1_MASK_CONSTRUCTOR', 0x00000001); +define('NET_SSH1_MASK_LOGIN', 0x00000002); +define('NET_SSH1_MASK_SHELL', 0x00000004); +/**#@-*/ + +/**#@+ + * @access public + * @see Net_SSH1::getLog() + */ +/** + * Returns the message numbers + */ +define('NET_SSH1_LOG_SIMPLE', 1); +/** + * Returns the message content + */ +define('NET_SSH1_LOG_COMPLEX', 2); +/** + * Outputs the content real-time + */ +define('NET_SSH2_LOG_REALTIME', 3); +/** + * Dumps the content real-time to a file + */ +define('NET_SSH2_LOG_REALTIME_FILE', 4); +/**#@-*/ + +/**#@+ + * @access public + * @see Net_SSH1::read() + */ +/** + * Returns when a string matching $expect exactly is found + */ +define('NET_SSH1_READ_SIMPLE', 1); +/** + * Returns when a string matching the regular expression $expect is found + */ +define('NET_SSH1_READ_REGEX', 2); +/**#@-*/ + +/** + * Pure-PHP implementation of SSHv1. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Net_SSH1 + */ +class Net_SSH1 { + /** + * The SSH identifier + * + * @var String + * @access private + */ + var $identifier = 'SSH-1.5-phpseclib'; + + /** + * The Socket Object + * + * @var Object + * @access private + */ + var $fsock; + + /** + * The cryptography object + * + * @var Object + * @access private + */ + var $crypto = false; + + /** + * Execution Bitmap + * + * The bits that are set represent functions that have been called already. This is used to determine + * if a requisite function has been successfully executed. If not, an error should be thrown. + * + * @var Integer + * @access private + */ + var $bitmap = 0; + + /** + * The Server Key Public Exponent + * + * Logged for debug purposes + * + * @see Net_SSH1::getServerKeyPublicExponent() + * @var String + * @access private + */ + var $server_key_public_exponent; + + /** + * The Server Key Public Modulus + * + * Logged for debug purposes + * + * @see Net_SSH1::getServerKeyPublicModulus() + * @var String + * @access private + */ + var $server_key_public_modulus; + + /** + * The Host Key Public Exponent + * + * Logged for debug purposes + * + * @see Net_SSH1::getHostKeyPublicExponent() + * @var String + * @access private + */ + var $host_key_public_exponent; + + /** + * The Host Key Public Modulus + * + * Logged for debug purposes + * + * @see Net_SSH1::getHostKeyPublicModulus() + * @var String + * @access private + */ + var $host_key_public_modulus; + + /** + * Supported Ciphers + * + * Logged for debug purposes + * + * @see Net_SSH1::getSupportedCiphers() + * @var Array + * @access private + */ + var $supported_ciphers = array( + NET_SSH1_CIPHER_NONE => 'No encryption', + NET_SSH1_CIPHER_IDEA => 'IDEA in CFB mode', + NET_SSH1_CIPHER_DES => 'DES in CBC mode', + NET_SSH1_CIPHER_3DES => 'Triple-DES in CBC mode', + NET_SSH1_CIPHER_BROKEN_TSS => 'TRI\'s Simple Stream encryption CBC', + NET_SSH1_CIPHER_RC4 => 'RC4', + NET_SSH1_CIPHER_BLOWFISH => 'Blowfish' + ); + + /** + * Supported Authentications + * + * Logged for debug purposes + * + * @see Net_SSH1::getSupportedAuthentications() + * @var Array + * @access private + */ + var $supported_authentications = array( + NET_SSH1_AUTH_RHOSTS => '.rhosts or /etc/hosts.equiv', + NET_SSH1_AUTH_RSA => 'pure RSA authentication', + NET_SSH1_AUTH_PASSWORD => 'password authentication', + NET_SSH1_AUTH_RHOSTS_RSA => '.rhosts with RSA host authentication' + ); + + /** + * Server Identification + * + * @see Net_SSH1::getServerIdentification() + * @var String + * @access private + */ + var $server_identification = ''; + + /** + * Protocol Flags + * + * @see Net_SSH1::Net_SSH1() + * @var Array + * @access private + */ + var $protocol_flags = array(); + + /** + * Protocol Flag Log + * + * @see Net_SSH1::getLog() + * @var Array + * @access private + */ + var $protocol_flag_log = array(); + + /** + * Message Log + * + * @see Net_SSH1::getLog() + * @var Array + * @access private + */ + var $message_log = array(); + + /** + * Real-time log file pointer + * + * @see Net_SSH1::_append_log() + * @var Resource + * @access private + */ + var $realtime_log_file; + + /** + * Real-time log file size + * + * @see Net_SSH1::_append_log() + * @var Integer + * @access private + */ + var $realtime_log_size; + + /** + * Real-time log file wrap boolean + * + * @see Net_SSH1::_append_log() + * @var Boolean + * @access private + */ + var $realtime_log_wrap; + + /** + * Interactive Buffer + * + * @see Net_SSH1::read() + * @var Array + * @access private + */ + var $interactiveBuffer = ''; + + /** + * Timeout + * + * @see Net_SSH1::setTimeout() + * @access private + */ + var $timeout; + + /** + * Current Timeout + * + * @see Net_SSH2::_get_channel_packet() + * @access private + */ + var $curTimeout; + + /** + * Default Constructor. + * + * Connects to an SSHv1 server + * + * @param String $host + * @param optional Integer $port + * @param optional Integer $timeout + * @param optional Integer $cipher + * @return Net_SSH1 + * @access public + */ + function Net_SSH1($host, $port = 22, $timeout = 10, $cipher = NET_SSH1_CIPHER_3DES) + { + $this->protocol_flags = array( + 1 => 'NET_SSH1_MSG_DISCONNECT', + 2 => 'NET_SSH1_SMSG_PUBLIC_KEY', + 3 => 'NET_SSH1_CMSG_SESSION_KEY', + 4 => 'NET_SSH1_CMSG_USER', + 9 => 'NET_SSH1_CMSG_AUTH_PASSWORD', + 10 => 'NET_SSH1_CMSG_REQUEST_PTY', + 12 => 'NET_SSH1_CMSG_EXEC_SHELL', + 13 => 'NET_SSH1_CMSG_EXEC_CMD', + 14 => 'NET_SSH1_SMSG_SUCCESS', + 15 => 'NET_SSH1_SMSG_FAILURE', + 16 => 'NET_SSH1_CMSG_STDIN_DATA', + 17 => 'NET_SSH1_SMSG_STDOUT_DATA', + 18 => 'NET_SSH1_SMSG_STDERR_DATA', + 19 => 'NET_SSH1_CMSG_EOF', + 20 => 'NET_SSH1_SMSG_EXITSTATUS', + 33 => 'NET_SSH1_CMSG_EXIT_CONFIRMATION' + ); + + $this->_define_array($this->protocol_flags); + + $this->fsock = @fsockopen($host, $port, $errno, $errstr, $timeout); + if (!$this->fsock) { + user_error(rtrim("Cannot connect to $host. Error $errno. $errstr")); + return; + } + + $this->server_identification = $init_line = fgets($this->fsock, 255); + + if (defined('NET_SSH1_LOGGING')) { + $this->_append_log('<-', $this->server_identification); + $this->_append_log('->', $this->identifier . "\r\n"); + } + + if (!preg_match('#SSH-([0-9\.]+)-(.+)#', $init_line, $parts)) { + user_error('Can only connect to SSH servers'); + return; + } + if ($parts[1][0] != 1) { + user_error("Cannot connect to SSH $parts[1] servers"); + return; + } + + fputs($this->fsock, $this->identifier."\r\n"); + + $response = $this->_get_binary_packet(); + if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_PUBLIC_KEY) { + user_error('Expected SSH_SMSG_PUBLIC_KEY'); + return; + } + + $anti_spoofing_cookie = $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 8); + + $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4); + + $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2)); + $server_key_public_exponent = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256); + $this->server_key_public_exponent = $server_key_public_exponent; + + $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2)); + $server_key_public_modulus = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256); + $this->server_key_public_modulus = $server_key_public_modulus; + + $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4); + + $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2)); + $host_key_public_exponent = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256); + $this->host_key_public_exponent = $host_key_public_exponent; + + $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2)); + $host_key_public_modulus = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256); + $this->host_key_public_modulus = $host_key_public_modulus; + + $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4); + + // get a list of the supported ciphers + extract(unpack('Nsupported_ciphers_mask', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4))); + foreach ($this->supported_ciphers as $mask=>$name) { + if (($supported_ciphers_mask & (1 << $mask)) == 0) { + unset($this->supported_ciphers[$mask]); + } + } + + // get a list of the supported authentications + extract(unpack('Nsupported_authentications_mask', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4))); + foreach ($this->supported_authentications as $mask=>$name) { + if (($supported_authentications_mask & (1 << $mask)) == 0) { + unset($this->supported_authentications[$mask]); + } + } + + $session_id = pack('H*', md5($host_key_public_modulus->toBytes() . $server_key_public_modulus->toBytes() . $anti_spoofing_cookie)); + + $session_key = crypt_random_string(32); + $double_encrypted_session_key = $session_key ^ str_pad($session_id, 32, chr(0)); + + if ($server_key_public_modulus->compare($host_key_public_modulus) < 0) { + $double_encrypted_session_key = $this->_rsa_crypt( + $double_encrypted_session_key, + array( + $server_key_public_exponent, + $server_key_public_modulus + ) + ); + $double_encrypted_session_key = $this->_rsa_crypt( + $double_encrypted_session_key, + array( + $host_key_public_exponent, + $host_key_public_modulus + ) + ); + } else { + $double_encrypted_session_key = $this->_rsa_crypt( + $double_encrypted_session_key, + array( + $host_key_public_exponent, + $host_key_public_modulus + ) + ); + $double_encrypted_session_key = $this->_rsa_crypt( + $double_encrypted_session_key, + array( + $server_key_public_exponent, + $server_key_public_modulus + ) + ); + } + + $cipher = isset($this->supported_ciphers[$cipher]) ? $cipher : NET_SSH1_CIPHER_3DES; + $data = pack('C2a*na*N', NET_SSH1_CMSG_SESSION_KEY, $cipher, $anti_spoofing_cookie, 8 * strlen($double_encrypted_session_key), $double_encrypted_session_key, 0); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_SESSION_KEY'); + return; + } + + switch ($cipher) { + //case NET_SSH1_CIPHER_NONE: + // $this->crypto = new Crypt_Null(); + // break; + case NET_SSH1_CIPHER_DES: + $this->crypto = new Crypt_DES(); + $this->crypto->disablePadding(); + $this->crypto->enableContinuousBuffer(); + $this->crypto->setKey(substr($session_key, 0, 8)); + break; + case NET_SSH1_CIPHER_3DES: + $this->crypto = new Crypt_TripleDES(CRYPT_DES_MODE_3CBC); + $this->crypto->disablePadding(); + $this->crypto->enableContinuousBuffer(); + $this->crypto->setKey(substr($session_key, 0, 24)); + break; + //case NET_SSH1_CIPHER_RC4: + // $this->crypto = new Crypt_RC4(); + // $this->crypto->enableContinuousBuffer(); + // $this->crypto->setKey(substr($session_key, 0, 16)); + // break; + } + + $response = $this->_get_binary_packet(); + + if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_SUCCESS) { + user_error('Expected SSH_SMSG_SUCCESS'); + return; + } + + $this->bitmap = NET_SSH1_MASK_CONSTRUCTOR; + } + + /** + * Login + * + * @param String $username + * @param optional String $password + * @return Boolean + * @access public + */ + function login($username, $password = '') + { + if (!($this->bitmap & NET_SSH1_MASK_CONSTRUCTOR)) { + return false; + } + + $data = pack('CNa*', NET_SSH1_CMSG_USER, strlen($username), $username); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_USER'); + return false; + } + + $response = $this->_get_binary_packet(); + + if ($response === true) { + return false; + } + if ($response[NET_SSH1_RESPONSE_TYPE] == NET_SSH1_SMSG_SUCCESS) { + $this->bitmap |= NET_SSH1_MASK_LOGIN; + return true; + } else if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_FAILURE) { + user_error('Expected SSH_SMSG_SUCCESS or SSH_SMSG_FAILURE'); + return false; + } + + $data = pack('CNa*', NET_SSH1_CMSG_AUTH_PASSWORD, strlen($password), $password); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_AUTH_PASSWORD'); + return false; + } + + // remove the username and password from the last logged packet + if (defined('NET_SSH1_LOGGING') && NET_SSH1_LOGGING == NET_SSH1_LOG_COMPLEX) { + $data = pack('CNa*', NET_SSH1_CMSG_AUTH_PASSWORD, strlen('password'), 'password'); + $this->message_log[count($this->message_log) - 1] = $data; + } + + $response = $this->_get_binary_packet(); + + if ($response === true) { + return false; + } + if ($response[NET_SSH1_RESPONSE_TYPE] == NET_SSH1_SMSG_SUCCESS) { + $this->bitmap |= NET_SSH1_MASK_LOGIN; + return true; + } else if ($response[NET_SSH1_RESPONSE_TYPE] == NET_SSH1_SMSG_FAILURE) { + return false; + } else { + user_error('Expected SSH_SMSG_SUCCESS or SSH_SMSG_FAILURE'); + return false; + } + } + + /** + * Set Timeout + * + * $ssh->exec('ping 127.0.0.1'); on a Linux host will never return and will run indefinitely. setTimeout() makes it so it'll timeout. + * Setting $timeout to false or 0 will mean there is no timeout. + * + * @param Mixed $timeout + */ + function setTimeout($timeout) + { + $this->timeout = $this->curTimeout = $timeout; + } + + /** + * Executes a command on a non-interactive shell, returns the output, and quits. + * + * An SSH1 server will close the connection after a command has been executed on a non-interactive shell. SSH2 + * servers don't, however, this isn't an SSH2 client. The way this works, on the server, is by initiating a + * shell with the -s option, as discussed in the following links: + * + * {@link http://www.faqs.org/docs/bashman/bashref_65.html http://www.faqs.org/docs/bashman/bashref_65.html} + * {@link http://www.faqs.org/docs/bashman/bashref_62.html http://www.faqs.org/docs/bashman/bashref_62.html} + * + * To execute further commands, a new Net_SSH1 object will need to be created. + * + * Returns false on failure and the output, otherwise. + * + * @see Net_SSH1::interactiveRead() + * @see Net_SSH1::interactiveWrite() + * @param String $cmd + * @return mixed + * @access public + */ + function exec($cmd, $block = true) + { + if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + $data = pack('CNa*', NET_SSH1_CMSG_EXEC_CMD, strlen($cmd), $cmd); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_EXEC_CMD'); + return false; + } + + if (!$block) { + return true; + } + + $output = ''; + $response = $this->_get_binary_packet(); + + if ($response !== false) { + do { + $output.= substr($response[NET_SSH1_RESPONSE_DATA], 4); + $response = $this->_get_binary_packet(); + } while (is_array($response) && $response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_EXITSTATUS); + } + + $data = pack('C', NET_SSH1_CMSG_EXIT_CONFIRMATION); + + // i don't think it's really all that important if this packet gets sent or not. + $this->_send_binary_packet($data); + + fclose($this->fsock); + + // reset the execution bitmap - a new Net_SSH1 object needs to be created. + $this->bitmap = 0; + + return $output; + } + + /** + * Creates an interactive shell + * + * @see Net_SSH1::interactiveRead() + * @see Net_SSH1::interactiveWrite() + * @return Boolean + * @access private + */ + function _initShell() + { + // connect using the sample parameters in protocol-1.5.txt. + // according to wikipedia.org's entry on text terminals, "the fundamental type of application running on a text + // terminal is a command line interpreter or shell". thus, opening a terminal session to run the shell. + $data = pack('CNa*N4C', NET_SSH1_CMSG_REQUEST_PTY, strlen('vt100'), 'vt100', 24, 80, 0, 0, NET_SSH1_TTY_OP_END); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_REQUEST_PTY'); + return false; + } + + $response = $this->_get_binary_packet(); + + if ($response === true) { + return false; + } + if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_SUCCESS) { + user_error('Expected SSH_SMSG_SUCCESS'); + return false; + } + + $data = pack('C', NET_SSH1_CMSG_EXEC_SHELL); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_EXEC_SHELL'); + return false; + } + + $this->bitmap |= NET_SSH1_MASK_SHELL; + + //stream_set_blocking($this->fsock, 0); + + return true; + } + + /** + * Inputs a command into an interactive shell. + * + * @see Net_SSH1::interactiveWrite() + * @param String $cmd + * @return Boolean + * @access public + */ + function write($cmd) + { + return $this->interactiveWrite($cmd); + } + + /** + * Returns the output of an interactive shell when there's a match for $expect + * + * $expect can take the form of a string literal or, if $mode == NET_SSH1_READ_REGEX, + * a regular expression. + * + * @see Net_SSH1::write() + * @param String $expect + * @param Integer $mode + * @return Boolean + * @access public + */ + function read($expect, $mode = NET_SSH1_READ_SIMPLE) + { + if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH1_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + $match = $expect; + while (true) { + if ($mode == NET_SSH1_READ_REGEX) { + preg_match($expect, $this->interactiveBuffer, $matches); + $match = isset($matches[0]) ? $matches[0] : ''; + } + $pos = strlen($match) ? strpos($this->interactiveBuffer, $match) : false; + if ($pos !== false) { + return $this->_string_shift($this->interactiveBuffer, $pos + strlen($match)); + } + $response = $this->_get_binary_packet(); + + if ($response === true) { + return $this->_string_shift($this->interactiveBuffer, strlen($this->interactiveBuffer)); + } + $this->interactiveBuffer.= substr($response[NET_SSH1_RESPONSE_DATA], 4); + } + } + + /** + * Inputs a command into an interactive shell. + * + * @see Net_SSH1::interactiveRead() + * @param String $cmd + * @return Boolean + * @access public + */ + function interactiveWrite($cmd) + { + if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH1_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + $data = pack('CNa*', NET_SSH1_CMSG_STDIN_DATA, strlen($cmd), $cmd); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_STDIN'); + return false; + } + + return true; + } + + /** + * Returns the output of an interactive shell when no more output is available. + * + * Requires PHP 4.3.0 or later due to the use of the stream_select() function. If you see stuff like + * "", you're seeing ANSI escape codes. According to + * {@link http://support.microsoft.com/kb/101875 How to Enable ANSI.SYS in a Command Window}, "Windows NT + * does not support ANSI escape sequences in Win32 Console applications", so if you're a Windows user, + * there's not going to be much recourse. + * + * @see Net_SSH1::interactiveRead() + * @return String + * @access public + */ + function interactiveRead() + { + if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH1_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + $read = array($this->fsock); + $write = $except = null; + if (stream_select($read, $write, $except, 0)) { + $response = $this->_get_binary_packet(); + return substr($response[NET_SSH1_RESPONSE_DATA], 4); + } else { + return ''; + } + } + + /** + * Disconnect + * + * @access public + */ + function disconnect() + { + $this->_disconnect(); + } + + /** + * Destructor. + * + * Will be called, automatically, if you're supporting just PHP5. If you're supporting PHP4, you'll need to call + * disconnect(). + * + * @access public + */ + function __destruct() + { + $this->_disconnect(); + } + + /** + * Disconnect + * + * @param String $msg + * @access private + */ + function _disconnect($msg = 'Client Quit') + { + if ($this->bitmap) { + $data = pack('C', NET_SSH1_CMSG_EOF); + $this->_send_binary_packet($data); + /* + $response = $this->_get_binary_packet(); + if ($response === true) { + $response = array(NET_SSH1_RESPONSE_TYPE => -1); + } + switch ($response[NET_SSH1_RESPONSE_TYPE]) { + case NET_SSH1_SMSG_EXITSTATUS: + $data = pack('C', NET_SSH1_CMSG_EXIT_CONFIRMATION); + break; + default: + $data = pack('CNa*', NET_SSH1_MSG_DISCONNECT, strlen($msg), $msg); + } + */ + $data = pack('CNa*', NET_SSH1_MSG_DISCONNECT, strlen($msg), $msg); + + $this->_send_binary_packet($data); + fclose($this->fsock); + $this->bitmap = 0; + } + } + + /** + * Gets Binary Packets + * + * See 'The Binary Packet Protocol' of protocol-1.5.txt for more info. + * + * Also, this function could be improved upon by adding detection for the following exploit: + * http://www.securiteam.com/securitynews/5LP042K3FY.html + * + * @see Net_SSH1::_send_binary_packet() + * @return Array + * @access private + */ + function _get_binary_packet() + { + if (feof($this->fsock)) { + //user_error('connection closed prematurely'); + return false; + } + + if ($this->curTimeout) { + $read = array($this->fsock); + $write = $except = NULL; + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $sec = floor($this->curTimeout); + $usec = 1000000 * ($this->curTimeout - $sec); + // on windows this returns a "Warning: Invalid CRT parameters detected" error + if (!@stream_select($read, $write, $except, $sec, $usec) && !count($read)) { + //$this->_disconnect('Timeout'); + return true; + } + $elapsed = strtok(microtime(), ' ') + strtok('') - $start; + $this->curTimeout-= $elapsed; + } + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $temp = unpack('Nlength', fread($this->fsock, 4)); + + $padding_length = 8 - ($temp['length'] & 7); + $length = $temp['length'] + $padding_length; + + while ($length > 0) { + $temp = fread($this->fsock, $length); + $raw.= $temp; + $length-= strlen($temp); + } + $stop = strtok(microtime(), ' ') + strtok(''); + + if (strlen($raw) && $this->crypto !== false) { + $raw = $this->crypto->decrypt($raw); + } + + $padding = substr($raw, 0, $padding_length); + $type = $raw[$padding_length]; + $data = substr($raw, $padding_length + 1, -4); + + $temp = unpack('Ncrc', substr($raw, -4)); + + //if ( $temp['crc'] != $this->_crc($padding . $type . $data) ) { + // user_error('Bad CRC in packet from server'); + // return false; + //} + + $type = ord($type); + + if (defined('NET_SSH1_LOGGING')) { + $temp = isset($this->protocol_flags[$type]) ? $this->protocol_flags[$type] : 'UNKNOWN'; + $temp = '<- ' . $temp . + ' (' . round($stop - $start, 4) . 's)'; + $this->_append_log($temp, $data); + } + + return array( + NET_SSH1_RESPONSE_TYPE => $type, + NET_SSH1_RESPONSE_DATA => $data + ); + } + + /** + * Sends Binary Packets + * + * Returns true on success, false on failure. + * + * @see Net_SSH1::_get_binary_packet() + * @param String $data + * @return Boolean + * @access private + */ + function _send_binary_packet($data) + { + if (feof($this->fsock)) { + //user_error('connection closed prematurely'); + return false; + } + + $length = strlen($data) + 4; + + $padding = crypt_random_string(8 - ($length & 7)); + + $orig = $data; + $data = $padding . $data; + $data.= pack('N', $this->_crc($data)); + + if ($this->crypto !== false) { + $data = $this->crypto->encrypt($data); + } + + $packet = pack('Na*', $length, $data); + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $result = strlen($packet) == fputs($this->fsock, $packet); + $stop = strtok(microtime(), ' ') + strtok(''); + + if (defined('NET_SSH1_LOGGING')) { + $temp = isset($this->protocol_flags[ord($orig[0])]) ? $this->protocol_flags[ord($orig[0])] : 'UNKNOWN'; + $temp = '-> ' . $temp . + ' (' . round($stop - $start, 4) . 's)'; + $this->_append_log($temp, $orig); + } + + return $result; + } + + /** + * Cyclic Redundancy Check (CRC) + * + * PHP's crc32 function is implemented slightly differently than the one that SSH v1 uses, so + * we've reimplemented it. A more detailed discussion of the differences can be found after + * $crc_lookup_table's initialization. + * + * @see Net_SSH1::_get_binary_packet() + * @see Net_SSH1::_send_binary_packet() + * @param String $data + * @return Integer + * @access private + */ + function _crc($data) + { + static $crc_lookup_table = array( + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, + 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, + 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, + 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, + 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, + 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, + 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, + 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, + 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, + 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, + 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, + 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, + 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, + 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, + 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, + 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, + 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, + 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, + 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, + 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, + 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, + 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, + 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, + 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, + 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, + 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, + 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, + 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, + 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, + 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, + 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, + 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, + 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + ); + + // For this function to yield the same output as PHP's crc32 function, $crc would have to be + // set to 0xFFFFFFFF, initially - not 0x00000000 as it currently is. + $crc = 0x00000000; + $length = strlen($data); + + for ($i=0;$i<$length;$i++) { + // We AND $crc >> 8 with 0x00FFFFFF because we want the eight newly added bits to all + // be zero. PHP, unfortunately, doesn't always do this. 0x80000000 >> 8, as an example, + // yields 0xFF800000 - not 0x00800000. The following link elaborates: + // http://www.php.net/manual/en/language.operators.bitwise.php#57281 + $crc = (($crc >> 8) & 0x00FFFFFF) ^ $crc_lookup_table[($crc & 0xFF) ^ ord($data[$i])]; + } + + // In addition to having to set $crc to 0xFFFFFFFF, initially, the return value must be XOR'd with + // 0xFFFFFFFF for this function to return the same thing that PHP's crc32 function would. + return $crc; + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param String $string + * @param optional Integer $index + * @return String + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * RSA Encrypt + * + * Returns mod(pow($m, $e), $n), where $n should be the product of two (large) primes $p and $q and where $e + * should be a number with the property that gcd($e, ($p - 1) * ($q - 1)) == 1. Could just make anything that + * calls this call modexp, instead, but I think this makes things clearer, maybe... + * + * @see Net_SSH1::Net_SSH1() + * @param Math_BigInteger $m + * @param Array $key + * @return Math_BigInteger + * @access private + */ + function _rsa_crypt($m, $key) + { + /* + if (!class_exists('Crypt_RSA')) { + require_once('Crypt/RSA.php'); + } + + $rsa = new Crypt_RSA(); + $rsa->loadKey($key, CRYPT_RSA_PUBLIC_FORMAT_RAW); + $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); + return $rsa->encrypt($m); + */ + + // To quote from protocol-1.5.txt: + // The most significant byte (which is only partial as the value must be + // less than the public modulus, which is never a power of two) is zero. + // + // The next byte contains the value 2 (which stands for public-key + // encrypted data in the PKCS standard [PKCS#1]). Then, there are non- + // zero random bytes to fill any unused space, a zero byte, and the data + // to be encrypted in the least significant bytes, the last byte of the + // data in the least significant byte. + + // Presumably the part of PKCS#1 they're refering to is "Section 7.2.1 Encryption Operation", + // under "7.2 RSAES-PKCS1-v1.5" and "7 Encryption schemes" of the following URL: + // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf + $modulus = $key[1]->toBytes(); + $length = strlen($modulus) - strlen($m) - 3; + $random = ''; + while (strlen($random) != $length) { + $block = crypt_random_string($length - strlen($random)); + $block = str_replace("\x00", '', $block); + $random.= $block; + } + $temp = chr(0) . chr(2) . $random . chr(0) . $m; + + $m = new Math_BigInteger($temp, 256); + $m = $m->modPow($key[0], $key[1]); + + return $m->toBytes(); + } + + /** + * Define Array + * + * Takes any number of arrays whose indices are integers and whose values are strings and defines a bunch of + * named constants from it, using the value as the name of the constant and the index as the value of the constant. + * If any of the constants that would be defined already exists, none of the constants will be defined. + * + * @param Array $array + * @access private + */ + function _define_array() + { + $args = func_get_args(); + foreach ($args as $arg) { + foreach ($arg as $key=>$value) { + if (!defined($value)) { + define($value, $key); + } else { + break 2; + } + } + } + } + + /** + * Returns a log of the packets that have been sent and received. + * + * Returns a string if NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX, an array if NET_SSH2_LOGGING == NET_SSH2_LOG_SIMPLE and false if !defined('NET_SSH2_LOGGING') + * + * @access public + * @return String or Array + */ + function getLog() + { + if (!defined('NET_SSH1_LOGGING')) { + return false; + } + + switch (NET_SSH1_LOGGING) { + case NET_SSH1_LOG_SIMPLE: + return $this->message_number_log; + break; + case NET_SSH1_LOG_COMPLEX: + return $this->_format_log($this->message_log, $this->protocol_flags_log); + break; + default: + return false; + } + } + + /** + * Formats a log for printing + * + * @param Array $message_log + * @param Array $message_number_log + * @access private + * @return String + */ + function _format_log($message_log, $message_number_log) + { + static $boundary = ':', $long_width = 65, $short_width = 16; + + $output = ''; + for ($i = 0; $i < count($message_log); $i++) { + $output.= $message_number_log[$i] . "\r\n"; + $current_log = $message_log[$i]; + $j = 0; + do { + if (strlen($current_log)) { + $output.= str_pad(dechex($j), 7, '0', STR_PAD_LEFT) . '0 '; + } + $fragment = $this->_string_shift($current_log, $short_width); + $hex = substr( + preg_replace( + '#(.)#es', + '"' . $boundary . '" . str_pad(dechex(ord(substr("\\1", -1))), 2, "0", STR_PAD_LEFT)', + $fragment), + strlen($boundary) + ); + // replace non ASCII printable characters with dots + // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters + // also replace < with a . since < messes up the output on web browsers + $raw = preg_replace('#[^\x20-\x7E]|<#', '.', $fragment); + $output.= str_pad($hex, $long_width - $short_width, ' ') . $raw . "\r\n"; + $j++; + } while (strlen($current_log)); + $output.= "\r\n"; + } + + return $output; + } + + /** + * Return the server key public exponent + * + * Returns, by default, the base-10 representation. If $raw_output is set to true, returns, instead, + * the raw bytes. This behavior is similar to PHP's md5() function. + * + * @param optional Boolean $raw_output + * @return String + * @access public + */ + function getServerKeyPublicExponent($raw_output = false) + { + return $raw_output ? $this->server_key_public_exponent->toBytes() : $this->server_key_public_exponent->toString(); + } + + /** + * Return the server key public modulus + * + * Returns, by default, the base-10 representation. If $raw_output is set to true, returns, instead, + * the raw bytes. This behavior is similar to PHP's md5() function. + * + * @param optional Boolean $raw_output + * @return String + * @access public + */ + function getServerKeyPublicModulus($raw_output = false) + { + return $raw_output ? $this->server_key_public_modulus->toBytes() : $this->server_key_public_modulus->toString(); + } + + /** + * Return the host key public exponent + * + * Returns, by default, the base-10 representation. If $raw_output is set to true, returns, instead, + * the raw bytes. This behavior is similar to PHP's md5() function. + * + * @param optional Boolean $raw_output + * @return String + * @access public + */ + function getHostKeyPublicExponent($raw_output = false) + { + return $raw_output ? $this->host_key_public_exponent->toBytes() : $this->host_key_public_exponent->toString(); + } + + /** + * Return the host key public modulus + * + * Returns, by default, the base-10 representation. If $raw_output is set to true, returns, instead, + * the raw bytes. This behavior is similar to PHP's md5() function. + * + * @param optional Boolean $raw_output + * @return String + * @access public + */ + function getHostKeyPublicModulus($raw_output = false) + { + return $raw_output ? $this->host_key_public_modulus->toBytes() : $this->host_key_public_modulus->toString(); + } + + /** + * Return a list of ciphers supported by SSH1 server. + * + * Just because a cipher is supported by an SSH1 server doesn't mean it's supported by this library. If $raw_output + * is set to true, returns, instead, an array of constants. ie. instead of array('Triple-DES in CBC mode'), you'll + * get array(NET_SSH1_CIPHER_3DES). + * + * @param optional Boolean $raw_output + * @return Array + * @access public + */ + function getSupportedCiphers($raw_output = false) + { + return $raw_output ? array_keys($this->supported_ciphers) : array_values($this->supported_ciphers); + } + + /** + * Return a list of authentications supported by SSH1 server. + * + * Just because a cipher is supported by an SSH1 server doesn't mean it's supported by this library. If $raw_output + * is set to true, returns, instead, an array of constants. ie. instead of array('password authentication'), you'll + * get array(NET_SSH1_AUTH_PASSWORD). + * + * @param optional Boolean $raw_output + * @return Array + * @access public + */ + function getSupportedAuthentications($raw_output = false) + { + return $raw_output ? array_keys($this->supported_authentications) : array_values($this->supported_authentications); + } + + /** + * Return the server identification. + * + * @return String + * @access public + */ + function getServerIdentification() + { + return rtrim($this->server_identification); + } + + /** + * Logs data packets + * + * Makes sure that only the last 1MB worth of packets will be logged + * + * @param String $data + * @access private + */ + function _append_log($protocol_flags, $message) + { + switch (NET_SSH1_LOGGING) { + // useful for benchmarks + case NET_SSH1_LOG_SIMPLE: + $this->protocol_flags_log[] = $protocol_flags; + break; + // the most useful log for SSH1 + case NET_SSH1_LOG_COMPLEX: + $this->protocol_flags_log[] = $protocol_flags; + $this->_string_shift($message); + $this->log_size+= strlen($message); + $this->message_log[] = $message; + while ($this->log_size > NET_SSH2_LOG_MAX_SIZE) { + $this->log_size-= strlen(array_shift($this->message_log)); + array_shift($this->protocol_flags_log); + } + break; + // dump the output out realtime; packets may be interspersed with non packets, + // passwords won't be filtered out and select other packets may not be correctly + // identified + case NET_SSH1_LOG_REALTIME: + echo "
\r\n" . $this->_format_log(array($message), array($protocol_flags)) . "\r\n
\r\n"; + @flush(); + @ob_flush(); + break; + // basically the same thing as NET_SSH1_LOG_REALTIME with the caveat that NET_SSH1_LOG_REALTIME_FILE + // needs to be defined and that the resultant log file will be capped out at NET_SSH1_LOG_MAX_SIZE. + // the earliest part of the log file is denoted by the first <<< START >>> and is not going to necessarily + // at the beginning of the file + case NET_SSH1_LOG_REALTIME_FILE: + if (!isset($this->realtime_log_file)) { + // PHP doesn't seem to like using constants in fopen() + $filename = NET_SSH2_LOG_REALTIME_FILE; + $fp = fopen($filename, 'w'); + $this->realtime_log_file = $fp; + } + if (!is_resource($this->realtime_log_file)) { + break; + } + $entry = $this->_format_log(array($message), array($protocol_flags)); + if ($this->realtime_log_wrap) { + $temp = "<<< START >>>\r\n"; + $entry.= $temp; + fseek($this->realtime_log_file, ftell($this->realtime_log_file) - strlen($temp)); + } + $this->realtime_log_size+= strlen($entry); + if ($this->realtime_log_size > NET_SSH1_LOG_MAX_SIZE) { + fseek($this->realtime_log_file, 0); + $this->realtime_log_size = strlen($entry); + $this->realtime_log_wrap = true; + } + fputs($this->realtime_log_file, $entry); + } + } +} \ No newline at end of file diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/Net/SSH2.php b/apps/files_external/3rdparty/phpseclib/phpseclib/Net/SSH2.php new file mode 100644 index 0000000000..43bfbca2db --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/Net/SSH2.php @@ -0,0 +1,3009 @@ + + * login('username', 'password')) { + * exit('Login Failed'); + * } + * + * echo $ssh->exec('pwd'); + * echo $ssh->exec('ls -la'); + * ?> + * + * + * + * setPassword('whatever'); + * $key->loadKey(file_get_contents('privatekey')); + * + * $ssh = new Net_SSH2('www.domain.tld'); + * if (!$ssh->login('username', $key)) { + * exit('Login Failed'); + * } + * + * echo $ssh->read('username@username:~$'); + * $ssh->write("ls -la\n"); + * echo $ssh->read('username@username:~$'); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Net + * @package Net_SSH2 + * @author Jim Wigginton + * @copyright MMVII Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @version $Id: SSH2.php,v 1.53 2010-10-24 01:24:30 terrafrost Exp $ + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Math_BigInteger + * + * Used to do Diffie-Hellman key exchange and DSA/RSA signature verification. + */ +if (!class_exists('Math_BigInteger')) { + require_once('Math/BigInteger.php'); +} + +/** + * Include Crypt_Random + */ +// the class_exists() will only be called if the crypt_random_string function hasn't been defined and +// will trigger a call to __autoload() if you're wanting to auto-load classes +// call function_exists() a second time to stop the require_once from being called outside +// of the auto loader +if (!function_exists('crypt_random_string') && !class_exists('Crypt_Random') && !function_exists('crypt_random_string')) { + require_once('Crypt/Random.php'); +} + +/** + * Include Crypt_Hash + */ +if (!class_exists('Crypt_Hash')) { + require_once('Crypt/Hash.php'); +} + +/** + * Include Crypt_TripleDES + */ +if (!class_exists('Crypt_TripleDES')) { + require_once('Crypt/TripleDES.php'); +} + +/** + * Include Crypt_RC4 + */ +if (!class_exists('Crypt_RC4')) { + require_once('Crypt/RC4.php'); +} + +/** + * Include Crypt_AES + */ +if (!class_exists('Crypt_AES')) { + require_once('Crypt/AES.php'); +} + +/**#@+ + * Execution Bitmap Masks + * + * @see Net_SSH2::bitmap + * @access private + */ +define('NET_SSH2_MASK_CONSTRUCTOR', 0x00000001); +define('NET_SSH2_MASK_LOGIN', 0x00000002); +define('NET_SSH2_MASK_SHELL', 0x00000004); +/**#@-*/ + +/**#@+ + * Channel constants + * + * RFC4254 refers not to client and server channels but rather to sender and recipient channels. we don't refer + * to them in that way because RFC4254 toggles the meaning. the client sends a SSH_MSG_CHANNEL_OPEN message with + * a sender channel and the server sends a SSH_MSG_CHANNEL_OPEN_CONFIRMATION in response, with a sender and a + * recepient channel. at first glance, you might conclude that SSH_MSG_CHANNEL_OPEN_CONFIRMATION's sender channel + * would be the same thing as SSH_MSG_CHANNEL_OPEN's sender channel, but it's not, per this snipet: + * The 'recipient channel' is the channel number given in the original + * open request, and 'sender channel' is the channel number allocated by + * the other side. + * + * @see Net_SSH2::_send_channel_packet() + * @see Net_SSH2::_get_channel_packet() + * @access private + */ +define('NET_SSH2_CHANNEL_EXEC', 0); // PuTTy uses 0x100 +define('NET_SSH2_CHANNEL_SHELL',1); +/**#@-*/ + +/**#@+ + * @access public + * @see Net_SSH2::getLog() + */ +/** + * Returns the message numbers + */ +define('NET_SSH2_LOG_SIMPLE', 1); +/** + * Returns the message content + */ +define('NET_SSH2_LOG_COMPLEX', 2); +/** + * Outputs the content real-time + */ +define('NET_SSH2_LOG_REALTIME', 3); +/** + * Dumps the content real-time to a file + */ +define('NET_SSH2_LOG_REALTIME_FILE', 4); +/**#@-*/ + +/**#@+ + * @access public + * @see Net_SSH2::read() + */ +/** + * Returns when a string matching $expect exactly is found + */ +define('NET_SSH2_READ_SIMPLE', 1); +/** + * Returns when a string matching the regular expression $expect is found + */ +define('NET_SSH2_READ_REGEX', 2); +/** + * Make sure that the log never gets larger than this + */ +define('NET_SSH2_LOG_MAX_SIZE', 1024 * 1024); +/**#@-*/ + +/** + * Pure-PHP implementation of SSHv2. + * + * @author Jim Wigginton + * @version 0.1.0 + * @access public + * @package Net_SSH2 + */ +class Net_SSH2 { + /** + * The SSH identifier + * + * @var String + * @access private + */ + var $identifier = 'SSH-2.0-phpseclib_0.3'; + + /** + * The Socket Object + * + * @var Object + * @access private + */ + var $fsock; + + /** + * Execution Bitmap + * + * The bits that are set represent functions that have been called already. This is used to determine + * if a requisite function has been successfully executed. If not, an error should be thrown. + * + * @var Integer + * @access private + */ + var $bitmap = 0; + + /** + * Error information + * + * @see Net_SSH2::getErrors() + * @see Net_SSH2::getLastError() + * @var String + * @access private + */ + var $errors = array(); + + /** + * Server Identifier + * + * @see Net_SSH2::getServerIdentification() + * @var String + * @access private + */ + var $server_identifier = ''; + + /** + * Key Exchange Algorithms + * + * @see Net_SSH2::getKexAlgorithims() + * @var Array + * @access private + */ + var $kex_algorithms; + + /** + * Server Host Key Algorithms + * + * @see Net_SSH2::getServerHostKeyAlgorithms() + * @var Array + * @access private + */ + var $server_host_key_algorithms; + + /** + * Encryption Algorithms: Client to Server + * + * @see Net_SSH2::getEncryptionAlgorithmsClient2Server() + * @var Array + * @access private + */ + var $encryption_algorithms_client_to_server; + + /** + * Encryption Algorithms: Server to Client + * + * @see Net_SSH2::getEncryptionAlgorithmsServer2Client() + * @var Array + * @access private + */ + var $encryption_algorithms_server_to_client; + + /** + * MAC Algorithms: Client to Server + * + * @see Net_SSH2::getMACAlgorithmsClient2Server() + * @var Array + * @access private + */ + var $mac_algorithms_client_to_server; + + /** + * MAC Algorithms: Server to Client + * + * @see Net_SSH2::getMACAlgorithmsServer2Client() + * @var Array + * @access private + */ + var $mac_algorithms_server_to_client; + + /** + * Compression Algorithms: Client to Server + * + * @see Net_SSH2::getCompressionAlgorithmsClient2Server() + * @var Array + * @access private + */ + var $compression_algorithms_client_to_server; + + /** + * Compression Algorithms: Server to Client + * + * @see Net_SSH2::getCompressionAlgorithmsServer2Client() + * @var Array + * @access private + */ + var $compression_algorithms_server_to_client; + + /** + * Languages: Server to Client + * + * @see Net_SSH2::getLanguagesServer2Client() + * @var Array + * @access private + */ + var $languages_server_to_client; + + /** + * Languages: Client to Server + * + * @see Net_SSH2::getLanguagesClient2Server() + * @var Array + * @access private + */ + var $languages_client_to_server; + + /** + * Block Size for Server to Client Encryption + * + * "Note that the length of the concatenation of 'packet_length', + * 'padding_length', 'payload', and 'random padding' MUST be a multiple + * of the cipher block size or 8, whichever is larger. This constraint + * MUST be enforced, even when using stream ciphers." + * + * -- http://tools.ietf.org/html/rfc4253#section-6 + * + * @see Net_SSH2::Net_SSH2() + * @see Net_SSH2::_send_binary_packet() + * @var Integer + * @access private + */ + var $encrypt_block_size = 8; + + /** + * Block Size for Client to Server Encryption + * + * @see Net_SSH2::Net_SSH2() + * @see Net_SSH2::_get_binary_packet() + * @var Integer + * @access private + */ + var $decrypt_block_size = 8; + + /** + * Server to Client Encryption Object + * + * @see Net_SSH2::_get_binary_packet() + * @var Object + * @access private + */ + var $decrypt = false; + + /** + * Client to Server Encryption Object + * + * @see Net_SSH2::_send_binary_packet() + * @var Object + * @access private + */ + var $encrypt = false; + + /** + * Client to Server HMAC Object + * + * @see Net_SSH2::_send_binary_packet() + * @var Object + * @access private + */ + var $hmac_create = false; + + /** + * Server to Client HMAC Object + * + * @see Net_SSH2::_get_binary_packet() + * @var Object + * @access private + */ + var $hmac_check = false; + + /** + * Size of server to client HMAC + * + * We need to know how big the HMAC will be for the server to client direction so that we know how many bytes to read. + * For the client to server side, the HMAC object will make the HMAC as long as it needs to be. All we need to do is + * append it. + * + * @see Net_SSH2::_get_binary_packet() + * @var Integer + * @access private + */ + var $hmac_size = false; + + /** + * Server Public Host Key + * + * @see Net_SSH2::getServerPublicHostKey() + * @var String + * @access private + */ + var $server_public_host_key; + + /** + * Session identifer + * + * "The exchange hash H from the first key exchange is additionally + * used as the session identifier, which is a unique identifier for + * this connection." + * + * -- http://tools.ietf.org/html/rfc4253#section-7.2 + * + * @see Net_SSH2::_key_exchange() + * @var String + * @access private + */ + var $session_id = false; + + /** + * Exchange hash + * + * The current exchange hash + * + * @see Net_SSH2::_key_exchange() + * @var String + * @access private + */ + var $exchange_hash = false; + + /** + * Message Numbers + * + * @see Net_SSH2::Net_SSH2() + * @var Array + * @access private + */ + var $message_numbers = array(); + + /** + * Disconnection Message 'reason codes' defined in RFC4253 + * + * @see Net_SSH2::Net_SSH2() + * @var Array + * @access private + */ + var $disconnect_reasons = array(); + + /** + * SSH_MSG_CHANNEL_OPEN_FAILURE 'reason codes', defined in RFC4254 + * + * @see Net_SSH2::Net_SSH2() + * @var Array + * @access private + */ + var $channel_open_failure_reasons = array(); + + /** + * Terminal Modes + * + * @link http://tools.ietf.org/html/rfc4254#section-8 + * @see Net_SSH2::Net_SSH2() + * @var Array + * @access private + */ + var $terminal_modes = array(); + + /** + * SSH_MSG_CHANNEL_EXTENDED_DATA's data_type_codes + * + * @link http://tools.ietf.org/html/rfc4254#section-5.2 + * @see Net_SSH2::Net_SSH2() + * @var Array + * @access private + */ + var $channel_extended_data_type_codes = array(); + + /** + * Send Sequence Number + * + * See 'Section 6.4. Data Integrity' of rfc4253 for more info. + * + * @see Net_SSH2::_send_binary_packet() + * @var Integer + * @access private + */ + var $send_seq_no = 0; + + /** + * Get Sequence Number + * + * See 'Section 6.4. Data Integrity' of rfc4253 for more info. + * + * @see Net_SSH2::_get_binary_packet() + * @var Integer + * @access private + */ + var $get_seq_no = 0; + + /** + * Server Channels + * + * Maps client channels to server channels + * + * @see Net_SSH2::_get_channel_packet() + * @see Net_SSH2::exec() + * @var Array + * @access private + */ + var $server_channels = array(); + + /** + * Channel Buffers + * + * If a client requests a packet from one channel but receives two packets from another those packets should + * be placed in a buffer + * + * @see Net_SSH2::_get_channel_packet() + * @see Net_SSH2::exec() + * @var Array + * @access private + */ + var $channel_buffers = array(); + + /** + * Channel Status + * + * Contains the type of the last sent message + * + * @see Net_SSH2::_get_channel_packet() + * @var Array + * @access private + */ + var $channel_status = array(); + + /** + * Packet Size + * + * Maximum packet size indexed by channel + * + * @see Net_SSH2::_send_channel_packet() + * @var Array + * @access private + */ + var $packet_size_client_to_server = array(); + + /** + * Message Number Log + * + * @see Net_SSH2::getLog() + * @var Array + * @access private + */ + var $message_number_log = array(); + + /** + * Message Log + * + * @see Net_SSH2::getLog() + * @var Array + * @access private + */ + var $message_log = array(); + + /** + * The Window Size + * + * Bytes the other party can send before it must wait for the window to be adjusted (0x7FFFFFFF = 4GB) + * + * @var Integer + * @see Net_SSH2::_send_channel_packet() + * @see Net_SSH2::exec() + * @access private + */ + var $window_size = 0x7FFFFFFF; + + /** + * Window size + * + * Window size indexed by channel + * + * @see Net_SSH2::_send_channel_packet() + * @var Array + * @access private + */ + var $window_size_client_to_server = array(); + + /** + * Server signature + * + * Verified against $this->session_id + * + * @see Net_SSH2::getServerPublicHostKey() + * @var String + * @access private + */ + var $signature = ''; + + /** + * Server signature format + * + * ssh-rsa or ssh-dss. + * + * @see Net_SSH2::getServerPublicHostKey() + * @var String + * @access private + */ + var $signature_format = ''; + + /** + * Interactive Buffer + * + * @see Net_SSH2::read() + * @var Array + * @access private + */ + var $interactiveBuffer = ''; + + /** + * Current log size + * + * Should never exceed NET_SSH2_LOG_MAX_SIZE + * + * @see Net_SSH2::_send_binary_packet() + * @see Net_SSH2::_get_binary_packet() + * @var Integer + * @access private + */ + var $log_size; + + /** + * Timeout + * + * @see Net_SSH2::setTimeout() + * @access private + */ + var $timeout; + + /** + * Current Timeout + * + * @see Net_SSH2::_get_channel_packet() + * @access private + */ + var $curTimeout; + + /** + * Real-time log file pointer + * + * @see Net_SSH2::_append_log() + * @var Resource + * @access private + */ + var $realtime_log_file; + + /** + * Real-time log file size + * + * @see Net_SSH2::_append_log() + * @var Integer + * @access private + */ + var $realtime_log_size; + + /** + * Has the signature been validated? + * + * @see Net_SSH2::getServerPublicHostKey() + * @var Boolean + * @access private + */ + var $signature_validated = false; + + /** + * Real-time log file wrap boolean + * + * @see Net_SSH2::_append_log() + * @access private + */ + var $realtime_log_wrap; + + /** + * Flag to suppress stderr from output + * + * @see Net_SSH2::enableQuietMode() + * @access private + */ + var $quiet_mode = false; + + /** + * Time of first network activity + * + * @access private + */ + var $last_packet; + + /** + * Exit status returned from ssh if any + * + * @var Integer + * @access private + */ + var $exit_status; + + /** + * Default Constructor. + * + * Connects to an SSHv2 server + * + * @param String $host + * @param optional Integer $port + * @param optional Integer $timeout + * @return Net_SSH2 + * @access public + */ + function Net_SSH2($host, $port = 22, $timeout = 10) + { + $this->last_packet = strtok(microtime(), ' ') + strtok(''); // == microtime(true) in PHP5 + $this->message_numbers = array( + 1 => 'NET_SSH2_MSG_DISCONNECT', + 2 => 'NET_SSH2_MSG_IGNORE', + 3 => 'NET_SSH2_MSG_UNIMPLEMENTED', + 4 => 'NET_SSH2_MSG_DEBUG', + 5 => 'NET_SSH2_MSG_SERVICE_REQUEST', + 6 => 'NET_SSH2_MSG_SERVICE_ACCEPT', + 20 => 'NET_SSH2_MSG_KEXINIT', + 21 => 'NET_SSH2_MSG_NEWKEYS', + 30 => 'NET_SSH2_MSG_KEXDH_INIT', + 31 => 'NET_SSH2_MSG_KEXDH_REPLY', + 50 => 'NET_SSH2_MSG_USERAUTH_REQUEST', + 51 => 'NET_SSH2_MSG_USERAUTH_FAILURE', + 52 => 'NET_SSH2_MSG_USERAUTH_SUCCESS', + 53 => 'NET_SSH2_MSG_USERAUTH_BANNER', + + 80 => 'NET_SSH2_MSG_GLOBAL_REQUEST', + 81 => 'NET_SSH2_MSG_REQUEST_SUCCESS', + 82 => 'NET_SSH2_MSG_REQUEST_FAILURE', + 90 => 'NET_SSH2_MSG_CHANNEL_OPEN', + 91 => 'NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION', + 92 => 'NET_SSH2_MSG_CHANNEL_OPEN_FAILURE', + 93 => 'NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST', + 94 => 'NET_SSH2_MSG_CHANNEL_DATA', + 95 => 'NET_SSH2_MSG_CHANNEL_EXTENDED_DATA', + 96 => 'NET_SSH2_MSG_CHANNEL_EOF', + 97 => 'NET_SSH2_MSG_CHANNEL_CLOSE', + 98 => 'NET_SSH2_MSG_CHANNEL_REQUEST', + 99 => 'NET_SSH2_MSG_CHANNEL_SUCCESS', + 100 => 'NET_SSH2_MSG_CHANNEL_FAILURE' + ); + $this->disconnect_reasons = array( + 1 => 'NET_SSH2_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT', + 2 => 'NET_SSH2_DISCONNECT_PROTOCOL_ERROR', + 3 => 'NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED', + 4 => 'NET_SSH2_DISCONNECT_RESERVED', + 5 => 'NET_SSH2_DISCONNECT_MAC_ERROR', + 6 => 'NET_SSH2_DISCONNECT_COMPRESSION_ERROR', + 7 => 'NET_SSH2_DISCONNECT_SERVICE_NOT_AVAILABLE', + 8 => 'NET_SSH2_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED', + 9 => 'NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE', + 10 => 'NET_SSH2_DISCONNECT_CONNECTION_LOST', + 11 => 'NET_SSH2_DISCONNECT_BY_APPLICATION', + 12 => 'NET_SSH2_DISCONNECT_TOO_MANY_CONNECTIONS', + 13 => 'NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER', + 14 => 'NET_SSH2_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE', + 15 => 'NET_SSH2_DISCONNECT_ILLEGAL_USER_NAME' + ); + $this->channel_open_failure_reasons = array( + 1 => 'NET_SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED' + ); + $this->terminal_modes = array( + 0 => 'NET_SSH2_TTY_OP_END' + ); + $this->channel_extended_data_type_codes = array( + 1 => 'NET_SSH2_EXTENDED_DATA_STDERR' + ); + + $this->_define_array( + $this->message_numbers, + $this->disconnect_reasons, + $this->channel_open_failure_reasons, + $this->terminal_modes, + $this->channel_extended_data_type_codes, + array(60 => 'NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ'), + array(60 => 'NET_SSH2_MSG_USERAUTH_PK_OK'), + array(60 => 'NET_SSH2_MSG_USERAUTH_INFO_REQUEST', + 61 => 'NET_SSH2_MSG_USERAUTH_INFO_RESPONSE') + ); + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $this->fsock = @fsockopen($host, $port, $errno, $errstr, $timeout); + if (!$this->fsock) { + user_error(rtrim("Cannot connect to $host. Error $errno. $errstr")); + return; + } + $elapsed = strtok(microtime(), ' ') + strtok('') - $start; + + $timeout-= $elapsed; + + if ($timeout <= 0) { + user_error(rtrim("Cannot connect to $host. Timeout error")); + return; + } + + $read = array($this->fsock); + $write = $except = NULL; + + $sec = floor($timeout); + $usec = 1000000 * ($timeout - $sec); + + // on windows this returns a "Warning: Invalid CRT parameters detected" error + // the !count() is done as a workaround for + if (!@stream_select($read, $write, $except, $sec, $usec) && !count($read)) { + user_error(rtrim("Cannot connect to $host. Banner timeout")); + return; + } + + /* According to the SSH2 specs, + + "The server MAY send other lines of data before sending the version + string. Each line SHOULD be terminated by a Carriage Return and Line + Feed. Such lines MUST NOT begin with "SSH-", and SHOULD be encoded + in ISO-10646 UTF-8 [RFC3629] (language is not specified). Clients + MUST be able to process such lines." */ + $temp = ''; + $extra = ''; + while (!feof($this->fsock) && !preg_match('#^SSH-(\d\.\d+)#', $temp, $matches)) { + if (substr($temp, -2) == "\r\n") { + $extra.= $temp; + $temp = ''; + } + $temp.= fgets($this->fsock, 255); + } + + if (feof($this->fsock)) { + user_error('Connection closed by server'); + return false; + } + + $ext = array(); + if (extension_loaded('mcrypt')) { + $ext[] = 'mcrypt'; + } + if (extension_loaded('gmp')) { + $ext[] = 'gmp'; + } else if (extension_loaded('bcmath')) { + $ext[] = 'bcmath'; + } + + if (!empty($ext)) { + $this->identifier.= ' (' . implode(', ', $ext) . ')'; + } + + if (defined('NET_SSH2_LOGGING')) { + $this->_append_log('<-', $extra . $temp); + $this->_append_log('->', $this->identifier . "\r\n"); + } + + $this->server_identifier = trim($temp, "\r\n"); + if (strlen($extra)) { + $this->errors[] = utf8_decode($extra); + } + + if ($matches[1] != '1.99' && $matches[1] != '2.0') { + user_error("Cannot connect to SSH $matches[1] servers"); + return; + } + + fputs($this->fsock, $this->identifier . "\r\n"); + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return; + } + + if (ord($response[0]) != NET_SSH2_MSG_KEXINIT) { + user_error('Expected SSH_MSG_KEXINIT'); + return; + } + + if (!$this->_key_exchange($response)) { + return; + } + + $this->bitmap = NET_SSH2_MASK_CONSTRUCTOR; + } + + /** + * Key Exchange + * + * @param String $kexinit_payload_server + * @access private + */ + function _key_exchange($kexinit_payload_server) + { + static $kex_algorithms = array( + 'diffie-hellman-group1-sha1', // REQUIRED + 'diffie-hellman-group14-sha1' // REQUIRED + ); + + static $server_host_key_algorithms = array( + 'ssh-rsa', // RECOMMENDED sign Raw RSA Key + 'ssh-dss' // REQUIRED sign Raw DSS Key + ); + + static $encryption_algorithms = array( + // from : + 'arcfour256', + 'arcfour128', + + 'arcfour', // OPTIONAL the ARCFOUR stream cipher with a 128-bit key + + 'aes128-cbc', // RECOMMENDED AES with a 128-bit key + 'aes192-cbc', // OPTIONAL AES with a 192-bit key + 'aes256-cbc', // OPTIONAL AES in CBC mode, with a 256-bit key + + // from : + 'aes128-ctr', // RECOMMENDED AES (Rijndael) in SDCTR mode, with 128-bit key + 'aes192-ctr', // RECOMMENDED AES with 192-bit key + 'aes256-ctr', // RECOMMENDED AES with 256-bit key + '3des-ctr', // RECOMMENDED Three-key 3DES in SDCTR mode + + '3des-cbc', // REQUIRED three-key 3DES in CBC mode + 'none' // OPTIONAL no encryption; NOT RECOMMENDED + ); + + static $mac_algorithms = array( + 'hmac-sha1-96', // RECOMMENDED first 96 bits of HMAC-SHA1 (digest length = 12, key length = 20) + 'hmac-sha1', // REQUIRED HMAC-SHA1 (digest length = key length = 20) + 'hmac-md5-96', // OPTIONAL first 96 bits of HMAC-MD5 (digest length = 12, key length = 16) + 'hmac-md5', // OPTIONAL HMAC-MD5 (digest length = key length = 16) + 'none' // OPTIONAL no MAC; NOT RECOMMENDED + ); + + static $compression_algorithms = array( + 'none' // REQUIRED no compression + //'zlib' // OPTIONAL ZLIB (LZ77) compression + ); + + // some SSH servers have buggy implementations of some of the above algorithms + switch ($this->server_identifier) { + case 'SSH-2.0-SSHD': + $mac_algorithms = array_values(array_diff( + $mac_algorithms, + array('hmac-sha1-96', 'hmac-md5-96') + )); + } + + static $str_kex_algorithms, $str_server_host_key_algorithms, + $encryption_algorithms_server_to_client, $mac_algorithms_server_to_client, $compression_algorithms_server_to_client, + $encryption_algorithms_client_to_server, $mac_algorithms_client_to_server, $compression_algorithms_client_to_server; + + if (empty($str_kex_algorithms)) { + $str_kex_algorithms = implode(',', $kex_algorithms); + $str_server_host_key_algorithms = implode(',', $server_host_key_algorithms); + $encryption_algorithms_server_to_client = $encryption_algorithms_client_to_server = implode(',', $encryption_algorithms); + $mac_algorithms_server_to_client = $mac_algorithms_client_to_server = implode(',', $mac_algorithms); + $compression_algorithms_server_to_client = $compression_algorithms_client_to_server = implode(',', $compression_algorithms); + } + + $client_cookie = crypt_random_string(16); + + $response = $kexinit_payload_server; + $this->_string_shift($response, 1); // skip past the message number (it should be SSH_MSG_KEXINIT) + $server_cookie = $this->_string_shift($response, 16); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->kex_algorithms = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->server_host_key_algorithms = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->encryption_algorithms_client_to_server = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->encryption_algorithms_server_to_client = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->mac_algorithms_client_to_server = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->mac_algorithms_server_to_client = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->compression_algorithms_client_to_server = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->compression_algorithms_server_to_client = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->languages_client_to_server = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->languages_server_to_client = explode(',', $this->_string_shift($response, $temp['length'])); + + extract(unpack('Cfirst_kex_packet_follows', $this->_string_shift($response, 1))); + $first_kex_packet_follows = $first_kex_packet_follows != 0; + + // the sending of SSH2_MSG_KEXINIT could go in one of two places. this is the second place. + $kexinit_payload_client = pack('Ca*Na*Na*Na*Na*Na*Na*Na*Na*Na*Na*CN', + NET_SSH2_MSG_KEXINIT, $client_cookie, strlen($str_kex_algorithms), $str_kex_algorithms, + strlen($str_server_host_key_algorithms), $str_server_host_key_algorithms, strlen($encryption_algorithms_client_to_server), + $encryption_algorithms_client_to_server, strlen($encryption_algorithms_server_to_client), $encryption_algorithms_server_to_client, + strlen($mac_algorithms_client_to_server), $mac_algorithms_client_to_server, strlen($mac_algorithms_server_to_client), + $mac_algorithms_server_to_client, strlen($compression_algorithms_client_to_server), $compression_algorithms_client_to_server, + strlen($compression_algorithms_server_to_client), $compression_algorithms_server_to_client, 0, '', 0, '', + 0, 0 + ); + + if (!$this->_send_binary_packet($kexinit_payload_client)) { + return false; + } + // here ends the second place. + + // we need to decide upon the symmetric encryption algorithms before we do the diffie-hellman key exchange + for ($i = 0; $i < count($encryption_algorithms) && !in_array($encryption_algorithms[$i], $this->encryption_algorithms_server_to_client); $i++); + if ($i == count($encryption_algorithms)) { + user_error('No compatible server to client encryption algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + // we don't initialize any crypto-objects, yet - we do that, later. for now, we need the lengths to make the + // diffie-hellman key exchange as fast as possible + $decrypt = $encryption_algorithms[$i]; + switch ($decrypt) { + case '3des-cbc': + case '3des-ctr': + $decryptKeyLength = 24; // eg. 192 / 8 + break; + case 'aes256-cbc': + case 'aes256-ctr': + $decryptKeyLength = 32; // eg. 256 / 8 + break; + case 'aes192-cbc': + case 'aes192-ctr': + $decryptKeyLength = 24; // eg. 192 / 8 + break; + case 'aes128-cbc': + case 'aes128-ctr': + $decryptKeyLength = 16; // eg. 128 / 8 + break; + case 'arcfour': + case 'arcfour128': + $decryptKeyLength = 16; // eg. 128 / 8 + break; + case 'arcfour256': + $decryptKeyLength = 32; // eg. 128 / 8 + break; + case 'none'; + $decryptKeyLength = 0; + } + + for ($i = 0; $i < count($encryption_algorithms) && !in_array($encryption_algorithms[$i], $this->encryption_algorithms_client_to_server); $i++); + if ($i == count($encryption_algorithms)) { + user_error('No compatible client to server encryption algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $encrypt = $encryption_algorithms[$i]; + switch ($encrypt) { + case '3des-cbc': + case '3des-ctr': + $encryptKeyLength = 24; + break; + case 'aes256-cbc': + case 'aes256-ctr': + $encryptKeyLength = 32; + break; + case 'aes192-cbc': + case 'aes192-ctr': + $encryptKeyLength = 24; + break; + case 'aes128-cbc': + case 'aes128-ctr': + $encryptKeyLength = 16; + break; + case 'arcfour': + case 'arcfour128': + $encryptKeyLength = 16; + break; + case 'arcfour256': + $encryptKeyLength = 32; + break; + case 'none'; + $encryptKeyLength = 0; + } + + $keyLength = $decryptKeyLength > $encryptKeyLength ? $decryptKeyLength : $encryptKeyLength; + + // through diffie-hellman key exchange a symmetric key is obtained + for ($i = 0; $i < count($kex_algorithms) && !in_array($kex_algorithms[$i], $this->kex_algorithms); $i++); + if ($i == count($kex_algorithms)) { + user_error('No compatible key exchange algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + switch ($kex_algorithms[$i]) { + // see http://tools.ietf.org/html/rfc2409#section-6.2 and + // http://tools.ietf.org/html/rfc2412, appendex E + case 'diffie-hellman-group1-sha1': + $p = pack('H256', 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74' . + '020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437' . + '4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' . + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF'); + $keyLength = $keyLength < 160 ? $keyLength : 160; + $hash = 'sha1'; + break; + // see http://tools.ietf.org/html/rfc3526#section-3 + case 'diffie-hellman-group14-sha1': + $p = pack('H512', 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74' . + '020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437' . + '4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' . + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF05' . + '98DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB' . + '9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' . + 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718' . + '3995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF'); + $keyLength = $keyLength < 160 ? $keyLength : 160; + $hash = 'sha1'; + } + + $p = new Math_BigInteger($p, 256); + //$q = $p->bitwise_rightShift(1); + + /* To increase the speed of the key exchange, both client and server may + reduce the size of their private exponents. It should be at least + twice as long as the key material that is generated from the shared + secret. For more details, see the paper by van Oorschot and Wiener + [VAN-OORSCHOT]. + + -- http://tools.ietf.org/html/rfc4419#section-6.2 */ + $q = new Math_BigInteger(1); + $q = $q->bitwise_leftShift(2 * $keyLength); + $q = $q->subtract(new Math_BigInteger(1)); + + $g = new Math_BigInteger(2); + $x = new Math_BigInteger(); + $x = $x->random(new Math_BigInteger(1), $q); + $e = $g->modPow($x, $p); + + $eBytes = $e->toBytes(true); + $data = pack('CNa*', NET_SSH2_MSG_KEXDH_INIT, strlen($eBytes), $eBytes); + + if (!$this->_send_binary_packet($data)) { + user_error('Connection closed by server'); + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + if ($type != NET_SSH2_MSG_KEXDH_REPLY) { + user_error('Expected SSH_MSG_KEXDH_REPLY'); + return false; + } + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->server_public_host_key = $server_public_host_key = $this->_string_shift($response, $temp['length']); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $public_key_format = $this->_string_shift($server_public_host_key, $temp['length']); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $fBytes = $this->_string_shift($response, $temp['length']); + $f = new Math_BigInteger($fBytes, -256); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->signature = $this->_string_shift($response, $temp['length']); + + $temp = unpack('Nlength', $this->_string_shift($this->signature, 4)); + $this->signature_format = $this->_string_shift($this->signature, $temp['length']); + + $key = $f->modPow($x, $p); + $keyBytes = $key->toBytes(true); + + $this->exchange_hash = pack('Na*Na*Na*Na*Na*Na*Na*Na*', + strlen($this->identifier), $this->identifier, strlen($this->server_identifier), $this->server_identifier, + strlen($kexinit_payload_client), $kexinit_payload_client, strlen($kexinit_payload_server), + $kexinit_payload_server, strlen($this->server_public_host_key), $this->server_public_host_key, strlen($eBytes), + $eBytes, strlen($fBytes), $fBytes, strlen($keyBytes), $keyBytes + ); + + $this->exchange_hash = pack('H*', $hash($this->exchange_hash)); + + if ($this->session_id === false) { + $this->session_id = $this->exchange_hash; + } + + for ($i = 0; $i < count($server_host_key_algorithms) && !in_array($server_host_key_algorithms[$i], $this->server_host_key_algorithms); $i++); + if ($i == count($server_host_key_algorithms)) { + user_error('No compatible server host key algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + if ($public_key_format != $server_host_key_algorithms[$i] || $this->signature_format != $server_host_key_algorithms[$i]) { + user_error('Sever Host Key Algorithm Mismatch'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $packet = pack('C', + NET_SSH2_MSG_NEWKEYS + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + if ($type != NET_SSH2_MSG_NEWKEYS) { + user_error('Expected SSH_MSG_NEWKEYS'); + return false; + } + + switch ($encrypt) { + case '3des-cbc': + $this->encrypt = new Crypt_TripleDES(); + // $this->encrypt_block_size = 64 / 8 == the default + break; + case '3des-ctr': + $this->encrypt = new Crypt_TripleDES(CRYPT_DES_MODE_CTR); + // $this->encrypt_block_size = 64 / 8 == the default + break; + case 'aes256-cbc': + case 'aes192-cbc': + case 'aes128-cbc': + $this->encrypt = new Crypt_AES(); + $this->encrypt_block_size = 16; // eg. 128 / 8 + break; + case 'aes256-ctr': + case 'aes192-ctr': + case 'aes128-ctr': + $this->encrypt = new Crypt_AES(CRYPT_AES_MODE_CTR); + $this->encrypt_block_size = 16; // eg. 128 / 8 + break; + case 'arcfour': + case 'arcfour128': + case 'arcfour256': + $this->encrypt = new Crypt_RC4(); + break; + case 'none'; + //$this->encrypt = new Crypt_Null(); + } + + switch ($decrypt) { + case '3des-cbc': + $this->decrypt = new Crypt_TripleDES(); + break; + case '3des-ctr': + $this->decrypt = new Crypt_TripleDES(CRYPT_DES_MODE_CTR); + break; + case 'aes256-cbc': + case 'aes192-cbc': + case 'aes128-cbc': + $this->decrypt = new Crypt_AES(); + $this->decrypt_block_size = 16; + break; + case 'aes256-ctr': + case 'aes192-ctr': + case 'aes128-ctr': + $this->decrypt = new Crypt_AES(CRYPT_AES_MODE_CTR); + $this->decrypt_block_size = 16; + break; + case 'arcfour': + case 'arcfour128': + case 'arcfour256': + $this->decrypt = new Crypt_RC4(); + break; + case 'none'; + //$this->decrypt = new Crypt_Null(); + } + + $keyBytes = pack('Na*', strlen($keyBytes), $keyBytes); + + if ($this->encrypt) { + $this->encrypt->enableContinuousBuffer(); + $this->encrypt->disablePadding(); + + $iv = pack('H*', $hash($keyBytes . $this->exchange_hash . 'A' . $this->session_id)); + while ($this->encrypt_block_size > strlen($iv)) { + $iv.= pack('H*', $hash($keyBytes . $this->exchange_hash . $iv)); + } + $this->encrypt->setIV(substr($iv, 0, $this->encrypt_block_size)); + + $key = pack('H*', $hash($keyBytes . $this->exchange_hash . 'C' . $this->session_id)); + while ($encryptKeyLength > strlen($key)) { + $key.= pack('H*', $hash($keyBytes . $this->exchange_hash . $key)); + } + $this->encrypt->setKey(substr($key, 0, $encryptKeyLength)); + } + + if ($this->decrypt) { + $this->decrypt->enableContinuousBuffer(); + $this->decrypt->disablePadding(); + + $iv = pack('H*', $hash($keyBytes . $this->exchange_hash . 'B' . $this->session_id)); + while ($this->decrypt_block_size > strlen($iv)) { + $iv.= pack('H*', $hash($keyBytes . $this->exchange_hash . $iv)); + } + $this->decrypt->setIV(substr($iv, 0, $this->decrypt_block_size)); + + $key = pack('H*', $hash($keyBytes . $this->exchange_hash . 'D' . $this->session_id)); + while ($decryptKeyLength > strlen($key)) { + $key.= pack('H*', $hash($keyBytes . $this->exchange_hash . $key)); + } + $this->decrypt->setKey(substr($key, 0, $decryptKeyLength)); + } + + /* The "arcfour128" algorithm is the RC4 cipher, as described in + [SCHNEIER], using a 128-bit key. The first 1536 bytes of keystream + generated by the cipher MUST be discarded, and the first byte of the + first encrypted packet MUST be encrypted using the 1537th byte of + keystream. + + -- http://tools.ietf.org/html/rfc4345#section-4 */ + if ($encrypt == 'arcfour128' || $encrypt == 'arcfour256') { + $this->encrypt->encrypt(str_repeat("\0", 1536)); + } + if ($decrypt == 'arcfour128' || $decrypt == 'arcfour256') { + $this->decrypt->decrypt(str_repeat("\0", 1536)); + } + + for ($i = 0; $i < count($mac_algorithms) && !in_array($mac_algorithms[$i], $this->mac_algorithms_client_to_server); $i++); + if ($i == count($mac_algorithms)) { + user_error('No compatible client to server message authentication algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $createKeyLength = 0; // ie. $mac_algorithms[$i] == 'none' + switch ($mac_algorithms[$i]) { + case 'hmac-sha1': + $this->hmac_create = new Crypt_Hash('sha1'); + $createKeyLength = 20; + break; + case 'hmac-sha1-96': + $this->hmac_create = new Crypt_Hash('sha1-96'); + $createKeyLength = 20; + break; + case 'hmac-md5': + $this->hmac_create = new Crypt_Hash('md5'); + $createKeyLength = 16; + break; + case 'hmac-md5-96': + $this->hmac_create = new Crypt_Hash('md5-96'); + $createKeyLength = 16; + } + + for ($i = 0; $i < count($mac_algorithms) && !in_array($mac_algorithms[$i], $this->mac_algorithms_server_to_client); $i++); + if ($i == count($mac_algorithms)) { + user_error('No compatible server to client message authentication algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $checkKeyLength = 0; + $this->hmac_size = 0; + switch ($mac_algorithms[$i]) { + case 'hmac-sha1': + $this->hmac_check = new Crypt_Hash('sha1'); + $checkKeyLength = 20; + $this->hmac_size = 20; + break; + case 'hmac-sha1-96': + $this->hmac_check = new Crypt_Hash('sha1-96'); + $checkKeyLength = 20; + $this->hmac_size = 12; + break; + case 'hmac-md5': + $this->hmac_check = new Crypt_Hash('md5'); + $checkKeyLength = 16; + $this->hmac_size = 16; + break; + case 'hmac-md5-96': + $this->hmac_check = new Crypt_Hash('md5-96'); + $checkKeyLength = 16; + $this->hmac_size = 12; + } + + $key = pack('H*', $hash($keyBytes . $this->exchange_hash . 'E' . $this->session_id)); + while ($createKeyLength > strlen($key)) { + $key.= pack('H*', $hash($keyBytes . $this->exchange_hash . $key)); + } + $this->hmac_create->setKey(substr($key, 0, $createKeyLength)); + + $key = pack('H*', $hash($keyBytes . $this->exchange_hash . 'F' . $this->session_id)); + while ($checkKeyLength > strlen($key)) { + $key.= pack('H*', $hash($keyBytes . $this->exchange_hash . $key)); + } + $this->hmac_check->setKey(substr($key, 0, $checkKeyLength)); + + for ($i = 0; $i < count($compression_algorithms) && !in_array($compression_algorithms[$i], $this->compression_algorithms_server_to_client); $i++); + if ($i == count($compression_algorithms)) { + user_error('No compatible server to client compression algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + $this->decompress = $compression_algorithms[$i] == 'zlib'; + + for ($i = 0; $i < count($compression_algorithms) && !in_array($compression_algorithms[$i], $this->compression_algorithms_client_to_server); $i++); + if ($i == count($compression_algorithms)) { + user_error('No compatible client to server compression algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + $this->compress = $compression_algorithms[$i] == 'zlib'; + + return true; + } + + /** + * Login + * + * The $password parameter can be a plaintext password or a Crypt_RSA object. + * + * @param String $username + * @param optional String $password + * @return Boolean + * @access public + * @internal It might be worthwhile, at some point, to protect against {@link http://tools.ietf.org/html/rfc4251#section-9.3.9 traffic analysis} + * by sending dummy SSH_MSG_IGNORE messages. + */ + function login($username, $password = null) + { + if (!($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR)) { + return false; + } + + $packet = pack('CNa*', + NET_SSH2_MSG_SERVICE_REQUEST, strlen('ssh-userauth'), 'ssh-userauth' + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + if ($type != NET_SSH2_MSG_SERVICE_ACCEPT) { + user_error('Expected SSH_MSG_SERVICE_ACCEPT'); + return false; + } + + // although PHP5's get_class() preserves the case, PHP4's does not + if (is_object($password) && strtolower(get_class($password)) == 'crypt_rsa') { + return $this->_privatekey_login($username, $password); + } + + if (!isset($password)) { + $packet = pack('CNa*Na*Na*', + NET_SSH2_MSG_USERAUTH_REQUEST, strlen($username), $username, strlen('ssh-connection'), 'ssh-connection', + strlen('none'), 'none' + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_SUCCESS: + $this->bitmap |= NET_SSH2_MASK_LOGIN; + return true; + //case NET_SSH2_MSG_USERAUTH_FAILURE: + default: + return false; + } + } + + $packet = pack('CNa*Na*Na*CNa*', + NET_SSH2_MSG_USERAUTH_REQUEST, strlen($username), $username, strlen('ssh-connection'), 'ssh-connection', + strlen('password'), 'password', 0, strlen($password), $password + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + // remove the username and password from the last logged packet + if (defined('NET_SSH2_LOGGING') && NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX) { + $packet = pack('CNa*Na*Na*CNa*', + NET_SSH2_MSG_USERAUTH_REQUEST, strlen('username'), 'username', strlen('ssh-connection'), 'ssh-connection', + strlen('password'), 'password', 0, strlen('password'), 'password' + ); + $this->message_log[count($this->message_log) - 1] = $packet; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ: // in theory, the password can be changed + if (defined('NET_SSH2_LOGGING')) { + $this->message_number_log[count($this->message_number_log) - 1] = 'NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ'; + } + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->errors[] = 'SSH_MSG_USERAUTH_PASSWD_CHANGEREQ: ' . utf8_decode($this->_string_shift($response, $length)); + return $this->_disconnect(NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER); + case NET_SSH2_MSG_USERAUTH_FAILURE: + // can we use keyboard-interactive authentication? if not then either the login is bad or the server employees + // multi-factor authentication + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $auth_methods = explode(',', $this->_string_shift($response, $length)); + if (in_array('keyboard-interactive', $auth_methods)) { + if ($this->_keyboard_interactive_login($username, $password)) { + $this->bitmap |= NET_SSH2_MASK_LOGIN; + return true; + } + return false; + } + return false; + case NET_SSH2_MSG_USERAUTH_SUCCESS: + $this->bitmap |= NET_SSH2_MASK_LOGIN; + return true; + } + + return false; + } + + /** + * Login via keyboard-interactive authentication + * + * See {@link http://tools.ietf.org/html/rfc4256 RFC4256} for details. This is not a full-featured keyboard-interactive authenticator. + * + * @param String $username + * @param String $password + * @return Boolean + * @access private + */ + function _keyboard_interactive_login($username, $password) + { + $packet = pack('CNa*Na*Na*Na*Na*', + NET_SSH2_MSG_USERAUTH_REQUEST, strlen($username), $username, strlen('ssh-connection'), 'ssh-connection', + strlen('keyboard-interactive'), 'keyboard-interactive', 0, '', 0, '' + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + return $this->_keyboard_interactive_process($password); + } + + /** + * Handle the keyboard-interactive requests / responses. + * + * @param String $responses... + * @return Boolean + * @access private + */ + function _keyboard_interactive_process() + { + $responses = func_get_args(); + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_INFO_REQUEST: + // see http://tools.ietf.org/html/rfc4256#section-3.2 + if (defined('NET_SSH2_LOGGING')) { + $this->message_number_log[count($this->message_number_log) - 1] = str_replace( + 'UNKNOWN', + 'NET_SSH2_MSG_USERAUTH_INFO_REQUEST', + $this->message_number_log[count($this->message_number_log) - 1] + ); + } + + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->_string_shift($response, $length); // name; may be empty + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->_string_shift($response, $length); // instruction; may be empty + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->_string_shift($response, $length); // language tag; may be empty + extract(unpack('Nnum_prompts', $this->_string_shift($response, 4))); + /* + for ($i = 0; $i < $num_prompts; $i++) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + // prompt - ie. "Password: "; must not be empty + $this->_string_shift($response, $length); + $echo = $this->_string_shift($response) != chr(0); + } + */ + + /* + After obtaining the requested information from the user, the client + MUST respond with an SSH_MSG_USERAUTH_INFO_RESPONSE message. + */ + // see http://tools.ietf.org/html/rfc4256#section-3.4 + $packet = $logged = pack('CN', NET_SSH2_MSG_USERAUTH_INFO_RESPONSE, count($responses)); + for ($i = 0; $i < count($responses); $i++) { + $packet.= pack('Na*', strlen($responses[$i]), $responses[$i]); + $logged.= pack('Na*', strlen('dummy-answer'), 'dummy-answer'); + } + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + if (defined('NET_SSH2_LOGGING')) { + $this->message_number_log[count($this->message_number_log) - 1] = str_replace( + 'UNKNOWN', + 'NET_SSH2_MSG_USERAUTH_INFO_RESPONSE', + $this->message_number_log[count($this->message_number_log) - 1] + ); + $this->message_log[count($this->message_log) - 1] = $logged; + } + + /* + After receiving the response, the server MUST send either an + SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE, or another + SSH_MSG_USERAUTH_INFO_REQUEST message. + */ + // maybe phpseclib should force close the connection after x request / responses? unless something like that is done + // there could be an infinite loop of request / responses. + return $this->_keyboard_interactive_process(); + case NET_SSH2_MSG_USERAUTH_SUCCESS: + return true; + case NET_SSH2_MSG_USERAUTH_FAILURE: + return false; + } + + return false; + } + + /** + * Login with an RSA private key + * + * @param String $username + * @param Crypt_RSA $password + * @return Boolean + * @access private + * @internal It might be worthwhile, at some point, to protect against {@link http://tools.ietf.org/html/rfc4251#section-9.3.9 traffic analysis} + * by sending dummy SSH_MSG_IGNORE messages. + */ + function _privatekey_login($username, $privatekey) + { + // see http://tools.ietf.org/html/rfc4253#page-15 + $publickey = $privatekey->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_RAW); + if ($publickey === false) { + return false; + } + + $publickey = array( + 'e' => $publickey['e']->toBytes(true), + 'n' => $publickey['n']->toBytes(true) + ); + $publickey = pack('Na*Na*Na*', + strlen('ssh-rsa'), 'ssh-rsa', strlen($publickey['e']), $publickey['e'], strlen($publickey['n']), $publickey['n'] + ); + + $part1 = pack('CNa*Na*Na*', + NET_SSH2_MSG_USERAUTH_REQUEST, strlen($username), $username, strlen('ssh-connection'), 'ssh-connection', + strlen('publickey'), 'publickey' + ); + $part2 = pack('Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($publickey), $publickey); + + $packet = $part1 . chr(0) . $part2; + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_FAILURE: + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->errors[] = 'SSH_MSG_USERAUTH_FAILURE: ' . $this->_string_shift($response, $length); + return $this->_disconnect(NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER); + case NET_SSH2_MSG_USERAUTH_PK_OK: + // we'll just take it on faith that the public key blob and the public key algorithm name are as + // they should be + if (defined('NET_SSH2_LOGGING')) { + $this->message_number_log[count($this->message_number_log) - 1] = str_replace( + 'UNKNOWN', + 'NET_SSH2_MSG_USERAUTH_PK_OK', + $this->message_number_log[count($this->message_number_log) - 1] + ); + } + } + + $packet = $part1 . chr(1) . $part2; + $privatekey->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + $signature = $privatekey->sign(pack('Na*a*', strlen($this->session_id), $this->session_id, $packet)); + $signature = pack('Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($signature), $signature); + $packet.= pack('Na*', strlen($signature), $signature); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_FAILURE: + // either the login is bad or the server employs multi-factor authentication + return false; + case NET_SSH2_MSG_USERAUTH_SUCCESS: + $this->bitmap |= NET_SSH2_MASK_LOGIN; + return true; + } + + return false; + } + + /** + * Set Timeout + * + * $ssh->exec('ping 127.0.0.1'); on a Linux host will never return and will run indefinitely. setTimeout() makes it so it'll timeout. + * Setting $timeout to false or 0 will mean there is no timeout. + * + * @param Mixed $timeout + */ + function setTimeout($timeout) + { + $this->timeout = $this->curTimeout = $timeout; + } + + /** + * Execute Command + * + * If $block is set to false then Net_SSH2::_get_channel_packet(NET_SSH2_CHANNEL_EXEC) will need to be called manually. + * In all likelihood, this is not a feature you want to be taking advantage of. + * + * @param String $command + * @param optional Boolean $block + * @return String + * @access public + */ + function exec($command, $block = true) + { + $this->curTimeout = $this->timeout; + + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + // RFC4254 defines the (client) window size as "bytes the other party can send before it must wait for the window to + // be adjusted". 0x7FFFFFFF is, at 4GB, the max size. technically, it should probably be decremented, but, + // honestly, if you're transfering more than 4GB, you probably shouldn't be using phpseclib, anyway. + // see http://tools.ietf.org/html/rfc4254#section-5.2 for more info + $this->window_size_client_to_server[NET_SSH2_CHANNEL_EXEC] = 0x7FFFFFFF; + // 0x8000 is the maximum max packet size, per http://tools.ietf.org/html/rfc4253#section-6.1, although since PuTTy + // uses 0x4000, that's what will be used here, as well. + $packet_size = 0x4000; + + $packet = pack('CNa*N3', + NET_SSH2_MSG_CHANNEL_OPEN, strlen('session'), 'session', NET_SSH2_CHANNEL_EXEC, $this->window_size_client_to_server[NET_SSH2_CHANNEL_EXEC], $packet_size); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_EXEC] = NET_SSH2_MSG_CHANNEL_OPEN; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_EXEC); + if ($response === false) { + return false; + } + + // sending a pty-req SSH_MSG_CHANNEL_REQUEST message is unnecessary and, in fact, in most cases, slows things + // down. the one place where it might be desirable is if you're doing something like Net_SSH2::exec('ping localhost &'). + // with a pty-req SSH_MSG_CHANNEL_REQUEST, exec() will return immediately and the ping process will then + // then immediately terminate. without such a request exec() will loop indefinitely. the ping process won't end but + // neither will your script. + + // although, in theory, the size of SSH_MSG_CHANNEL_REQUEST could exceed the maximum packet size established by + // SSH_MSG_CHANNEL_OPEN_CONFIRMATION, RFC4254#section-5.1 states that the "maximum packet size" refers to the + // "maximum size of an individual data packet". ie. SSH_MSG_CHANNEL_DATA. RFC4254#section-5.2 corroborates. + $packet = pack('CNNa*CNa*', + NET_SSH2_MSG_CHANNEL_REQUEST, $this->server_channels[NET_SSH2_CHANNEL_EXEC], strlen('exec'), 'exec', 1, strlen($command), $command); + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_EXEC] = NET_SSH2_MSG_CHANNEL_REQUEST; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_EXEC); + if ($response === false) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_EXEC] = NET_SSH2_MSG_CHANNEL_DATA; + + if (!$block) { + return true; + } + + $output = ''; + while (true) { + $temp = $this->_get_channel_packet(NET_SSH2_CHANNEL_EXEC); + switch (true) { + case $temp === true: + return $output; + case $temp === false: + return false; + default: + $output.= $temp; + } + } + } + + /** + * Creates an interactive shell + * + * @see Net_SSH2::read() + * @see Net_SSH2::write() + * @return Boolean + * @access private + */ + function _initShell() + { + $this->window_size_client_to_server[NET_SSH2_CHANNEL_SHELL] = 0x7FFFFFFF; + $packet_size = 0x4000; + + $packet = pack('CNa*N3', + NET_SSH2_MSG_CHANNEL_OPEN, strlen('session'), 'session', NET_SSH2_CHANNEL_SHELL, $this->window_size_client_to_server[NET_SSH2_CHANNEL_SHELL], $packet_size); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_OPEN; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SHELL); + if ($response === false) { + return false; + } + + $terminal_modes = pack('C', NET_SSH2_TTY_OP_END); + $packet = pack('CNNa*CNa*N5a*', + NET_SSH2_MSG_CHANNEL_REQUEST, $this->server_channels[NET_SSH2_CHANNEL_SHELL], strlen('pty-req'), 'pty-req', 1, strlen('vt100'), 'vt100', + 80, 24, 0, 0, strlen($terminal_modes), $terminal_modes); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + list(, $type) = unpack('C', $this->_string_shift($response, 1)); + + switch ($type) { + case NET_SSH2_MSG_CHANNEL_SUCCESS: + break; + case NET_SSH2_MSG_CHANNEL_FAILURE: + default: + user_error('Unable to request pseudo-terminal'); + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + + $packet = pack('CNNa*C', + NET_SSH2_MSG_CHANNEL_REQUEST, $this->server_channels[NET_SSH2_CHANNEL_SHELL], strlen('shell'), 'shell', 1); + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_REQUEST; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SHELL); + if ($response === false) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_DATA; + + $this->bitmap |= NET_SSH2_MASK_SHELL; + + return true; + } + + /** + * Returns the output of an interactive shell + * + * Returns when there's a match for $expect, which can take the form of a string literal or, + * if $mode == NET_SSH2_READ_REGEX, a regular expression. + * + * @see Net_SSH2::read() + * @param String $expect + * @param Integer $mode + * @return String + * @access public + */ + function read($expect = '', $mode = NET_SSH2_READ_SIMPLE) + { + $this->curTimeout = $this->timeout; + + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH2_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + $match = $expect; + while (true) { + if ($mode == NET_SSH2_READ_REGEX) { + preg_match($expect, $this->interactiveBuffer, $matches); + $match = isset($matches[0]) ? $matches[0] : ''; + } + $pos = strlen($match) ? strpos($this->interactiveBuffer, $match) : false; + if ($pos !== false) { + return $this->_string_shift($this->interactiveBuffer, $pos + strlen($match)); + } + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SHELL); + if (is_bool($response)) { + return $response ? $this->_string_shift($this->interactiveBuffer, strlen($this->interactiveBuffer)) : false; + } + + $this->interactiveBuffer.= $response; + } + } + + /** + * Inputs a command into an interactive shell. + * + * @see Net_SSH1::interactiveWrite() + * @param String $cmd + * @return Boolean + * @access public + */ + function write($cmd) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH2_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + return $this->_send_channel_packet(NET_SSH2_CHANNEL_SHELL, $cmd); + } + + /** + * Disconnect + * + * @access public + */ + function disconnect() + { + $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + if (isset($this->realtime_log_file) && is_resource($this->realtime_log_file)) { + fclose($this->realtime_log_file); + } + } + + /** + * Destructor. + * + * Will be called, automatically, if you're supporting just PHP5. If you're supporting PHP4, you'll need to call + * disconnect(). + * + * @access public + */ + function __destruct() + { + $this->disconnect(); + } + + /** + * Gets Binary Packets + * + * See '6. Binary Packet Protocol' of rfc4253 for more info. + * + * @see Net_SSH2::_send_binary_packet() + * @return String + * @access private + */ + function _get_binary_packet() + { + if (!is_resource($this->fsock) || feof($this->fsock)) { + user_error('Connection closed prematurely'); + $this->bitmask = 0; + return false; + } + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $raw = fread($this->fsock, $this->decrypt_block_size); + + if (!strlen($raw)) { + return ''; + } + + if ($this->decrypt !== false) { + $raw = $this->decrypt->decrypt($raw); + } + if ($raw === false) { + user_error('Unable to decrypt content'); + return false; + } + + extract(unpack('Npacket_length/Cpadding_length', $this->_string_shift($raw, 5))); + + $remaining_length = $packet_length + 4 - $this->decrypt_block_size; + + // quoting , + // "implementations SHOULD check that the packet length is reasonable" + // PuTTY uses 0x9000 as the actual max packet size and so to shall we + if ($remaining_length < -$this->decrypt_block_size || $remaining_length > 0x9000 || $remaining_length % $this->decrypt_block_size != 0) { + user_error('Invalid size'); + return false; + } + + $buffer = ''; + while ($remaining_length > 0) { + $temp = fread($this->fsock, $remaining_length); + $buffer.= $temp; + $remaining_length-= strlen($temp); + } + $stop = strtok(microtime(), ' ') + strtok(''); + if (strlen($buffer)) { + $raw.= $this->decrypt !== false ? $this->decrypt->decrypt($buffer) : $buffer; + } + + $payload = $this->_string_shift($raw, $packet_length - $padding_length - 1); + $padding = $this->_string_shift($raw, $padding_length); // should leave $raw empty + + if ($this->hmac_check !== false) { + $hmac = fread($this->fsock, $this->hmac_size); + if ($hmac != $this->hmac_check->hash(pack('NNCa*', $this->get_seq_no, $packet_length, $padding_length, $payload . $padding))) { + user_error('Invalid HMAC'); + return false; + } + } + + //if ($this->decompress) { + // $payload = gzinflate(substr($payload, 2)); + //} + + $this->get_seq_no++; + + if (defined('NET_SSH2_LOGGING')) { + $current = strtok(microtime(), ' ') + strtok(''); + $message_number = isset($this->message_numbers[ord($payload[0])]) ? $this->message_numbers[ord($payload[0])] : 'UNKNOWN (' . ord($payload[0]) . ')'; + $message_number = '<- ' . $message_number . + ' (since last: ' . round($current - $this->last_packet, 4) . ', network: ' . round($stop - $start, 4) . 's)'; + $this->_append_log($message_number, $payload); + $this->last_packet = $current; + } + + return $this->_filter($payload); + } + + /** + * Filter Binary Packets + * + * Because some binary packets need to be ignored... + * + * @see Net_SSH2::_get_binary_packet() + * @return String + * @access private + */ + function _filter($payload) + { + switch (ord($payload[0])) { + case NET_SSH2_MSG_DISCONNECT: + $this->_string_shift($payload, 1); + extract(unpack('Nreason_code/Nlength', $this->_string_shift($payload, 8))); + $this->errors[] = 'SSH_MSG_DISCONNECT: ' . $this->disconnect_reasons[$reason_code] . "\r\n" . utf8_decode($this->_string_shift($payload, $length)); + $this->bitmask = 0; + return false; + case NET_SSH2_MSG_IGNORE: + $payload = $this->_get_binary_packet(); + break; + case NET_SSH2_MSG_DEBUG: + $this->_string_shift($payload, 2); + extract(unpack('Nlength', $this->_string_shift($payload, 4))); + $this->errors[] = 'SSH_MSG_DEBUG: ' . utf8_decode($this->_string_shift($payload, $length)); + $payload = $this->_get_binary_packet(); + break; + case NET_SSH2_MSG_UNIMPLEMENTED: + return false; + case NET_SSH2_MSG_KEXINIT: + if ($this->session_id !== false) { + if (!$this->_key_exchange($payload)) { + $this->bitmask = 0; + return false; + } + $payload = $this->_get_binary_packet(); + } + } + + // see http://tools.ietf.org/html/rfc4252#section-5.4; only called when the encryption has been activated and when we haven't already logged in + if (($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR) && !($this->bitmap & NET_SSH2_MASK_LOGIN) && ord($payload[0]) == NET_SSH2_MSG_USERAUTH_BANNER) { + $this->_string_shift($payload, 1); + extract(unpack('Nlength', $this->_string_shift($payload, 4))); + $this->errors[] = 'SSH_MSG_USERAUTH_BANNER: ' . utf8_decode($this->_string_shift($payload, $length)); + $payload = $this->_get_binary_packet(); + } + + // only called when we've already logged in + if (($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR) && ($this->bitmap & NET_SSH2_MASK_LOGIN)) { + switch (ord($payload[0])) { + case NET_SSH2_MSG_GLOBAL_REQUEST: // see http://tools.ietf.org/html/rfc4254#section-4 + $this->_string_shift($payload, 1); + extract(unpack('Nlength', $this->_string_shift($payload))); + $this->errors[] = 'SSH_MSG_GLOBAL_REQUEST: ' . utf8_decode($this->_string_shift($payload, $length)); + + if (!$this->_send_binary_packet(pack('C', NET_SSH2_MSG_REQUEST_FAILURE))) { + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + + $payload = $this->_get_binary_packet(); + break; + case NET_SSH2_MSG_CHANNEL_OPEN: // see http://tools.ietf.org/html/rfc4254#section-5.1 + $this->_string_shift($payload, 1); + extract(unpack('N', $this->_string_shift($payload, 4))); + $this->errors[] = 'SSH_MSG_CHANNEL_OPEN: ' . utf8_decode($this->_string_shift($payload, $length)); + + $this->_string_shift($payload, 4); // skip over client channel + extract(unpack('Nserver_channel', $this->_string_shift($payload, 4))); + + $packet = pack('CN3a*Na*', + NET_SSH2_MSG_REQUEST_FAILURE, $server_channel, NET_SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED, 0, '', 0, ''); + + if (!$this->_send_binary_packet($packet)) { + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + + $payload = $this->_get_binary_packet(); + break; + case NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST: + $payload = $this->_get_binary_packet(); + } + } + + return $payload; + } + + /** + * Enable Quiet Mode + * + * Suppress stderr from output + * + * @access public + */ + function enableQuietMode() + { + $this->quiet_mode = true; + } + + /** + * Disable Quiet Mode + * + * Show stderr in output + * + * @access public + */ + function disableQuietMode() + { + $this->quiet_mode = false; + } + + /** + * Gets channel data + * + * Returns the data as a string if it's available and false if not. + * + * @param $client_channel + * @return Mixed + * @access private + */ + function _get_channel_packet($client_channel, $skip_extended = false) + { + if (!empty($this->channel_buffers[$client_channel])) { + return array_shift($this->channel_buffers[$client_channel]); + } + + while (true) { + if ($this->curTimeout) { + $read = array($this->fsock); + $write = $except = NULL; + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $sec = floor($this->curTimeout); + $usec = 1000000 * ($this->curTimeout - $sec); + // on windows this returns a "Warning: Invalid CRT parameters detected" error + if (!@stream_select($read, $write, $except, $sec, $usec) && !count($read)) { + $this->_close_channel($client_channel); + return true; + } + $elapsed = strtok(microtime(), ' ') + strtok('') - $start; + $this->curTimeout-= $elapsed; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + if (!strlen($response)) { + return ''; + } + + extract(unpack('Ctype/Nchannel', $this->_string_shift($response, 5))); + + switch ($this->channel_status[$channel]) { + case NET_SSH2_MSG_CHANNEL_OPEN: + switch ($type) { + case NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION: + extract(unpack('Nserver_channel', $this->_string_shift($response, 4))); + $this->server_channels[$channel] = $server_channel; + $this->_string_shift($response, 4); // skip over (server) window size + $temp = unpack('Npacket_size_client_to_server', $this->_string_shift($response, 4)); + $this->packet_size_client_to_server[$channel] = $temp['packet_size_client_to_server']; + return $client_channel == $channel ? true : $this->_get_channel_packet($client_channel, $skip_extended); + //case NET_SSH2_MSG_CHANNEL_OPEN_FAILURE: + default: + user_error('Unable to open channel'); + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + break; + case NET_SSH2_MSG_CHANNEL_REQUEST: + switch ($type) { + case NET_SSH2_MSG_CHANNEL_SUCCESS: + return true; + //case NET_SSH2_MSG_CHANNEL_FAILURE: + default: + user_error('Unable to request pseudo-terminal'); + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + case NET_SSH2_MSG_CHANNEL_CLOSE: + return $type == NET_SSH2_MSG_CHANNEL_CLOSE ? true : $this->_get_channel_packet($client_channel, $skip_extended); + } + + switch ($type) { + case NET_SSH2_MSG_CHANNEL_DATA: + /* + if ($client_channel == NET_SSH2_CHANNEL_EXEC) { + // SCP requires null packets, such as this, be sent. further, in the case of the ssh.com SSH server + // this actually seems to make things twice as fast. more to the point, the message right after + // SSH_MSG_CHANNEL_DATA (usually SSH_MSG_IGNORE) won't block for as long as it would have otherwise. + // in OpenSSH it slows things down but only by a couple thousandths of a second. + $this->_send_channel_packet($client_channel, chr(0)); + } + */ + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $data = $this->_string_shift($response, $length); + if ($client_channel == $channel) { + return $data; + } + if (!isset($this->channel_buffers[$client_channel])) { + $this->channel_buffers[$client_channel] = array(); + } + $this->channel_buffers[$client_channel][] = $data; + break; + case NET_SSH2_MSG_CHANNEL_EXTENDED_DATA: + if ($skip_extended || $this->quiet_mode) { + break; + } + /* + if ($client_channel == NET_SSH2_CHANNEL_EXEC) { + $this->_send_channel_packet($client_channel, chr(0)); + } + */ + // currently, there's only one possible value for $data_type_code: NET_SSH2_EXTENDED_DATA_STDERR + extract(unpack('Ndata_type_code/Nlength', $this->_string_shift($response, 8))); + $data = $this->_string_shift($response, $length); + if ($client_channel == $channel) { + return $data; + } + if (!isset($this->channel_buffers[$client_channel])) { + $this->channel_buffers[$client_channel] = array(); + } + $this->channel_buffers[$client_channel][] = $data; + break; + case NET_SSH2_MSG_CHANNEL_REQUEST: + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $value = $this->_string_shift($response, $length); + switch ($value) { + case 'exit-signal': + $this->_string_shift($response, 1); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->errors[] = 'SSH_MSG_CHANNEL_REQUEST (exit-signal): ' . $this->_string_shift($response, $length); + $this->_string_shift($response, 1); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + if ($length) { + $this->errors[count($this->errors)].= "\r\n" . $this->_string_shift($response, $length); + } + case 'exit-status': + extract(unpack('Cfalse/Nexit_status', $this->_string_shift($response, 5))); + $this->exit_status = $exit_status; + // "The channel needs to be closed with SSH_MSG_CHANNEL_CLOSE after this message." + // -- http://tools.ietf.org/html/rfc4254#section-6.10 + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_EOF, $this->server_channels[$client_channel])); + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$channel])); + + $this->channel_status[$channel] = NET_SSH2_MSG_CHANNEL_EOF; + default: + // "Some systems may not implement signals, in which case they SHOULD ignore this message." + // -- http://tools.ietf.org/html/rfc4254#section-6.9 + break; + } + break; + case NET_SSH2_MSG_CHANNEL_CLOSE: + $this->curTimeout = 0; + + if ($this->bitmap & NET_SSH2_MASK_SHELL) { + $this->bitmap&= ~NET_SSH2_MASK_SHELL; + } + if ($this->channel_status[$channel] != NET_SSH2_MSG_CHANNEL_EOF) { + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$channel])); + } + + $this->channel_status[$channel] = NET_SSH2_MSG_CHANNEL_CLOSE; + return true; + case NET_SSH2_MSG_CHANNEL_EOF: + break; + default: + user_error('Error reading channel data'); + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + } + } + + /** + * Sends Binary Packets + * + * See '6. Binary Packet Protocol' of rfc4253 for more info. + * + * @param String $data + * @see Net_SSH2::_get_binary_packet() + * @return Boolean + * @access private + */ + function _send_binary_packet($data) + { + if (!is_resource($this->fsock) || feof($this->fsock)) { + user_error('Connection closed prematurely'); + $this->bitmask = 0; + return false; + } + + //if ($this->compress) { + // // the -4 removes the checksum: + // // http://php.net/function.gzcompress#57710 + // $data = substr(gzcompress($data), 0, -4); + //} + + // 4 (packet length) + 1 (padding length) + 4 (minimal padding amount) == 9 + $packet_length = strlen($data) + 9; + // round up to the nearest $this->encrypt_block_size + $packet_length+= (($this->encrypt_block_size - 1) * $packet_length) % $this->encrypt_block_size; + // subtracting strlen($data) is obvious - subtracting 5 is necessary because of packet_length and padding_length + $padding_length = $packet_length - strlen($data) - 5; + $padding = crypt_random_string($padding_length); + + // we subtract 4 from packet_length because the packet_length field isn't supposed to include itself + $packet = pack('NCa*', $packet_length - 4, $padding_length, $data . $padding); + + $hmac = $this->hmac_create !== false ? $this->hmac_create->hash(pack('Na*', $this->send_seq_no, $packet)) : ''; + $this->send_seq_no++; + + if ($this->encrypt !== false) { + $packet = $this->encrypt->encrypt($packet); + } + + $packet.= $hmac; + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $result = strlen($packet) == fputs($this->fsock, $packet); + $stop = strtok(microtime(), ' ') + strtok(''); + + if (defined('NET_SSH2_LOGGING')) { + $current = strtok(microtime(), ' ') + strtok(''); + $message_number = isset($this->message_numbers[ord($data[0])]) ? $this->message_numbers[ord($data[0])] : 'UNKNOWN (' . ord($data[0]) . ')'; + $message_number = '-> ' . $message_number . + ' (since last: ' . round($current - $this->last_packet, 4) . ', network: ' . round($stop - $start, 4) . 's)'; + $this->_append_log($message_number, $data); + $this->last_packet = $current; + } + + return $result; + } + + /** + * Logs data packets + * + * Makes sure that only the last 1MB worth of packets will be logged + * + * @param String $data + * @access private + */ + function _append_log($message_number, $message) + { + switch (NET_SSH2_LOGGING) { + // useful for benchmarks + case NET_SSH2_LOG_SIMPLE: + $this->message_number_log[] = $message_number; + break; + // the most useful log for SSH2 + case NET_SSH2_LOG_COMPLEX: + $this->message_number_log[] = $message_number; + $this->_string_shift($message); + $this->log_size+= strlen($message); + $this->message_log[] = $message; + while ($this->log_size > NET_SSH2_LOG_MAX_SIZE) { + $this->log_size-= strlen(array_shift($this->message_log)); + array_shift($this->message_number_log); + } + break; + // dump the output out realtime; packets may be interspersed with non packets, + // passwords won't be filtered out and select other packets may not be correctly + // identified + case NET_SSH2_LOG_REALTIME: + echo "
\r\n" . $this->_format_log(array($message), array($message_number)) . "\r\n
\r\n"; + @flush(); + @ob_flush(); + break; + // basically the same thing as NET_SSH2_LOG_REALTIME with the caveat that NET_SSH2_LOG_REALTIME_FILE + // needs to be defined and that the resultant log file will be capped out at NET_SSH2_LOG_MAX_SIZE. + // the earliest part of the log file is denoted by the first <<< START >>> and is not going to necessarily + // at the beginning of the file + case NET_SSH2_LOG_REALTIME_FILE: + if (!isset($this->realtime_log_file)) { + // PHP doesn't seem to like using constants in fopen() + $filename = NET_SSH2_LOG_REALTIME_FILE; + $fp = fopen($filename, 'w'); + $this->realtime_log_file = $fp; + } + if (!is_resource($this->realtime_log_file)) { + break; + } + $entry = $this->_format_log(array($message), array($message_number)); + if ($this->realtime_log_wrap) { + $temp = "<<< START >>>\r\n"; + $entry.= $temp; + fseek($this->realtime_log_file, ftell($this->realtime_log_file) - strlen($temp)); + } + $this->realtime_log_size+= strlen($entry); + if ($this->realtime_log_size > NET_SSH2_LOG_MAX_SIZE) { + fseek($this->realtime_log_file, 0); + $this->realtime_log_size = strlen($entry); + $this->realtime_log_wrap = true; + } + fputs($this->realtime_log_file, $entry); + } + } + + /** + * Sends channel data + * + * Spans multiple SSH_MSG_CHANNEL_DATAs if appropriate + * + * @param Integer $client_channel + * @param String $data + * @return Boolean + * @access private + */ + function _send_channel_packet($client_channel, $data) + { + while (strlen($data) > $this->packet_size_client_to_server[$client_channel]) { + // resize the window, if appropriate + $this->window_size_client_to_server[$client_channel]-= $this->packet_size_client_to_server[$client_channel]; + if ($this->window_size_client_to_server[$client_channel] < 0) { + $packet = pack('CNN', NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST, $this->server_channels[$client_channel], $this->window_size); + if (!$this->_send_binary_packet($packet)) { + return false; + } + $this->window_size_client_to_server[$client_channel]+= $this->window_size; + } + + $packet = pack('CN2a*', + NET_SSH2_MSG_CHANNEL_DATA, + $this->server_channels[$client_channel], + $this->packet_size_client_to_server[$client_channel], + $this->_string_shift($data, $this->packet_size_client_to_server[$client_channel]) + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + } + + // resize the window, if appropriate + $this->window_size_client_to_server[$client_channel]-= strlen($data); + if ($this->window_size_client_to_server[$client_channel] < 0) { + $packet = pack('CNN', NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST, $this->server_channels[$client_channel], $this->window_size); + if (!$this->_send_binary_packet($packet)) { + return false; + } + $this->window_size_client_to_server[$client_channel]+= $this->window_size; + } + + return $this->_send_binary_packet(pack('CN2a*', + NET_SSH2_MSG_CHANNEL_DATA, + $this->server_channels[$client_channel], + strlen($data), + $data)); + } + + /** + * Closes and flushes a channel + * + * Net_SSH2 doesn't properly close most channels. For exec() channels are normally closed by the server + * and for SFTP channels are presumably closed when the client disconnects. This functions is intended + * for SCP more than anything. + * + * @param Integer $client_channel + * @return Boolean + * @access private + */ + function _close_channel($client_channel) + { + // see http://tools.ietf.org/html/rfc4254#section-5.3 + + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_EOF, $this->server_channels[$client_channel])); + + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$client_channel])); + + $this->channel_status[$client_channel] = NET_SSH2_MSG_CHANNEL_CLOSE; + + $this->curTimeout = 0; + + while (!is_bool($this->_get_channel_packet($client_channel))); + + if ($this->bitmap & NET_SSH2_MASK_SHELL) { + $this->bitmap&= ~NET_SSH2_MASK_SHELL; + } + } + + /** + * Disconnect + * + * @param Integer $reason + * @return Boolean + * @access private + */ + function _disconnect($reason) + { + if ($this->bitmap) { + $data = pack('CNNa*Na*', NET_SSH2_MSG_DISCONNECT, $reason, 0, '', 0, ''); + $this->_send_binary_packet($data); + $this->bitmap = 0; + fclose($this->fsock); + return false; + } + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param String $string + * @param optional Integer $index + * @return String + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * Define Array + * + * Takes any number of arrays whose indices are integers and whose values are strings and defines a bunch of + * named constants from it, using the value as the name of the constant and the index as the value of the constant. + * If any of the constants that would be defined already exists, none of the constants will be defined. + * + * @param Array $array + * @access private + */ + function _define_array() + { + $args = func_get_args(); + foreach ($args as $arg) { + foreach ($arg as $key=>$value) { + if (!defined($value)) { + define($value, $key); + } else { + break 2; + } + } + } + } + + /** + * Returns a log of the packets that have been sent and received. + * + * Returns a string if NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX, an array if NET_SSH2_LOGGING == NET_SSH2_LOG_SIMPLE and false if !defined('NET_SSH2_LOGGING') + * + * @access public + * @return String or Array + */ + function getLog() + { + if (!defined('NET_SSH2_LOGGING')) { + return false; + } + + switch (NET_SSH2_LOGGING) { + case NET_SSH2_LOG_SIMPLE: + return $this->message_number_log; + break; + case NET_SSH2_LOG_COMPLEX: + return $this->_format_log($this->message_log, $this->message_number_log); + break; + default: + return false; + } + } + + /** + * Formats a log for printing + * + * @param Array $message_log + * @param Array $message_number_log + * @access private + * @return String + */ + function _format_log($message_log, $message_number_log) + { + static $boundary = ':', $long_width = 65, $short_width = 16; + + $output = ''; + for ($i = 0; $i < count($message_log); $i++) { + $output.= $message_number_log[$i] . "\r\n"; + $current_log = $message_log[$i]; + $j = 0; + do { + if (strlen($current_log)) { + $output.= str_pad(dechex($j), 7, '0', STR_PAD_LEFT) . '0 '; + } + $fragment = $this->_string_shift($current_log, $short_width); + $hex = substr( + preg_replace( + '#(.)#es', + '"' . $boundary . '" . str_pad(dechex(ord(substr("\\1", -1))), 2, "0", STR_PAD_LEFT)', + $fragment), + strlen($boundary) + ); + // replace non ASCII printable characters with dots + // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters + // also replace < with a . since < messes up the output on web browsers + $raw = preg_replace('#[^\x20-\x7E]|<#', '.', $fragment); + $output.= str_pad($hex, $long_width - $short_width, ' ') . $raw . "\r\n"; + $j++; + } while (strlen($current_log)); + $output.= "\r\n"; + } + + return $output; + } + + /** + * Returns all errors + * + * @return String + * @access public + */ + function getErrors() + { + return $this->errors; + } + + /** + * Returns the last error + * + * @return String + * @access public + */ + function getLastError() + { + return $this->errors[count($this->errors) - 1]; + } + + /** + * Return the server identification. + * + * @return String + * @access public + */ + function getServerIdentification() + { + return $this->server_identifier; + } + + /** + * Return a list of the key exchange algorithms the server supports. + * + * @return Array + * @access public + */ + function getKexAlgorithms() + { + return $this->kex_algorithms; + } + + /** + * Return a list of the host key (public key) algorithms the server supports. + * + * @return Array + * @access public + */ + function getServerHostKeyAlgorithms() + { + return $this->server_host_key_algorithms; + } + + /** + * Return a list of the (symmetric key) encryption algorithms the server supports, when receiving stuff from the client. + * + * @return Array + * @access public + */ + function getEncryptionAlgorithmsClient2Server() + { + return $this->encryption_algorithms_client_to_server; + } + + /** + * Return a list of the (symmetric key) encryption algorithms the server supports, when sending stuff to the client. + * + * @return Array + * @access public + */ + function getEncryptionAlgorithmsServer2Client() + { + return $this->encryption_algorithms_server_to_client; + } + + /** + * Return a list of the MAC algorithms the server supports, when receiving stuff from the client. + * + * @return Array + * @access public + */ + function getMACAlgorithmsClient2Server() + { + return $this->mac_algorithms_client_to_server; + } + + /** + * Return a list of the MAC algorithms the server supports, when sending stuff to the client. + * + * @return Array + * @access public + */ + function getMACAlgorithmsServer2Client() + { + return $this->mac_algorithms_server_to_client; + } + + /** + * Return a list of the compression algorithms the server supports, when receiving stuff from the client. + * + * @return Array + * @access public + */ + function getCompressionAlgorithmsClient2Server() + { + return $this->compression_algorithms_client_to_server; + } + + /** + * Return a list of the compression algorithms the server supports, when sending stuff to the client. + * + * @return Array + * @access public + */ + function getCompressionAlgorithmsServer2Client() + { + return $this->compression_algorithms_server_to_client; + } + + /** + * Return a list of the languages the server supports, when sending stuff to the client. + * + * @return Array + * @access public + */ + function getLanguagesServer2Client() + { + return $this->languages_server_to_client; + } + + /** + * Return a list of the languages the server supports, when receiving stuff from the client. + * + * @return Array + * @access public + */ + function getLanguagesClient2Server() + { + return $this->languages_client_to_server; + } + + /** + * Returns the server public host key. + * + * Caching this the first time you connect to a server and checking the result on subsequent connections + * is recommended. Returns false if the server signature is not signed correctly with the public host key. + * + * @return Mixed + * @access public + */ + function getServerPublicHostKey() + { + $signature = $this->signature; + $server_public_host_key = $this->server_public_host_key; + + extract(unpack('Nlength', $this->_string_shift($server_public_host_key, 4))); + $this->_string_shift($server_public_host_key, $length); + + if ($this->signature_validated) { + return $this->bitmap ? + $this->signature_format . ' ' . base64_encode($this->server_public_host_key) : + false; + } + + $this->signature_validated = true; + + switch ($this->signature_format) { + case 'ssh-dss': + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $p = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $q = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $g = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $y = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + /* The value for 'dss_signature_blob' is encoded as a string containing + r, followed by s (which are 160-bit integers, without lengths or + padding, unsigned, and in network byte order). */ + $temp = unpack('Nlength', $this->_string_shift($signature, 4)); + if ($temp['length'] != 40) { + user_error('Invalid signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $r = new Math_BigInteger($this->_string_shift($signature, 20), 256); + $s = new Math_BigInteger($this->_string_shift($signature, 20), 256); + + if ($r->compare($q) >= 0 || $s->compare($q) >= 0) { + user_error('Invalid signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $w = $s->modInverse($q); + + $u1 = $w->multiply(new Math_BigInteger(sha1($this->exchange_hash), 16)); + list(, $u1) = $u1->divide($q); + + $u2 = $w->multiply($r); + list(, $u2) = $u2->divide($q); + + $g = $g->modPow($u1, $p); + $y = $y->modPow($u2, $p); + + $v = $g->multiply($y); + list(, $v) = $v->divide($p); + list(, $v) = $v->divide($q); + + if (!$v->equals($r)) { + user_error('Bad server signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE); + } + + break; + case 'ssh-rsa': + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $e = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $n = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + $nLength = $temp['length']; + + /* + $temp = unpack('Nlength', $this->_string_shift($signature, 4)); + $signature = $this->_string_shift($signature, $temp['length']); + + if (!class_exists('Crypt_RSA')) { + require_once('Crypt/RSA.php'); + } + + $rsa = new Crypt_RSA(); + $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + $rsa->loadKey(array('e' => $e, 'n' => $n), CRYPT_RSA_PUBLIC_FORMAT_RAW); + if (!$rsa->verify($this->exchange_hash, $signature)) { + user_error('Bad server signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE); + } + */ + + $temp = unpack('Nlength', $this->_string_shift($signature, 4)); + $s = new Math_BigInteger($this->_string_shift($signature, $temp['length']), 256); + + // validate an RSA signature per "8.2 RSASSA-PKCS1-v1_5", "5.2.2 RSAVP1", and "9.1 EMSA-PSS" in the + // following URL: + // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf + + // also, see SSHRSA.c (rsa2_verifysig) in PuTTy's source. + + if ($s->compare(new Math_BigInteger()) < 0 || $s->compare($n->subtract(new Math_BigInteger(1))) > 0) { + user_error('Invalid signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $s = $s->modPow($e, $n); + $s = $s->toBytes(); + + $h = pack('N4H*', 0x00302130, 0x0906052B, 0x0E03021A, 0x05000414, sha1($this->exchange_hash)); + $h = chr(0x01) . str_repeat(chr(0xFF), $nLength - 3 - strlen($h)) . $h; + + if ($s != $h) { + user_error('Bad server signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE); + } + break; + default: + user_error('Unsupported signature format'); + return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE); + } + + return $this->signature_format . ' ' . base64_encode($this->server_public_host_key); + } + + /** + * Returns the exit status of an SSH command or false. + * + * @return Integer or false + * @access public + */ + function getExitStatus() + { + if (is_null($this->exit_status)) { + return false; + } + return $this->exit_status; + } +} diff --git a/apps/files_external/3rdparty/phpseclib/phpseclib/openssl.cnf b/apps/files_external/3rdparty/phpseclib/phpseclib/openssl.cnf new file mode 100644 index 0000000000..6baa566102 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpseclib/openssl.cnf @@ -0,0 +1,6 @@ +# minimalist openssl.cnf file for use with phpseclib + +HOME = . +RANDFILE = $ENV::HOME/.rnd + +[ v3_ca ] \ No newline at end of file diff --git a/apps/files_external/3rdparty/phpseclib/phpunit.xml.dist b/apps/files_external/3rdparty/phpseclib/phpunit.xml.dist new file mode 100644 index 0000000000..f579ab4fd2 --- /dev/null +++ b/apps/files_external/3rdparty/phpseclib/phpunit.xml.dist @@ -0,0 +1,18 @@ + + + + + + ./tests/ + + + + + + + ./phpseclib/ + + + diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index c58cfcd0f5..d976c01752 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -14,6 +14,7 @@ OC::$CLASSPATH['OC\Files\Storage\SWIFT']='apps/files_external/lib/swift.php'; OC::$CLASSPATH['OC\Files\Storage\SMB']='apps/files_external/lib/smb.php'; OC::$CLASSPATH['OC\Files\Storage\AmazonS3']='apps/files_external/lib/amazons3.php'; OC::$CLASSPATH['OC\Files\Storage\Dropbox']='apps/files_external/lib/dropbox.php'; +OC::$CLASSPATH['OC\Files\Storage\SFTP']='apps/files_external/lib/sftp.php'; OC::$CLASSPATH['OC_Mount_Config']='apps/files_external/lib/config.php'; OCP\App::registerAdmin('files_external', 'settings'); diff --git a/apps/files_external/l10n/bg_BG.php b/apps/files_external/l10n/bg_BG.php index 1f2c29d54c..6342da3f3a 100644 --- a/apps/files_external/l10n/bg_BG.php +++ b/apps/files_external/l10n/bg_BG.php @@ -6,6 +6,7 @@ "Backend" => "Администрация", "Configuration" => "Конфигурация", "Options" => "Опции", +"Applicable" => "Приложимо", "None set" => "Няма избрано", "All Users" => "Всички потребители", "Groups" => "Групи", diff --git a/apps/files_external/l10n/sk_SK.php b/apps/files_external/l10n/sk_SK.php index 0b6878a542..d464d192ff 100644 --- a/apps/files_external/l10n/sk_SK.php +++ b/apps/files_external/l10n/sk_SK.php @@ -15,12 +15,12 @@ "Applicable" => "Aplikovateľné", "Add mount point" => "Pridať prípojný bod", "None set" => "Žiadne nastavené", -"All Users" => "Všetci užívatelia", +"All Users" => "Všetci používatelia", "Groups" => "Skupiny", -"Users" => "Užívatelia", +"Users" => "Používatelia", "Delete" => "Odstrániť", "Enable User External Storage" => "Povoliť externé úložisko", -"Allow users to mount their own external storage" => "Povoliť užívateľom pripojiť ich vlastné externé úložisko", +"Allow users to mount their own external storage" => "Povoliť používateľom pripojiť ich vlastné externé úložisko", "SSL root certificates" => "Koreňové SSL certifikáty", "Import Root Certificate" => "Importovať koreňový certifikát" ); diff --git a/apps/files_external/l10n/vi.php b/apps/files_external/l10n/vi.php index 0160692cb6..c522c669e1 100644 --- a/apps/files_external/l10n/vi.php +++ b/apps/files_external/l10n/vi.php @@ -5,6 +5,8 @@ "Fill out all required fields" => "Điền vào tất cả các trường bắt buộc", "Please provide a valid Dropbox app key and secret." => "Xin vui lòng cung cấp một ứng dụng Dropbox hợp lệ và mã bí mật.", "Error configuring Google Drive storage" => "Lỗi cấu hình lưu trữ Google Drive", +"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Cảnh báo: \"smbclient\" chưa được cài đặt. Mount CIFS/SMB shares là không thể thực hiện được. Hãy hỏi người quản trị hệ thống để cài đặt nó.", +"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." => "Cảnh báo: FTP trong PHP chưa được cài đặt hoặc chưa được mở. Mount FTP shares là không thể. Xin hãy yêu cầu quản trị hệ thống của bạn cài đặt nó.", "External Storage" => "Lưu trữ ngoài", "Mount point" => "Điểm gắn", "Backend" => "phụ trợ", diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 6b0df21461..d78c69e83d 100755 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -104,6 +104,14 @@ class OC_Mount_Config { 'password' => '*Password', 'root' => '&Root', 'secure' => '!Secure https://')); + + $backends['\OC\Files\Storage\SFTP']=array( + 'backend' => 'SFTP', + 'configuration' => array( + 'host' => 'URL', + 'user' => 'Username', + 'password' => '*Password', + 'root' => '&Root')); return($backends); } @@ -386,7 +394,7 @@ class OC_Mount_Config { } /** - * check if php-ftp is installed + * check if php-ftp is installed */ public static function checkphpftp() { if(function_exists('ftp_login')) { diff --git a/apps/files_external/lib/sftp.php b/apps/files_external/lib/sftp.php new file mode 100644 index 0000000000..551a5a64ef --- /dev/null +++ b/apps/files_external/lib/sftp.php @@ -0,0 +1,291 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +namespace OC\Files\Storage; + +set_include_path(get_include_path() . PATH_SEPARATOR . \OC_App::getAppPath('files_external') . '/3rdparty/phpseclib/phpseclib'); +require('Net/SFTP.php'); + +class SFTP extends \OC\Files\Storage\Common { + private $host; + private $user; + private $password; + private $root; + + private $client; + + private static $tempFiles = array(); + + public function __construct($params) { + $this->host = $params['host']; + $proto = strpos($this->host, '://'); + if ($proto != false) { + $this->host = substr($this->host, $proto+3); + } + $this->user = $params['user']; + $this->password = $params['password']; + $this->root = isset($params['root']) ? $this->cleanPath($params['root']) : '/'; + if ($this->root[0] != '/') $this->root = '/' . $this->root; + if (substr($this->root, -1, 1) != '/') $this->root .= '/'; + + $host_keys = $this->read_host_keys(); + + $this->client = new \Net_SFTP($this->host); + if (!$this->client->login($this->user, $this->password)) { + throw new \Exception('Login failed'); + } + + $current_host_key = $this->client->getServerPublicHostKey(); + + if (array_key_exists($this->host, $host_keys)) { + if ($host_keys[$this->host] != $current_host_key) { + throw new \Exception('Host public key does not match known key'); + } + } else { + $host_keys[$this->host] = $current_host_key; + $this->write_host_keys($host_keys); + } + + if(!$this->file_exists('')){ + $this->mkdir(''); + } + } + + public function test() { + if (!isset($params['host']) || !isset($params['user']) || !isset($params['password'])) { + throw new \Exception("Required parameters not set"); + } + } + + public function getId(){ + return 'sftp::' . $this->user . '@' . $this->host . '/' . $this->root; + } + + private function abs_path($path) { + return $this->root . $this->cleanPath($path); + } + + private function host_keys_path() { + try { + $storage_view = \OCP\Files::getStorage('files_external'); + if ($storage_view) { + return \OCP\Config::getSystemValue('datadirectory') . + $storage_view->getAbsolutePath('') . + 'ssh_host_keys'; + } + } catch (\Exception $e) { + } + return false; + } + + private function write_host_keys($keys) { + try { + $key_path = $this->host_keys_path(); + $fp = fopen($key_path, 'w'); + foreach ($keys as $host => $key) { + fwrite($fp, $host . '::' . $key . "\n"); + } + fclose($fp); + return true; + } catch (\Exception $e) { + return false; + } + } + + private function read_host_keys() { + try { + $key_path = $this->host_keys_path(); + if (file_exists($key_path)) { + $hosts = array(); + $keys = array(); + $lines = file($key_path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); + if ($lines) { + foreach ($lines as $line) { + $host_key_arr = explode("::", $line, 2); + if (count($host_key_arr) == 2) { + $hosts[] = $host_key_arr[0]; + $keys[] = $host_key_arr[1]; + } + } + return array_combine($hosts, $keys); + } + } + } catch (\Exception $e) { + } + return array(); + } + + public function mkdir($path) { + try { + return $this->client->mkdir($this->abs_path($path)); + } catch (\Exception $e) { + return false; + } + } + + public function rmdir($path) { + try { + return $this->client->delete($this->abs_path($path), true); + } catch (\Exception $e) { + return false; + } + } + + public function opendir($path) { + try { + $list = $this->client->nlist($this->abs_path($path)); + + $id = md5('sftp:' . $path); + $dir_stream = array(); + foreach($list as $file) { + if ($file != '.' && $file != '..') { + $dir_stream[] = $file; + } + } + \OC\Files\Stream\Dir::register($id, $dir_stream); + return opendir('fakedir://' . $id); + } catch(\Exception $e) { + return false; + } + } + + public function filetype($path) { + try { + $stat = $this->client->stat($this->abs_path($path)); + if ($stat['type'] == NET_SFTP_TYPE_REGULAR) return 'file'; + if ($stat['type'] == NET_SFTP_TYPE_DIRECTORY) return 'dir'; + } catch (\Exeption $e) { + } + return false; + } + + public function isReadable($path) { + return true; + } + + public function isUpdatable($path) { + return true; + } + + public function file_exists($path) { + try { + return $this->client->stat($this->abs_path($path)) === false ? false : true; + } catch (\Exception $e) { + return false; + } + } + + public function unlink($path) { + try { + return $this->client->delete($this->abs_path($path), true); + } catch (\Exception $e) { + return false; + } + } + + public function fopen($path, $mode) { + try { + $abs_path = $this->abs_path($path); + switch($mode) { + case 'r': + case 'rb': + if ( !$this->file_exists($path)) return false; + if (strrpos($path, '.')!==false) { + $ext=substr($path, strrpos($path, '.')); + } else { + $ext=''; + } + $tmp = \OC_Helper::tmpFile($ext); + $this->getFile($abs_path, $tmp); + return fopen($tmp, $mode); + + case 'w': + case 'wb': + case 'a': + case 'ab': + case 'r+': + case 'w+': + case 'wb+': + case 'a+': + case 'x': + case 'x+': + case 'c': + case 'c+': + if (strrpos($path, '.')!==false) { + $ext=substr($path, strrpos($path, '.')); + } else { + $ext=''; + } + $tmpFile=\OC_Helper::tmpFile($ext); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); + if ($this->file_exists($path)) { + $this->getFile($abs_path, $tmpFile); + } + self::$tempFiles[$tmpFile]=$abs_path; + return fopen('close://'.$tmpFile, $mode); + } + } catch (\Exception $e) { + } + return false; + } + + public function writeBack($tmpFile) { + if (array_key_exists($tmpFile, self::$tempFiles)) { + $this->uploadFile($tmpFile, self::$tempFiles[$tmpFile]); + unlink($tmpFile); + unset(self::$tempFiles[$tmpFile]); + } + } + + public function free_space($path) { + return -1; + } + + public function touch($path, $mtime=null) { + try { + if (!is_null($mtime)) return false; + if (!$this->file_exists($path)) { + $this->client->put($this->abs_path($path), ''); + } else { + return false; + } + } catch (\Exception $e) { + return false; + } + return true; + } + + public function getFile($path, $target) { + $this->client->get($path, $target); + } + + public function uploadFile($path, $target) { + $this->client->put($target, $path, NET_SFTP_LOCAL_FILE); + } + + public function rename($source, $target) { + try { + return $this->client->rename($this->abs_path($source), $this->abs_path($target)); + } catch (\Exception $e) { + return false; + } + } + + public function stat($path) { + try { + $stat = $this->client->stat($this->abs_path($path)); + + $mtime = $stat ? $stat['mtime'] : -1; + $size = $stat ? $stat['size'] : 0; + + return array('mtime' => $mtime, 'size' => $size, 'ctime' => -1); + } catch (\Exception $e) { + return false; + } + + } +} diff --git a/apps/files_external/tests/config.php b/apps/files_external/tests/config.php index 65127175ad..1d4f30c713 100644 --- a/apps/files_external/tests/config.php +++ b/apps/files_external/tests/config.php @@ -8,7 +8,7 @@ return array( 'root'=>'/test', ), 'webdav'=>array( - 'run'=>true, + 'run'=>false, 'host'=>'localhost', 'user'=>'test', 'password'=>'test', @@ -30,7 +30,7 @@ return array( 'root'=>'/', ), 'smb'=>array( - 'run'=>true, + 'run'=>false, 'user'=>'test', 'password'=>'test', 'host'=>'localhost', @@ -51,5 +51,12 @@ return array( 'app_secret' => '', 'token' => '', 'token_secret' => '' + ), + 'sftp' => array ( + 'run'=>false, + 'host'=>'localhost', + 'user'=>'test', + 'password'=>'test', + 'root'=>'/test' ) ); diff --git a/apps/files_external/tests/sftp.php b/apps/files_external/tests/sftp.php new file mode 100644 index 0000000000..16964e2087 --- /dev/null +++ b/apps/files_external/tests/sftp.php @@ -0,0 +1,43 @@ +. + */ + +namespace Test\Files\Storage; + +class SFTP extends Storage { + private $config; + + public function setUp() { + $id = uniqid(); + $this->config = include('files_external/tests/config.php'); + if ( ! is_array($this->config) or ! isset($this->config['sftp']) or ! $this->config['sftp']['run']) { + $this->markTestSkipped('SFTP backend not configured'); + } + $this->config['sftp']['root'] .= '/' . $id; //make sure we have an new empty folder to work in + $this->instance = new \OC\Files\Storage\SFTP($this->config['sftp']); + } + + public function tearDown() { + if ($this->instance) { + $this->instance->rmdir('/'); + } + } +} \ No newline at end of file diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css index 492014344f..13f42b130d 100644 --- a/apps/files_sharing/css/public.css +++ b/apps/files_sharing/css/public.css @@ -34,9 +34,8 @@ body { background:#eee; border-bottom:1px solid #f8f8f8; min-height:30em; - padding-top:2em; text-align:center; - margin:50px auto; + margin:45px auto; } #noPreview { @@ -60,6 +59,7 @@ p.info a { #imgframe { height:75%; padding-bottom:2em; + padding-top:2em; width:80%; margin:0 auto; } @@ -67,4 +67,8 @@ p.info a { #imgframe img { max-height:100%; max-width:100%; -} \ No newline at end of file +} + +thead{ + background-color: white; +} diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index ea28ca69b9..65812b7e2f 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -390,7 +390,7 @@ class Shared extends \OC\Files\Storage\Common { } public static function setup($options) { - if (\OCP\Share::getItemsSharedWith('file')) { + if (!\OCP\User::isLoggedIn() || \OCP\User::getUser() != $options['user'] || \OCP\Share::getItemsSharedWith('file')) { $user_dir = $options['user_dir']; \OC\Files\Filesystem::mount('\OC\Files\Storage\Shared', array('sharedFolder' => '/Shared'), $user_dir.'/Shared/'); } diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index a3e0ec192a..38d598f778 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -1,67 +1,18 @@ execute(array($_GET['token']))->fetchOne(); - if (isset($filepath)) { - $rootView = new \OC\Files\View(''); - $info = $rootView->getFileInfo($filepath, ''); - if (strtolower($info['mimetype']) == 'httpd/unix-directory') { - $_GET['dir'] = $filepath; - } else { - $_GET['file'] = $filepath; - } - \OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0.' - .' Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', - \OCP\Util::WARN); - } -} - -function getID($path) { - // use the share table from the db to find the item source if the file was reshared because shared files - //are not stored in the file cache. - if (substr(\OC\Files\Filesystem::getMountPoint($path), -7, 6) == "Shared") { - $path_parts = explode('/', $path, 5); - $user = $path_parts[1]; - $intPath = '/'.$path_parts[4]; - $query = \OC_DB::prepare('SELECT `item_source`' - .' FROM `*PREFIX*share`' - .' WHERE `uid_owner` = ?' - .' AND `file_target` = ? '); - $result = $query->execute(array($user, $intPath)); - $row = $result->fetchRow(); - $fileSource = $row['item_source']; +function fileCmp($a, $b) { + if ($a['type'] == 'dir' and $b['type'] != 'dir') { + return -1; + } elseif ($a['type'] != 'dir' and $b['type'] == 'dir') { + return 1; } else { - $rootView = new \OC\Files\View(''); - $meta = $rootView->getFileInfo($path); - $fileSource = $meta['fileid']; + return strnatcasecmp($a['name'], $b['name']); } - - return $fileSource; } -// Enf of backward compatibility - -/** - * lookup file path and owner by fetching it from the fscache - * needed because OC_FileCache::getPath($id, $user) already requires the user - * @param int $id - * @return array - */ -function getPathAndUser($id) { - $query = \OC_DB::prepare('SELECT `user`, `path` FROM `*PREFIX*fscache` WHERE `id` = ?'); - $result = $query->execute(array($id)); - $row = $result->fetchRow(); - return $row; -} - - if (isset($_GET['t'])) { $token = $_GET['t']; $linkItem = OCP\Share::getShareByToken($token); @@ -70,61 +21,30 @@ if (isset($_GET['t'])) { $type = $linkItem['item_type']; $fileSource = $linkItem['file_source']; $shareOwner = $linkItem['uid_owner']; - - if (OCP\User::userExists($shareOwner) && $fileSource != -1 ) { - - $pathAndUser = getPathAndUser($linkItem['file_source']); - $fileOwner = $pathAndUser['user']; - - //if this is a reshare check the file owner also exists - if ($shareOwner != $fileOwner && ! OCP\User::userExists($fileOwner)) { - OCP\Util::writeLog('share', 'original file owner '.$fileOwner - .' does not exist for share '.$linkItem['id'], \OCP\Util::ERROR); - header('HTTP/1.0 404 Not Found'); - $tmpl = new OCP\Template('', '404', 'guest'); - $tmpl->printPage(); - exit(); + $fileOwner = null; + $path = null; + if (isset($linkItem['parent'])) { + $parent = $linkItem['parent']; + while (isset($parent)) { + $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); + $item = $query->execute(array($parent))->fetchRow(); + if (isset($item['parent'])) { + $parent = $item['parent']; + } else { + $fileOwner = $item['uid_owner']; + break; + } } - - //mount filesystem of file owner - OC_Util::setupFS($fileOwner); - } - } -} else { - if (isset($_GET['file']) || isset($_GET['dir'])) { - OCP\Util::writeLog('share', 'Missing token, trying fallback file/dir links', \OCP\Util::DEBUG); - if (isset($_GET['dir'])) { - $type = 'folder'; - $path = $_GET['dir']; - if (strlen($path) > 1 and substr($path, -1, 1) === '/') { - $path = substr($path, 0, -1); - } - $baseDir = $path; - $dir = $baseDir; } else { - $type = 'file'; - $path = $_GET['file']; - if (strlen($path) > 1 and substr($path, -1, 1) === '/') { - $path = substr($path, 0, -1); - } + $fileOwner = $shareOwner; } - $shareOwner = substr($path, 1, strpos($path, '/', 1) - 1); - - if (OCP\User::userExists($shareOwner)) { - OC_Util::setupFS($shareOwner); - $fileSource = getId($path); - if ($fileSource != -1) { - $linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $shareOwner); - $pathAndUser['path'] = $path; - $path_parts = explode('/', $path, 5); - $pathAndUser['user'] = $path_parts[1]; - $fileOwner = $path_parts[1]; - } + if (isset($fileOwner)) { + OC_Util::setupFS($fileOwner); + $path = \OC\Files\Filesystem::getPath($linkItem['file_source']); } } -} - -if ($linkItem) { +} +if (isset($path)) { if (!isset($linkItem['item_type'])) { OCP\Util::writeLog('share', 'No item type set for share id: ' . $linkItem['id'], \OCP\Util::ERROR); header('HTTP/1.0 404 Not Found'); @@ -181,36 +101,23 @@ if ($linkItem) { } } } - $basePath = substr($pathAndUser['path'], strlen('/' . $fileOwner . '/files')); - $path = $basePath; - if (isset($_GET['path'])) { - $path .= $_GET['path']; - } - if (!$path || !\OC\Files\Filesystem::isValidPath($path) || !\OC\Files\Filesystem::file_exists($path)) { - OCP\Util::writeLog('share', 'Invalid path ' . $path . ' for share id ' . $linkItem['id'], \OCP\Util::ERROR); - header('HTTP/1.0 404 Not Found'); - $tmpl = new OCP\Template('', '404', 'guest'); - $tmpl->printPage(); - exit(); + $basePath = $path; + if (isset($_GET['path']) && \OC\Files\Filesystem::isReadable($basePath . $_GET['path'])) { + $getPath = \OC\Files\Filesystem::normalizePath($_GET['path']); + $path .= $getPath; + } else { + $getPath = ''; } $dir = dirname($path); $file = basename($path); // Download the file if (isset($_GET['download'])) { - if (isset($_GET['path']) && $_GET['path'] !== '') { - if (isset($_GET['files'])) { // download selected files - OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); - } else { - if (isset($_GET['path']) && $_GET['path'] != '') { // download a file from a shared directory - OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); - } else { // download the whole shared directory - OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); - } - } - } else { // download a single shared file + if (isset($_GET['files'])) { // download selected files + OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); + } else { OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); } - + exit(); } else { OCP\Util::addStyle('files_sharing', 'public'); OCP\Util::addScript('files_sharing', 'public'); @@ -218,209 +125,86 @@ if ($linkItem) { $tmpl = new OCP\Template('files_sharing', 'public', 'base'); $tmpl->assign('uidOwner', $shareOwner); $tmpl->assign('displayName', \OCP\User::getDisplayName($shareOwner)); - $tmpl->assign('dir', $dir); $tmpl->assign('filename', $file); $tmpl->assign('mimetype', \OC\Files\Filesystem::getMimeType($path)); - if (isset($_GET['path'])) { - $getPath = $_GET['path']; - } else { - $getPath = ''; - } - // + $tmpl->assign('fileTarget', basename($linkItem['file_target'])); $urlLinkIdentifiers= (isset($token)?'&t='.$token:'') .(isset($_GET['dir'])?'&dir='.$_GET['dir']:'') .(isset($_GET['file'])?'&file='.$_GET['file']:''); // Show file list if (\OC\Files\Filesystem::is_dir($path)) { + $tmpl->assign('dir', $getPath); + OCP\Util::addStyle('files', 'files'); OCP\Util::addScript('files', 'files'); OCP\Util::addScript('files', 'filelist'); OCP\Util::addscript('files', 'keyboardshortcuts'); $files = array(); $rootLength = strlen($basePath) + 1; - foreach (OC_Files::getDirectoryContent($path) as $i) { + foreach (\OC\Files\Filesystem::getDirectoryContent($path) as $i) { $i['date'] = OCP\Util::formatDate($i['mtime']); if ($i['type'] == 'file') { $fileinfo = pathinfo($i['name']); $i['basename'] = $fileinfo['filename']; - $i['extension'] = isset($fileinfo['extension']) ? ('.' . $fileinfo['extension']) : ''; - } - $i['directory'] = '/' . substr($i['directory'], $rootLength); - if ($i['directory'] == '/') { - $i['directory'] = ''; + if (!empty($fileinfo['extension'])) { + $i['extension'] = '.' . $fileinfo['extension']; + } else { + $i['extension'] = ''; + } } + $i['directory'] = $getPath; $i['permissions'] = OCP\PERMISSION_READ; $files[] = $i; } + usort($files, "fileCmp"); + // Make breadcrumb $breadcrumb = array(); $pathtohere = ''; - - //add base breadcrumb - $breadcrumb[] = array('dir' => '/', 'name' => basename($basePath)); - - //add subdir breadcrumbs - foreach (explode('/', urldecode($getPath)) as $i) { + foreach (explode('/', $getPath) as $i) { if ($i != '') { $pathtohere .= '/' . $i; $breadcrumb[] = array('dir' => $pathtohere, 'name' => $i); - $path = $linkItem['path']; - if (isset($_GET['path'])) { - $path .= $_GET['path']; - $dir .= $_GET['path']; - if (!\OC\Files\Filesystem::file_exists($path)) { - header('HTTP/1.0 404 Not Found'); - $tmpl = new OCP\Template('', '404', 'guest'); - $tmpl->printPage(); - exit(); - } - } - - $list = new OCP\Template('files', 'part.list', ''); - $list->assign('files', $files, false); - $list->assign('publicListView', true); - $list->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path=', false); - $list->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=', false); - $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); - $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); - $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path=', false); - $folder = new OCP\Template('files', 'index', ''); - $folder->assign('fileList', $list->fetchPage(), false); - $folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); - $folder->assign('isCreatable', false); - $folder->assign('permissions', 0); - $folder->assign('files', $files); - $folder->assign('uploadMaxFilesize', 0); - $folder->assign('uploadMaxHumanFilesize', 0); - $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); - $tmpl->assign('folder', $folder->fetchPage(), false); - $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=' . urlencode($getPath)); - } else { - // Show file preview if viewer is available - if ($type == 'file') { - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download'); - } else { - OCP\Util::addStyle('files_sharing', 'public'); - OCP\Util::addScript('files_sharing', 'public'); - OCP\Util::addScript('files', 'fileactions'); - $tmpl = new OCP\Template('files_sharing', 'public', 'base'); - $tmpl->assign('owner', $uidOwner); - // Show file list - if (\OC\Files\Filesystem::is_dir($path)) { - OCP\Util::addStyle('files', 'files'); - OCP\Util::addScript('files', 'files'); - OCP\Util::addScript('files', 'filelist'); - $files = array(); - $rootLength = strlen($baseDir) + 1; - foreach (OC_Files::getDirectoryContent($path) as $i) { - $i['date'] = OCP\Util::formatDate($i['mtime']); - if ($i['type'] == 'file') { - $fileinfo = pathinfo($i['name']); - $i['basename'] = $fileinfo['filename']; - $i['extension'] = isset($fileinfo['extension']) ? ('.' . $fileinfo['extension']) : ''; - } - $i['directory'] = '/' . substr('/' . $uidOwner . '/files' . $i['directory'], $rootLength); - if ($i['directory'] == '/') { - $i['directory'] = ''; - } - $i['permissions'] = OCP\PERMISSION_READ; - $files[] = $i; - } - // Make breadcrumb - $breadcrumb = array(); - $pathtohere = ''; - $count = 1; - foreach (explode('/', $dir) as $i) { - if ($i != '') { - if ($i != $baseDir) { - $pathtohere .= '/' . $i; - } - if (strlen($pathtohere) < strlen($_GET['dir'])) { - continue; - } - $breadcrumb[] = array('dir' => str_replace($_GET['dir'], "", $pathtohere, $count), 'name' => $i); - } - } - $list = new OCP\Template('files', 'part.list', ''); - $list->assign('files', $files, false); - $list->assign('publicListView', true); - $list->assign('baseURL', OCP\Util::linkToPublic('files') . '&dir=' . urlencode($_GET['dir']) . '&path=', false); - $list->assign('downloadURL', OCP\Util::linkToPublic('files') . '&download&dir=' . urlencode($_GET['dir']) . '&path=', false); - $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); - $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); - $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files') . '&dir=' . urlencode($_GET['dir']) . '&path=', false); - $folder = new OCP\Template('files', 'index', ''); - $folder->assign('fileList', $list->fetchPage(), false); - $folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); - $folder->assign('dir', basename($dir)); - $folder->assign('isCreatable', false); - $folder->assign('permissions', 0); - $folder->assign('files', $files); - $folder->assign('uploadMaxFilesize', 0); - $folder->assign('uploadMaxHumanFilesize', 0); - $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); - $tmpl->assign('folder', $folder->fetchPage(), false); - $tmpl->assign('uidOwner', $uidOwner); - $tmpl->assign('dir', basename($dir)); - $tmpl->assign('filename', basename($path)); - $tmpl->assign('mimetype', \OC\Files\Filesystem::getMimeType($path)); - $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); - if (isset($_GET['path'])) { - $getPath = $_GET['path']; - } else { - $getPath = ''; - } - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . '&download&dir=' . urlencode($_GET['dir']) . '&path=' . urlencode($getPath), false); - } else { - // Show file preview if viewer is available - $tmpl->assign('uidOwner', $uidOwner); - $tmpl->assign('dir', dirname($path)); - $tmpl->assign('filename', basename($path)); - $tmpl->assign('mimetype', \OC\Files\Filesystem::getMimeType($path)); - if ($type == 'file') { - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . '&file=' . urlencode($_GET['file']) . '&download', false); - } else { - if (isset($_GET['path'])) { - $getPath = $_GET['path']; - } else { - $getPath = ''; - } - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . '&download&dir=' . urlencode($_GET['dir']) . '&path=' . urlencode($getPath), false); - } - } - $tmpl->printPage(); - } } - $tmpl->printPage(); } - $list = new OCP\Template('files', 'part.list', ''); $list->assign('files', $files, false); $list->assign('disableSharing', true); - $list->assign('baseURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&path=', false); - $list->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path=', false); - $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '' ); + $list->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path=', false); + $list->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=', false); + $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); - $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&path=', false); + $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path=', false); $folder = new OCP\Template('files', 'index', ''); $folder->assign('fileList', $list->fetchPage(), false); $folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); - $folder->assign('dir', basename($dir)); + $folder->assign('dir', $getPath); $folder->assign('isCreatable', false); $folder->assign('permissions', 0); $folder->assign('files', $files); $folder->assign('uploadMaxFilesize', 0); $folder->assign('uploadMaxHumanFilesize', 0); $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); + $folder->assign('usedSpacePercent', 0); $tmpl->assign('folder', $folder->fetchPage(), false); $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') - .$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); + $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=' . urlencode($getPath)); } else { - OCP\Util::writeLog('share', 'could not resolve linkItem', \OCP\Util::DEBUG); + $tmpl->assign('dir', $dir); + + // Show file preview if viewer is available + if ($type == 'file') { + $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download'); + } else { + $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') + .$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); + } } + $tmpl->printPage(); } + exit(); +} else { + OCP\Util::writeLog('share', 'could not resolve linkItem', \OCP\Util::DEBUG); } header('HTTP/1.0 404 Not Found'); $tmpl = new OCP\Template('', '404', 'guest'); diff --git a/apps/files_sharing/templates/authenticate.php b/apps/files_sharing/templates/authenticate.php index 9695caebf1..6bce6857ac 100644 --- a/apps/files_sharing/templates/authenticate.php +++ b/apps/files_sharing/templates/authenticate.php @@ -1,8 +1,8 @@
-

+

- +

diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 71fca09ed6..7776fd63b3 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -6,9 +6,9 @@ ownCloud
- t('%s shared the folder %s with you', array($_['displayName'], $_['filename'])) ?> + t('%s shared the folder %s with you', array($_['displayName'], $_['fileTarget'])) ?> - t('%s shared the file %s with you', array($_['displayName'], $_['filename'])) ?> + t('%s shared the file %s with you', array($_['displayName'], $_['fileTarget'])) ?> Download" />t('Download')?> @@ -26,7 +26,7 @@
  • - t('No preview available for').' '.$_['filename']; ?>
    + t('No preview available for').' '.$_['fileTarget']; ?>
    Download" />t('Download')?>
diff --git a/apps/files_trashbin/ajax/delete.php b/apps/files_trashbin/ajax/delete.php index a166ce55c8..7a6bd1342e 100644 --- a/apps/files_trashbin/ajax/delete.php +++ b/apps/files_trashbin/ajax/delete.php @@ -15,10 +15,10 @@ if ($path_parts['dirname'] == '.') { $timestamp = null; } -if (OCA_Trash\Trashbin::delete($filename, $timestamp)) { - error_log("feinifeini"); +if (OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp)) { OCP\JSON::success(array("data" => array("filename" => $file))); } else { - OCP\JSON::error(array("data" => array("message" => "Couldn't delete ".$file. " permanently"))); + $l = OC_L10N::get('files_trashbin'); + OCP\JSON::error(array("data" => array("message" => $l->t("Couldn't delete %s permanently", array($file))))); } diff --git a/apps/files_trashbin/ajax/undelete.php b/apps/files_trashbin/ajax/undelete.php index ee1c64aaaf..cc010979c5 100644 --- a/apps/files_trashbin/ajax/undelete.php +++ b/apps/files_trashbin/ajax/undelete.php @@ -22,7 +22,7 @@ foreach ($list as $file) { $timestamp = null; } - if ( !OCA_Trash\Trashbin::restore($file, $filename, $timestamp) ) { + if ( !OCA\Files_Trashbin\Trashbin::restore($file, $filename, $timestamp) ) { $error[] = $filename; } else { $success[$i]['filename'] = $file; @@ -37,8 +37,10 @@ if ( $error ) { foreach ( $error as $e ) { $filelist .= $e.', '; } - OCP\JSON::error(array("data" => array("message" => "Couldn't restore ".rtrim($filelist,', '), "success" => $success, "error" => $error))); + $l = OC_L10N::get('files_trashbin'); + $message = $l->t("Couldn't restore %s", array(rtrim($filelist,', '))); + OCP\JSON::error(array("data" => array("message" => $message, + "success" => $success, "error" => $error))); } else { OCP\JSON::success(array("data" => array("success" => $success))); } - diff --git a/apps/files_trashbin/appinfo/app.php b/apps/files_trashbin/appinfo/app.php index 3741d42c78..b1a15cd13d 100644 --- a/apps/files_trashbin/appinfo/app.php +++ b/apps/files_trashbin/appinfo/app.php @@ -1,7 +1,7 @@ '', 'name' => 'Trash')); -$pathtohere = ''; +$pathtohere = ''; +$breadcrumb = array(); foreach (explode('/', $dir) as $i) { if ($i != '') { if ( preg_match('/^(.+)\.d[0-9]+$/', $i, $match) ) { diff --git a/apps/files_trashbin/l10n/bg_BG.php b/apps/files_trashbin/l10n/bg_BG.php index 681c1dc580..2e6309c22b 100644 --- a/apps/files_trashbin/l10n/bg_BG.php +++ b/apps/files_trashbin/l10n/bg_BG.php @@ -1,3 +1,4 @@ "Име" +"Name" => "Име", +"Restore" => "Възтановяване" ); diff --git a/apps/files_trashbin/l10n/ca.php b/apps/files_trashbin/l10n/ca.php index 3af33c8a31..803b0c81ef 100644 --- a/apps/files_trashbin/l10n/ca.php +++ b/apps/files_trashbin/l10n/ca.php @@ -1,5 +1,8 @@ "No s'ha pogut esborrar permanentment %s", +"Couldn't restore %s" => "No s'ha pogut restaurar %s", "perform restore operation" => "executa l'operació de restauració", +"delete file permanently" => "esborra el fitxer permanentment", "Name" => "Nom", "Deleted" => "Eliminat", "1 folder" => "1 carpeta", diff --git a/apps/files_trashbin/l10n/cs_CZ.php b/apps/files_trashbin/l10n/cs_CZ.php index caaaea3743..eeb27784d3 100644 --- a/apps/files_trashbin/l10n/cs_CZ.php +++ b/apps/files_trashbin/l10n/cs_CZ.php @@ -1,5 +1,8 @@ "Nelze trvale odstranit %s", +"Couldn't restore %s" => "Nelze obnovit %s", "perform restore operation" => "provést obnovu", +"delete file permanently" => "trvale odstranit soubor", "Name" => "Název", "Deleted" => "Smazáno", "1 folder" => "1 složka", diff --git a/apps/files_trashbin/l10n/da.php b/apps/files_trashbin/l10n/da.php index 3343b6fc8f..855888b315 100644 --- a/apps/files_trashbin/l10n/da.php +++ b/apps/files_trashbin/l10n/da.php @@ -1,8 +1,14 @@ "Kunne ikke slette %s permanent", +"Couldn't restore %s" => "Kunne ikke gendanne %s", +"perform restore operation" => "udfør gendannelsesoperation", +"delete file permanently" => "slet fil permanent", "Name" => "Navn", +"Deleted" => "Slettet", "1 folder" => "1 mappe", "{count} folders" => "{count} mapper", "1 file" => "1 fil", "{count} files" => "{count} filer", +"Nothing in here. Your trash bin is empty!" => "Intet at se her. Din papirkurv er tom!", "Restore" => "Gendan" ); diff --git a/apps/files_trashbin/l10n/de_DE.php b/apps/files_trashbin/l10n/de_DE.php index 45e30d85a3..e293bf0b2e 100644 --- a/apps/files_trashbin/l10n/de_DE.php +++ b/apps/files_trashbin/l10n/de_DE.php @@ -1,5 +1,6 @@ "Führe die Wiederherstellung aus", +"delete file permanently" => "Datei entgültig löschen", "Name" => "Name", "Deleted" => "Gelöscht", "1 folder" => "1 Ordner", diff --git a/apps/files_trashbin/l10n/el.php b/apps/files_trashbin/l10n/el.php index 83e359890e..bc3c2350da 100644 --- a/apps/files_trashbin/l10n/el.php +++ b/apps/files_trashbin/l10n/el.php @@ -1,8 +1,14 @@ "Αδύνατη η μόνιμη διαγραφή του %s", +"Couldn't restore %s" => "Αδυναμία επαναφοράς %s", +"perform restore operation" => "εκτέλεση λειτουργία επαναφοράς", +"delete file permanently" => "μόνιμη διαγραφή αρχείου", "Name" => "Όνομα", +"Deleted" => "Διαγράφηκε", "1 folder" => "1 φάκελος", "{count} folders" => "{count} φάκελοι", "1 file" => "1 αρχείο", "{count} files" => "{count} αρχεία", +"Nothing in here. Your trash bin is empty!" => "Δεν υπάρχει τίποτα εδώ. Ο κάδος σας είναι άδειος!", "Restore" => "Επαναφορά" ); diff --git a/apps/files_trashbin/l10n/es.php b/apps/files_trashbin/l10n/es.php index b191ffc424..c14b977647 100644 --- a/apps/files_trashbin/l10n/es.php +++ b/apps/files_trashbin/l10n/es.php @@ -1,5 +1,8 @@ "No se puede eliminar %s permanentemente", +"Couldn't restore %s" => "No se puede restaurar %s", "perform restore operation" => "Restaurar", +"delete file permanently" => "Eliminar archivo permanentemente", "Name" => "Nombre", "Deleted" => "Eliminado", "1 folder" => "1 carpeta", diff --git a/apps/files_trashbin/l10n/es_AR.php b/apps/files_trashbin/l10n/es_AR.php index d2c5f30428..c7f98e38df 100644 --- a/apps/files_trashbin/l10n/es_AR.php +++ b/apps/files_trashbin/l10n/es_AR.php @@ -1,8 +1,14 @@ "No fue posible borrar %s de manera permanente", +"Couldn't restore %s" => "No se pudo restaurar %s", +"perform restore operation" => "Restaurar", +"delete file permanently" => "Borrar archivo de manera permanente", "Name" => "Nombre", +"Deleted" => "Borrado", "1 folder" => "1 directorio", "{count} folders" => "{count} directorios", "1 file" => "1 archivo", "{count} files" => "{count} archivos", +"Nothing in here. Your trash bin is empty!" => "No hay nada acá. ¡La papelera está vacía!", "Restore" => "Recuperar" ); diff --git a/apps/files_trashbin/l10n/fr.php b/apps/files_trashbin/l10n/fr.php index 51ade82d90..609b2fa9bd 100644 --- a/apps/files_trashbin/l10n/fr.php +++ b/apps/files_trashbin/l10n/fr.php @@ -1,5 +1,8 @@ "Impossible d'effacer %s de façon permanente", +"Couldn't restore %s" => "Impossible de restaurer %s", "perform restore operation" => "effectuer l'opération de restauration", +"delete file permanently" => "effacer définitivement le fichier", "Name" => "Nom", "Deleted" => "Effacé", "1 folder" => "1 dossier", diff --git a/apps/files_trashbin/l10n/gl.php b/apps/files_trashbin/l10n/gl.php index bdc3187b20..ad9f6802e6 100644 --- a/apps/files_trashbin/l10n/gl.php +++ b/apps/files_trashbin/l10n/gl.php @@ -1,8 +1,14 @@ "Non foi posíbel eliminar %s permanente", +"Couldn't restore %s" => "Non foi posíbel restaurar %s", +"perform restore operation" => "realizar a operación de restauración", +"delete file permanently" => "eliminar o ficheiro permanentemente", "Name" => "Nome", +"Deleted" => "Eliminado", "1 folder" => "1 cartafol", "{count} folders" => "{count} cartafoles", "1 file" => "1 ficheiro", "{count} files" => "{count} ficheiros", +"Nothing in here. Your trash bin is empty!" => "Aquí non hai nada. O cesto do lixo está baleiro!", "Restore" => "Restablecer" ); diff --git a/apps/files_trashbin/l10n/it.php b/apps/files_trashbin/l10n/it.php index 7def431a42..8627682d08 100644 --- a/apps/files_trashbin/l10n/it.php +++ b/apps/files_trashbin/l10n/it.php @@ -1,5 +1,8 @@ "Impossibile eliminare %s definitivamente", +"Couldn't restore %s" => "Impossibile ripristinare %s", "perform restore operation" => "esegui operazione di ripristino", +"delete file permanently" => "elimina il file definitivamente", "Name" => "Nome", "Deleted" => "Eliminati", "1 folder" => "1 cartella", diff --git a/apps/files_trashbin/l10n/ja_JP.php b/apps/files_trashbin/l10n/ja_JP.php index 0b4e1954e7..2bccf3f3bd 100644 --- a/apps/files_trashbin/l10n/ja_JP.php +++ b/apps/files_trashbin/l10n/ja_JP.php @@ -1,5 +1,8 @@ "%s を完全に削除出来ませんでした", +"Couldn't restore %s" => "%s を復元出来ませんでした", "perform restore operation" => "復元操作を実行する", +"delete file permanently" => "ファイルを完全に削除する", "Name" => "名前", "Deleted" => "削除済み", "1 folder" => "1 フォルダ", diff --git a/apps/files_trashbin/l10n/lv.php b/apps/files_trashbin/l10n/lv.php index 017a8d285c..5ecb99b989 100644 --- a/apps/files_trashbin/l10n/lv.php +++ b/apps/files_trashbin/l10n/lv.php @@ -1,5 +1,8 @@ "Nevarēja pilnībā izdzēst %s", +"Couldn't restore %s" => "Nevarēja atjaunot %s", "perform restore operation" => "veikt atjaunošanu", +"delete file permanently" => "dzēst datni pavisam", "Name" => "Nosaukums", "Deleted" => "Dzēsts", "1 folder" => "1 mape", diff --git a/apps/files_trashbin/l10n/nl.php b/apps/files_trashbin/l10n/nl.php index 4efa6ecf66..c4a26104ba 100644 --- a/apps/files_trashbin/l10n/nl.php +++ b/apps/files_trashbin/l10n/nl.php @@ -1,5 +1,8 @@ "Kon %s niet permanent verwijderen", +"Couldn't restore %s" => "Kon %s niet herstellen", "perform restore operation" => "uitvoeren restore operatie", +"delete file permanently" => "verwijder bestanden definitief", "Name" => "Naam", "Deleted" => "Verwijderd", "1 folder" => "1 map", diff --git a/apps/files_trashbin/l10n/pt_PT.php b/apps/files_trashbin/l10n/pt_PT.php index 79930315b0..978ab452d6 100644 --- a/apps/files_trashbin/l10n/pt_PT.php +++ b/apps/files_trashbin/l10n/pt_PT.php @@ -1,5 +1,8 @@ "Não foi possível eliminar %s de forma permanente", +"Couldn't restore %s" => "Não foi possível restaurar %s", "perform restore operation" => "Restaurar", +"delete file permanently" => "Eliminar permanentemente o(s) ficheiro(s)", "Name" => "Nome", "Deleted" => "Apagado", "1 folder" => "1 pasta", diff --git a/apps/files_trashbin/l10n/ru.php b/apps/files_trashbin/l10n/ru.php index 23d739a2ff..f6c85a6800 100644 --- a/apps/files_trashbin/l10n/ru.php +++ b/apps/files_trashbin/l10n/ru.php @@ -1,7 +1,14 @@ "%s не может быть удалён навсегда", +"Couldn't restore %s" => "%s не может быть восстановлен", +"perform restore operation" => "выполнить операцию восстановления", +"delete file permanently" => "удалить файл навсегда", "Name" => "Имя", +"Deleted" => "Удалён", "1 folder" => "1 папка", "{count} folders" => "{count} папок", "1 file" => "1 файл", -"{count} files" => "{count} файлов" +"{count} files" => "{count} файлов", +"Nothing in here. Your trash bin is empty!" => "Здесь ничего нет. Ваша корзина пуста!", +"Restore" => "Восстановить" ); diff --git a/apps/files_trashbin/l10n/ru_RU.php b/apps/files_trashbin/l10n/ru_RU.php index 8ef2658cf2..379ee37af8 100644 --- a/apps/files_trashbin/l10n/ru_RU.php +++ b/apps/files_trashbin/l10n/ru_RU.php @@ -1,7 +1,14 @@ "%s не может быть удалён навсегда", +"Couldn't restore %s" => "%s не может быть восстановлен", +"perform restore operation" => "выполнить операцию восстановления", +"delete file permanently" => "удалить файл навсегда", "Name" => "Имя", +"Deleted" => "Удалён", "1 folder" => "1 папка", "{count} folders" => "{количество} папок", "1 file" => "1 файл", -"{count} files" => "{количество} файлов" +"{count} files" => "{количество} файлов", +"Nothing in here. Your trash bin is empty!" => "Здесь ничего нет. Ваша корзина пуста!", +"Restore" => "Восстановить" ); diff --git a/apps/files_trashbin/l10n/sk_SK.php b/apps/files_trashbin/l10n/sk_SK.php index 81d43614d7..b86e5d86e4 100644 --- a/apps/files_trashbin/l10n/sk_SK.php +++ b/apps/files_trashbin/l10n/sk_SK.php @@ -1,5 +1,8 @@ "Nemožno zmazať %s navždy", +"Couldn't restore %s" => "Nemožno obnoviť %s", "perform restore operation" => "vykonať obnovu", +"delete file permanently" => "trvalo zmazať súbor", "Name" => "Meno", "Deleted" => "Zmazané", "1 folder" => "1 priečinok", diff --git a/apps/files_trashbin/l10n/sv.php b/apps/files_trashbin/l10n/sv.php index 5bde85e705..53bb7a6ce0 100644 --- a/apps/files_trashbin/l10n/sv.php +++ b/apps/files_trashbin/l10n/sv.php @@ -1,5 +1,8 @@ "Kunde inte radera %s permanent", +"Couldn't restore %s" => "Kunde inte återställa %s", "perform restore operation" => "utför återställning", +"delete file permanently" => "radera filen permanent", "Name" => "Namn", "Deleted" => "Raderad", "1 folder" => "1 mapp", diff --git a/apps/files_trashbin/l10n/vi.php b/apps/files_trashbin/l10n/vi.php index 2c51c69aaf..ac2a7be029 100644 --- a/apps/files_trashbin/l10n/vi.php +++ b/apps/files_trashbin/l10n/vi.php @@ -1,7 +1,14 @@ "Không thể óa %s vĩnh viễn", +"Couldn't restore %s" => "Không thể khôi phục %s", +"perform restore operation" => "thực hiện phục hồi", +"delete file permanently" => "xóa file vĩnh viễn", "Name" => "Tên", +"Deleted" => "Đã xóa", "1 folder" => "1 thư mục", "{count} folders" => "{count} thư mục", "1 file" => "1 tập tin", -"{count} files" => "{count} tập tin" +"{count} files" => "{count} tập tin", +"Nothing in here. Your trash bin is empty!" => "Không có gì ở đây. Thùng rác của bạn rỗng!", +"Restore" => "Khôi phục" ); diff --git a/apps/files_trashbin/lib/hooks.php b/apps/files_trashbin/lib/hooks.php index d3bee105b5..d6a62d447b 100644 --- a/apps/files_trashbin/lib/hooks.php +++ b/apps/files_trashbin/lib/hooks.php @@ -24,7 +24,7 @@ * This class contains all hooks. */ -namespace OCA_Trash; +namespace OCA\Files_Trashbin; class Hooks { diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php index e41dcb096c..d88dc1ac25 100644 --- a/apps/files_trashbin/lib/trash.php +++ b/apps/files_trashbin/lib/trash.php @@ -20,11 +20,13 @@ * */ -namespace OCA_Trash; +namespace OCA\Files_Trashbin; class Trashbin { const DEFAULT_RETENTION_OBLIGATION=180; // how long do we keep files in the trash bin if no other value is defined in the config file (unit: days) + const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota + /** * move file to the trash bin * @@ -49,10 +51,14 @@ class Trashbin { $type = 'dir'; } else { $type = 'file'; - } + } + + if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) { + $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin')); + $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin')); + } + $trashbinSize += self::copy_recursive($file_path, 'files_trashbin/'.$deleted.'.d'.$timestamp, $view); - self::copy_recursive($file_path, 'files_trashbin/'.$deleted.'.d'.$timestamp, $view); - if ( $view->file_exists('files_trashbin/'.$deleted.'.d'.$timestamp) ) { $query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (id,timestamp,location,type,mime,user) VALUES (?,?,?,?,?,?)"); $result = $query->execute(array($deleted, $timestamp, $location, $type, $mime, $user)); @@ -63,10 +69,12 @@ class Trashbin { } if ( \OCP\App::isEnabled('files_versions') ) { - if ( $view->is_dir('files_versions'.$file_path) ) { + if ( $view->is_dir('files_versions'.$file_path) ) { + $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_versions/'.$file_path)); $view->rename('files_versions'.$file_path, 'versions_trashbin/'. $deleted.'.d'.$timestamp); - } else if ( $versions = \OCA_Versions\Storage::getVersions($file_path) ) { - foreach ($versions as $v) { + } else if ( $versions = \OCA\Files_Versions\Storage::getVersions($file_path) ) { + foreach ($versions as $v) { + $trashbinSize += $view->filesize('files_versions'.$v['path'].'.v'.$v['version']); $view->rename('files_versions'.$v['path'].'.v'.$v['version'], 'versions_trashbin/'. $deleted.'.v'.$v['version'].'.d'.$timestamp); } } @@ -75,7 +83,26 @@ class Trashbin { \OC_Log::write('files_trashbin', 'Couldn\'t move '.$file_path.' to the trash bin' , \OC_log::ERROR); } - self::expire(); + // get available disk space for user + $quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($user, 'files', 'quota')); + if ( $quota == null ) { + $quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota')); + } + if ( $quota == null ) { + $quota = \OC\Files\Filesystem::free_space('/'); + } + + // calculate available space for trash bin + $rootInfo = $view->getFileInfo('/files'); + $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; + } + + $trashbinSize -= self::expire($availableSpace); + \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize); } @@ -86,10 +113,13 @@ class Trashbin { * @param $timestamp time when the file was deleted */ public static function restore($file, $filename, $timestamp) { - $user = \OCP\User::getUser(); $view = new \OC_FilesystemView('/'.$user); + if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) { + $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin')); + $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin')); + } 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(); @@ -122,16 +152,29 @@ class Trashbin { $mtime = $view->filemtime($source); if( $view->rename($source, $target.$ext) ) { $view->touch($target.$ext, $mtime); + if ($view->is_dir($target.$ext)) { + $trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.$target.$ext)); + } else { + $trashbinSize -= $view->filesize($target.$ext); + } // if versioning app is enabled, copy versions from the trash bin back to the original location - if ( \OCP\App::isEnabled('files_versions') ) { - if ( $result[0]['type'] == 'dir' ) { + if ( \OCP\App::isEnabled('files_versions') ) { + if ($timestamp ) { + $versionedFile = $filename; + } else { + $versionedFile = $file; + } + if ( $result[0]['type'] == 'dir' ) { + $trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.'versions_trashbin/'. $file)); $view->rename(\OC_Filesystem::normalizePath('versions_trashbin/'. $file), \OC_Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext)); - } else if ( $versions = self::getVersionsFromTrash($file, $timestamp) ) { + } else if ( $versions = self::getVersionsFromTrash($versionedFile, $timestamp) ) { foreach ($versions as $v) { if ($timestamp ) { - $view->rename('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); + $trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp); + $view->rename('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); } else { - $view->rename('versions_trashbin/'.$file.'.v'.$v, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); + $trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v); + $view->rename('versions_trashbin/'.$versionedFile.'.v'.$v, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); } } } @@ -142,6 +185,7 @@ class Trashbin { $query->execute(array($user,$filename,$timestamp)); } + \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize); return true; } else { \OC_Log::write('files_trashbin', 'Couldn\'t restore file from trash bin, '.$filename , \OC_log::ERROR); @@ -154,13 +198,18 @@ class Trashbin { * delete file from trash bin permanently * @param $filename path to the file * @param $timestamp of deletion time - * @return true/false + * @return size of deleted files */ public static function delete($filename, $timestamp=null) { - $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView('/'.$user); - + $view = new \OC_FilesystemView('/'.$user); + $size = 0; + + if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) { + $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin')); + $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin')); + } + if ( $timestamp ) { $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?'); $query->execute(array($user,$filename,$timestamp)); @@ -171,31 +220,43 @@ class Trashbin { if ( \OCP\App::isEnabled('files_versions') ) { if ($view->is_dir('versions_trashbin/'.$file)) { + $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/versions_trashbin/'.$file)); $view->unlink('versions_trashbin/'.$file); - } else if ( $versions = self::getVersionsFromTrash($file, $timestamp) ) { + } else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) { foreach ($versions as $v) { if ($timestamp ) { - $view->unlink('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); + $size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); + $view->unlink('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); } else { - $view->unlink('versions_trashbin/'.$file.'.v'.$v); + $size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v); + $view->unlink('/versions_trashbin/'.$filename.'.v'.$v); } } } } + if ($view->is_dir('/files_trashbin/'.$file)) { + $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/'.$file)); + } else { + $size += $view->filesize('/files_trashbin/'.$file); + } $view->unlink('/files_trashbin/'.$file); + $trashbinSize -= $size; + \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize); - return true; + return $size; } /** - * clean up the trash bin + * clean up the trash bin + * @param max. available disk space for trashbin */ - private static function expire() { + private static function expire($availableSpace) { - $view = new \OC_FilesystemView('/'.\OCP\User::getUser()); $user = \OCP\User::getUser(); + $view = new \OC_FilesystemView('/'.$user); + $size = 0; $query = \OC_DB::prepare('SELECT location,type,id,timestamp FROM *PREFIX*files_trash WHERE user=?'); $result = $query->execute(array($user))->fetchAll(); @@ -208,11 +269,18 @@ class Trashbin { $timestamp = $r['timestamp']; $filename = $r['id']; if ( $r['timestamp'] < $limit ) { + if ($view->is_dir('files_trashbin/'.$filename.'.d'.$timestamp)) { + $size += self::calculateSize(new \OC_FilesystemView('/'.$user.'/files_trashbin/'.$filename.'.d'.$timestamp)); + } else { + $size += $view->filesize('files_trashbin/'.$filename.'.d'.$timestamp); + } $view->unlink('files_trashbin/'.$filename.'.d'.$timestamp); if ($r['type'] == 'dir') { + $size += self::calculateSize(new \OC_FilesystemView('/'.$user.'/versions_trashbin/'.$filename.'.d'.$timestamp)); $view->unlink('versions_trashbin/'.$filename.'.d'.$timestamp); } else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) { foreach ($versions as $v) { + $size += $view->filesize('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); $view->unlink('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); } } @@ -220,7 +288,25 @@ class Trashbin { } $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND timestampexecute(array($user,$limit)); + $query->execute(array($user,$limit)); + + $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'); + $result = $query->execute(array($user))->fetchAll(); + $length = count($result); + $i = 0; + while ( $i < $length && $availableSpace < 0 ) { + $tmp = self::delete($result[$i]['id'], $result[$i]['timestamp']); + $availableSpace += $tmp; + $size += $tmp; + $i++; + } + + } + + return $size; } /** @@ -231,22 +317,26 @@ class Trashbin { * @param $view file view for the users root directory */ 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) ) { - self::copy_recursive($pathDir, $destination.'/'.$i['name'], $view); + $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)); } } } else { + $size += $view->filesize('files'.$source); $view->copy( 'files'.$source, $destination ); $view->touch($destination, $view->filemtime('files'.$source)); } + return $size; } /** @@ -257,8 +347,7 @@ class Trashbin { private static function getVersionsFromTrash($filename, $timestamp) { $view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/versions_trashbin'); $versionsName = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($filename); - $versions = array(); - + $versions = array(); if ($timestamp ) { // fetch for old versions $matches = glob( $versionsName.'.v*.d'.$timestamp ); @@ -300,4 +389,23 @@ class Trashbin { return $ext; } + /** + * @brief get the size from a given root folder + * @param $view file view on the root folder + * @return size of the folder + */ + private static function calculateSize($view) { + $root = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath(''); + $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) ) { + $size += $view->filesize($relpath); + } + } + return $size; + } + } diff --git a/apps/files_versions/ajax/rollbackVersion.php b/apps/files_versions/ajax/rollbackVersion.php index dc5a59cb4a..2970915ac6 100644 --- a/apps/files_versions/ajax/rollbackVersion.php +++ b/apps/files_versions/ajax/rollbackVersion.php @@ -11,6 +11,7 @@ $revision=(int)$_GET['revision']; if(OCA\Files_Versions\Storage::rollback( $file, $revision )) { OCP\JSON::success(array("data" => array( "revision" => $revision, "file" => $file ))); }else{ - OCP\JSON::error(array("data" => array( "message" => "Could not revert:" . $file ))); + $l = OC_L10N::get('files_versions'); + OCP\JSON::error(array("data" => array( "message" => $l->t("Could not revert: %s", array($file) )))); } diff --git a/apps/files_versions/history.php b/apps/files_versions/history.php index 1bd5cde44b..437a3fec06 100644 --- a/apps/files_versions/history.php +++ b/apps/files_versions/history.php @@ -24,6 +24,7 @@ OCP\User::checkLoggedIn( ); OCP\Util::addStyle('files_versions', 'versions'); $tmpl = new OCP\Template( 'files_versions', 'history', 'user' ); +$l = OC_L10N::get('files_versions'); if ( isset( $_GET['path'] ) ) { @@ -36,15 +37,21 @@ if ( isset( $_GET['path'] ) ) { if( $versions->rollback( $path, $_GET['revert'] ) ) { - $tmpl->assign( 'outcome_stat', 'success' ); + $tmpl->assign( 'outcome_stat', $l->t('success') ); - $tmpl->assign( 'outcome_msg', "File {$_GET['path']} was reverted to version ".OCP\Util::formatDate( doubleval($_GET['revert']) ) ); + $message = $l->t('File %s was reverted to version %s', + array($_GET['path'], OCP\Util::formatDate( doubleval($_GET['revert']) ) ) ); + + $tmpl->assign( 'outcome_msg', $message); } else { - $tmpl->assign( 'outcome_stat', 'failure' ); + $tmpl->assign( 'outcome_stat', $l->t('failure') ); - $tmpl->assign( 'outcome_msg', "File {$_GET['path']} could not be reverted to version ".OCP\Util::formatDate( doubleval($_GET['revert']) ) ); + $message = $l->t('File %s could not be reverted to version %s', + array($_GET['path'], OCP\Util::formatDate( doubleval($_GET['revert']) ) ) ); + + $tmpl->assign( 'outcome_msg', $message); } @@ -58,12 +65,12 @@ if ( isset( $_GET['path'] ) ) { }else{ - $tmpl->assign( 'message', 'No old versions available' ); + $tmpl->assign( 'message', $l->t('No old versions available') ); } }else{ - $tmpl->assign( 'message', 'No path specified' ); + $tmpl->assign( 'message', $l->t('No path specified') ); } diff --git a/apps/files_versions/l10n/ca.php b/apps/files_versions/l10n/ca.php index 01e0a11687..fc900c47dc 100644 --- a/apps/files_versions/l10n/ca.php +++ b/apps/files_versions/l10n/ca.php @@ -1,5 +1,13 @@ "No s'ha pogut revertir: %s", +"success" => "èxit", +"File %s was reverted to version %s" => "El fitxer %s s'ha revertit a la versió %s", +"failure" => "fallada", +"File %s could not be reverted to version %s" => "El fitxer %s no s'ha pogut revertir a la versió %s", +"No old versions available" => "No hi ha versións antigues disponibles", +"No path specified" => "No heu especificat el camí", "History" => "Historial", +"Revert a file to a previous version by clicking on its revert button" => "Reverteix un fitxer a una versió anterior fent clic en el seu botó de reverteix", "Files Versioning" => "Fitxers de Versions", "Enable" => "Habilita" ); diff --git a/apps/files_versions/l10n/cs_CZ.php b/apps/files_versions/l10n/cs_CZ.php index d219c3e68d..22d4a2ad82 100644 --- a/apps/files_versions/l10n/cs_CZ.php +++ b/apps/files_versions/l10n/cs_CZ.php @@ -1,5 +1,13 @@ "Nelze navrátit: %s", +"success" => "úspěch", +"File %s was reverted to version %s" => "Soubor %s byl navrácen na verzi %s", +"failure" => "sehlhání", +"File %s could not be reverted to version %s" => "Soubor %s nemohl být navrácen na verzi %s", +"No old versions available" => "Nejsou dostupné žádné starší verze", +"No path specified" => "Nezadána cesta", "History" => "Historie", +"Revert a file to a previous version by clicking on its revert button" => "Navraťte soubor do předchozí verze kliknutím na tlačítko navrátit", "Files Versioning" => "Verzování souborů", "Enable" => "Povolit" ); diff --git a/apps/files_versions/l10n/da.php b/apps/files_versions/l10n/da.php index 9857974764..93fcb9c99c 100644 --- a/apps/files_versions/l10n/da.php +++ b/apps/files_versions/l10n/da.php @@ -1,5 +1,13 @@ "Kunne ikke genskabe: %s", +"success" => "success", +"File %s was reverted to version %s" => "Filen %s blev genskabt til version: %s", +"failure" => "fejl", +"File %s could not be reverted to version %s" => "Filen %s blev genskabt til version: %s", +"No old versions available" => "Ingen gamle version tilgængelige", +"No path specified" => "Ingen sti specificeret", "History" => "Historik", +"Revert a file to a previous version by clicking on its revert button" => "Genskab en fil til en tidligere version ved at klikke på denne genskab knap.", "Files Versioning" => "Versionering af filer", "Enable" => "Aktiver" ); diff --git a/apps/files_versions/l10n/de_DE.php b/apps/files_versions/l10n/de_DE.php index 2fcb996de7..cf33bb071e 100644 --- a/apps/files_versions/l10n/de_DE.php +++ b/apps/files_versions/l10n/de_DE.php @@ -1,4 +1,8 @@ "Erfolgreich", +"failure" => "Fehlgeschlagen", +"No old versions available" => "keine älteren Versionen verfügbar", +"No path specified" => "Kein Pfad angegeben", "History" => "Historie", "Files Versioning" => "Dateiversionierung", "Enable" => "Aktivieren" diff --git a/apps/files_versions/l10n/el.php b/apps/files_versions/l10n/el.php index 6b189c2cdd..8b7ecf085f 100644 --- a/apps/files_versions/l10n/el.php +++ b/apps/files_versions/l10n/el.php @@ -1,5 +1,13 @@ "Αδυναμία επαναφοράς του: %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" => "Δεν καθορίστηκε διαδρομή", "History" => "Ιστορικό", +"Revert a file to a previous version by clicking on its revert button" => "Επαναφορά ενός αρχείου σε προηγούμενη έκδοση πατώντας στο κουμπί επαναφοράς", "Files Versioning" => "Εκδόσεις Αρχείων", "Enable" => "Ενεργοποίηση" ); diff --git a/apps/files_versions/l10n/es.php b/apps/files_versions/l10n/es.php index 4a8c34e518..608e171a4b 100644 --- a/apps/files_versions/l10n/es.php +++ b/apps/files_versions/l10n/es.php @@ -1,5 +1,13 @@ "No se puede revertir: %s", +"success" => "exitoso", +"File %s was reverted to version %s" => "El archivo %s fue revertido a la version %s", +"failure" => "fallo", +"File %s could not be reverted to version %s" => "El archivo %s no puede ser revertido a la version %s", +"No old versions available" => "No hay versiones antiguas disponibles", +"No path specified" => "Ruta no especificada", "History" => "Historial", +"Revert a file to a previous version by clicking on its revert button" => "Revertir un archivo a una versión anterior haciendo clic en el boton de revertir", "Files Versioning" => "Versionado de archivos", "Enable" => "Habilitar" ); diff --git a/apps/files_versions/l10n/es_AR.php b/apps/files_versions/l10n/es_AR.php index 74d8907fc3..dc604e2a9c 100644 --- a/apps/files_versions/l10n/es_AR.php +++ b/apps/files_versions/l10n/es_AR.php @@ -1,5 +1,13 @@ "No se pudo revertir: %s ", +"success" => "Éxito", +"File %s was reverted to version %s" => "El archivo %s fue revertido a la versión %s", +"failure" => "error", +"File %s could not be reverted to version %s" => "El archivo %s no pudo ser revertido a la versión %s", +"No old versions available" => "No hay versiones antiguas disponibles", +"No path specified" => "Ruta de acceso no especificada", "History" => "Historia", +"Revert a file to a previous version by clicking on its revert button" => "Revertí un archivo a una versión anterior haciendo click en su botón de \"revertir\"", "Files Versioning" => "Versionado de archivos", "Enable" => "Activar" ); diff --git a/apps/files_versions/l10n/fr.php b/apps/files_versions/l10n/fr.php index 2d26b98860..6b2cf9ba6b 100644 --- a/apps/files_versions/l10n/fr.php +++ b/apps/files_versions/l10n/fr.php @@ -1,5 +1,13 @@ "Impossible de restaurer %s", +"success" => "succès", +"File %s was reverted to version %s" => "Le fichier %s a été restauré dans sa version %s", +"failure" => "échec", +"File %s could not be reverted to version %s" => "Le fichier %s ne peut être restauré dans sa version %s", +"No old versions available" => "Aucune ancienne version n'est disponible", +"No path specified" => "Aucun chemin spécifié", "History" => "Historique", +"Revert a file to a previous version by clicking on its revert button" => "Restaurez un fichier dans une version antérieure en cliquant sur son bouton de restauration", "Files Versioning" => "Versionnage des fichiers", "Enable" => "Activer" ); diff --git a/apps/files_versions/l10n/it.php b/apps/files_versions/l10n/it.php index c57b093011..3289f7f68d 100644 --- a/apps/files_versions/l10n/it.php +++ b/apps/files_versions/l10n/it.php @@ -1,5 +1,13 @@ "Impossibild ripristinare: %s", +"success" => "completata", +"File %s was reverted to version %s" => "Il file %s è stato ripristinato alla versione %s", +"failure" => "non riuscita", +"File %s could not be reverted to version %s" => "Il file %s non può essere ripristinato alla versione %s", +"No old versions available" => "Non sono disponibili versioni precedenti", +"No path specified" => "Nessun percorso specificato", "History" => "Cronologia", +"Revert a file to a previous version by clicking on its revert button" => "Ripristina un file a una versione precedente facendo clic sul rispettivo pulsante di ripristino", "Files Versioning" => "Controllo di versione dei file", "Enable" => "Abilita" ); diff --git a/apps/files_versions/l10n/ja_JP.php b/apps/files_versions/l10n/ja_JP.php index c97ba3d00e..1601876570 100644 --- a/apps/files_versions/l10n/ja_JP.php +++ b/apps/files_versions/l10n/ja_JP.php @@ -1,5 +1,13 @@ "元に戻せませんでした: %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" => "パスが指定されていません", "History" => "履歴", +"Revert a file to a previous version by clicking on its revert button" => "もとに戻すボタンをクリックすると、ファイルを過去のバージョンに戻します", "Files Versioning" => "ファイルのバージョン管理", "Enable" => "有効化" ); diff --git a/apps/files_versions/l10n/lv.php b/apps/files_versions/l10n/lv.php index ae2ead12f4..2203dc706b 100644 --- a/apps/files_versions/l10n/lv.php +++ b/apps/files_versions/l10n/lv.php @@ -1,5 +1,13 @@ "Nevarēja atgriezt — %s", +"success" => "veiksme", +"File %s was reverted to version %s" => "Datne %s tika atgriezt uz versiju %s", +"failure" => "neveiksme", +"File %s could not be reverted to version %s" => "Datni %s nevarēja atgriezt uz versiju %s", +"No old versions available" => "Nav pieejamu vecāku versiju", +"No path specified" => "Nav norādīts ceļš", "History" => "Vēsture", +"Revert a file to a previous version by clicking on its revert button" => "Atgriez datni uz iepriekšēju versiju, spiežot uz tās atgriešanas pogu", "Files Versioning" => "Datņu versiju izskošana", "Enable" => "Aktivēt" ); diff --git a/apps/files_versions/l10n/nl.php b/apps/files_versions/l10n/nl.php index cd147ca693..fb1cfc3533 100644 --- a/apps/files_versions/l10n/nl.php +++ b/apps/files_versions/l10n/nl.php @@ -1,5 +1,13 @@ "Kon niet terugdraaien: %s", +"success" => "succes", +"File %s was reverted to version %s" => "Bestand %s is teruggedraaid naar versie %s", +"failure" => "mislukking", +"File %s could not be reverted to version %s" => "Bestand %s kon niet worden teruggedraaid naar versie %s", +"No old versions available" => "Geen oudere versies beschikbaar", +"No path specified" => "Geen pad opgegeven", "History" => "Geschiedenis", +"Revert a file to a previous version by clicking on its revert button" => "Draai een bestand terug naar een voorgaande versie door te klikken op de terugdraai knop", "Files Versioning" => "Bestand versies", "Enable" => "Activeer" ); diff --git a/apps/files_versions/l10n/pt_PT.php b/apps/files_versions/l10n/pt_PT.php index dc1bde08ca..629809f955 100644 --- a/apps/files_versions/l10n/pt_PT.php +++ b/apps/files_versions/l10n/pt_PT.php @@ -1,5 +1,13 @@ "Não foi possível reverter: %s", +"success" => "Sucesso", +"File %s was reverted to version %s" => "O ficheiro %s foi revertido para a versão %s", +"failure" => "Falha", +"File %s could not be reverted to version %s" => "Não foi possível reverter o ficheiro %s para a versão %s", +"No old versions available" => "Não existem versões mais antigas", +"No path specified" => "Nenhum caminho especificado", "History" => "Histórico", +"Revert a file to a previous version by clicking on its revert button" => "Reverter um ficheiro para uma versão anterior clicando no seu botão reverter.", "Files Versioning" => "Versionamento de Ficheiros", "Enable" => "Activar" ); diff --git a/apps/files_versions/l10n/ru.php b/apps/files_versions/l10n/ru.php index 4c7fb50109..221d24ce8d 100644 --- a/apps/files_versions/l10n/ru.php +++ b/apps/files_versions/l10n/ru.php @@ -1,5 +1,13 @@ "Не может быть возвращён: %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" => "Путь не указан", "History" => "История", +"Revert a file to a previous version by clicking on its revert button" => "Вернуть файл к предыдущей версии нажатием на кнопку возврата", "Files Versioning" => "Версии файлов", "Enable" => "Включить" ); diff --git a/apps/files_versions/l10n/sk_SK.php b/apps/files_versions/l10n/sk_SK.php index a3a3567cb4..8b46e93bb9 100644 --- a/apps/files_versions/l10n/sk_SK.php +++ b/apps/files_versions/l10n/sk_SK.php @@ -1,5 +1,13 @@ "Nemožno obnoviť: %s", +"success" => "úspech", +"File %s was reverted to version %s" => "Súbor %s bol obnovený na verziu %s", +"failure" => "chyba", +"File %s could not be reverted to version %s" => "Súbor %s nemohol byť obnovený na verziu %s", +"No old versions available" => "Nie sú dostupné žiadne staršie verzie", +"No path specified" => "Nevybrali ste cestu", "History" => "História", +"Revert a file to a previous version by clicking on its revert button" => "Obnovte súbor do predošlej verzie kliknutím na tlačítko obnoviť", "Files Versioning" => "Vytváranie verzií súborov", "Enable" => "Zapnúť" ); diff --git a/apps/files_versions/l10n/sv.php b/apps/files_versions/l10n/sv.php index 6788d1fb0f..853644848f 100644 --- a/apps/files_versions/l10n/sv.php +++ b/apps/files_versions/l10n/sv.php @@ -1,5 +1,13 @@ "Kunde inte återställa: %s", +"success" => "lyckades", +"File %s was reverted to version %s" => "Filen %s återställdes till version %s", +"failure" => "misslyckades", +"File %s could not be reverted to version %s" => "Filen %s kunde inte återställas till version %s", +"No old versions available" => "Inga gamla versioner finns tillgängliga", +"No path specified" => "Ingen sökväg angiven", "History" => "Historik", +"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", "Files Versioning" => "Versionshantering av filer", "Enable" => "Aktivera" ); diff --git a/apps/files_versions/l10n/vi.php b/apps/files_versions/l10n/vi.php index bb7163f6b1..675cb841c7 100644 --- a/apps/files_versions/l10n/vi.php +++ b/apps/files_versions/l10n/vi.php @@ -1,5 +1,13 @@ "Không thể khôi phục: %s", +"success" => "thành công", +"File %s was reverted to version %s" => "File %s đã được khôi phục về phiên bản %s", +"failure" => "Thất bại", +"File %s could not be reverted to version %s" => "File %s không thể khôi phục về phiên bản %s", +"No old versions available" => "Không có phiên bản cũ nào", +"No path specified" => "Không chỉ ra đường dẫn rõ ràng", "History" => "Lịch sử", +"Revert a file to a previous version by clicking on its revert button" => "Khôi phục một file về phiên bản trước đó bằng cách click vào nút Khôi phục tương ứng", "Files Versioning" => "Phiên bản tập tin", "Enable" => "Bật " ); diff --git a/apps/files_versions/templates/history.php b/apps/files_versions/templates/history.php index cc5a494f19..850ece89c9 100644 --- a/apps/files_versions/templates/history.php +++ b/apps/files_versions/templates/history.php @@ -17,7 +17,7 @@ if( isset( $_['message'] ) ) { } echo( 'Versions of '.$_['path'] ).'
'; - echo('

Revert a file to a previous version by clicking on its revert button


'); + echo('

'.$l->t('Revert a file to a previous version by clicking on its revert button').'


'); foreach ( $_['versions'] as $v ) { echo ' '; diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php index f9681e38e6..bc32d4ef4c 100644 --- a/apps/user_ldap/appinfo/update.php +++ b/apps/user_ldap/appinfo/update.php @@ -87,4 +87,8 @@ if(!isset($connector)) { } //it is required, that connections do have ldap_configuration_active setting stored in the database $connector->getConfiguration(); -$connector->saveConfiguration(); \ No newline at end of file +$connector->saveConfiguration(); + +// we don't save it anymore, was a well-meant bad idea. Clean up database. +$query = OC_DB::prepare('DELETE FROM `*PREFIX*preferences` WHERE `appid` = ? AND `configkey` = ?'); +$query->execute(array('user_ldap' , 'homedir')); diff --git a/apps/user_ldap/appinfo/version b/apps/user_ldap/appinfo/version index 705e30728e..e4d93c8d61 100644 --- a/apps/user_ldap/appinfo/version +++ b/apps/user_ldap/appinfo/version @@ -1 +1 @@ -0.3.9.0 \ No newline at end of file +0.3.9.4 \ No newline at end of file diff --git a/apps/user_ldap/l10n/bn_BD.php b/apps/user_ldap/l10n/bn_BD.php index 6c347eab87..69dfc89617 100644 --- a/apps/user_ldap/l10n/bn_BD.php +++ b/apps/user_ldap/l10n/bn_BD.php @@ -18,7 +18,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "কোন স্থান ধারক ব্যতীত, উদাহরণঃ\"objectClass=posixGroup\"।", "Port" => "পোর্ট", "Use TLS" => "TLS ব্যবহার কর", -"Do not use it for SSL connections, it will fail." => "SSL সংযোগের জন্য এটি ব্যবহার করবেন না, তাহলে ব্যর্থ হবেনই।", "Case insensitve LDAP server (Windows)" => "বর্ণ অসংবেদী LDAP সার্ভার (উইন্ডোজ)", "Turn off SSL certificate validation." => "SSL সনদপত্র যাচাইকরণ বন্ধ রাক।", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "শুধুমাত্র যদি এই বিকল্পটি ব্যবহার করেই সংযোগ কার্যকরী হয় তবে আপনার ownCloud সার্ভারে LDAP সার্ভারের SSL সনদপত্রটি আমদানি করুন।", diff --git a/apps/user_ldap/l10n/ca.php b/apps/user_ldap/l10n/ca.php index 5cf03b6787..e4f27e25a7 100644 --- a/apps/user_ldap/l10n/ca.php +++ b/apps/user_ldap/l10n/ca.php @@ -43,7 +43,7 @@ "Disable Main Server" => "Desactiva el servidor principal", "When switched on, ownCloud will only connect to the replica server." => "Quan està connectat, ownCloud només es connecta al servidor de la rèplica.", "Use TLS" => "Usa TLS", -"Do not use it for SSL connections, it will fail." => "No ho useu en connexions SSL, fallarà.", +"Do not use it additionally for LDAPS connections, it will fail." => "No ho useu adicionalment per a conexions LDAPS, fallarà.", "Case insensitve LDAP server (Windows)" => "Servidor LDAP sense distinció entre majúscules i minúscules (Windows)", "Turn off SSL certificate validation." => "Desactiva la validació de certificat SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Si la connexió només funciona amb aquesta opció, importeu el certificat SSL del servidor LDAP en el vostre servidor ownCloud.", diff --git a/apps/user_ldap/l10n/cs_CZ.php b/apps/user_ldap/l10n/cs_CZ.php index 0aace1f741..4c74f195cf 100644 --- a/apps/user_ldap/l10n/cs_CZ.php +++ b/apps/user_ldap/l10n/cs_CZ.php @@ -43,7 +43,7 @@ "Disable Main Server" => "Zakázat hlavní serveru", "When switched on, ownCloud will only connect to the replica server." => "Při zapnutí se ownCloud připojí pouze k záložnímu serveru", "Use TLS" => "Použít TLS", -"Do not use it for SSL connections, it will fail." => "Nepoužívejte pro připojení pomocí SSL, připojení selže.", +"Do not use it additionally for LDAPS connections, it will fail." => "Nepoužívejte pro spojení LDAP, selže.", "Case insensitve LDAP server (Windows)" => "LDAP server nerozlišující velikost znaků (Windows)", "Turn off SSL certificate validation." => "Vypnout ověřování SSL certifikátu.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Pokud připojení pracuje pouze s touto možností, tak importujte SSL certifikát SSL serveru do Vašeho serveru ownCloud", diff --git a/apps/user_ldap/l10n/da.php b/apps/user_ldap/l10n/da.php index dd7fb8a1a0..9329c4e8a2 100644 --- a/apps/user_ldap/l10n/da.php +++ b/apps/user_ldap/l10n/da.php @@ -14,7 +14,6 @@ "Defines the filter to apply, when retrieving groups." => "Definere filteret der bruges når der indlæses grupper.", "Port" => "Port", "Use TLS" => "Brug TLS", -"Do not use it for SSL connections, it will fail." => "Brug ikke til SSL forbindelser, da den vil fejle.", "Turn off SSL certificate validation." => "Deaktiver SSL certifikat validering", "Not recommended, use for testing only." => "Anbefales ikke, brug kun for at teste.", "User Display Name Field" => "User Display Name Field", diff --git a/apps/user_ldap/l10n/de.php b/apps/user_ldap/l10n/de.php index df680465c9..618e7a3245 100644 --- a/apps/user_ldap/l10n/de.php +++ b/apps/user_ldap/l10n/de.php @@ -23,7 +23,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "ohne Platzhalter, z.B.: \"objectClass=posixGroup\"", "Port" => "Port", "Use TLS" => "Nutze TLS", -"Do not use it for SSL connections, it will fail." => "Verwende dies nicht für SSL-Verbindungen, es wird fehlschlagen.", "Case insensitve LDAP server (Windows)" => "LDAP-Server (Windows: Groß- und Kleinschreibung bleibt unbeachtet)", "Turn off SSL certificate validation." => "Schalte die SSL-Zertifikatsprüfung aus.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Falls die Verbindung es erfordert, muss das SSL-Zertifikat des LDAP-Server importiert werden.", diff --git a/apps/user_ldap/l10n/de_DE.php b/apps/user_ldap/l10n/de_DE.php index 1b47cfec2a..7d3847f8a8 100644 --- a/apps/user_ldap/l10n/de_DE.php +++ b/apps/user_ldap/l10n/de_DE.php @@ -43,7 +43,6 @@ "Disable Main Server" => "Hauptserver deaktivieren", "When switched on, ownCloud will only connect to the replica server." => "Wenn eingeschaltet wird sich ownCloud nur mit dem Replilat-Server verbinden.", "Use TLS" => "Nutze TLS", -"Do not use it for SSL connections, it will fail." => "Verwenden Sie dies nicht für SSL-Verbindungen, es wird fehlschlagen.", "Case insensitve LDAP server (Windows)" => "LDAP-Server (Windows: Groß- und Kleinschreibung bleibt unbeachtet)", "Turn off SSL certificate validation." => "Schalten Sie die SSL-Zertifikatsprüfung aus.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Falls die Verbindung es erfordert, muss das SSL-Zertifikat des LDAP-Server importiert werden.", diff --git a/apps/user_ldap/l10n/el.php b/apps/user_ldap/l10n/el.php index 3951c94dfa..7c0940dc09 100644 --- a/apps/user_ldap/l10n/el.php +++ b/apps/user_ldap/l10n/el.php @@ -20,7 +20,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "χωρίς κάποια μεταβλητή, π.χ. \"objectClass=ΟμάδαPosix\".", "Port" => "Θύρα", "Use TLS" => "Χρήση TLS", -"Do not use it for SSL connections, it will fail." => "Μην χρησιμοποιείτε για συνδέσεις SSL, θα αποτύχει.", "Case insensitve LDAP server (Windows)" => "LDAP server (Windows) με διάκριση πεζών-ΚΕΦΑΛΑΙΩΝ", "Turn off SSL certificate validation." => "Απενεργοποίηση επικύρωσης πιστοποιητικού SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Εάν η σύνδεση δουλεύει μόνο με αυτή την επιλογή, εισάγετε το LDAP SSL πιστοποιητικό του διακομιστή στον ownCloud server σας.", diff --git a/apps/user_ldap/l10n/eo.php b/apps/user_ldap/l10n/eo.php index 2a2b70603c..3ffcbddb3e 100644 --- a/apps/user_ldap/l10n/eo.php +++ b/apps/user_ldap/l10n/eo.php @@ -17,7 +17,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "sen ajna referencilo, ekz.: \"objectClass=posixGroup\".", "Port" => "Pordo", "Use TLS" => "Uzi TLS-on", -"Do not use it for SSL connections, it will fail." => "Ne uzu ĝin por SSL-konektoj, ĝi malsukcesos.", "Case insensitve LDAP server (Windows)" => "LDAP-servilo blinda je litergrandeco (Vindozo)", "Turn off SSL certificate validation." => "Malkapabligi validkontrolon de SSL-atestiloj.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se la konekto nur funkcias kun ĉi tiu malnepro, enportu la SSL-atestilo de la LDAP-servilo en via ownCloud-servilo.", diff --git a/apps/user_ldap/l10n/es.php b/apps/user_ldap/l10n/es.php index 3740d13e22..c0a444c0c7 100644 --- a/apps/user_ldap/l10n/es.php +++ b/apps/user_ldap/l10n/es.php @@ -43,7 +43,7 @@ "Disable Main Server" => "Deshabilitar servidor principal", "When switched on, ownCloud will only connect to the replica server." => "Cuando se inicie, ownCloud unicamente estara conectado al servidor replica", "Use TLS" => "Usar TLS", -"Do not use it for SSL connections, it will fail." => "No usarlo para SSL, habrá error.", +"Do not use it additionally for LDAPS connections, it will fail." => "No usar adicionalmente para conecciones LDAPS, estas fallaran", "Case insensitve LDAP server (Windows)" => "Servidor de LDAP sensible a mayúsculas/minúsculas (Windows)", "Turn off SSL certificate validation." => "Apagar la validación por certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Si la conexión sólo funciona con esta opción, importe el certificado SSL del servidor LDAP en su servidor ownCloud.", diff --git a/apps/user_ldap/l10n/es_AR.php b/apps/user_ldap/l10n/es_AR.php index 28bc318a52..b0e7ec12b2 100644 --- a/apps/user_ldap/l10n/es_AR.php +++ b/apps/user_ldap/l10n/es_AR.php @@ -1,7 +1,10 @@ "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, 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", "Connection test succeeded" => "El este de conexión ha sido completado satisfactoriamente", @@ -32,10 +35,15 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "Sin ninguna plantilla, p. ej.: \"objectClass=posixGroup\".", "Connection Settings" => "Configuración de Conección", "Configuration Active" => "Configuración activa", +"When unchecked, this configuration will be skipped." => "Si no está seleccionada, esta configuración será omitida.", "Port" => "Puerto", +"Backup (Replica) Host" => "Host para copia de seguridad (réplica)", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Dar un servidor de copia de seguridad opcional. Debe ser una réplica del servidor principal LDAP/AD.", +"Backup (Replica) Port" => "Puerto para copia de seguridad (réplica)", "Disable Main Server" => "Deshabilitar el Servidor Principal", +"When switched on, ownCloud will only connect to the replica server." => "Al comenzar, ownCloud se conectará únicamente al servidor réplica", "Use TLS" => "Usar TLS", -"Do not use it for SSL connections, it will fail." => "No usarlo para SSL, dará error.", +"Do not use it additionally for LDAPS connections, it will fail." => "No usar adicionalmente para conexiones LDAPS, las mismas fallarán", "Case insensitve LDAP server (Windows)" => "Servidor de LDAP sensible a mayúsculas/minúsculas (Windows)", "Turn off SSL certificate validation." => "Desactivar la validación por certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Si la conexión sólo funciona con esta opción, importá el certificado SSL del servidor LDAP en tu servidor ownCloud.", @@ -46,10 +54,13 @@ "The LDAP attribute to use to generate the user`s ownCloud name." => "El atributo LDAP a usar para generar el nombre de usuario de ownCloud.", "Base User Tree" => "Árbol base de usuario", "One User Base DN per line" => "Una DN base de usuario por línea", +"User Search Attributes" => "Atributos de la búsqueda de usuario", +"Optional; one attribute per line" => "Opcional; un atributo por linea", "Group Display Name Field" => "Campo de nombre de grupo a mostrar", "The LDAP attribute to use to generate the groups`s ownCloud name." => "El atributo LDAP a usar para generar el nombre de los grupos de ownCloud.", "Base Group Tree" => "Árbol base de grupo", "One Group Base DN per line" => "Una DN base de grupo por línea", +"Group Search Attributes" => "Atributos de búsqueda de grupo", "Group-Member association" => "Asociación Grupo-Miembro", "Special Attributes" => "Atributos Especiales", "in bytes" => "en bytes", diff --git a/apps/user_ldap/l10n/et_EE.php b/apps/user_ldap/l10n/et_EE.php index ba03a8a809..91eb38c7c5 100644 --- a/apps/user_ldap/l10n/et_EE.php +++ b/apps/user_ldap/l10n/et_EE.php @@ -19,7 +19,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "ilma ühegi kohatäitjata, nt. \"objectClass=posixGroup\".", "Port" => "Port", "Use TLS" => "Kasutaja TLS", -"Do not use it for SSL connections, it will fail." => "Ära kasuta seda SSL ühenduse jaoks, see ei toimi.", "Case insensitve LDAP server (Windows)" => "Mittetõstutundlik LDAP server (Windows)", "Turn off SSL certificate validation." => "Lülita SSL sertifikaadi kontrollimine välja.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Kui ühendus toimib ainult selle valikuga, siis impordi LDAP serveri SSL sertifikaat oma ownCloud serverisse.", diff --git a/apps/user_ldap/l10n/eu.php b/apps/user_ldap/l10n/eu.php index 2aad2363ce..97c23f8648 100644 --- a/apps/user_ldap/l10n/eu.php +++ b/apps/user_ldap/l10n/eu.php @@ -22,7 +22,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "txantiloirik gabe, adb. \"objectClass=posixGroup\".", "Port" => "Portua", "Use TLS" => "Erabili TLS", -"Do not use it for SSL connections, it will fail." => "Ez erabili SSL konexioetan, huts egingo du.", "Case insensitve LDAP server (Windows)" => "Maiuskulak eta minuskulak ezberditzen ez dituen LDAP zerbitzaria (windows)", "Turn off SSL certificate validation." => "Ezgaitu SSL ziurtagirien egiaztapena.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Konexioa aukera hau ezinbestekoa badu, inportatu LDAP zerbitzariaren SSL ziurtagiria zure ownCloud zerbitzarian.", diff --git a/apps/user_ldap/l10n/fi_FI.php b/apps/user_ldap/l10n/fi_FI.php index 4f8fd3f2d1..1c2a92f844 100644 --- a/apps/user_ldap/l10n/fi_FI.php +++ b/apps/user_ldap/l10n/fi_FI.php @@ -19,7 +19,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "ilman paikanvaraustermiä, ts. \"objectClass=posixGroup\".", "Port" => "Portti", "Use TLS" => "Käytä TLS:ää", -"Do not use it for SSL connections, it will fail." => "Älä käytä SSL-yhteyttä varten, se epäonnistuu. ", "Case insensitve LDAP server (Windows)" => "Kirjainkoosta piittamaton LDAP-palvelin (Windows)", "Turn off SSL certificate validation." => "Poista käytöstä SSL-varmenteen vahvistus", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Jos yhteys toimii vain tällä valinnalla, siirrä LDAP-palvelimen SSL-varmenne ownCloud-palvelimellesi.", diff --git a/apps/user_ldap/l10n/fr.php b/apps/user_ldap/l10n/fr.php index 9bb350ea23..abe1363569 100644 --- a/apps/user_ldap/l10n/fr.php +++ b/apps/user_ldap/l10n/fr.php @@ -43,7 +43,7 @@ "Disable Main Server" => "Désactiver le serveur principal", "When switched on, ownCloud will only connect to the replica server." => "Lorsqu'activé, ownCloud ne se connectera qu'au serveur répliqué.", "Use TLS" => "Utiliser TLS", -"Do not use it for SSL connections, it will fail." => "Ne pas utiliser pour les connexions SSL, car cela échouera.", +"Do not use it additionally for LDAPS connections, it will fail." => "À ne pas utiliser pour les connexions LDAPS (cela échouera).", "Case insensitve LDAP server (Windows)" => "Serveur LDAP insensible à la casse (Windows)", "Turn off SSL certificate validation." => "Désactiver la validation du certificat SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Si la connexion ne fonctionne qu'avec cette option, importez le certificat SSL du serveur LDAP dans le serveur ownCloud.", diff --git a/apps/user_ldap/l10n/gl.php b/apps/user_ldap/l10n/gl.php index a2531a40a8..36c1f7af11 100644 --- a/apps/user_ldap/l10n/gl.php +++ b/apps/user_ldap/l10n/gl.php @@ -20,7 +20,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "sen ningunha marca de posición, como p.ex «objectClass=grupoPosix».", "Port" => "Porto", "Use TLS" => "Usar TLS", -"Do not use it for SSL connections, it will fail." => "Non empregalo para conexións SSL: fallará.", "Case insensitve LDAP server (Windows)" => "Servidor LDAP que non distingue entre maiúsculas e minúsculas (Windows)", "Turn off SSL certificate validation." => "Desactiva a validación do certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a conexión só funciona con esta opción importa o certificado SSL do servidor LDAP no seu servidor ownCloud.", diff --git a/apps/user_ldap/l10n/hu_HU.php b/apps/user_ldap/l10n/hu_HU.php index 64de16fa65..48a0823a58 100644 --- a/apps/user_ldap/l10n/hu_HU.php +++ b/apps/user_ldap/l10n/hu_HU.php @@ -22,7 +22,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "itt ne használjunk változót, pl. \"objectClass=posixGroup\".", "Port" => "Port", "Use TLS" => "Használjunk TLS-t", -"Do not use it for SSL connections, it will fail." => "Ne használjuk SSL-kapcsolat esetén, mert nem fog működni!", "Case insensitve LDAP server (Windows)" => "Az LDAP-kiszolgáló nem tesz különbséget a kis- és nagybetűk között (Windows)", "Turn off SSL certificate validation." => "Ne ellenőrizzük az SSL-tanúsítvány érvényességét", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Ha a kapcsolat csak ezzel a beállítással működik, akkor importálja az LDAP-kiszolgáló SSL tanúsítványát az ownCloud kiszolgálóra!", diff --git a/apps/user_ldap/l10n/id.php b/apps/user_ldap/l10n/id.php index 33e8cc70e9..c07892386d 100644 --- a/apps/user_ldap/l10n/id.php +++ b/apps/user_ldap/l10n/id.php @@ -6,7 +6,6 @@ "Group Filter" => "saringan grup", "Port" => "port", "Use TLS" => "gunakan TLS", -"Do not use it for SSL connections, it will fail." => "jangan gunakan untuk koneksi SSL, itu akan gagal.", "Turn off SSL certificate validation." => "matikan validasi sertivikat SSL", "Not recommended, use for testing only." => "tidak disarankan, gunakan hanya untuk pengujian.", "in seconds. A change empties the cache." => "dalam detik. perubahan mengosongkan cache", diff --git a/apps/user_ldap/l10n/it.php b/apps/user_ldap/l10n/it.php index 0220aa958c..594529190d 100644 --- a/apps/user_ldap/l10n/it.php +++ b/apps/user_ldap/l10n/it.php @@ -43,7 +43,7 @@ "Disable Main Server" => "Disabilita server principale", "When switched on, ownCloud will only connect to the replica server." => "Se abilitata, ownCloud si collegherà solo al server di replica.", "Use TLS" => "Usa TLS", -"Do not use it for SSL connections, it will fail." => "Non utilizzare per le connessioni SSL, fallirà.", +"Do not use it additionally for LDAPS connections, it will fail." => "Da non utilizzare per le connessioni LDAPS, non funzionerà.", "Case insensitve LDAP server (Windows)" => "Case insensitve LDAP server (Windows)", "Turn off SSL certificate validation." => "Disattiva il controllo del certificato SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se la connessione funziona esclusivamente con questa opzione, importa il certificato SSL del server LDAP nel tuo server ownCloud.", diff --git a/apps/user_ldap/l10n/ja_JP.php b/apps/user_ldap/l10n/ja_JP.php index 7706357cbf..11ad6cc7a3 100644 --- a/apps/user_ldap/l10n/ja_JP.php +++ b/apps/user_ldap/l10n/ja_JP.php @@ -43,7 +43,7 @@ "Disable Main Server" => "メインサーバを無効にする", "When switched on, ownCloud will only connect to the replica server." => "有効にすると、ownCloudはレプリカサーバにのみ接続します。", "Use TLS" => "TLSを利用", -"Do not use it for SSL connections, it will fail." => "SSL接続に利用しないでください、失敗します。", +"Do not use it additionally for LDAPS connections, it will fail." => "LDAPS接続のために追加でそれを利用しないで下さい。失敗します。", "Case insensitve LDAP server (Windows)" => "大文字/小文字を区別しないLDAPサーバ(Windows)", "Turn off SSL certificate validation." => "SSL証明書の確認を無効にする。", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "接続がこのオプションでのみ動作する場合は、LDAPサーバのSSL証明書をownCloudサーバにインポートしてください。", diff --git a/apps/user_ldap/l10n/ko.php b/apps/user_ldap/l10n/ko.php index 9ff8ff99d0..8aa9fe74b3 100644 --- a/apps/user_ldap/l10n/ko.php +++ b/apps/user_ldap/l10n/ko.php @@ -1,5 +1,8 @@ "삭제 실패", +"Keep settings?" => "설정을 유지합니까?", +"Connection test succeeded" => "연결 시험 성공", +"Connection test failed" => "연결 시험 실패", "Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "경고: user_ldap 앱과 user_webdavauth 앱은 호환되지 않습니다. 오동작을 일으킬 수 있으므로, 시스템 관리자에게 요청하여 둘 중 하나만 사용하도록 하십시오.", "Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "경고: PHP LDAP 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. 백엔드를 사용할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", "Host" => "호스트", @@ -20,22 +23,29 @@ "Group Filter" => "그룹 필터", "Defines the filter to apply, when retrieving groups." => "그룹을 검색할 때 적용할 필터를 정의합니다.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "자리 비움자를 사용할 수 없습니다. 예제: \"objectClass=posixGroup\"", +"Connection Settings" => "연결 설정", +"Configuration Active" => "구성 활성화", "Port" => "포트", +"Backup (Replica) Host" => "백업 (복제) 포트", +"Backup (Replica) Port" => "백업 (복제) 포트", +"Disable Main Server" => "주 서버 비활성화", "Use TLS" => "TLS 사용", -"Do not use it for SSL connections, it will fail." => "SSL 연결 시 사용하는 경우 연결되지 않습니다.", "Case insensitve LDAP server (Windows)" => "서버에서 대소문자를 구분하지 않음 (Windows)", "Turn off SSL certificate validation." => "SSL 인증서 유효성 검사를 해제합니다.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "이 옵션을 사용해야 연결할 수 있는 경우에는 LDAP 서버의 SSL 인증서를 ownCloud로 가져올 수 있습니다.", "Not recommended, use for testing only." => "추천하지 않음, 테스트로만 사용하십시오.", "in seconds. A change empties the cache." => "초. 항목 변경 시 캐시가 갱신됩니다.", +"Directory Settings" => "디렉토리 설정", "User Display Name Field" => "사용자의 표시 이름 필드", "The LDAP attribute to use to generate the user`s ownCloud name." => "LDAP 속성은 사용자의 ownCloud 이름을 생성하기 위해 사용합니다.", "Base User Tree" => "기본 사용자 트리", "One User Base DN per line" => "사용자 DN을 한 줄에 하나씩 입력하십시오", +"User Search Attributes" => "사용자 검색 속성", "Group Display Name Field" => "그룹의 표시 이름 필드", "The LDAP attribute to use to generate the groups`s ownCloud name." => "LDAP 속성은 그룹의 ownCloud 이름을 생성하기 위해 사용합니다.", "Base Group Tree" => "기본 그룹 트리", "One Group Base DN per line" => "그룹 기본 DN을 한 줄에 하나씩 입력하십시오", +"Group Search Attributes" => "그룹 검색 속성", "Group-Member association" => "그룹-회원 연결", "in bytes" => "바이트", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "사용자 이름을 사용하려면 비워 두십시오(기본값). 기타 경우 LDAP/AD 속성을 지정하십시오.", diff --git a/apps/user_ldap/l10n/lv.php b/apps/user_ldap/l10n/lv.php index 48cee737c7..34e9196b8d 100644 --- a/apps/user_ldap/l10n/lv.php +++ b/apps/user_ldap/l10n/lv.php @@ -43,7 +43,7 @@ "Disable Main Server" => "Deaktivēt galveno serveri", "When switched on, ownCloud will only connect to the replica server." => "Kad ieslēgts, ownCloud savienosies tikai ar kopijas serveri.", "Use TLS" => "Lietot TLS", -"Do not use it for SSL connections, it will fail." => "Neizmanto to SSL savienojumiem, tas neizdosies.", +"Do not use it additionally for LDAPS connections, it will fail." => "Neizmanto papildu LDAPS savienojumus! Tas nestrādās.", "Case insensitve LDAP server (Windows)" => "Reģistrnejutīgs LDAP serveris (Windows)", "Turn off SSL certificate validation." => "Izslēgt SSL sertifikātu validēšanu.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Ja savienojums darbojas ar šo opciju, importē LDAP serveru SSL sertifikātu savā ownCloud serverī.", diff --git a/apps/user_ldap/l10n/nb_NO.php b/apps/user_ldap/l10n/nb_NO.php index 295166b0a5..8aab71354b 100644 --- a/apps/user_ldap/l10n/nb_NO.php +++ b/apps/user_ldap/l10n/nb_NO.php @@ -4,7 +4,6 @@ "Group Filter" => "Gruppefilter", "Port" => "Port", "Use TLS" => "Bruk TLS", -"Do not use it for SSL connections, it will fail." => "Ikke bruk for SSL tilkoblinger, dette vil ikke fungere.", "Not recommended, use for testing only." => "Ikke anbefalt, bruk kun for testing", "in seconds. A change empties the cache." => "i sekunder. En endring tømmer bufferen.", "in bytes" => "i bytes", diff --git a/apps/user_ldap/l10n/nl.php b/apps/user_ldap/l10n/nl.php index cc5e85fc30..0eda263aa1 100644 --- a/apps/user_ldap/l10n/nl.php +++ b/apps/user_ldap/l10n/nl.php @@ -1,6 +1,7 @@ "Verwijderen serverconfiguratie mislukt", "The configuration is valid and the connection could be established!" => "De configuratie is geldig en de verbinding is geslaagd!", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "De configuratie is geldig, maar Bind mislukte. Controleer de serverinstellingen en inloggegevens.", "The configuration is invalid. Please look in the ownCloud log for further details." => "De configuratie is ongeldig. Controleer de ownCloud log voor meer details.", "Deletion failed" => "Verwijderen mislukt", "Take over settings from recent server configuration?" => "Overnemen instellingen van de recente serverconfiguratie?", @@ -32,29 +33,36 @@ "Group Filter" => "Groep Filter", "Defines the filter to apply, when retrieving groups." => "Definiëerd de toe te passen filter voor het ophalen van groepen.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "zonder een placeholder, bijv. \"objectClass=posixGroup\"", +"Connection Settings" => "Verbindingsinstellingen", "Configuration Active" => "Configuratie actief", +"When unchecked, this configuration will be skipped." => "Als dit niet is ingeschakeld wordt deze configuratie overgeslagen.", "Port" => "Poort", "Backup (Replica) Host" => "Backup (Replica) Host", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Opgeven optionele backup host. Het moet een replica van de hoofd LDAP/AD server.", "Backup (Replica) Port" => "Backup (Replica) Poort", "Disable Main Server" => "Deactiveren hoofdserver", "When switched on, ownCloud will only connect to the replica server." => "Wanneer ingeschakeld, zal ownCloud allen verbinden met de replicaserver.", "Use TLS" => "Gebruik TLS", -"Do not use it for SSL connections, it will fail." => "Gebruik niet voor SSL connecties, deze mislukken.", +"Do not use it additionally for LDAPS connections, it will fail." => "Gebruik het niet voor LDAPS verbindingen, dat gaat niet lukken.", "Case insensitve LDAP server (Windows)" => "Niet-hoofdlettergevoelige LDAP server (Windows)", "Turn off SSL certificate validation." => "Schakel SSL certificaat validatie uit.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Als de connectie alleen werkt met deze optie, importeer dan het LDAP server SSL certificaat naar je ownCloud server.", "Not recommended, use for testing only." => "Niet aangeraden, gebruik alleen voor test doeleinden.", "in seconds. A change empties the cache." => "in seconden. Een verandering maakt de cache leeg.", +"Directory Settings" => "Mapinstellingen", "User Display Name Field" => "Gebruikers Schermnaam Veld", "The LDAP attribute to use to generate the user`s ownCloud name." => "Het te gebruiken LDAP attribuut voor het genereren van de ownCloud naam voor de gebruikers.", "Base User Tree" => "Basis Gebruikers Structuur", "One User Base DN per line" => "Een User Base DN per regel", +"User Search Attributes" => "Attributen voor gebruikerszoekopdrachten", "Optional; one attribute per line" => "Optioneel; één attribuut per regel", "Group Display Name Field" => "Groep Schermnaam Veld", "The LDAP attribute to use to generate the groups`s ownCloud name." => "Het te gebruiken LDAP attribuut voor het genereren van de ownCloud naam voor de groepen.", "Base Group Tree" => "Basis Groupen Structuur", "One Group Base DN per line" => "Een Group Base DN per regel", +"Group Search Attributes" => "Attributen voor groepszoekopdrachten", "Group-Member association" => "Groepslid associatie", +"Special Attributes" => "Speciale attributen", "in bytes" => "in bytes", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Laat leeg voor de gebruikersnaam (standaard). Of, specificeer een LDAP/AD attribuut.", "Help" => "Help" diff --git a/apps/user_ldap/l10n/pl.php b/apps/user_ldap/l10n/pl.php index 83a8d1615a..ef3f9140ef 100644 --- a/apps/user_ldap/l10n/pl.php +++ b/apps/user_ldap/l10n/pl.php @@ -20,7 +20,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "bez żadnych symboli zastępczych np. \"objectClass=posixGroup\".", "Port" => "Port", "Use TLS" => "Użyj TLS", -"Do not use it for SSL connections, it will fail." => "Nie używaj SSL dla połączeń, jeśli się nie powiedzie.", "Case insensitve LDAP server (Windows)" => "Wielkość liter serwera LDAP (Windows)", "Turn off SSL certificate validation." => "Wyłączyć sprawdzanie poprawności certyfikatu SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Jeśli połączenie działa tylko z tą opcją, zaimportuj certyfikat SSL serwera LDAP w serwerze ownCloud.", diff --git a/apps/user_ldap/l10n/pt_BR.php b/apps/user_ldap/l10n/pt_BR.php index 79e56eeb65..514ceb7027 100644 --- a/apps/user_ldap/l10n/pt_BR.php +++ b/apps/user_ldap/l10n/pt_BR.php @@ -19,7 +19,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "sem nenhum espaço reservado, ex. \"objectClass=posixGroup\"", "Port" => "Porta", "Use TLS" => "Usar TLS", -"Do not use it for SSL connections, it will fail." => "Não use-o para conexões SSL, pois falhará.", "Case insensitve LDAP server (Windows)" => "Servidor LDAP sensível à caixa alta (Windows)", "Turn off SSL certificate validation." => "Desligar validação de certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a conexão só funciona com essa opção, importe o certificado SSL do servidor LDAP no seu servidor ownCloud.", diff --git a/apps/user_ldap/l10n/pt_PT.php b/apps/user_ldap/l10n/pt_PT.php index 21735b497c..bfe6656b3b 100644 --- a/apps/user_ldap/l10n/pt_PT.php +++ b/apps/user_ldap/l10n/pt_PT.php @@ -33,6 +33,7 @@ "Group Filter" => "Filtrar por grupo", "Defines the filter to apply, when retrieving groups." => "Defina o filtro a aplicar, ao recuperar grupos.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "Sem nenhuma variável. Exemplo: \"objectClass=posixGroup\".", +"Connection Settings" => "Definições de ligação", "Configuration Active" => "Configuração activa", "When unchecked, this configuration will be skipped." => "Se não estiver marcada, esta definição não será tida em conta.", "Port" => "Porto", @@ -42,12 +43,13 @@ "Disable Main Server" => "Desactivar servidor principal", "When switched on, ownCloud will only connect to the replica server." => "Se estiver ligado, o ownCloud vai somente ligar-se a este servidor de réplicas.", "Use TLS" => "Usar TLS", -"Do not use it for SSL connections, it will fail." => "Não use para ligações SSL, irá falhar.", +"Do not use it additionally for LDAPS connections, it will fail." => "Não utilize para adicionar ligações LDAP, irá falhar!", "Case insensitve LDAP server (Windows)" => "Servidor LDAP (Windows) não sensível a maiúsculas.", "Turn off SSL certificate validation." => "Desligar a validação de certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a ligação apenas funcionar com está opção, importe o certificado SSL do servidor LDAP para o seu servidor do ownCloud.", "Not recommended, use for testing only." => "Não recomendado, utilizado apenas para testes!", "in seconds. A change empties the cache." => "em segundos. Uma alteração esvazia a cache.", +"Directory Settings" => "Definições de directorias", "User Display Name Field" => "Mostrador do nome de utilizador.", "The LDAP attribute to use to generate the user`s ownCloud name." => "Atributo LDAP para gerar o nome de utilizador do ownCloud.", "Base User Tree" => "Base da árvore de utilizadores.", @@ -60,6 +62,7 @@ "One Group Base DN per line" => "Uma base de grupo DN por linha", "Group Search Attributes" => "Atributos de pesquisa de grupo", "Group-Member association" => "Associar utilizador ao grupo.", +"Special Attributes" => "Atributos especiais", "in bytes" => "em bytes", "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.", "Help" => "Ajuda" diff --git a/apps/user_ldap/l10n/ro.php b/apps/user_ldap/l10n/ro.php index 3e7e750042..8f55a35b49 100644 --- a/apps/user_ldap/l10n/ro.php +++ b/apps/user_ldap/l10n/ro.php @@ -22,7 +22,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "fără substituenți, d.e. \"objectClass=posixGroup\"", "Port" => "Portul", "Use TLS" => "Utilizează TLS", -"Do not use it for SSL connections, it will fail." => "A nu se utiliza pentru conexiuni SSL, va eșua.", "Case insensitve LDAP server (Windows)" => "Server LDAP insensibil la majuscule (Windows)", "Turn off SSL certificate validation." => "Oprește validarea certificatelor SSL ", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Dacă conexiunea lucrează doar cu această opțiune, importează certificatul SSL al serverului LDAP în serverul ownCloud.", diff --git a/apps/user_ldap/l10n/ru.php b/apps/user_ldap/l10n/ru.php index 45f6c171bf..c66530174a 100644 --- a/apps/user_ldap/l10n/ru.php +++ b/apps/user_ldap/l10n/ru.php @@ -1,9 +1,24 @@ "Не удалось удалить конфигурацию сервера", +"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." => "Конфигурация верна, но операция подключения завершилась неудачно. Пожалуйста, проверьте настройки сервера и учетные данные.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "Конфигурация не верна. Пожалуйста, посмотрите в журнале ownCloud детали.", "Deletion failed" => "Удаление не удалось", +"Take over settings from recent server configuration?" => "Принять настройки из последней конфигурации сервера?", +"Keep settings?" => "Сохранить настройки?", +"Cannot add server configuration" => "Не получилось добавить конфигурацию сервера", +"Connection test succeeded" => "Проверка соединения удалась", +"Connection test failed" => "Проверка соединения не удалась", +"Do you really want to delete the current Server Configuration?" => "Вы действительно хотите удалить существующую конфигурацию сервера?", +"Confirm Deletion" => "Подтверждение удаления", "Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Внимание:Приложения user_ldap и user_webdavauth несовместимы. Вы можете столкнуться с неожиданным поведением. Пожалуйста, обратитесь к системному администратору, чтобы отключить одно из них.", +"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Внимание: Модуль LDAP для PHP не установлен, бэкенд не будет работать. Пожалуйста, попросите вашего системного администратора его установить. ", +"Server configuration" => "Конфигурация сервера", +"Add Server Configuration" => "Добавить конфигурацию сервера", "Host" => "Сервер", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Можно опустить протокол, за исключением того, когда вам требуется SSL. Тогда начните с ldaps :/ /", "Base DN" => "Базовый DN", +"One Base DN per line" => "По одному базовому DN в строке.", "You can specify Base DN for users and groups in the Advanced tab" => "Вы можете задать Base DN для пользователей и групп на вкладке \"Расширенное\"", "User DN" => "DN пользователя", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN-клиента пользователя, с которым связывают должно быть заполнено, например, uid=агент, dc=пример, dc=com. Для анонимного доступа, оставьте DN и пароль пустыми.", @@ -18,21 +33,36 @@ "Group Filter" => "Фильтр группы", "Defines the filter to apply, when retrieving groups." => "Определяет фильтр для применения при получении группы.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "без заполнения, например \"objectClass=posixGroup\".", +"Connection Settings" => "Настройки подключения", +"Configuration Active" => "Конфигурация активна", +"When unchecked, this configuration will be skipped." => "Когда галочка снята, эта конфигурация будет пропущена.", "Port" => "Порт", +"Backup (Replica) Host" => "Адрес резервного сервера", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Укажите дополнительный резервный сервер. Он должен быть репликой главного LDAP/AD сервера.", +"Backup (Replica) Port" => "Порт резервного сервера", +"Disable Main Server" => "Отключение главного сервера", +"When switched on, ownCloud will only connect to the replica server." => "Когда включено, ownCloud будет соединяться только с резервным сервером.", "Use TLS" => "Использовать TLS", -"Do not use it for SSL connections, it will fail." => "Не используйте для соединений SSL", +"Do not use it additionally for LDAPS connections, it will fail." => "Не используйте совместно с безопасными подключениями (LDAPS), это не сработает.", "Case insensitve LDAP server (Windows)" => "Нечувствительный к регистру сервер LDAP (Windows)", "Turn off SSL certificate validation." => "Отключить проверку сертификата SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Если соединение работает только с этой опцией, импортируйте на ваш сервер ownCloud сертификат SSL сервера LDAP.", "Not recommended, use for testing only." => "Не рекомендуется, используйте только для тестирования.", "in seconds. A change empties the cache." => "в секундах. Изменение очистит кэш.", +"Directory Settings" => "Настройки каталога", "User Display Name Field" => "Поле отображаемого имени пользователя", "The LDAP attribute to use to generate the user`s ownCloud name." => "Атрибут LDAP для генерации имени пользователя ownCloud.", "Base User Tree" => "База пользовательского дерева", +"One User Base DN per line" => "По одной базовому DN пользователей в строке.", +"User Search Attributes" => "Поисковые атрибуты пользователя", +"Optional; one attribute per line" => "Опционально; один атрибут на линию", "Group Display Name Field" => "Поле отображаемого имени группы", "The LDAP attribute to use to generate the groups`s ownCloud name." => "Атрибут LDAP для генерации имени группы ownCloud.", "Base Group Tree" => "База группового дерева", +"One Group Base DN per line" => "По одной базовому DN групп в строке.", +"Group Search Attributes" => "Атрибуты поиска для группы", "Group-Member association" => "Ассоциация Группа-Участник", +"Special Attributes" => "Специальные атрибуты", "in bytes" => "в байтах", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Оставьте имя пользователя пустым (по умолчанию). Иначе укажите атрибут LDAP/AD.", "Help" => "Помощь" diff --git a/apps/user_ldap/l10n/ru_RU.php b/apps/user_ldap/l10n/ru_RU.php index f62d2cd4ea..a4ed503b1d 100644 --- a/apps/user_ldap/l10n/ru_RU.php +++ b/apps/user_ldap/l10n/ru_RU.php @@ -22,7 +22,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "без каких-либо заполнителей, например, \"objectClass=posixGroup\".", "Port" => "Порт", "Use TLS" => "Использовать TLS", -"Do not use it for SSL connections, it will fail." => "Не используйте это SSL-соединений, это не будет выполнено.", "Case insensitve LDAP server (Windows)" => "Нечувствительный к регистру LDAP-сервер (Windows)", "Turn off SSL certificate validation." => "Выключить проверку сертификата SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Если соединение работает только с этой опцией, импортируйте SSL-сертификат LDAP сервера в ваш ownCloud сервер.", diff --git a/apps/user_ldap/l10n/sk_SK.php b/apps/user_ldap/l10n/sk_SK.php index 77cb039c7e..727765a150 100644 --- a/apps/user_ldap/l10n/sk_SK.php +++ b/apps/user_ldap/l10n/sk_SK.php @@ -11,8 +11,8 @@ "Connection test failed" => "Test pripojenia zlyhal", "Do you really want to delete the current Server Configuration?" => "Naozaj chcete zmazať súčasné nastavenie servera?", "Confirm Deletion" => "Potvrdiť vymazanie", -"Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Upozornenie: Aplikácie user_ldap a user_webdavauth nie sú kompatibilné. Môže nastávať neočakávané správanie. Požiadajte správcu systému aby jednu z nich zakázal.", -"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Upozornenie: nie je nainštalovaný LDAP modul pre PHP, backend vrstva nebude fungovať. Požádejte správcu systému aby ho nainštaloval.", +"Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Upozornenie: Aplikácie user_ldap a user_webdavauth nie sú kompatibilné. Môže nastávať neočakávané správanie. Požiadajte administrátora systému aby jednu z nich zakázal.", +"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Upozornenie: nie je nainštalovaný LDAP modul pre PHP, backend vrstva nebude fungovať. Požádejte administrátora systému aby ho nainštaloval.", "Server configuration" => "Nastavenia servera", "Add Server Configuration" => "Pridať nastavenia servera.", "Host" => "Hostiteľ", @@ -43,7 +43,7 @@ "Disable Main Server" => "Zakázať hlavný server", "When switched on, ownCloud will only connect to the replica server." => "Pri zapnutí sa ownCloud pripojí len k záložnému serveru.", "Use TLS" => "Použi TLS", -"Do not use it for SSL connections, it will fail." => "Nepoužívajte pre pripojenie SSL, pripojenie zlyhá.", +"Do not use it additionally for LDAPS connections, it will fail." => "Nepoužívajte pre pripojenie LDAPS, zlyhá.", "Case insensitve LDAP server (Windows)" => "LDAP server nerozlišuje veľkosť znakov (Windows)", "Turn off SSL certificate validation." => "Vypnúť overovanie SSL certifikátu.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Ak pripojenie pracuje len s touto možnosťou, tak importujte SSL certifikát LDAP serveru do vášho servera ownCloud.", @@ -61,7 +61,7 @@ "Base Group Tree" => "Základný skupinový strom", "One Group Base DN per line" => "Jedna skupinová základná DN na riadok", "Group Search Attributes" => "Atribúty vyhľadávania skupín", -"Group-Member association" => "Asociácia člena skupiny", +"Group-Member association" => "Priradenie člena skupiny", "Special Attributes" => "Špeciálne atribúty", "in bytes" => "v bajtoch", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Nechajte prázdne pre používateľské meno (predvolené). Inak uveďte atribút LDAP/AD.", diff --git a/apps/user_ldap/l10n/sl.php b/apps/user_ldap/l10n/sl.php index 133d7ee911..e1734a9078 100644 --- a/apps/user_ldap/l10n/sl.php +++ b/apps/user_ldap/l10n/sl.php @@ -20,7 +20,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "Brez katerekoli vsebnika, npr. \"objectClass=posixGroup\".", "Port" => "Vrata", "Use TLS" => "Uporabi TLS", -"Do not use it for SSL connections, it will fail." => "Uporaba SSL za povezave bo spodletela.", "Case insensitve LDAP server (Windows)" => "Strežnik LDAP ne upošteva velikosti črk (Windows)", "Turn off SSL certificate validation." => "Onemogoči potrditev veljavnosti potrdila SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "V primeru, da povezava deluje le s to možnostjo, uvozite potrdilo SSL iz strežnika LDAP na vaš strežnik ownCloud.", diff --git a/apps/user_ldap/l10n/sr.php b/apps/user_ldap/l10n/sr.php index 418d94afca..52569a08ef 100644 --- a/apps/user_ldap/l10n/sr.php +++ b/apps/user_ldap/l10n/sr.php @@ -18,7 +18,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "без икаквог чувара места, нпр. „objectClass=posixGroup“.", "Port" => "Порт", "Use TLS" => "Користи TLS", -"Do not use it for SSL connections, it will fail." => "Не користите за SSL везе јер неће радити.", "Case insensitve LDAP server (Windows)" => "LDAP сервер осетљив на велика и мала слова (Windows)", "Turn off SSL certificate validation." => "Искључите потврду SSL сертификата.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Увезите SSL сертификат LDAP сервера у свој ownCloud ако веза ради само са овом опцијом.", diff --git a/apps/user_ldap/l10n/sv.php b/apps/user_ldap/l10n/sv.php index 509906934c..702912f9c6 100644 --- a/apps/user_ldap/l10n/sv.php +++ b/apps/user_ldap/l10n/sv.php @@ -43,7 +43,7 @@ "Disable Main Server" => "Inaktivera huvudserver", "When switched on, ownCloud will only connect to the replica server." => "När denna är påkopplad kommer ownCloud att koppla upp till replika-servern, endast.", "Use TLS" => "Använd TLS", -"Do not use it for SSL connections, it will fail." => "Använd inte för SSL-anslutningar, det kommer inte att fungera.", +"Do not use it additionally for LDAPS connections, it will fail." => "Använd inte för LDAPS-anslutningar, det kommer inte att fungera.", "Case insensitve LDAP server (Windows)" => "LDAP-servern är okänslig för gemener och versaler (Windows)", "Turn off SSL certificate validation." => "Stäng av verifiering av SSL-certifikat.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Om anslutningen bara fungerar med det här alternativet, importera LDAP-serverns SSL-certifikat i din ownCloud-server.", diff --git a/apps/user_ldap/l10n/ta_LK.php b/apps/user_ldap/l10n/ta_LK.php index d617f49700..f6beb3c486 100644 --- a/apps/user_ldap/l10n/ta_LK.php +++ b/apps/user_ldap/l10n/ta_LK.php @@ -9,7 +9,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "எந்த ஒதுக்கீடும் இல்லாமல், உதாரணம். \"objectClass=posixGroup\".", "Port" => "துறை ", "Use TLS" => "TLS ஐ பயன்படுத்தவும்", -"Do not use it for SSL connections, it will fail." => "SSL இணைப்பிற்கு பயன்படுத்தவேண்டாம், அது தோல்வியடையும்.", "Case insensitve LDAP server (Windows)" => "உணர்ச்சியான LDAP சேவையகம் (சாளரங்கள்)", "Turn off SSL certificate validation." => "SSL சான்றிதழின் செல்லுபடியை நிறுத்திவிடவும்", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "இந்த தெரிவுகளில் மட்டும் இணைப்பு வேலைசெய்தால், உங்களுடைய owncloud சேவையகத்திலிருந்து LDAP சேவையகத்தின் SSL சான்றிதழை இறக்குமதி செய்யவும்", diff --git a/apps/user_ldap/l10n/th_TH.php b/apps/user_ldap/l10n/th_TH.php index 07dbc835b3..802badb2f0 100644 --- a/apps/user_ldap/l10n/th_TH.php +++ b/apps/user_ldap/l10n/th_TH.php @@ -36,7 +36,6 @@ "Port" => "พอร์ต", "Disable Main Server" => "ปิดใช้งานเซิร์ฟเวอร์หลัก", "Use TLS" => "ใช้ TLS", -"Do not use it for SSL connections, it will fail." => "กรุณาอย่าใช้การเชื่อมต่อแบบ SSL การเชื่อมต่อจะเกิดการล้มเหลว", "Case insensitve LDAP server (Windows)" => "เซิร์ฟเวอร์ LDAP ประเภท Case insensitive (วินโดวส์)", "Turn off SSL certificate validation." => "ปิดใช้งานการตรวจสอบความถูกต้องของใบรับรองความปลอดภัย SSL", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "หากการเชื่อมต่อสามารถทำงานได้เฉพาะกับตัวเลือกนี้เท่านั้น, ให้นำเข้าข้อมูลใบรับรองความปลอดภัยแบบ SSL ของเซิร์ฟเวอร์ LDAP ดังกล่าวเข้าไปไว้ในเซิร์ฟเวอร์ ownCloud", diff --git a/apps/user_ldap/l10n/tr.php b/apps/user_ldap/l10n/tr.php index 8ded27a295..1bed9e246c 100644 --- a/apps/user_ldap/l10n/tr.php +++ b/apps/user_ldap/l10n/tr.php @@ -12,7 +12,6 @@ "Group Filter" => "Grup Süzgeci", "Port" => "Port", "Use TLS" => "TLS kullan", -"Do not use it for SSL connections, it will fail." => "SSL bağlantıları ile kullanmayın, başarısız olacaktır.", "Turn off SSL certificate validation." => "SSL sertifika doğrulamasını kapat.", "Not recommended, use for testing only." => "Önerilmez, sadece test için kullanın.", "in seconds. A change empties the cache." => "saniye cinsinden. Bir değişiklik önbelleği temizleyecektir.", diff --git a/apps/user_ldap/l10n/uk.php b/apps/user_ldap/l10n/uk.php index 4dd1256ee3..643a749589 100644 --- a/apps/user_ldap/l10n/uk.php +++ b/apps/user_ldap/l10n/uk.php @@ -1,9 +1,24 @@ "Не вдалося видалити конфігурацію сервера", +"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." => "Конфігурація вірна, але встановити зв'язок не вдалося. Будь ласка, перевірте налаштування сервера і облікові дані.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "Конфігурація невірна. Подробиці подивіться, будь ласка, в журналі ownCloud.", "Deletion failed" => "Видалення не було виконано", +"Take over settings from recent server configuration?" => "Застосувати налаштування з останньої конфігурації сервера ?", +"Keep settings?" => "Зберегти налаштування ?", +"Cannot add server configuration" => "Неможливо додати конфігурацію сервера", +"Connection test succeeded" => "Перевірка з'єднання пройшла успішно", +"Connection test failed" => "Перевірка з'єднання завершилась неуспішно", +"Do you really want to delete the current Server Configuration?" => "Ви дійсно бажаєте видалити поточну конфігурацію сервера ?", +"Confirm Deletion" => "Підтвердіть Видалення", "Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Увага: Застосунки user_ldap та user_webdavauth не сумісні. Ви можете зіткнутися з несподіваною поведінкою. Будь ласка, зверніться до системного адміністратора, щоб відключити одну з них.", +"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Увага: Потрібний модуль PHP LDAP не встановлено, базова програма працювати не буде. Будь ласка, зверніться до системного адміністратора, щоб встановити його.", +"Server configuration" => "Налаштування Сервера", +"Add Server Configuration" => "Додати налаштування Сервера", "Host" => "Хост", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Можна не вказувати протокол, якщо вам не потрібен SSL. Тоді почніть з ldaps://", "Base DN" => "Базовий DN", +"One Base DN per line" => "Один Base DN на одній строчці", "You can specify Base DN for users and groups in the Advanced tab" => "Ви можете задати Базовий DN для користувачів і груп на вкладинці Додатково", "User DN" => "DN Користувача", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN клієнтського користувача для прив'язки, наприклад: uid=agent,dc=example,dc=com. Для анонімного доступу, залиште DN і Пароль порожніми.", @@ -18,9 +33,10 @@ "Group Filter" => "Фільтр Груп", "Defines the filter to apply, when retrieving groups." => "Визначає фільтр, який застосовується при отриманні груп.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "без будь-якого заповнювача, наприклад: \"objectClass=posixGroup\".", +"Configuration Active" => "Налаштування Активне", +"When unchecked, this configuration will be skipped." => "Якщо \"галочка\" знята, ця конфігурація буде пропущена.", "Port" => "Порт", "Use TLS" => "Використовуйте TLS", -"Do not use it for SSL connections, it will fail." => "Не використовуйте його для SSL з'єднань, це не буде виконано.", "Case insensitve LDAP server (Windows)" => "Нечутливий до регістру LDAP сервер (Windows)", "Turn off SSL certificate validation." => "Вимкнути перевірку SSL сертифіката.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Якщо з'єднання працює лише з цією опцією, імпортуйте SSL сертифікат LDAP сервера у ваший ownCloud сервер.", @@ -29,9 +45,11 @@ "User Display Name Field" => "Поле, яке відображає Ім'я Користувача", "The LDAP attribute to use to generate the user`s ownCloud name." => "Атрибут LDAP, який використовується для генерації імен користувачів ownCloud.", "Base User Tree" => "Основне Дерево Користувачів", +"One User Base DN per line" => "Один Користувач Base DN на одній строчці", "Group Display Name Field" => "Поле, яке відображає Ім'я Групи", "The LDAP attribute to use to generate the groups`s ownCloud name." => "Атрибут LDAP, який використовується для генерації імен груп ownCloud.", "Base Group Tree" => "Основне Дерево Груп", +"One Group Base DN per line" => "Одна Група Base DN на одній строчці", "Group-Member association" => "Асоціація Група-Член", "in bytes" => "в байтах", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Залиште порожнім для імені користувача (за замовчанням). Інакше, вкажіть атрибут LDAP/AD.", diff --git a/apps/user_ldap/l10n/vi.php b/apps/user_ldap/l10n/vi.php index 76ff6fe33a..4bbb977f36 100644 --- a/apps/user_ldap/l10n/vi.php +++ b/apps/user_ldap/l10n/vi.php @@ -17,21 +17,30 @@ "Group Filter" => "Bộ lọc nhóm", "Defines the filter to apply, when retrieving groups." => "Xác định các bộ lọc để áp dụng, khi nhóm sử dụng.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "mà không giữ chỗ nào, ví dụ như \"objectClass = osixGroup\".", +"Connection Settings" => "Connection Settings", "Port" => "Cổng", +"Backup (Replica) Port" => "Cổng sao lưu (Replica)", +"Disable Main Server" => "Tắt máy chủ chính", +"When switched on, ownCloud will only connect to the replica server." => "When switched on, ownCloud will only connect to the replica server.", "Use TLS" => "Sử dụng TLS", -"Do not use it for SSL connections, it will fail." => "Kết nối SSL bị lỗi. ", +"Do not use it additionally for LDAPS connections, it will fail." => "Do not use it additionally for LDAPS connections, it will fail.", "Case insensitve LDAP server (Windows)" => "Trường hợp insensitve LDAP máy chủ (Windows)", "Turn off SSL certificate validation." => "Tắt xác thực chứng nhận SSL", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Nếu kết nối chỉ hoạt động với tùy chọn này, vui lòng import LDAP certificate SSL trong máy chủ ownCloud của bạn.", "Not recommended, use for testing only." => "Không khuyến khích, Chỉ sử dụng để thử nghiệm.", "in seconds. A change empties the cache." => "trong vài giây. Một sự thay đổi bộ nhớ cache.", +"Directory Settings" => "Directory Settings", "User Display Name Field" => "Hiển thị tên người sử dụng", "The LDAP attribute to use to generate the user`s ownCloud name." => "Các thuộc tính LDAP sử dụng để tạo tên người dùng ownCloud.", "Base User Tree" => "Cây người dùng cơ bản", +"User Search Attributes" => "User Search Attributes", +"Optional; one attribute per line" => "Optional; one attribute per line", "Group Display Name Field" => "Hiển thị tên nhóm", "The LDAP attribute to use to generate the groups`s ownCloud name." => "Các thuộc tính LDAP sử dụng để tạo các nhóm ownCloud.", "Base Group Tree" => "Cây nhóm cơ bản", +"Group Search Attributes" => "Group Search Attributes", "Group-Member association" => "Nhóm thành viên Cộng đồng", +"Special Attributes" => "Special Attributes", "in bytes" => "Theo Byte", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Để trống tên người dùng (mặc định). Nếu không chỉ định thuộc tính LDAP/AD", "Help" => "Giúp đỡ" diff --git a/apps/user_ldap/l10n/zh_CN.GB2312.php b/apps/user_ldap/l10n/zh_CN.GB2312.php index 91b059afd0..f5bc41fd46 100644 --- a/apps/user_ldap/l10n/zh_CN.GB2312.php +++ b/apps/user_ldap/l10n/zh_CN.GB2312.php @@ -19,7 +19,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "不能使用占位符,例如 \"objectClass=posixGroup\"。", "Port" => "端口", "Use TLS" => "使用 TLS", -"Do not use it for SSL connections, it will fail." => "不要使用它进行 SSL 连接,会失败的。", "Case insensitve LDAP server (Windows)" => "大小写不敏感的 LDAP 服务器 (Windows)", "Turn off SSL certificate validation." => "关闭 SSL 证书校验。", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "如果只有使用此选项才能连接,请导入 LDAP 服务器的 SSL 证书到您的 ownCloud 服务器。", diff --git a/apps/user_ldap/l10n/zh_CN.php b/apps/user_ldap/l10n/zh_CN.php index d0c32e94e0..d494945e2e 100644 --- a/apps/user_ldap/l10n/zh_CN.php +++ b/apps/user_ldap/l10n/zh_CN.php @@ -20,7 +20,6 @@ "without any placeholder, e.g. \"objectClass=posixGroup\"." => "无需占位符,例如\"objectClass=posixGroup\"", "Port" => "端口", "Use TLS" => "使用TLS", -"Do not use it for SSL connections, it will fail." => "不要在SSL链接中使用此选项,会导致失败。", "Case insensitve LDAP server (Windows)" => "大小写敏感LDAP服务器(Windows)", "Turn off SSL certificate validation." => "关闭SSL证书验证", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "如果链接仅在此选项时可用,在您的ownCloud服务器中导入LDAP服务器的SSL证书。", diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index acc33e047c..933f2f4207 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -294,6 +294,11 @@ class Connection { $params = $this->getConfigTranslationArray(); foreach($config as $parameter => $value) { + if(($parameter == 'homeFolderNamingRule' + || $params[$parameter] == 'homeFolderNamingRule') + && !empty($value)) { + $value = 'attr:'.$value; + } if(isset($this->config[$parameter])) { $this->config[$parameter] = $value; if(is_array($setParameters)) { @@ -324,7 +329,7 @@ class Connection { $value = base64_encode($value); break; case 'homeFolderNamingRule': - $value = empty($value) ? 'opt:username' : 'attr:'.$value; + $value = empty($value) ? 'opt:username' : $value; break; case 'ldapBase': case 'ldapBaseUsers': @@ -409,6 +414,11 @@ class Connection { $this->config[$key] = array(); } } + if((strpos($this->config['ldapHost'], 'ldaps') === 0) + && $this->config['ldapTLS']) { + $this->config['ldapTLS'] = false; + \OCP\Util::writeLog('user_ldap', 'LDAPS (already using secure connection) and TLS do not work together. Switched off TLS.', \OCP\Util::INFO); + } @@ -523,7 +533,7 @@ class Connection { if(!$this->config['ldapOverrideMainServer'] && !$this->getFromCache('overrideMainServer')) { $this->doConnect($this->config['ldapHost'], $this->config['ldapPort']); $bindStatus = $this->bind(); - $error = ldap_errno($this->ldapConnectionRes); + $error = is_resource($this->ldapConnectionRes) ? ldap_errno($this->ldapConnectionRes) : -1; } else { $bindStatus = false; $error = null; @@ -547,6 +557,9 @@ class Connection { } private function doConnect($host, $port) { + if(empty($host)) { + return false; + } $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)) { @@ -564,9 +577,13 @@ class Connection { if(!$this->config['ldapConfigurationActive']) { return false; } - $ldapLogin = @ldap_bind($this->getConnectionResource(), $this->config['ldapAgentName'], $this->config['ldapAgentPassword']); + $cr = $this->getConnectionResource(); + if(!is_resource($cr)) { + return false; + } + $ldapLogin = @ldap_bind($cr, $this->config['ldapAgentName'], $this->config['ldapAgentPassword']); if(!$ldapLogin) { - \OCP\Util::writeLog('user_ldap', 'Bind failed: ' . ldap_errno($this->ldapConnectionRes) . ': ' . ldap_error($this->ldapConnectionRes), \OCP\Util::ERROR); + \OCP\Util::writeLog('user_ldap', 'Bind failed: ' . ldap_errno($cr) . ': ' . ldap_error($cr), \OCP\Util::ERROR); $this->ldapConnectionRes = null; return false; } diff --git a/apps/user_ldap/templates/settings.php b/apps/user_ldap/templates/settings.php index eb3840a611..c6f1834e01 100644 --- a/apps/user_ldap/templates/settings.php +++ b/apps/user_ldap/templates/settings.php @@ -35,7 +35,7 @@

-

+

>


t('Not recommended, use for testing only.');?>

diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 6aa8cd9b83..0962756228 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -170,41 +170,38 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { return false; } - /** - * @brief determine the user's home directory - * @param string $uid the owncloud username - * @return boolean - */ - private function determineHomeDir($uid) { - if(strpos($this->connection->homeFolderNamingRule, 'attr:') === 0) { - $attr = substr($this->connection->homeFolderNamingRule, strlen('attr:')); - $homedir = $this->readAttribute($this->username2dn($uid), $attr); - if($homedir) { - $homedir = \OCP\Config::getSystemValue( "datadirectory", \OC::$SERVERROOT."/data" ) . '/' . $homedir[0]; - \OCP\Config::setUserValue($uid, 'user_ldap', 'homedir', $homedir); - return $homedir; - } - } - - //fallback and default: username - $homedir = \OCP\Config::getSystemValue( "datadirectory", \OC::$SERVERROOT."/data" ) . '/' . $uid; - \OCP\Config::setUserValue($uid, 'user_ldap', 'homedir', $homedir); - return $homedir; - } - /** * @brief get the user's home directory * @param string $uid the username * @return boolean */ public function getHome($uid) { - if($this->userExists($uid)) { - $homedir = \OCP\Config::getUserValue($uid, 'user_ldap', 'homedir', false); - if(!$homedir) { - $homedir = $this->determineHomeDir($uid); - } - return $homedir; + $cacheKey = 'getHome'.$uid; + if($this->connection->isCached($cacheKey)) { + return $this->connection->getFromCache($cacheKey); } + if(strpos($this->connection->homeFolderNamingRule, 'attr:') === 0) { + $attr = substr($this->connection->homeFolderNamingRule, strlen('attr:')); + $homedir = $this->readAttribute($this->username2dn($uid), $attr); + if($homedir && isset($homedir[0])) { + $path = $homedir[0]; + //if attribute's value is an absolute path take this, otherwise append it to data dir + //check for / at the beginning or pattern c:\ resp. c:/ + if( + '/' == $path[0] + || (3 < strlen($path) && ctype_alpha($path[0]) && $path[1] == ':' && ('\\' == $path[2] || '/' == $path[2])) + ) { + $homedir = $path; + } else { + $homedir = \OCP\Config::getSystemValue('datadirectory', \OC::$SERVERROOT.'/data' ) . '/' . $homedir[0]; + } + $this->connection->writeToCache($cacheKey, $homedir); + return $homedir; + } + } + + //false will apply default behaviour as defined and done by OC_User + $this->connection->writeToCache($cacheKey, false); return false; } diff --git a/apps/user_webdavauth/l10n/gl.php b/apps/user_webdavauth/l10n/gl.php index a6b8355c07..f63a7cb0ce 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://", -"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 esta URL. Este conector comproba a resposta e interpretará os códigos de estado 401 e 403 como credenciais non válidas, e todas as outras respostas como credenciais válidas." +"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/vi.php b/apps/user_webdavauth/l10n/vi.php index 9bd32954b0..ee2aa08912 100644 --- a/apps/user_webdavauth/l10n/vi.php +++ b/apps/user_webdavauth/l10n/vi.php @@ -1,3 +1,5 @@ "WebDAV URL: http://" +"WebDAV Authentication" => "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/config/config.sample.php b/config/config.sample.php index cfef3d5117..2f394c41a3 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -114,6 +114,9 @@ $CONFIG = array( /* How long should ownCloud keep deleted files in the trash bin, default value: 180 days */ 'trashbin_retention_obligation' => 180, +/* allow user to change his display name, if it is supported by the back-end */ +'allow_user_to_change_display_name' => true, + /* Check 3rdparty apps for malicious code fragments */ "appcodechecker" => "", diff --git a/core/ajax/translations.php b/core/ajax/translations.php index e22cbad470..e52a2e9b1e 100644 --- a/core/ajax/translations.php +++ b/core/ajax/translations.php @@ -22,6 +22,7 @@ */ $app = $_POST["app"]; +$app = OC_App::cleanAppId($app); $l = OC_L10N::get( $app ); diff --git a/core/ajax/vcategories/add.php b/core/ajax/vcategories/add.php index 23d00af70a..16a1461be0 100644 --- a/core/ajax/vcategories/add.php +++ b/core/ajax/vcategories/add.php @@ -34,7 +34,7 @@ debug(print_r($category, true)); $categories = new OC_VCategories($type); if($categories->hasCategory($category)) { - bailOut(OC_Contacts_App::$l10n->t('This category already exists: '.$category)); + bailOut($l->t('This category already exists: %s', array($category))); } else { $categories->add($category, true); } diff --git a/core/ajax/vcategories/removeFromFavorites.php b/core/ajax/vcategories/removeFromFavorites.php index ba6e95c249..78a528caa8 100644 --- a/core/ajax/vcategories/removeFromFavorites.php +++ b/core/ajax/vcategories/removeFromFavorites.php @@ -27,12 +27,12 @@ if(is_null($type)) { } if(is_null($id)) { - bailOut($l->t('%s ID not provided.', $type)); + bailOut($l->t('%s ID not provided.', array($type))); } $categories = new OC_VCategories($type); if(!$categories->removeFromFavorites($id, $type)) { - bailOut($l->t('Error removing %s from favorites.', $id)); + bailOut($l->t('Error removing %s from favorites.', array($id))); } OC_JSON::success(); diff --git a/core/css/styles.css b/core/css/styles.css index 268040525b..f6bf652f07 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -59,25 +59,6 @@ input[type="checkbox"]:hover+label, input[type="checkbox"]:focus+label { color:# ::-webkit-scrollbar-thumb { background:#ddd; } -#show { float: right; position: absolute; right: 1em; top: 0.8em; display:none; } -#login form input[name="show"] + label { background: url("../img/actions/toggle.png") no-repeat; opacity:0.3; -float: right; width: 24px; position: absolute !important; height: 14px; right: 1em; top: 1.25em;} -#login form input[name="show"]:checked + label { background:url("../img/actions/toggle.png") no-repeat; opacity:0.8; } - - - -/* SHOW PASSWORD TOGGLE */ -#show { - position:absolute; right:1em; top:.8em; float:right; - display:none; -} -#login form input[name="show"] + label { - position:absolute !important; height:14px; width:24px; right:1em; top:1.25em; float:right; - background-image:url("../img/actions/toggle.png"); background-repeat:no-repeat; opacity:.3; -} -#login form input[name="show"]:checked + label { opacity:.8; } - - /* BUTTONS */ input[type="submit"], input[type="button"], button, .button, #quota, div.jp-progress, select, .pager li a { width:auto; padding:.4em; @@ -166,17 +147,15 @@ input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-b #login #datadirContent label { display:block; margin:0; color:#999; } #login form #datadirField legend { margin-bottom:15px; } - /* Icons for username and password fields to better recognize them */ #adminlogin, #adminpass, #user, #password { width:11.7em!important; padding-left:1.8em; } -#adminlogin+label+img, #adminpass+label+img, #user+label+img, #password+label+img { +#adminlogin+label+img, #adminpass-icon, #user+label+img, #password-icon { position:absolute; left:1.25em; top:1.65em; opacity:.3; } -#adminpass+label+img, #password+label+img { top:1.1em; } +#adminpass-icon, #password-icon { top:1.1em; } input[name="password-clone"] { padding-left:1.8em; width:11.7em !important; } -#pass_image { position: absolute; top: 1.2em; left: 1.4em; opacity: 0.3; } - +input[name="adminpass-clone"] { padding-left:1.8em; width:11.7em !important; } /* Nicely grouping input field sets */ .grouptop input { @@ -194,15 +173,29 @@ input[name="password-clone"] { padding-left:1.8em; width:11.7em !important; } box-shadow:0 1px 1px #fff,0 1px 0 #ddd inset; } +/* In field labels. No, HTML placeholder does not work as well. */ #login form label { color:#666; } #login .groupmiddle label, #login .groupbottom label { top:.65em; } -/* NEEDED FOR INFIELD LABELS */ p.infield { position:relative; } label.infield { cursor:text !important; top:1.05em; left:.85em; } #login form label.infield { position:absolute; font-size:19px; color:#aaa; white-space:nowrap; padding-left:1.4em; } +#login #databaseField .infield { padding-left:0; } #login form input[type="checkbox"]+label { position:relative; margin:0; font-size:1em; text-shadow:#fff 0 1px 0; } #login form .errors { background:#fed7d7; border:1px solid #f00; list-style-indent:inside; margin:0 0 2em; padding:1em; } +/* Show password toggle */ +#show { position:absolute; right:1em; top:.8em; float:right; } +#show, #personal-show { display:none; } +#show + label { right:1em; top:1.25em!important; } +#show:checked + label, #personal-show:checked + label { opacity:.8; } +#show + label, #personal-show + label { + position:absolute!important; height:14px; width:24px; + background-image:url("../img/actions/toggle.png"); background-repeat:no-repeat; opacity:.3; +} +#personal-show + label { margin-top:1em; } +#passwordbutton { margin-left:2.5em; } + +/* Database selector */ #login form #selectDbType { text-align:center; } #login form #selectDbType label { position:static; margin:0 -3px 5px; padding:.4em; @@ -212,12 +205,14 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } } #login form #selectDbType label.ui-state-hover, #login form #selectDbType label.ui-state-active { color:#000; background-color:#e8e8e8; } +/* Warnings */ fieldset.warning { padding:8px; color:#b94a48; background-color:#f2dede; border:1px solid #eed3d7; border-radius:5px; } fieldset.warning legend { color:#b94a48 !important; } +fieldset.warning a { color:#b94a48 !important; font-weight:bold; } /* Alternative Logins */ #alternative-logins legend { margin-bottom:10px; } @@ -227,14 +222,14 @@ fieldset.warning legend { color:#b94a48 !important; } /* NAVIGATION ------------------------------------------------------------- */ #navigation { position:fixed; top:3.5em; float:left; width:64px; padding:0; z-index:75; height:100%; - background:#30343a url('../img/noise.png') repeat; border-right:1px #333 solid; + background:#383c43 url('../img/noise.png') repeat; border-right:1px #333 solid; -moz-box-shadow:0 0 7px #000; -webkit-box-shadow:0 0 7px #000; box-shadow:0 0 7px #000; overflow-x:scroll; } #navigation a { display:block; padding:8px 0 4px; text-decoration:none; font-size:10px; text-align:center; - color:#fff; text-shadow:#000 0 -1px 0; opacity:.4; + color:#fff; text-shadow:#000 0 -1px 0; opacity:.5; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; // ellipsize long app names } #navigation a:hover, #navigation a:focus { opacity:.8; } @@ -326,9 +321,11 @@ a.bookmarklet { background-color:#ddd; border:1px solid #ccc; padding:5px;paddin .arrow.left { left:-13px; bottom:1.2em; -webkit-transform:rotate(270deg); -moz-transform:rotate(270deg); -o-transform:rotate(270deg); -ms-transform:rotate(270deg); transform:rotate(270deg); } .arrow.up { top:-8px; right:2em; } .arrow.down { -webkit-transform:rotate(180deg); -moz-transform:rotate(180deg); -o-transform:rotate(180deg); -ms-transform:rotate(180deg); transform:rotate(180deg); } +.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; } +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; } diff --git a/core/img/actions/close.png b/core/img/actions/close.png new file mode 100644 index 0000000000..bc0c782882 Binary files /dev/null and b/core/img/actions/close.png differ diff --git a/core/img/actions/close.svg b/core/img/actions/close.svg new file mode 100644 index 0000000000..6a6d98e34a --- /dev/null +++ b/core/img/actions/close.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/core/img/actions/delete-hover.png b/core/img/actions/delete-hover.png new file mode 100644 index 0000000000..08b15510d9 Binary files /dev/null and b/core/img/actions/delete-hover.png differ diff --git a/core/img/actions/delete-hover.svg b/core/img/actions/delete-hover.svg new file mode 100644 index 0000000000..63cacd5e38 --- /dev/null +++ b/core/img/actions/delete-hover.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/core/img/actions/view-close.png b/core/img/actions/view-close.png new file mode 100644 index 0000000000..80339d7822 Binary files /dev/null and b/core/img/actions/view-close.png differ diff --git a/core/img/actions/view-close.svg b/core/img/actions/view-close.svg new file mode 100644 index 0000000000..45d6697608 --- /dev/null +++ b/core/img/actions/view-close.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/core/img/actions/view-next.png b/core/img/actions/view-next.png new file mode 100644 index 0000000000..b76bea0671 Binary files /dev/null and b/core/img/actions/view-next.png differ diff --git a/core/img/actions/view-next.svg b/core/img/actions/view-next.svg new file mode 100644 index 0000000000..d5642f1a11 --- /dev/null +++ b/core/img/actions/view-next.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/core/img/actions/view-pause.png b/core/img/actions/view-pause.png new file mode 100644 index 0000000000..64264ff928 Binary files /dev/null and b/core/img/actions/view-pause.png differ diff --git a/core/img/actions/view-pause.svg b/core/img/actions/view-pause.svg new file mode 100644 index 0000000000..0edc6f14e2 --- /dev/null +++ b/core/img/actions/view-pause.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/core/img/actions/view-play.png b/core/img/actions/view-play.png new file mode 100644 index 0000000000..0080d45b5c Binary files /dev/null and b/core/img/actions/view-play.png differ diff --git a/core/img/actions/view-play.svg b/core/img/actions/view-play.svg new file mode 100644 index 0000000000..0bdc63bf7e --- /dev/null +++ b/core/img/actions/view-play.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/core/img/actions/view-previous.png b/core/img/actions/view-previous.png new file mode 100644 index 0000000000..82943c23a5 Binary files /dev/null and b/core/img/actions/view-previous.png differ diff --git a/core/img/actions/view-previous.svg b/core/img/actions/view-previous.svg new file mode 100644 index 0000000000..df1f49511d --- /dev/null +++ b/core/img/actions/view-previous.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/core/img/appstore.png b/core/img/appstore.png new file mode 100644 index 0000000000..009b2b51b9 Binary files /dev/null and b/core/img/appstore.png differ diff --git a/core/img/desktopapp.png b/core/img/desktopapp.png new file mode 100644 index 0000000000..182ddd2cf1 Binary files /dev/null and b/core/img/desktopapp.png differ diff --git a/core/img/desktopapp.svg b/core/img/desktopapp.svg new file mode 100644 index 0000000000..93d91e461a --- /dev/null +++ b/core/img/desktopapp.svg @@ -0,0 +1,100 @@ + +image/svg+xml + + +Desktop app +Windows, OS X, Linux + \ No newline at end of file diff --git a/core/img/filetypes/application.png b/core/img/filetypes/application.png new file mode 100644 index 0000000000..1dee9e3660 Binary files /dev/null and b/core/img/filetypes/application.png differ diff --git a/core/img/googleplay.png b/core/img/googleplay.png new file mode 100644 index 0000000000..2d9ad62960 Binary files /dev/null and b/core/img/googleplay.png differ diff --git a/core/js/js.js b/core/js/js.js index 6b0c289850..ae23c955c3 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -5,6 +5,12 @@ * To the end of config/config.php to enable debug mode. * The undefined checks fix the broken ie8 console */ +var oc_debug; +var oc_webroot; +var oc_requesttoken; +if (typeof oc_webroot === "undefined") { + oc_webroot = location.pathname.substr(0, location.pathname.lastIndexOf('/')); +} if (oc_debug !== true || typeof console === "undefined" || typeof console.log === "undefined") { if (!window.console) { window.console = {}; @@ -622,7 +628,8 @@ $(document).ready(function(){ }); // 'show password' checkbox - $('#password').showPassword(); + $('#password').showPassword(); + $('#adminpass').showPassword(); $('#pass2').showPassword(); //use infield labels diff --git a/core/js/setup.js b/core/js/setup.js index cb8392d0a3..76812b2997 100644 --- a/core/js/setup.js +++ b/core/js/setup.js @@ -59,12 +59,10 @@ $(document).ready(function() { // Save form parameters var post = $(this).serializeArray(); - // FIXME: This lines are breaking the installation // Disable inputs - // $(':submit', this).attr('disabled','disabled').val('Finishing …'); - // $('input', this).addClass('ui-state-disabled').attr('disabled','disabled'); - // $('#selectDbType').button('disable'); - // $('label.ui-button', this).addClass('ui-state-disabled').attr('aria-disabled', 'true').button('disable'); + $(':submit', this).attr('disabled','disabled').val('Finishing …'); + $('input', this).addClass('ui-state-disabled').attr('disabled','disabled'); + $('#selectDbType').buttonset('disable'); // Create the form var form = $(''); diff --git a/core/js/share.js b/core/js/share.js index 6ad4130690..6d1c395404 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -26,7 +26,7 @@ OC.Share={ var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share'); action.find('img').attr('src', image); action.addClass('permanent'); - action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared'))); + action.html(t('core', 'Shared')); } var dir = $('#dir').val(); if (dir.length > 1) { @@ -40,7 +40,7 @@ OC.Share={ if (img.attr('src') != OC.imagePath('core', 'actions/public')) { img.attr('src', image); action.addClass('permanent'); - action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared'))); + action.html(t('core', 'Shared')); } } last = path; @@ -87,10 +87,10 @@ OC.Share={ action.find('img').attr('src', image); if (shares) { action.addClass('permanent'); - action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared'))); + action.html(t('core', 'Shared')); } else { action.removeClass('permanent'); - action.html(action.html().replace(t('core', 'Shared'), t('core', 'Share'))); + action.html(t('core', 'Share')); } } if (shares) { @@ -185,10 +185,10 @@ OC.Share={ html += ''; html += '
'; html += ''; - html += ''; - html += ''; - html += ''; - html += ''; + html += ''; } html += '
'; html += ''; @@ -373,18 +373,18 @@ OC.Share={ $('#linkPassText').attr('placeholder', t('core', 'Password protected')); } $('#expiration').show(); - $('#emailPrivateLink #email').show(); - $('#emailPrivateLink #emailButton').show(); + $('#emailPrivateLink #email').show(); + $('#emailPrivateLink #emailButton').show(); }, hideLink:function() { $('#linkText').hide('blind'); $('#showPassword').hide(); $('#showPassword+label').hide(); $('#linkPass').hide(); - $('#emailPrivateLink #email').hide(); - $('#emailPrivateLink #emailButton').hide(); - }, - dirname:function(path) { + $('#emailPrivateLink #email').hide(); + $('#emailPrivateLink #emailButton').hide(); + }, + dirname:function(path) { return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, ''); }, showExpirationDate:function(date) { @@ -401,16 +401,16 @@ OC.Share={ $(document).ready(function() { if(typeof monthNames != 'undefined'){ - $.datepicker.setDefaults({ - monthNames: monthNames, - monthNamesShort: $.map(monthNames, function(v) { return v.slice(0,3)+'.'; }), - dayNames: dayNames, - dayNamesMin: $.map(dayNames, function(v) { return v.slice(0,2); }), - dayNamesShort: $.map(dayNames, function(v) { return v.slice(0,3)+'.'; }), - firstDay: firstDay - }); - } - $('#fileList').on('click', 'a.share', function(event) { + $.datepicker.setDefaults({ + monthNames: monthNames, + monthNamesShort: $.map(monthNames, function(v) { return v.slice(0,3)+'.'; }), + dayNames: dayNames, + dayNamesMin: $.map(dayNames, function(v) { return v.slice(0,2); }), + dayNamesShort: $.map(dayNames, function(v) { return v.slice(0,3)+'.'; }), + firstDay: firstDay + }); + } + $(document).on('click', 'a.share', function(event) { event.stopPropagation(); if ($(this).data('item-type') !== undefined && $(this).data('item') !== undefined) { var itemType = $(this).data('item-type'); @@ -444,12 +444,12 @@ $(document).ready(function() { } }); - $('#fileList').on('mouseenter', '#dropdown #shareWithList li', function(event) { + $(document).on('mouseenter', '#dropdown #shareWithList li', function(event) { // Show permissions and unshare button $(':hidden', this).filter(':not(.cruds)').show(); }); - $('#fileList').on('mouseleave', '#dropdown #shareWithList li', function(event) { + $(document).on('mouseleave', '#dropdown #shareWithList li', function(event) { // Hide permissions and unshare button if (!$('.cruds', this).is(':visible')) { $('a', this).hide(); @@ -462,11 +462,11 @@ $(document).ready(function() { } }); - $('#fileList').on('click', '#dropdown .showCruds', function() { + $(document).on('click', '#dropdown .showCruds', function() { $(this).parent().find('.cruds').toggle(); }); - $('#fileList').on('click', '#dropdown .unshare', function() { + $(document).on('click', '#dropdown .unshare', function() { var li = $(this).parent(); var itemType = $('#dropdown').data('item-type'); var itemSource = $('#dropdown').data('item-source'); @@ -483,7 +483,7 @@ $(document).ready(function() { }); }); - $('#fileList').on('change', '#dropdown .permissions', function() { + $(document).on('change', '#dropdown .permissions', function() { if ($(this).attr('name') == 'edit') { var li = $(this).parent().parent() var checkboxes = $('.permissions', li); @@ -496,10 +496,17 @@ $(document).ready(function() { var li = $(this).parent().parent().parent(); var checkboxes = $('.permissions', li); // Uncheck Edit if Create, Update, and Delete are not checked - if (!$(this).is(':checked') && !$(checkboxes).filter('input[name="create"]').is(':checked') && !$(checkboxes).filter('input[name="update"]').is(':checked') && !$(checkboxes).filter('input[name="delete"]').is(':checked')) { + if (!$(this).is(':checked') + && !$(checkboxes).filter('input[name="create"]').is(':checked') + && !$(checkboxes).filter('input[name="update"]').is(':checked') + && !$(checkboxes).filter('input[name="delete"]').is(':checked')) + { $(checkboxes).filter('input[name="edit"]').attr('checked', false); // Check Edit if Create, Update, or Delete is checked - } else if (($(this).attr('name') == 'create' || $(this).attr('name') == 'update' || $(this).attr('name') == 'delete')) { + } else if (($(this).attr('name') == 'create' + || $(this).attr('name') == 'update' + || $(this).attr('name') == 'delete')) + { $(checkboxes).filter('input[name="edit"]').attr('checked', true); } } @@ -507,10 +514,14 @@ $(document).ready(function() { $(checkboxes).filter(':not(input[name="edit"])').filter(':checked').each(function(index, checkbox) { permissions |= $(checkbox).data('permissions'); }); - OC.Share.setPermissions($('#dropdown').data('item-type'), $('#dropdown').data('item-source'), $(li).data('share-type'), $(li).data('share-with'), permissions); + OC.Share.setPermissions($('#dropdown').data('item-type'), + $('#dropdown').data('item-source'), + $(li).data('share-type'), + $(li).data('share-with'), + permissions); }); - $('#fileList').on('change', '#dropdown #linkCheckbox', function() { + $(document).on('change', '#dropdown #linkCheckbox', function() { var itemType = $('#dropdown').data('item-type'); var itemSource = $('#dropdown').data('item-source'); if (this.checked) { @@ -532,12 +543,12 @@ $(document).ready(function() { } }); - $('#fileList').on('click', '#dropdown #linkText', function() { + $(document).on('click', '#dropdown #linkText', function() { $(this).focus(); $(this).select(); }); - $('#fileList').on('click', '#dropdown #showPassword', function() { + $(document).on('click', '#dropdown #showPassword', function() { $('#linkPass').toggle('blind'); if (!$('#showPassword').is(':checked') ) { var itemType = $('#dropdown').data('item-type'); @@ -548,7 +559,7 @@ $(document).ready(function() { } }); - $('#fileList').on('focusout keyup', '#dropdown #linkPassText', function(event) { + $(document).on('focusout keyup', '#dropdown #linkPassText', function(event) { if ( $('#linkPassText').val() != '' && (event.type == 'focusout' || event.keyCode == 13) ) { var itemType = $('#dropdown').data('item-type'); var itemSource = $('#dropdown').data('item-source'); @@ -560,7 +571,7 @@ $(document).ready(function() { } }); - $('#fileList').on('click', '#dropdown #expirationCheckbox', function() { + $(document).on('click', '#dropdown #expirationCheckbox', function() { if (this.checked) { OC.Share.showExpirationDate(''); } else { @@ -575,7 +586,7 @@ $(document).ready(function() { } }); - $('#fileList').on('change', '#dropdown #expirationDate', function() { + $(document).on('change', '#dropdown #expirationDate', function() { var itemType = $('#dropdown').data('item-type'); var itemSource = $('#dropdown').data('item-source'); $.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'setExpirationDate', itemType: itemType, itemSource: itemSource, date: $(this).val() }, function(result) { @@ -586,33 +597,33 @@ $(document).ready(function() { }); - $('#fileList').on('submit', '#dropdown #emailPrivateLink', function(event) { - event.preventDefault(); - var link = $('#linkText').val(); - var itemType = $('#dropdown').data('item-type'); - var itemSource = $('#dropdown').data('item-source'); - var file = $('tr').filterAttr('data-id', String(itemSource)).data('file'); - var email = $('#email').val(); - if (email != '') { - $('#email').attr('disabled', "disabled"); - $('#email').val(t('core', 'Sending ...')); - $('#emailButton').attr('disabled', "disabled"); + $(document).on('submit', '#dropdown #emailPrivateLink', function(event) { + event.preventDefault(); + var link = $('#linkText').val(); + var itemType = $('#dropdown').data('item-type'); + var itemSource = $('#dropdown').data('item-source'); + var file = $('tr').filterAttr('data-id', String(itemSource)).data('file'); + var email = $('#email').val(); + if (email != '') { + $('#email').attr('disabled', "disabled"); + $('#email').val(t('core', 'Sending ...')); + $('#emailButton').attr('disabled', "disabled"); - $.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'email', toaddress: email, link: link, itemType: itemType, itemSource: itemSource, file: file}, - function(result) { - $('#email').attr('disabled', "false"); - $('#emailButton').attr('disabled', "false"); - if (result && result.status == 'success') { - $('#email').css('font-weight', 'bold'); - $('#email').animate({ fontWeight: 'normal' }, 2000, function() { - $(this).val(''); - }).val(t('core','Email sent')); - } else { - OC.dialogs.alert(result.data.message, t('core', 'Error while sharing')); - } - }); - } - }); + $.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'email', toaddress: email, link: link, itemType: itemType, itemSource: itemSource, file: file}, + function(result) { + $('#email').attr('disabled', "false"); + $('#emailButton').attr('disabled', "false"); + if (result && result.status == 'success') { + $('#email').css('font-weight', 'bold'); + $('#email').animate({ fontWeight: 'normal' }, 2000, function() { + $(this).val(''); + }).val(t('core','Email sent')); + } else { + OC.dialogs.alert(result.data.message, t('core', 'Error while sharing')); + } + }); + } + }); }); diff --git a/core/l10n/ar.php b/core/l10n/ar.php index 218eeed072..67514723e7 100644 --- a/core/l10n/ar.php +++ b/core/l10n/ar.php @@ -1,6 +1,5 @@ "ألا توجد فئة للإضافة؟", -"This category already exists: " => "هذه الفئة موجودة مسبقاً", "No categories selected for deletion." => "لم يتم اختيار فئة للحذف", "Sunday" => "الاحد", "Monday" => "الأثنين", diff --git a/core/l10n/bg_BG.php b/core/l10n/bg_BG.php index 587991499a..f2320f1340 100644 --- a/core/l10n/bg_BG.php +++ b/core/l10n/bg_BG.php @@ -11,6 +11,7 @@ "Error" => "Грешка", "Share" => "Споделяне", "Password" => "Парола", +"New password" => "Нова парола", "Personal" => "Лични", "Users" => "Потребители", "Apps" => "Приложения", diff --git a/core/l10n/bn_BD.php b/core/l10n/bn_BD.php index deac6afa35..426b485670 100644 --- a/core/l10n/bn_BD.php +++ b/core/l10n/bn_BD.php @@ -5,7 +5,6 @@ "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: " => "এই ক্যাটেগরিটি পূর্ব থেকেই বিদ্যমানঃ", "Object type not provided." => "অবজেক্টের ধরণটি প্রদান করা হয় নি।", "%s ID not provided." => "%s ID প্রদান করা হয় নি।", "Error adding %s to favorites." => "প্রিয়তে %s যোগ করতে সমস্যা দেখা দিয়েছে।", diff --git a/core/l10n/ca.php b/core/l10n/ca.php index 780366aaf0..2126b96edd 100644 --- a/core/l10n/ca.php +++ b/core/l10n/ca.php @@ -5,7 +5,7 @@ "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", "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: " => "Aquesta categoria ja existeix:", +"This category already exists: %s" => "Aquesta categoria ja existeix: %s", "Object type not provided." => "No s'ha proporcionat el tipus d'objecte.", "%s ID not provided." => "No s'ha proporcionat la ID %s.", "Error adding %s to favorites." => "Error en afegir %s als preferits.", @@ -109,7 +109,8 @@ "Security Warning" => "Avís de seguretat", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "No està disponible el generador de nombres aleatoris segurs, habiliteu l'extensió de PHP OpenSSL.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Sense un generador de nombres aleatoris segurs un atacant podria predir els senyals per restablir la contrasenya i prendre-us el compte.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "La carpeta de dades i els fitxers provablement són accessibles des d'internet. El fitxer .htaccess que proporciona ownCloud no funciona. Us recomanem que configureu el vostre servidor web de manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de la carpeta arrel del servidor web.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona.", +"For information how to properly configure your server, please see the documentation." => "Per més informació sobre com configurar correctament el servidor, mireu la documentació.", "Create an admin account" => "Crea un compte d'administrador", "Advanced" => "Avançat", "Data folder" => "Carpeta de dades", @@ -129,6 +130,7 @@ "Lost your password?" => "Heu perdut la contrasenya?", "remember" => "recorda'm", "Log in" => "Inici de sessió", +"Alternative Logins" => "Acreditacions alternatives", "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 a8fa035711..331fcefd92 100644 --- a/core/l10n/cs_CZ.php +++ b/core/l10n/cs_CZ.php @@ -5,7 +5,7 @@ "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", "Category type not provided." => "Nezadán typ kategorie.", "No category to add?" => "Žádná kategorie k přidání?", -"This category already exists: " => "Tato kategorie již existuje: ", +"This category already exists: %s" => "Kategorie již existuje: %s", "Object type not provided." => "Nezadán typ objektu.", "%s ID not provided." => "Nezadáno ID %s.", "Error adding %s to favorites." => "Chyba při přidávání %s k oblíbeným.", @@ -109,7 +109,8 @@ "Security Warning" => "Bezpečnostní upozornění", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Není dostupný žádný bezpečný generátor náhodných čísel. Povolte, prosím, rozšíření OpenSSL v PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Bez bezpečného generátoru náhodných čísel může útočník předpovědět token pro obnovu hesla a převzít kontrolu nad Vaším účtem.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Váš adresář dat a všechny Vaše soubory jsou pravděpodobně přístupné z internetu. Soubor .htaccess, který je poskytován ownCloud, nefunguje. Důrazně Vám doporučujeme nastavit váš webový server tak, aby nebyl adresář dat přístupný, nebo přesunout adresář dat mimo kořenovou složku dokumentů webového serveru.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Váš adresář s daty a soubory jsou dostupné z internetu, protože soubor .htaccess nefunguje.", +"For information how to properly configure your server, please see the documentation." => "Pro informace jak správně nastavit váš server se podívejte do dokumentace.", "Create an admin account" => "Vytvořit účet správce", "Advanced" => "Pokročilé", "Data folder" => "Složka s daty", @@ -129,6 +130,7 @@ "Lost your password?" => "Ztratili jste své heslo?", "remember" => "zapamatovat si", "Log in" => "Přihlásit", +"Alternative Logins" => "Alternativní přihlášení", "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/da.php b/core/l10n/da.php index ca23b62228..6d982aac2a 100644 --- a/core/l10n/da.php +++ b/core/l10n/da.php @@ -5,7 +5,7 @@ "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: " => "Denne kategori eksisterer allerede: ", +"This category already exists: %s" => "Kategorien eksisterer allerede: %s", "Object type not provided." => "Object type ikke er fastsat.", "%s ID not provided." => "%s ID ikke oplyst.", "Error adding %s to favorites." => "Fejl ved tilføjelse af %s til favoritter.", @@ -53,6 +53,7 @@ "Error" => "Fejl", "The app name is not specified." => "Den app navn er ikke angivet.", "The required file {file} is not installed!" => "Den krævede fil {file} er ikke installeret!", +"Shared" => "Delt", "Share" => "Del", "Error while sharing" => "Fejl under deling", "Error while unsharing" => "Fejl under annullering af deling", @@ -108,7 +109,8 @@ "Security Warning" => "Sikkerhedsadvarsel", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Ingen sikker tilfældighedsgenerator til tal er tilgængelig. Aktiver venligst OpenSSL udvidelsen.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Uden en sikker tilfældighedsgenerator til tal kan en angriber måske gætte dit gendan kodeord og overtage din konto", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Din data mappe og dine filer er muligvis tilgængelige fra internettet. .htaccess filen som ownCloud leverer virker ikke. Vi anbefaler på det kraftigste at du konfigurerer din webserver på en måske så data mappen ikke længere er tilgængelig eller at du flytter data mappen uden for webserverens dokument rod. ", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Dine data mappe og filer er sandsynligvis tilgængelige fra internettet fordi .htaccess filen ikke virker.", +"For information how to properly configure your server, please see the documentation." => "For at vide mere om hvordan du konfigurerer din server ordentligt, se venligst dokumentationen.", "Create an admin account" => "Opret en administratorkonto", "Advanced" => "Avanceret", "Data folder" => "Datamappe", @@ -128,6 +130,7 @@ "Lost your password?" => "Mistet dit kodeord?", "remember" => "husk", "Log in" => "Log ind", +"Alternative Logins" => "Alternative logins", "prev" => "forrige", "next" => "næste", "Updating ownCloud to version %s, this may take a while." => "Opdatere Owncloud til version %s, dette kan tage et stykke tid." diff --git a/core/l10n/de.php b/core/l10n/de.php index bc7a7dada1..d14af6639c 100644 --- a/core/l10n/de.php +++ b/core/l10n/de.php @@ -5,7 +5,6 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s hat eine Verzeichnis \"%s\" für Dich freigegeben. Es ist zum Download hier ferfügbar: %s", "Category type not provided." => "Kategorie nicht angegeben.", "No category to add?" => "Keine Kategorie hinzuzufügen?", -"This category already exists: " => "Kategorie existiert bereits:", "Object type not provided." => "Objekttyp nicht angegeben.", "%s ID not provided." => "%s ID nicht angegeben.", "Error adding %s to favorites." => "Fehler beim Hinzufügen von %s zu den Favoriten.", @@ -109,7 +108,6 @@ "Security Warning" => "Sicherheitswarnung", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Es ist kein sicherer Zufallszahlengenerator verfügbar, bitte aktiviere die PHP-Erweiterung für OpenSSL.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Ohne einen sicheren Zufallszahlengenerator sind Angreifer in der Lage die Tokens für das Zurücksetzen der Passwörter vorherzusehen und Konten zu übernehmen.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Dein Datenverzeichnis und deine Datein sind vielleicht vom Internet aus erreichbar. Die .htaccess Datei, die ownCloud verwendet, arbeitet nicht richtig. Wir schlagen Dir dringend vor, dass du deinen Webserver so konfigurierst, dass das Datenverzeichnis nicht länger erreichbar ist oder, dass du dein Datenverzeichnis aus dem Dokumenten-root des Webservers bewegst.", "Create an admin account" => "Administrator-Konto anlegen", "Advanced" => "Fortgeschritten", "Data folder" => "Datenverzeichnis", diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php index ca5b843a83..fdebfeb658 100644 --- a/core/l10n/de_DE.php +++ b/core/l10n/de_DE.php @@ -5,7 +5,7 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s hat eine Verzeichnis \"%s\" für Sie freigegeben. Es ist zum Download hier ferfügbar: %s", "Category type not provided." => "Kategorie nicht angegeben.", "No category to add?" => "Keine Kategorie hinzuzufügen?", -"This category already exists: " => "Kategorie existiert bereits:", +"This category already exists: %s" => "Die Kategorie '%s' existiert bereits.", "Object type not provided." => "Objekttyp nicht angegeben.", "%s ID not provided." => "%s ID nicht angegeben.", "Error adding %s to favorites." => "Fehler beim Hinzufügen von %s zu den Favoriten.", @@ -109,7 +109,6 @@ "Security Warning" => "Sicherheitshinweis", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Es ist kein sicherer Zufallszahlengenerator verfügbar, bitte aktivieren Sie die PHP-Erweiterung für OpenSSL.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Ohne einen sicheren Zufallszahlengenerator sind Angreifer in der Lage, die Tokens für das Zurücksetzen der Passwörter vorherzusehen und Ihr Konto zu übernehmen.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich über das Internet erreichbar. Die von ownCloud bereitgestellte .htaccess Datei funktioniert nicht. Wir empfehlen Ihnen dringend, Ihren Webserver so zu konfigurieren, dass das Datenverzeichnis nicht mehr über das Internet erreichbar ist. Alternativ können Sie auch das Datenverzeichnis aus dem Dokumentenverzeichnis des Webservers verschieben.", "Create an admin account" => "Administrator-Konto anlegen", "Advanced" => "Fortgeschritten", "Data folder" => "Datenverzeichnis", @@ -129,6 +128,7 @@ "Lost your password?" => "Passwort vergessen?", "remember" => "merken", "Log in" => "Einloggen", +"Alternative Logins" => "Alternative Logins", "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 74ec378b9d..54720f5ecb 100644 --- a/core/l10n/el.php +++ b/core/l10n/el.php @@ -5,7 +5,7 @@ "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: " => "Αυτή η κατηγορία υπάρχει ήδη:", +"This category already exists: %s" => "Αυτή η κατηγορία υπάρχει ήδη: %s", "Object type not provided." => "Δεν δώθηκε τύπος αντικειμένου.", "%s ID not provided." => "Δεν δώθηκε η ID για %s.", "Error adding %s to favorites." => "Σφάλμα προσθήκης %s στα αγαπημένα.", @@ -106,7 +106,6 @@ "Security Warning" => "Προειδοποίηση Ασφαλείας", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Δεν είναι διαθέσιμο το πρόσθετο δημιουργίας τυχαίων αριθμών ασφαλείας, παρακαλώ ενεργοποιήστε το πρόσθετο της PHP, OpenSSL.", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Ο κατάλογος data και τα αρχεία σας πιθανόν να είναι διαθέσιμα στο διαδίκτυο. Το αρχείο .htaccess που παρέχει το ownCloud δεν δουλεύει. Σας προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος data να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο data έξω από τον κατάλογο του διακομιστή.", "Create an admin account" => "Δημιουργήστε έναν λογαριασμό διαχειριστή", "Advanced" => "Για προχωρημένους", "Data folder" => "Φάκελος δεδομένων", diff --git a/core/l10n/eo.php b/core/l10n/eo.php index 7c0e65f4e0..f2297bd3d9 100644 --- a/core/l10n/eo.php +++ b/core/l10n/eo.php @@ -5,7 +5,6 @@ "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", "Category type not provided." => "Ne proviziĝis tipon de kategorio.", "No category to add?" => "Ĉu neniu kategorio estas aldonota?", -"This category already exists: " => "Ĉi tiu kategorio jam ekzistas: ", "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.", diff --git a/core/l10n/es.php b/core/l10n/es.php index e046e3bf7a..6e6c56205b 100644 --- a/core/l10n/es.php +++ b/core/l10n/es.php @@ -5,7 +5,7 @@ "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", "Category type not provided." => "Tipo de categoria no proporcionado.", "No category to add?" => "¿Ninguna categoría para añadir?", -"This category already exists: " => "Esta categoría ya existe: ", +"This category already exists: %s" => "Esta categoria ya existe: %s", "Object type not provided." => "ipo de objeto no proporcionado.", "%s ID not provided." => "%s ID no proporcionado.", "Error adding %s to favorites." => "Error añadiendo %s a los favoritos.", @@ -109,7 +109,8 @@ "Security Warning" => "Advertencia de seguridad", "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 reinicio de su contraseña y tomar control de su cuenta.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Su directorio de datos y sus archivos están probablemente accesibles desde internet. El archivo .htaccess que ownCloud provee no está funcionando. Sugerimos fuertemente que configure su servidor web de manera que el directorio de datos ya no esté accesible o mueva el directorio de datos fuera del documento raíz de su servidor web.", +"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 están probablemente accesibles a través de internet ya que el archivo .htaccess no está funcionando.", +"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" => "Crea una cuenta de administrador", "Advanced" => "Avanzado", "Data folder" => "Directorio de almacenamiento", @@ -129,6 +130,7 @@ "Lost your password?" => "¿Has perdido tu contraseña?", "remember" => "recuérdame", "Log in" => "Entrar", +"Alternative Logins" => "Nombre de usuarios alternativos", "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 1ce26416f6..dcbae5c1e9 100644 --- a/core/l10n/es_AR.php +++ b/core/l10n/es_AR.php @@ -5,7 +5,7 @@ "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", "Category type not provided." => "Tipo de categoría no provisto. ", "No category to add?" => "¿Ninguna categoría para añadir?", -"This category already exists: " => "Esta categoría ya existe: ", +"This category already exists: %s" => "Esta categoría ya existe: %s", "Object type not provided." => "Tipo de objeto no provisto. ", "%s ID not provided." => "%s ID no provista. ", "Error adding %s to favorites." => "Error al agregar %s a favoritos. ", @@ -53,8 +53,8 @@ "Error" => "Error", "The app name is not specified." => "El nombre de la aplicación no esta especificado.", "The required file {file} is not installed!" => "¡El archivo requerido {file} no está instalado!", -"Share" => "Compartir", "Shared" => "Compartido", +"Share" => "Compartir", "Error while sharing" => "Error al compartir", "Error while unsharing" => "Error en el procedimiento de ", "Error while changing permissions" => "Error al cambiar permisos", @@ -109,7 +109,8 @@ "Security Warning" => "Advertencia de seguridad", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "No hay disponible ningún generador de números aleatorios seguro. Por favor habilitá 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 reinicio de tu contraseña y tomar control de tu cuenta.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Tu directorio de datos y tus archivos son probablemente accesibles desde internet. El archivo .htaccess provisto por ownCloud no está funcionando. Te sugerimos que configures tu servidor web de manera que el directorio de datos ya no esté accesible, o que muevas el directorio de datos afuera del directorio raíz de tu servidor web.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Tu directorio de datos y tus archivos probablemente son accesibles a través de internet, ya que el archivo .htaccess no está funcionando.", +"For information how to properly configure your server, please see the documentation." => "Para información sobre cómo configurar adecuadamente tu servidor, por favor mirá la documentación.", "Create an admin account" => "Crear una cuenta de administrador", "Advanced" => "Avanzado", "Data folder" => "Directorio de almacenamiento", @@ -129,6 +130,7 @@ "Lost your password?" => "¿Perdiste tu contraseña?", "remember" => "recordame", "Log in" => "Entrar", +"Alternative Logins" => "Nombre alternativos de usuarios", "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 f4328de990..b0fc75736a 100644 --- a/core/l10n/et_EE.php +++ b/core/l10n/et_EE.php @@ -1,6 +1,5 @@ "Pole kategooriat, mida lisada?", -"This category already exists: " => "See kategooria on juba olemas: ", "No categories selected for deletion." => "Kustutamiseks pole kategooriat valitud.", "Sunday" => "Pühapäev", "Monday" => "Esmaspäev", diff --git a/core/l10n/eu.php b/core/l10n/eu.php index ed919d64d9..7dce8c53fb 100644 --- a/core/l10n/eu.php +++ b/core/l10n/eu.php @@ -5,7 +5,6 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s erabiltzaileak \"%s\" karpeta zurekin partekatu 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: " => "Kategoria hau dagoeneko existitzen da:", "Object type not provided." => "Objetu mota ez da zehaztu.", "%s ID not provided." => "%s ID mota ez da zehaztu.", "Error adding %s to favorites." => "Errorea gertatu da %s gogokoetara gehitzean.", @@ -109,7 +108,6 @@ "Security Warning" => "Segurtasun abisua", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Ez dago hausazko zenbaki sortzaile segururik eskuragarri, mesedez gatiu PHP OpenSSL extensioa.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Hausazko zenbaki sortzaile segururik gabe erasotzaile batek pasahitza berrezartzeko kodeak iragarri ditzake eta zure kontuaz jabetu.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Zure data karpeta eta zure fitxategiak internetetik zuzenean eskuragarri egon daitezke. ownCloudek emandako .htaccess fitxategia ez du bere lana egiten. Aholkatzen dizugu zure web zerbitzaria ongi konfiguratzea data karpeta eskuragarri ez izateko edo data karpeta web zerbitzariaren dokumentu errotik mugitzea.", "Create an admin account" => "Sortu kudeatzaile kontu bat", "Advanced" => "Aurreratua", "Data folder" => "Datuen karpeta", diff --git a/core/l10n/fa.php b/core/l10n/fa.php index 359eddb73e..10a57962f6 100644 --- a/core/l10n/fa.php +++ b/core/l10n/fa.php @@ -5,7 +5,6 @@ "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: " => "این گروه از قبل اضافه شده", "Object type not provided." => "نوع شی ارائه نشده است.", "%s ID not provided." => "شناسه %s ارائه نشده است.", "Error adding %s to favorites." => "خطای اضافه کردن %s به علاقه مندی ها.", diff --git a/core/l10n/fi_FI.php b/core/l10n/fi_FI.php index 1f2568f951..dedbf6723f 100644 --- a/core/l10n/fi_FI.php +++ b/core/l10n/fi_FI.php @@ -4,7 +4,6 @@ "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", "No category to add?" => "Ei lisättävää luokkaa?", -"This category already exists: " => "Tämä luokka on jo olemassa: ", "Error adding %s to favorites." => "Virhe lisätessä kohdetta %s suosikkeihin.", "No categories selected for deletion." => "Luokkia ei valittu poistettavaksi.", "Error removing %s from favorites." => "Virhe poistaessa kohdetta %s suosikeista.", @@ -101,7 +100,6 @@ "Edit categories" => "Muokkaa luokkia", "Add" => "Lisää", "Security Warning" => "Turvallisuusvaroitus", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Data-kansio ja tiedostot ovat ehkä saavutettavissa Internetistä. .htaccess-tiedosto, jolla kontrolloidaan pääsyä, ei toimi. Suosittelemme, että muutat web-palvelimesi asetukset niin ettei data-kansio ole enää pääsyä tai siirrät data-kansion pois web-palvelimen tiedostojen juuresta.", "Create an admin account" => "Luo ylläpitäjän tunnus", "Advanced" => "Lisäasetukset", "Data folder" => "Datakansio", diff --git a/core/l10n/fr.php b/core/l10n/fr.php index e3b7083652..630d541b11 100644 --- a/core/l10n/fr.php +++ b/core/l10n/fr.php @@ -5,7 +5,7 @@ "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", "Category type not provided." => "Type de catégorie non spécifié.", "No category to add?" => "Pas de catégorie à ajouter ?", -"This category already exists: " => "Cette catégorie existe déjà : ", +"This category already exists: %s" => "Cette catégorie existe déjà : %s", "Object type not provided." => "Type d'objet non spécifié.", "%s ID not provided." => "L'identifiant de %s n'est pas spécifié.", "Error adding %s to favorites." => "Erreur lors de l'ajout de %s aux favoris.", @@ -109,7 +109,8 @@ "Security Warning" => "Avertissement de sécurité", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Aucun générateur de nombre aléatoire sécurisé n'est disponible, veuillez activer l'extension PHP OpenSSL", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Sans générateur de nombre aléatoire sécurisé, un attaquant peut être en mesure de prédire les jetons de réinitialisation du mot de passe, et ainsi prendre le contrôle de votre compte utilisateur.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Votre dossier data et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess fourni par ownCloud ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de manière à ce que le dossier data ne soit plus accessible ou bien de déplacer le dossier data en dehors du dossier racine des documents du serveur web.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Votre répertoire data est certainement accessible depuis l'internet car le fichier .htaccess ne semble pas fonctionner", +"For information how to properly configure your server, please see the documentation." => "Pour les informations de configuration de votre serveur, veuillez lire la documentation.", "Create an admin account" => "Créer un compte administrateur", "Advanced" => "Avancé", "Data folder" => "Répertoire des données", @@ -129,6 +130,7 @@ "Lost your password?" => "Mot de passe perdu ?", "remember" => "se souvenir de moi", "Log in" => "Connexion", +"Alternative Logins" => "Logins alternatifs", "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 e96d6962c9..8fd9292ce6 100644 --- a/core/l10n/gl.php +++ b/core/l10n/gl.php @@ -5,7 +5,6 @@ "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", "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: " => "Esta categoría xa existe: ", "Object type not provided." => "Non se forneceu o tipo de obxecto.", "%s ID not provided." => "Non se forneceu o ID %s.", "Error adding %s to favorites." => "Produciuse un erro ao engadir %s aos favoritos.", @@ -106,7 +105,6 @@ "Security Warning" => "Aviso de seguranza", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Non hai un xerador de números ao chou dispoñíbel. Active o engadido de OpenSSL para PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Sen un xerador seguro de números ao chou podería acontecer que predicindo as cadeas de texto de reinicio de contrasinais se afagan coa súa conta.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "O seu cartafol de datos e os seus ficheiros probabelmente sexan accesíbeis a través da Internet. O ficheiro .htaccess que fornece ownCloud non está a empregarse. Suxerimoslle que configure o seu servidor web de tal xeito que o cartafol de datos non estea accesíbel ou mova o cartafol de datos fora do directorio raíz de datos do servidor web.", "Create an admin account" => "Crear unha contra de administrador", "Advanced" => "Avanzado", "Data folder" => "Cartafol de datos", diff --git a/core/l10n/he.php b/core/l10n/he.php index b7292c6ede..75c378cece 100644 --- a/core/l10n/he.php +++ b/core/l10n/he.php @@ -5,7 +5,6 @@ "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: " => "קטגוריה זאת כבר קיימת: ", "Object type not provided." => "סוג הפריט לא סופק.", "%s ID not provided." => "מזהה %s לא סופק.", "Error adding %s to favorites." => "אירעה שגיאה בעת הוספת %s למועדפים.", @@ -106,7 +105,6 @@ "Security Warning" => "אזהרת אבטחה", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "יתכן שתיקיית הנתונים והקבצים שלך נגישים דרך האינטרנט. קובץ ה־‎.htaccess שמסופק על ידי ownCloud כנראה אינו עובד. אנו ממליצים בחום להגדיר את שרת האינטרנט שלך בדרך שבה תיקיית הנתונים לא תהיה זמינה עוד או להעביר את תיקיית הנתונים מחוץ לספריית העל של שרת האינטרנט.", "Create an admin account" => "יצירת חשבון מנהל", "Advanced" => "מתקדם", "Data folder" => "תיקיית נתונים", diff --git a/core/l10n/hi.php b/core/l10n/hi.php index d7f9fd150b..7d55c5b6b2 100644 --- a/core/l10n/hi.php +++ b/core/l10n/hi.php @@ -1,17 +1,27 @@ "सेटिंग्स", "Password" => "पासवर्ड", "Use the following link to reset your password: {link}" => "आगे दिये गये लिंक का उपयोग पासवर्ड बदलने के लिये किजीये: {link}", "You will receive a link to reset your password via Email." => "पासवर्ड बदलने कि लिंक आपको ई-मेल द्वारा भेजी जायेगी|", "Username" => "प्रयोक्ता का नाम", "Your password was reset" => "आपका पासवर्ड बदला गया है", "New password" => "नया पासवर्ड", +"Personal" => "यक्तिगत", +"Users" => "उपयोगकर्ता", +"Apps" => "Apps", +"Help" => "सहयोग", "Cloud not found" => "क्लौड नहीं मिला ", "Create an admin account" => "व्यवस्थापक खाता बनाएँ", "Advanced" => "उन्नत", +"Data folder" => "डाटा फोल्डर", "Configure the database" => "डेटाबेस कॉन्फ़िगर करें ", +"will be used" => "उपयोग होगा", "Database user" => "डेटाबेस उपयोगकर्ता", "Database password" => "डेटाबेस पासवर्ड", +"Database name" => "डेटाबेस का नाम", "Finish setup" => "सेटअप समाप्त करे", +"Log out" => "लोग आउट", +"remember" => "याद रखें", "prev" => "पिछला", "next" => "अगला" ); diff --git a/core/l10n/hr.php b/core/l10n/hr.php index 78b767305a..86136329d8 100644 --- a/core/l10n/hr.php +++ b/core/l10n/hr.php @@ -1,6 +1,5 @@ "Nemate kategorija koje možete dodati?", -"This category already exists: " => "Ova kategorija već postoji: ", "No categories selected for deletion." => "Nema odabranih kategorija za brisanje.", "Sunday" => "nedelja", "Monday" => "ponedeljak", diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php index 30ddc7b867..fc71a669e8 100644 --- a/core/l10n/hu_HU.php +++ b/core/l10n/hu_HU.php @@ -5,7 +5,6 @@ "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", "Category type not provided." => "Nincs megadva a kategória típusa.", "No category to add?" => "Nincs hozzáadandó kategória?", -"This category already exists: " => "Ez a kategória már létezik: ", "Object type not provided." => "Az objektum típusa nincs megadva.", "%s ID not provided." => "%s ID nincs megadva.", "Error adding %s to favorites." => "Nem sikerült a kedvencekhez adni ezt: %s", @@ -106,7 +105,6 @@ "Security Warning" => "Biztonsági figyelmeztetés", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Nem érhető el megfelelő véletlenszám-generátor, telepíteni kellene a PHP OpenSSL kiegészítését.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Megfelelő véletlenszám-generátor hiányában egy támadó szándékú idegen képes lehet megjósolni a jelszóvisszaállító tokent, és Ön helyett belépni.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Az adatkönytára és az itt levő fájlok valószínűleg elérhetők az internetről. Az ownCloud által beillesztett .htaccess fájl nem működik. Nagyon fontos, hogy a webszervert úgy konfigurálja, hogy az adatkönyvtár nem legyen közvetlenül kívülről elérhető, vagy az adatkönyvtárt tegye a webszerver dokumentumfáján kívülre.", "Create an admin account" => "Rendszergazdai belépés létrehozása", "Advanced" => "Haladó", "Data folder" => "Adatkönyvtár", diff --git a/core/l10n/ia.php b/core/l10n/ia.php index 7f2eac1736..8adc38f0bb 100644 --- a/core/l10n/ia.php +++ b/core/l10n/ia.php @@ -1,5 +1,4 @@ "Iste categoria jam existe:", "Sunday" => "Dominica", "Monday" => "Lunedi", "Tuesday" => "Martedi", diff --git a/core/l10n/id.php b/core/l10n/id.php index 896d444e83..697195e751 100644 --- a/core/l10n/id.php +++ b/core/l10n/id.php @@ -1,6 +1,5 @@ "Tidak ada kategori yang akan ditambahkan?", -"This category already exists: " => "Kategori ini sudah ada:", "No categories selected for deletion." => "Tidak ada kategori terpilih untuk penghapusan.", "Sunday" => "minggu", "Monday" => "senin", diff --git a/core/l10n/is.php b/core/l10n/is.php index 98766efc2c..997a582d22 100644 --- a/core/l10n/is.php +++ b/core/l10n/is.php @@ -5,7 +5,6 @@ "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ð?", -"This category already exists: " => "Þessi flokkur er þegar til:", "Object type not provided." => "Tegund ekki í boði.", "%s ID not provided." => "%s ID ekki í boði.", "Error adding %s to favorites." => "Villa við að bæta %s við eftirlæti.", @@ -106,7 +105,6 @@ "Security Warning" => "Öryggis aðvörun", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Enginn traustur slembitölugjafi í boði, vinsamlegast virkjaðu PHP OpenSSL viðbótina.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Án öruggs slembitölugjafa er mögulegt að sjá fyrir öryggis auðkenni til að endursetja lykilorð og komast inn á aðganginn þinn.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Gagnamappan þín er að öllum líkindum aðgengileg frá internetinu. Skráin .htaccess sem fylgir með ownCloud er ekki að virka. Við mælum eindregið með því að þú stillir vefþjóninn þannig að gagnamappan verði ekki aðgengileg frá internetinu eða færir hana út fyrir vefrótina.", "Create an admin account" => "Útbúa vefstjóra aðgang", "Advanced" => "Ítarlegt", "Data folder" => "Gagnamappa", diff --git a/core/l10n/it.php b/core/l10n/it.php index ec094f643a..c0109b9123 100644 --- a/core/l10n/it.php +++ b/core/l10n/it.php @@ -5,7 +5,7 @@ "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", "Category type not provided." => "Tipo di categoria non fornito.", "No category to add?" => "Nessuna categoria da aggiungere?", -"This category already exists: " => "Questa categoria esiste già: ", +"This category already exists: %s" => "Questa categoria esiste già: %s", "Object type not provided." => "Tipo di oggetto non fornito.", "%s ID not provided." => "ID %s non fornito.", "Error adding %s to favorites." => "Errore durante l'aggiunta di %s ai preferiti.", @@ -109,7 +109,8 @@ "Security Warning" => "Avviso di sicurezza", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Non è disponibile alcun generatore di numeri casuali sicuro. Abilita l'estensione OpenSSL di PHP", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Senza un generatore di numeri casuali sicuro, un malintenzionato potrebbe riuscire a individuare i token di ripristino delle password e impossessarsi del tuo account.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet. Il file .htaccess fornito da ownCloud non funziona. Ti suggeriamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile o sposta tale cartella fuori dalla radice del sito.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "La cartella dei dati e i file sono probabilmente accessibili da Internet poiché il file .htaccess non funziona.", +"For information how to properly configure your server, please see the documentation." => "Per informazioni su come configurare correttamente il server, vedi la documentazione.", "Create an admin account" => "Crea un account amministratore", "Advanced" => "Avanzate", "Data folder" => "Cartella dati", @@ -129,6 +130,7 @@ "Lost your password?" => "Hai perso la password?", "remember" => "ricorda", "Log in" => "Accedi", +"Alternative Logins" => "Accessi alternativi", "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 155c201d9b..803faaf75a 100644 --- a/core/l10n/ja_JP.php +++ b/core/l10n/ja_JP.php @@ -5,7 +5,7 @@ "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: " => "このカテゴリはすでに存在します: ", +"This category already exists: %s" => "このカテゴリはすでに存在します: %s", "Object type not provided." => "オブジェクトタイプは提供されていません。", "%s ID not provided." => "%s ID は提供されていません。", "Error adding %s to favorites." => "お気に入りに %s を追加エラー", @@ -109,7 +109,6 @@ "Security Warning" => "セキュリティ警告", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "セキュアな乱数生成器が利用可能ではありません。PHPのOpenSSL拡張を有効にして下さい。", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "データディレクトリとファイルが恐らくインターネットからアクセスできるようになっています。ownCloudが提供する .htaccessファイルが機能していません。データディレクトリを全くアクセスできないようにするか、データディレクトリをウェブサーバのドキュメントルートの外に置くようにウェブサーバを設定することを強くお勧めします。 ", "Create an admin account" => "管理者アカウントを作成してください", "Advanced" => "詳細設定", "Data folder" => "データフォルダ", @@ -129,6 +128,7 @@ "Lost your password?" => "パスワードを忘れましたか?", "remember" => "パスワードを記憶する", "Log in" => "ログイン", +"Alternative Logins" => "代替ログイン", "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 ab4045601f..731a353455 100644 --- a/core/l10n/ka_GE.php +++ b/core/l10n/ka_GE.php @@ -1,6 +1,5 @@ "არ არის კატეგორია დასამატებლად?", -"This category already exists: " => "კატეგორია უკვე არსებობს", "No categories selected for deletion." => "სარედაქტირებელი კატეგორია არ არის არჩეული ", "Sunday" => "კვირა", "Monday" => "ორშაბათი", diff --git a/core/l10n/ko.php b/core/l10n/ko.php index 91c00c4a57..172ec3e03a 100644 --- a/core/l10n/ko.php +++ b/core/l10n/ko.php @@ -5,7 +5,6 @@ "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: " => "이 분류는 이미 존재합니다:", "Object type not provided." => "객체 형식이 제공되지 않았습니다.", "%s ID not provided." => "%s ID가 제공되지 않았습니다.", "Error adding %s to favorites." => "책갈피에 %s을(를) 추가할 수 없었습니다.", @@ -109,7 +108,6 @@ "Security Warning" => "보안 경고", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "안전한 난수 생성기를 사용할 수 없습니다. PHP의 OpenSSL 확장을 활성화해 주십시오.", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "데이터 디렉터리와 파일을 인터넷에서 접근할 수 있는 것 같습니다. ownCloud에서 제공한 .htaccess 파일이 작동하지 않습니다. 웹 서버를 다시 설정하여 데이터 디렉터리에 접근할 수 없도록 하거나 문서 루트 바깥쪽으로 옮기는 것을 추천합니다.", "Create an admin account" => "관리자 계정 만들기", "Advanced" => "고급", "Data folder" => "데이터 폴더", diff --git a/core/l10n/lb.php b/core/l10n/lb.php index 4069a77836..11137f27aa 100644 --- a/core/l10n/lb.php +++ b/core/l10n/lb.php @@ -1,6 +1,5 @@ "Keng Kategorie fir bäizesetzen?", -"This category already exists: " => "Des Kategorie existéiert schonn:", "No categories selected for deletion." => "Keng Kategorien ausgewielt fir ze läschen.", "Sunday" => "Sonndes", "Monday" => "Méindes", diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php index c2dc47c826..563fd8884b 100644 --- a/core/l10n/lt_LT.php +++ b/core/l10n/lt_LT.php @@ -1,6 +1,5 @@ "Nepridėsite jokios kategorijos?", -"This category already exists: " => "Tokia kategorija jau yra:", "No categories selected for deletion." => "Trynimui nepasirinkta jokia kategorija.", "Sunday" => "Sekmadienis", "Monday" => "Pirmadienis", @@ -85,7 +84,6 @@ "Security Warning" => "Saugumo pranešimas", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Jūsų duomenų aplankalas ir Jūsų failai turbūt yra pasiekiami per internetą. Failas .htaccess, kuris duodamas, neveikia. Mes rekomenduojame susitvarkyti savo nustatymsu taip, kad failai nebūtų pasiekiami per internetą, arba persikelti juos kitur.", "Create an admin account" => "Sukurti administratoriaus paskyrą", "Advanced" => "Išplėstiniai", "Data folder" => "Duomenų katalogas", diff --git a/core/l10n/lv.php b/core/l10n/lv.php index a145c50464..78be7df9aa 100644 --- a/core/l10n/lv.php +++ b/core/l10n/lv.php @@ -5,7 +5,7 @@ "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: " => "Šāda kategorija jau eksistē:", +"This category already exists: %s" => "Šāda kategorija jau eksistē — %s", "Object type not provided." => "Objekta tips nav norādīts.", "%s ID not provided." => "%s ID nav norādīts.", "Error adding %s to favorites." => "Kļūda, pievienojot %s izlasei.", @@ -109,7 +109,8 @@ "Security Warning" => "Brīdinājums par drošību", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Nav pieejams drošs nejaušu skaitļu ģenerators. Lūdzu, aktivējiet PHP OpenSSL paplašinājumu.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Bez droša nejaušu skaitļu ģeneratora uzbrucējs var paredzēt paroļu atjaunošanas marķierus un pārņem jūsu kontu.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Jūsu datu direktorija un datnes visdrīzāk ir pieejamas no interneta. ownCloud nodrošinātā .htaccess datne nedarbojas. Mēs iesakām konfigurēt serveri tā, lai datu direktorija vairs nebūtu pieejama, vai arī pārvietojiet datu direktoriju ārpus tīmekļa servera dokumentu saknes.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas.", +"For information how to properly configure your server, please see the documentation." => "Lai uzzinātu, kā pareizi jākonfigurē šis serveris, skatiet dokumentāciju.", "Create an admin account" => "Izveidot administratora kontu", "Advanced" => "Paplašināti", "Data folder" => "Datu mape", @@ -129,6 +130,7 @@ "Lost your password?" => "Aizmirsāt paroli?", "remember" => "atcerēties", "Log in" => "Ierakstīties", +"Alternative Logins" => "Alternatīvās pieteikšanās", "prev" => "iepriekšējā", "next" => "nākamā", "Updating ownCloud to version %s, this may take a while." => "Atjaunina ownCloud uz versiju %s. Tas var aizņemt kādu laiciņu." diff --git a/core/l10n/mk.php b/core/l10n/mk.php index 0b202fa666..d9da766900 100644 --- a/core/l10n/mk.php +++ b/core/l10n/mk.php @@ -5,7 +5,6 @@ "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: " => "Оваа категорија веќе постои:", "Object type not provided." => "Не беше доставен тип на објект.", "%s ID not provided." => "%s ID не беше доставено.", "Error adding %s to favorites." => "Грешка при додавање %s во омилени.", @@ -106,7 +105,6 @@ "Security Warning" => "Безбедносно предупредување", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Вашата папка со податоци и датотеките е најверојатно достапна од интернет. .htaccess датотеката што ја овозможува ownCloud не фунционира. Силно препорачуваме да го исконфигурирате вашиот сервер за вашата папка со податоци не е достапна преку интернетт или преместете ја надвор од коренот на веб серверот.", "Create an admin account" => "Направете администраторска сметка", "Advanced" => "Напредно", "Data folder" => "Фолдер со податоци", diff --git a/core/l10n/ms_MY.php b/core/l10n/ms_MY.php index 477e82ea9f..af51079b57 100644 --- a/core/l10n/ms_MY.php +++ b/core/l10n/ms_MY.php @@ -1,6 +1,5 @@ "Tiada kategori untuk di tambah?", -"This category already exists: " => "Kategori ini telah wujud", "No categories selected for deletion." => "tiada kategori dipilih untuk penghapusan", "Sunday" => "Ahad", "Monday" => "Isnin", diff --git a/core/l10n/nb_NO.php b/core/l10n/nb_NO.php index 65d6ea00cc..340625449e 100644 --- a/core/l10n/nb_NO.php +++ b/core/l10n/nb_NO.php @@ -1,6 +1,5 @@ "Ingen kategorier å legge til?", -"This category already exists: " => "Denne kategorien finnes allerede:", "No categories selected for deletion." => "Ingen kategorier merket for sletting.", "Sunday" => "Søndag", "Monday" => "Mandag", diff --git a/core/l10n/nl.php b/core/l10n/nl.php index aca9b11cd1..6daa922790 100644 --- a/core/l10n/nl.php +++ b/core/l10n/nl.php @@ -5,7 +5,7 @@ "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", "Category type not provided." => "Categorie type niet opgegeven.", "No category to add?" => "Geen categorie toevoegen?", -"This category already exists: " => "Deze categorie bestaat al.", +"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.", @@ -53,8 +53,8 @@ "Error" => "Fout", "The app name is not specified." => "De app naam is niet gespecificeerd.", "The required file {file} is not installed!" => "Het vereiste bestand {file} is niet geïnstalleerd!", -"Share" => "Delen", "Shared" => "Gedeeld", +"Share" => "Delen", "Error while sharing" => "Fout tijdens het delen", "Error while unsharing" => "Fout tijdens het stoppen met delen", "Error while changing permissions" => "Fout tijdens het veranderen van permissies", @@ -109,7 +109,8 @@ "Security Warning" => "Beveiligingswaarschuwing", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Uw data is waarschijnlijk toegankelijk vanaf net internet. Het .htaccess bestand dat ownCloud levert werkt niet goed. U wordt aangeraden om de configuratie van uw webserver zodanig aan te passen dat de data folders niet meer publiekelijk toegankelijk zijn. U kunt ook de data folder verplaatsen naar een folder buiten de webserver document folder.", +"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.", "Create an admin account" => "Maak een beheerdersaccount aan", "Advanced" => "Geavanceerd", "Data folder" => "Gegevensmap", @@ -129,6 +130,7 @@ "Lost your password?" => "Uw wachtwoord vergeten?", "remember" => "onthoud gegevens", "Log in" => "Meld je aan", +"Alternative Logins" => "Alternatieve inlogs", "prev" => "vorige", "next" => "volgende", "Updating ownCloud to version %s, this may take a while." => "Updaten ownCloud naar versie %s, dit kan even duren." diff --git a/core/l10n/oc.php b/core/l10n/oc.php index 5b399dd826..abd5f5736a 100644 --- a/core/l10n/oc.php +++ b/core/l10n/oc.php @@ -1,6 +1,5 @@ "Pas de categoria d'ajustar ?", -"This category already exists: " => "La categoria exista ja :", "No categories selected for deletion." => "Pas de categorias seleccionadas per escafar.", "Sunday" => "Dimenge", "Monday" => "Diluns", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 1376fa1359..682289326d 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -5,7 +5,6 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Uzytkownik %s wspóldzieli folder \"%s\" z toba. Jest dostepny tutaj: %s", "Category type not provided." => "Typ kategorii nie podany.", "No category to add?" => "Brak kategorii", -"This category already exists: " => "Ta kategoria już istnieje", "Object type not provided." => "Typ obiektu nie podany.", "%s ID not provided." => "%s ID nie podany.", "Error adding %s to favorites." => "Błąd dodania %s do ulubionych.", @@ -107,7 +106,6 @@ "Security Warning" => "Ostrzeżenie o zabezpieczeniach", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Niedostępny bezpieczny generator liczb losowych, należy włączyć rozszerzenie OpenSSL w PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Bez bezpiecznego generatora liczb losowych, osoba atakująca może być w stanie przewidzieć resetujące hasło tokena i przejąć kontrolę nad swoim kontem.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Katalog danych (data) i pliki są prawdopodobnie dostępnego z Internetu. Sprawdź plik .htaccess oraz konfigurację serwera (hosta). Sugerujemy, skonfiguruj swój serwer w taki sposób, żeby dane katalogu nie były dostępne lub przenieść katalog danych spoza głównego dokumentu webserwera.", "Create an admin account" => "Tworzenie konta administratora", "Advanced" => "Zaawansowane", "Data folder" => "Katalog danych", diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php index 929f298c4c..0d440f4c9d 100644 --- a/core/l10n/pt_BR.php +++ b/core/l10n/pt_BR.php @@ -5,7 +5,6 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "O usuário %s compartilhou com você a pasta \"%s\", que está disponível para download em: %s", "Category type not provided." => "Tipo de categoria não fornecido.", "No category to add?" => "Nenhuma categoria adicionada?", -"This category already exists: " => "Essa categoria já existe", "Object type not provided." => "tipo de objeto não fornecido.", "%s ID not provided." => "%s ID não fornecido(s).", "Error adding %s to favorites." => "Erro ao adicionar %s aos favoritos.", @@ -109,7 +108,6 @@ "Security Warning" => "Aviso de Segurança", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Nenhum gerador de número aleatório de segurança disponível. Habilite a extensão OpenSSL do PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Sem um gerador de número aleatório de segurança, um invasor pode ser capaz de prever os símbolos de redefinição de senhas e assumir sua conta.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Seu diretório de dados e seus arquivos estão, provavelmente, acessíveis a partir da internet. O .htaccess que o ownCloud fornece não está funcionando. Nós sugerimos que você configure o seu servidor web de uma forma que o diretório de dados esteja mais acessível ou que você mova o diretório de dados para fora da raiz do servidor web.", "Create an admin account" => "Criar uma conta de administrador", "Advanced" => "Avançado", "Data folder" => "Pasta de dados", diff --git a/core/l10n/pt_PT.php b/core/l10n/pt_PT.php index 2189a7e811..1a17161ae5 100644 --- a/core/l10n/pt_PT.php +++ b/core/l10n/pt_PT.php @@ -5,7 +5,7 @@ "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: " => "Esta categoria já existe:", +"This category already exists: %s" => "A categoria já existe: %s", "Object type not provided." => "Tipo de objecto não fornecido", "%s ID not provided." => "ID %s não fornecido", "Error adding %s to favorites." => "Erro a adicionar %s aos favoritos", @@ -109,7 +109,8 @@ "Security Warning" => "Aviso de Segurança", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Não existe nenhum gerador seguro de números aleatórios, por favor, active a extensão OpenSSL no PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Sem nenhum gerador seguro de números aleatórios, uma pessoa mal intencionada pode prever a sua password, reiniciar as seguranças adicionais e tomar conta da sua conta. ", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "A sua pasta com os dados e os seus ficheiros estão provavelmente acessíveis a partir das internet. Sugerimos veementemente que configure o seu servidor web de maneira a que a pasta com os dados deixe de ficar acessível, ou mova a pasta com os dados para fora da raiz de documentos do servidor web.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "A pasta de dados do ownCloud e os respectivos ficheiros, estarão provavelmente acessíveis a partir da internet, pois o ficheiros .htaccess não funciona.", +"For information how to properly configure your server, please see the documentation." => "Para obter informações de como configurar correctamente o servidor, veja em: documentation.", "Create an admin account" => "Criar uma conta administrativa", "Advanced" => "Avançado", "Data folder" => "Pasta de dados", @@ -129,6 +130,7 @@ "Lost your password?" => "Esqueceu-se da sua password?", "remember" => "lembrar", "Log in" => "Entrar", +"Alternative Logins" => "Contas de acesso alternativas", "prev" => "anterior", "next" => "seguinte", "Updating ownCloud to version %s, this may take a while." => "A actualizar o ownCloud para a versão %s, esta operação pode demorar." diff --git a/core/l10n/ro.php b/core/l10n/ro.php index 83587fa4a7..da9f1a7da9 100644 --- a/core/l10n/ro.php +++ b/core/l10n/ro.php @@ -5,7 +5,6 @@ "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", "No category to add?" => "Nici o categorie de adăugat?", -"This category already exists: " => "Această categorie deja există:", "Object type not provided." => "Tipul obiectului nu este prevazut", "%s ID not provided." => "ID-ul %s nu a fost introdus", "Error adding %s to favorites." => "Eroare la adăugarea %s la favorite", @@ -106,7 +105,6 @@ "Security Warning" => "Avertisment de securitate", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Generatorul de numere pentru securitate nu este disponibil, va rog activati extensia PHP OpenSSL", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Fara generatorul pentru numere de securitate , un atacator poate afla parola si reseta contul tau", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Directorul tău de date și fișierele tale probabil sunt accesibile prin internet. Fișierul .htaccess oferit de ownCloud nu funcționează. Îți recomandăm să configurezi server-ul tău web într-un mod în care directorul de date să nu mai fie accesibil sau mută directorul de date în afara directorului root al server-ului web.", "Create an admin account" => "Crează un cont de administrator", "Advanced" => "Avansat", "Data folder" => "Director date", diff --git a/core/l10n/ru.php b/core/l10n/ru.php index 2aebf73498..b9c00c6691 100644 --- a/core/l10n/ru.php +++ b/core/l10n/ru.php @@ -5,7 +5,7 @@ "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: " => "Эта категория уже существует: ", +"This category already exists: %s" => "Эта категория уже существует: %s", "Object type not provided." => "Тип объекта не предоставлен", "%s ID not provided." => "ID %s не предоставлен", "Error adding %s to favorites." => "Ошибка добавления %s в избранное", @@ -109,7 +109,8 @@ "Security Warning" => "Предупреждение безопасности", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Нет доступного защищенного генератора случайных чисел, пожалуйста, включите расширение PHP OpenSSL.", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Ваши каталоги данных и файлы, вероятно, доступны из Интернета. Файл .htaccess, предоставляемый ownCloud, не работает. Мы настоятельно рекомендуем Вам настроить вебсервер таким образом, чтобы каталоги данных больше не были доступны, или переместить их за пределы корневого каталога документов веб-сервера.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Ваша папка с данными и файлы возможно доступны из интернета потому что файл .htaccess не работает.", +"For information how to properly configure your server, please see the documentation." => "Для информации как правильно настроить Ваш сервер, пожалйста загляните в документацию.", "Create an admin account" => "Создать учётную запись администратора", "Advanced" => "Дополнительно", "Data folder" => "Директория с данными", @@ -129,6 +130,7 @@ "Lost your password?" => "Забыли пароль?", "remember" => "запомнить", "Log in" => "Войти", +"Alternative Logins" => "Альтернативные имена пользователя", "prev" => "пред", "next" => "след", "Updating ownCloud to version %s, this may take a while." => "Производится обновление ownCloud до версии %s. Это может занять некоторое время." diff --git a/core/l10n/ru_RU.php b/core/l10n/ru_RU.php index 53a3b9b0d5..86e068c6c8 100644 --- a/core/l10n/ru_RU.php +++ b/core/l10n/ru_RU.php @@ -5,7 +5,7 @@ "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: " => "Эта категория уже существует:", +"This category already exists: %s" => "Эта категория уже существует: %s", "Object type not provided." => "Тип объекта не предоставлен.", "%s ID not provided." => "%s ID не предоставлен.", "Error adding %s to favorites." => "Ошибка добавления %s в избранное.", @@ -109,7 +109,8 @@ "Security Warning" => "Предупреждение системы безопасности", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Нет доступного защищенного генератора случайных чисел, пожалуйста, включите расширение PHP OpenSSL.", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Ваши каталоги данных и файлы, вероятно, доступны из Интернета. Файл .htaccess, предоставляемый ownCloud, не работает. Мы настоятельно рекомендуем Вам настроить вебсервер таким образом, чтобы каталоги данных больше не были доступны, или переместить их за пределы корневого каталога документов веб-сервера.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Ваша папка с данными и файлы возможно доступны из интернета потому что файл .htaccess не работает.", +"For information how to properly configure your server, please see the documentation." => "Для информации как правильно настроить Ваш сервер, пожалйста загляните в документацию.", "Create an admin account" => "Создать admin account", "Advanced" => "Расширенный", "Data folder" => "Папка данных", @@ -129,6 +130,7 @@ "Lost your password?" => "Забыли пароль?", "remember" => "запомнить", "Log in" => "Войти", +"Alternative Logins" => "Альтернативные Имена", "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 eab1ba1001..eaafca2f3f 100644 --- a/core/l10n/si_LK.php +++ b/core/l10n/si_LK.php @@ -71,7 +71,6 @@ "Add" => "එක් කරන්න", "Security Warning" => "ආරක්ෂක නිවේදනයක්", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "ඔබගේ දත්ත ඩිරෙක්ටරිය හා ගොනුවලට අන්තර්ජාලයෙන් පිවිසිය හැක. ownCloud සපයා ඇති .htaccess ගොනුව ක්‍රියාකරන්නේ නැත. අපි තරයේ කියා සිටිනුයේ නම්, මෙම දත්ත හා ගොනු එසේ පිවිසීමට නොහැකි වන ලෙස ඔබේ වෙබ් සේවාදායකයා වින්‍යාස කරන ලෙස හෝ එම ඩිරෙක්ටරිය වෙබ් මූලයෙන් පිටතට ගෙනයන ලෙසය.", "Advanced" => "දියුණු/උසස්", "Data folder" => "දත්ත ෆෝල්ඩරය", "Configure the database" => "දත්ත සමුදාය හැඩගැසීම", diff --git a/core/l10n/sk_SK.php b/core/l10n/sk_SK.php index ad5ae0ea37..ef0b7c26ce 100644 --- a/core/l10n/sk_SK.php +++ b/core/l10n/sk_SK.php @@ -5,7 +5,7 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Používateľ %s zdieľa s Vami adresár \"%s\". Môžete si ho stiahnuť tu: %s", "Category type not provided." => "Neposkytnutý kategorický typ.", "No category to add?" => "Žiadna kategória pre pridanie?", -"This category already exists: " => "Táto kategória už existuje:", +"This category already exists: %s" => "Kategéria: %s už existuje.", "Object type not provided." => "Neposkytnutý typ objektu.", "%s ID not provided." => "%s ID neposkytnuté.", "Error adding %s to favorites." => "Chyba pri pridávaní %s do obľúbených položiek.", @@ -69,7 +69,7 @@ "Set expiration date" => "Nastaviť dátum expirácie", "Expiration date" => "Dátum expirácie", "Share via email:" => "Zdieľať cez e-mail:", -"No people found" => "Užívateľ nenájdený", +"No people found" => "Používateľ nenájdený", "Resharing is not allowed" => "Zdieľanie už zdieľanej položky nie je povolené", "Shared in {item} with {user}" => "Zdieľané v {item} s {user}", "Unshare" => "Zrušiť zdieľanie", @@ -109,7 +109,8 @@ "Security Warning" => "Bezpečnostné varovanie", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Nie je dostupný žiadny bezpečný generátor náhodných čísel, prosím, povoľte rozšírenie OpenSSL v PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Bez bezpečného generátora náhodných čísel môže útočník predpovedať token pre obnovu hesla a prevziať kontrolu nad vaším kontom.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Váš priečinok s dátami a Vaše súbory sú pravdepodobne dostupné z internetu. .htaccess súbor dodávaný s inštaláciou ownCloud nespĺňa úlohu. Dôrazne Vám doporučujeme nakonfigurovať webserver takým spôsobom, aby dáta v priečinku neboli verejné, alebo presuňte dáta mimo štruktúry priečinkov webservera.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Váš priečinok s dátami a súbormi je dostupný z internetu, lebo súbor .htaccess nefunguje.", +"For information how to properly configure your server, please see the documentation." => "Pre informácie, ako správne nastaviť Váš server sa pozrite do dokumentácie.", "Create an admin account" => "Vytvoriť administrátorský účet", "Advanced" => "Pokročilé", "Data folder" => "Priečinok dát", @@ -129,6 +130,7 @@ "Lost your password?" => "Zabudli ste heslo?", "remember" => "zapamätať", "Log in" => "Prihlásiť sa", +"Alternative Logins" => "Altrnatívne loginy", "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 54cf817a7a..2b5b02191e 100644 --- a/core/l10n/sl.php +++ b/core/l10n/sl.php @@ -5,7 +5,6 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Uporanik %s je dal mapo \"%s\" v souporabo z vami. Prenesete je lahko tukaj: %s", "Category type not provided." => "Vrsta kategorije ni podana.", "No category to add?" => "Ni kategorije za dodajanje?", -"This category already exists: " => "Ta kategorija že obstaja:", "Object type not provided." => "Vrsta predmeta ni podana.", "%s ID not provided." => "%s ID ni podan.", "Error adding %s to favorites." => "Napaka pri dodajanju %s med priljubljene.", @@ -106,7 +105,6 @@ "Security Warning" => "Varnostno opozorilo", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Na voljo ni varnega generatorja naključnih števil. Prosimo, če omogočite PHP OpenSSL razširitev.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Brez varnega generatorja naključnih števil lahko napadalec napove žetone za ponastavitev gesla, kar mu omogoča, da prevzame vaš ​​račun.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Trenutno je dostop do podatkovne mape in datotek najverjetneje omogočen vsem uporabnikom na omrežju. Datoteka .htaccess, vključena v ownCloud namreč ni omogočena. Močno priporočamo nastavitev spletnega strežnika tako, da mapa podatkov ne bo javno dostopna ali pa, da jo prestavite ven iz korenske mape spletnega strežnika.", "Create an admin account" => "Ustvari skrbniški račun", "Advanced" => "Napredne možnosti", "Data folder" => "Mapa s podatki", diff --git a/core/l10n/sr.php b/core/l10n/sr.php index ecd316b7cf..557cb6a8ab 100644 --- a/core/l10n/sr.php +++ b/core/l10n/sr.php @@ -3,7 +3,6 @@ "User %s shared a folder with you" => "Корисник %s дели са вама директоријум", "Category type not provided." => "Врста категорије није унет.", "No category to add?" => "Додати још неку категорију?", -"This category already exists: " => "Категорија већ постоји:", "Object type not provided." => "Врста објекта није унета.", "%s ID not provided." => "%s ИД нису унети.", "Error adding %s to favorites." => "Грешка приликом додавања %s у омиљене.", @@ -103,7 +102,6 @@ "Security Warning" => "Сигурносно упозорење", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Поуздан генератор случајних бројева није доступан, предлажемо да укључите PHP проширење OpenSSL.", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Тренутно су ваши подаци и датотеке доступне са интернета. Датотека .htaccess коју је обезбедио пакет ownCloud не функционише. Саветујемо вам да подесите веб сервер тако да директоријум са подацима не буде изложен или да га преместите изван коренског директоријума веб сервера.", "Create an admin account" => "Направи административни налог", "Advanced" => "Напредно", "Data folder" => "Фацикла података", diff --git a/core/l10n/sv.php b/core/l10n/sv.php index a0dde65269..ff0006ee19 100644 --- a/core/l10n/sv.php +++ b/core/l10n/sv.php @@ -5,7 +5,7 @@ "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", "Category type not provided." => "Kategorityp inte angiven.", "No category to add?" => "Ingen kategori att lägga till?", -"This category already exists: " => "Denna kategori finns redan:", +"This category already exists: %s" => "Denna kategori finns redan: %s", "Object type not provided." => "Objekttyp inte angiven.", "%s ID not provided." => "%s ID inte angiven.", "Error adding %s to favorites." => "Fel vid tillägg av %s till favoriter.", @@ -109,7 +109,8 @@ "Security Warning" => "Säkerhetsvarning", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Ingen säker slumptalsgenerator finns tillgänglig. Du bör aktivera PHP OpenSSL-tillägget.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Utan en säker slumptalsgenerator kan angripare få möjlighet att förutsäga lösenordsåterställningar och ta över ditt konto.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Din datakatalog och dina filer är förmodligen tillgängliga från Internet. Den .htaccess-fil som ownCloud tillhandahåller fungerar inte. Vi rekommenderar starkt att du konfigurerar webbservern så att datakatalogen inte längre är tillgänglig eller att du flyttar datakatalogen utanför webbserverns dokument-root.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Din datakatalog och filer är förmodligen tillgängliga från Internet, eftersom .htaccess-filen inte fungerar.", +"For information how to properly configure your server, please see the documentation." => "För information hur man korrekt konfigurera servern, var god se documentation.", "Create an admin account" => "Skapa ett administratörskonto", "Advanced" => "Avancerat", "Data folder" => "Datamapp", @@ -129,6 +130,7 @@ "Lost your password?" => "Glömt ditt lösenord?", "remember" => "kom ihåg", "Log in" => "Logga in", +"Alternative Logins" => "Alternativa inloggningar", "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 2b8829c717..f7ad09fbc7 100644 --- a/core/l10n/ta_LK.php +++ b/core/l10n/ta_LK.php @@ -1,7 +1,6 @@ "பிரிவு வகைகள் வழங்கப்படவில்லை", "No category to add?" => "சேர்ப்பதற்கான வகைகள் இல்லையா?", -"This category already exists: " => "இந்த வகை ஏற்கனவே உள்ளது:", "Object type not provided." => "பொருள் வகை வழங்கப்படவில்லை", "%s ID not provided." => "%s ID வழங்கப்படவில்லை", "Error adding %s to favorites." => "விருப்பங்களுக்கு %s ஐ சேர்ப்பதில் வழு", @@ -98,7 +97,6 @@ "Security Warning" => "பாதுகாப்பு எச்சரிக்கை", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "குறிப்பிட்ட எண்ணிக்கை பாதுகாப்பான புறப்பாக்கி / உண்டாக்கிகள் இல்லை, தயவுசெய்து PHP OpenSSL நீட்சியை இயலுமைப்படுத்துக. ", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "உங்களுடைய தரவு அடைவு மற்றும் உங்களுடைய கோப்புக்களை பெரும்பாலும் இணையத்தினூடாக அணுகலாம். ownCloud இனால் வழங்கப்படுகின்ற .htaccess கோப்பு வேலை செய்யவில்லை. தரவு அடைவை நீண்ட நேரத்திற்கு அணுகக்கூடியதாக உங்களுடைய வலைய சேவையகத்தை தகவமைக்குமாறு நாங்கள் உறுதியாக கூறுகிறோம் அல்லது தரவு அடைவை வலைய சேவையக மூல ஆவணத்திலிருந்து வெளியே அகற்றுக. ", "Create an admin account" => " நிர்வாக கணக்கொன்றை உருவாக்குக", "Advanced" => "மேம்பட்ட", "Data folder" => "தரவு கோப்புறை", diff --git a/core/l10n/th_TH.php b/core/l10n/th_TH.php index ffab0bb956..e5295cee10 100644 --- a/core/l10n/th_TH.php +++ b/core/l10n/th_TH.php @@ -5,7 +5,6 @@ "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: " => "หมวดหมู่นี้มีอยู่แล้ว: ", "Object type not provided." => "ชนิดของวัตถุยังไม่ได้ถูกระบุ", "%s ID not provided." => "ยังไม่ได้ระบุรหัส %s", "Error adding %s to favorites." => "เกิดข้อผิดพลาดในการเพิ่ม %s เข้าไปยังรายการโปรด", @@ -109,7 +108,6 @@ "Security Warning" => "คำเตือนเกี่ยวกับความปลอดภัย", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "ยังไม่มีตัวสร้างหมายเลขแบบสุ่มให้ใช้งาน, กรุณาเปิดใช้งานส่วนเสริม PHP OpenSSL", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "ไดเร็กทอรี่ข้อมูลและไฟล์ของคุณสามารถเข้าถึงได้จากอินเทอร์เน็ต ไฟล์ .htaccess ที่ ownCloud มีให้ไม่สามารถทำงานได้อย่างเหมาะสม เราขอแนะนำให้คุณกำหนดค่าเว็บเซิร์ฟเวอร์ใหม่ในรูปแบบที่ไดเร็กทอรี่เก็บข้อมูลไม่สามารถเข้าถึงได้อีกต่อไป หรือคุณได้ย้ายไดเร็กทอรี่ที่ใช้เก็บข้อมูลไปอยู่ภายนอกตำแหน่ง root ของเว็บเซิร์ฟเวอร์แล้ว", "Create an admin account" => "สร้าง บัญชีผู้ดูแลระบบ", "Advanced" => "ขั้นสูง", "Data folder" => "โฟลเดอร์เก็บข้อมูล", diff --git a/core/l10n/tr.php b/core/l10n/tr.php index 624887674d..201b511647 100644 --- a/core/l10n/tr.php +++ b/core/l10n/tr.php @@ -5,7 +5,6 @@ "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: " => "Bu kategori zaten mevcut: ", "Object type not provided." => "Nesne türü desteklenmemektedir.", "%s ID not provided." => "%s ID belirtilmedi.", "Error adding %s to favorites." => "%s favorilere eklenirken hata oluştu", @@ -106,7 +105,6 @@ "Security Warning" => "Güvenlik Uyarisi", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Güvenli rasgele sayı üreticisi bulunamadı. Lütfen PHP OpenSSL eklentisini etkinleştirin.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Güvenli rasgele sayı üreticisi olmadan saldırganlar parola sıfırlama simgelerini tahmin edip hesabınızı ele geçirebilir.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "data dizininiz ve dosyalarınız büyük ihtimalle internet üzerinden erişilebilir. Owncloud tarafından sağlanan .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak data dizinine erişimi kapatmanızı veya data dizinini web sunucu döküman dizini dışına almanızı şiddetle tavsiye ederiz.", "Create an admin account" => "Bir yönetici hesabı oluşturun", "Advanced" => "Gelişmiş", "Data folder" => "Veri klasörü", diff --git a/core/l10n/uk.php b/core/l10n/uk.php index fa8150e7c9..7eab365a39 100644 --- a/core/l10n/uk.php +++ b/core/l10n/uk.php @@ -5,7 +5,6 @@ "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: " => "Ця категорія вже існує: ", "Object type not provided." => "Не вказано тип об'єкту.", "%s ID not provided." => "%s ID не вказано.", "Error adding %s to favorites." => "Помилка при додаванні %s до обраного.", @@ -54,6 +53,7 @@ "The app name is not specified." => "Не визначено ім'я програми.", "The required file {file} is not installed!" => "Необхідний файл {file} не встановлено!", "Share" => "Поділитися", +"Shared" => "Опубліковано", "Error while sharing" => "Помилка під час публікації", "Error while unsharing" => "Помилка під час відміни публікації", "Error while changing permissions" => "Помилка при зміні повноважень", @@ -83,6 +83,8 @@ "Error setting expiration date" => "Помилка при встановленні терміна дії", "Sending ..." => "Надсилання...", "Email sent" => "Ел. пошта надіслана", +"The update was unsuccessful. Please report this issue to the ownCloud community." => "Оновлення виконалось неуспішно. Будь ласка, повідомте про цю проблему в спільноті ownCloud.", +"The update was successful. Redirecting you to ownCloud now." => "Оновлення виконалось успішно. Перенаправляємо вас на ownCloud.", "ownCloud password reset" => "скидання пароля ownCloud", "Use the following link to reset your password: {link}" => "Використовуйте наступне посилання для скидання пароля: {link}", "You will receive a link to reset your password via Email." => "Ви отримаєте посилання для скидання вашого паролю на Ел. пошту.", @@ -106,7 +108,6 @@ "Security Warning" => "Попередження про небезпеку", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Не доступний безпечний генератор випадкових чисел, будь ласка, активуйте PHP OpenSSL додаток.", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Ваш каталог з даними та Ваші файли можливо доступні з Інтернету. Файл .htaccess, наданий з ownCloud, не працює. Ми наполегливо рекомендуємо Вам налаштувати свій веб-сервер таким чином, щоб каталог data більше не був доступний, або перемістити каталог data за межі кореневого каталогу документів веб-сервера.", "Create an admin account" => "Створити обліковий запис адміністратора", "Advanced" => "Додатково", "Data folder" => "Каталог даних", @@ -126,6 +127,7 @@ "Lost your password?" => "Забули пароль?", "remember" => "запам'ятати", "Log in" => "Вхід", +"Alternative Logins" => "Альтернативні Логіни", "prev" => "попередній", "next" => "наступний", "Updating ownCloud to version %s, this may take a while." => "Оновлення ownCloud до версії %s, це може зайняти деякий час." diff --git a/core/l10n/vi.php b/core/l10n/vi.php index 078cfa8dd8..0c4b197322 100644 --- a/core/l10n/vi.php +++ b/core/l10n/vi.php @@ -5,7 +5,7 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Người dùng %s chia sẻ thư mục \"%s\" cho bạn .Bạn có thể tải tại đây : %s", "Category type not provided." => "Kiểu hạng mục không được cung cấp.", "No category to add?" => "Không có danh mục được thêm?", -"This category already exists: " => "Danh mục này đã được tạo :", +"This category already exists: %s" => "Danh mục này đã tồn tại: %s", "Object type not provided." => "Loại đối tượng không được cung cấp.", "%s ID not provided." => "%s ID không được cung cấp.", "Error adding %s to favorites." => "Lỗi thêm %s vào mục yêu thích.", @@ -54,6 +54,7 @@ "The app name is not specified." => "Tên ứng dụng không được chỉ định.", "The required file {file} is not installed!" => "Tập tin cần thiết {file} không được cài đặt!", "Share" => "Chia sẻ", +"Shared" => "Được chia sẻ", "Error while sharing" => "Lỗi trong quá trình chia sẻ", "Error while unsharing" => "Lỗi trong quá trình gỡ chia sẻ", "Error while changing permissions" => "Lỗi trong quá trình phân quyền", @@ -63,6 +64,7 @@ "Share with link" => "Chia sẻ với liên kết", "Password protect" => "Mật khẩu bảo vệ", "Password" => "Mật khẩu", +"Email link to person" => "Liên kết email tới cá nhân", "Send" => "Gởi", "Set expiration date" => "Đặt ngày kết thúc", "Expiration date" => "Ngày kết thúc", @@ -81,6 +83,7 @@ "Error unsetting expiration date" => "Lỗi không thiết lập ngày kết thúc", "Error setting expiration date" => "Lỗi cấu hình ngày kết thúc", "Sending ..." => "Đang gởi ...", +"Email sent" => "Email đã được gửi", "The update was unsuccessful. Please report this issue to the ownCloud community." => "Cập nhật không thành công . Vui lòng thông báo đến Cộng đồng ownCloud .", "The update was successful. Redirecting you to ownCloud now." => "Cập nhật thành công .Hệ thống sẽ đưa bạn tới ownCloud.", "ownCloud password reset" => "Khôi phục mật khẩu Owncloud ", @@ -106,7 +109,8 @@ "Security Warning" => "Cảnh bảo bảo mật", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Không an toàn ! chức năng random number generator đã có sẵn ,vui lòng bật PHP OpenSSL extension.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Nếu không có random number generator , Hacker có thể thiết lập lại mật khẩu và chiếm tài khoản của bạn.", -"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Thư mục dữ liệu và những tập tin của bạn có thể dễ dàng bị truy cập từ mạng. Tập tin .htaccess do ownCloud cung cấp không hoạt động. Chúng tôi đề nghị bạn nên cấu hình lại máy chủ web để thư mục dữ liệu không còn bị truy cập hoặc bạn nên di chuyển thư mục dữ liệu ra bên ngoài thư mục gốc của máy chủ.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Thư mục và file dữ liệu của bạn có thể được truy cập từ internet bởi vì file .htaccess không hoạt động", +"For information how to properly configure your server, please see the documentation." => "Để biết thêm cách cấu hình máy chủ của bạn, xin xem tài liệu.", "Create an admin account" => "Tạo một tài khoản quản trị", "Advanced" => "Nâng cao", "Data folder" => "Thư mục dữ liệu", @@ -126,6 +130,8 @@ "Lost your password?" => "Bạn quên mật khẩu ?", "remember" => "ghi nhớ", "Log in" => "Đăng nhập", +"Alternative Logins" => "Đăng nhập khác", "prev" => "Lùi lại", -"next" => "Kế tiếp" +"next" => "Kế tiếp", +"Updating ownCloud to version %s, this may take a while." => "Cập nhật ownCloud lên phiên bản %s, có thể sẽ mất thời gian" ); diff --git a/core/l10n/zh_CN.GB2312.php b/core/l10n/zh_CN.GB2312.php index 9617d7260d..57f0e96378 100644 --- a/core/l10n/zh_CN.GB2312.php +++ b/core/l10n/zh_CN.GB2312.php @@ -1,6 +1,5 @@ "没有分类添加了?", -"This category already exists: " => "这个分类已经存在了:", "No categories selected for deletion." => "没有选者要删除的分类.", "Sunday" => "星期天", "Monday" => "星期一", @@ -87,7 +86,6 @@ "Security Warning" => "安全警告", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "没有安全随机码生成器,请启用 PHP OpenSSL 扩展。", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "您的数据文件夹和您的文件或许能够从互联网访问。ownCloud 提供的 .htaccesss 文件未其作用。我们强烈建议您配置网络服务器以使数据文件夹不能从互联网访问,或将移动数据文件夹移出网络服务器文档根目录。", "Create an admin account" => "建立一个 管理帐户", "Advanced" => "进阶", "Data folder" => "数据存放文件夹", diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php index f18fd6b357..086687c08c 100644 --- a/core/l10n/zh_CN.php +++ b/core/l10n/zh_CN.php @@ -5,7 +5,6 @@ "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: " => "此分类已存在: ", "Object type not provided." => "未提供对象类型。", "%s ID not provided." => "%s ID未提供。", "Error adding %s to favorites." => "向收藏夹中新增%s时出错。", @@ -107,7 +106,6 @@ "Security Warning" => "安全警告", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "随机数生成器无效,请启用PHP的OpenSSL扩展", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "您的数据文件夹和文件可由互联网访问。OwnCloud提供的.htaccess文件未生效。我们强烈建议您配置服务器,以使数据文件夹不可被访问,或者将数据文件夹移到web服务器根目录以外。", "Create an admin account" => "创建管理员账号", "Advanced" => "高级", "Data folder" => "数据目录", diff --git a/core/l10n/zh_TW.php b/core/l10n/zh_TW.php index 35183194d2..96142d2068 100644 --- a/core/l10n/zh_TW.php +++ b/core/l10n/zh_TW.php @@ -5,7 +5,7 @@ "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: " => "此分類已經存在:", +"This category already exists: %s" => "分類已經存在: %s", "Object type not provided." => "不支援的物件類型", "%s ID not provided." => "未提供 %s ID 。", "Error adding %s to favorites." => "加入 %s 到最愛時發生錯誤。", @@ -109,7 +109,8 @@ "Security Warning" => "安全性警告", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "沒有可用的亂數產生器,請啟用 PHP 中的 OpenSSL 擴充功能。", "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 your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "您的資料目錄 (Data Directory) 和檔案可能可以由網際網路上面公開存取。Owncloud 所提供的 .htaccess 設定檔並未生效,我們強烈建議您設定您的網頁伺服器以防止資料目錄被公開存取,或將您的資料目錄移出網頁伺服器的 document root 。", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "您的資料目錄看起來可以被 Internet 公開存取,因為 .htaccess 設定並未生效。", +"For information how to properly configure your server, please see the documentation." => "請參考說明文件以瞭解如何正確設定您的伺服器。", "Create an admin account" => "建立一個管理者帳號", "Advanced" => "進階", "Data folder" => "資料夾", @@ -129,6 +130,7 @@ "Lost your password?" => "忘記密碼?", "remember" => "記住", "Log in" => "登入", +"Alternative Logins" => "替代登入方法", "prev" => "上一頁", "next" => "下一頁", "Updating ownCloud to version %s, this may take a while." => "正在將 Owncloud 升級至版本 %s ,這可能需要一點時間。" diff --git a/core/routes.php b/core/routes.php index 7408858b10..2527816b66 100644 --- a/core/routes.php +++ b/core/routes.php @@ -6,6 +6,10 @@ * See the COPYING-README file. */ +// Post installation check +$this->create('post_setup_check', '/post-setup-check') + ->action('OC_Setup', 'postSetupCheck'); + // Core ajax actions // Search $this->create('search_ajax_search', '/search/ajax/search.php') diff --git a/core/setup.php b/core/setup.php index 6ea16cdcc4..77eed5376d 100644 --- a/core/setup.php +++ b/core/setup.php @@ -45,7 +45,7 @@ if(isset($_POST['install']) AND $_POST['install']=='true') { OC_Template::printGuestPage("", "installation", $options); } else { - header("Location: ".OC::$WEBROOT.'/'); + header( 'Location: '.OC_Helper::linkToRoute( 'post_setup_check' )); exit(); } } diff --git a/core/templates/installation.php b/core/templates/installation.php index 4a41527c90..cb38d8a3fe 100644 --- a/core/templates/installation.php +++ b/core/templates/installation.php @@ -22,15 +22,15 @@
t('Security Warning');?> - t('No secure random number generator is available, please enable the PHP OpenSSL extension.');?> -
- t('Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account.');?> +

t('No secure random number generator is available, please enable the PHP OpenSSL extension.');?>
+ t('Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account.');?>

t('Security Warning');?> - t('Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root.');?> +

t('Your data directory and files are probably accessible from the internet because the .htaccess file does not work.');?>
+ t('For information how to properly configure your server, please see the documentation.');?>

@@ -41,9 +41,11 @@

- + - + + +

diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php index 47fb75612c..2049bcb36d 100644 --- a/core/templates/layout.base.php +++ b/core/templates/layout.base.php @@ -7,7 +7,6 @@ - diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index 9aabc08ace..69330aa9fc 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -8,7 +8,6 @@ - diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 2547278547..c8b580b5fd 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -1,14 +1,13 @@ - <?php echo isset($_['application']) && !empty($_['application'])?$_['application'].' | ':'' ?>ownCloud <?php echo OC_User::getDisplayName()?' ('.OC_Util::sanitizeHTML(OC_User::getDisplayName()).') ':'' ?> + <?php echo !empty($_['application'])?$_['application'].' | ':'' ?>ownCloud <?php echo !empty($_['user_displayname'])?' ('.$_['user_displayname'].') ':'' ?> - diff --git a/core/templates/login.php b/core/templates/login.php index e66d27f6d6..3be2b039b0 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -33,7 +33,7 @@ /> - +

diff --git a/db_structure.xml b/db_structure.xml index f4111bfabd..3ce41096d9 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -94,6 +94,66 @@
+ + + *dbprefix*file_map + + + + + logic_path + text + + true + 512 + + + + logic_path_hash + text + + true + 32 + + + + physic_path + text + + true + 512 + + + + physic_path_hash + text + + true + 32 + + + + file_map_lp_index + true + + logic_path_hash + ascending + + + + + file_map_pp_index + true + + physic_path_hash + ascending + + + + + +
+ *dbprefix*mimetypes @@ -206,7 +266,7 @@ integertrue - 4 + 8 diff --git a/l10n/af_ZA/core.po b/l10n/af_ZA/core.po index a08c5adb09..b0c9bf67fe 100644 --- a/l10n/af_ZA/core.po +++ b/l10n/af_ZA/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -51,7 +51,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -156,59 +157,59 @@ msgstr "" msgid "December" msgstr "" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Instellings" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "" @@ -467,7 +468,7 @@ msgstr "" msgid "Add" msgstr "" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -477,71 +478,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Skep `n admin-rekening" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Gevorderd" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Stel databasis op" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "sal gebruik word" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Databasis-gebruiker" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Databasis-wagwoord" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Databasis naam" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Maak opstelling klaar" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "webdienste onder jou beheer" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Teken uit" diff --git a/l10n/af_ZA/files.po b/l10n/af_ZA/files.po index 243d6a0e53..67facac0f9 100644 --- a/l10n/af_ZA/files.po +++ b/l10n/af_ZA/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,20 @@ msgstr "" "Language: af_ZA\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -53,7 +67,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -64,51 +78,52 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -148,64 +163,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -262,7 +273,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -277,6 +288,10 @@ msgstr "" msgid "Download" msgstr "" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "" diff --git a/l10n/af_ZA/files_encryption.po b/l10n/af_ZA/files_encryption.po index 7bdb33d2fc..535d61f394 100644 --- a/l10n/af_ZA/files_encryption.po +++ b/l10n/af_ZA/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: af_ZA\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/af_ZA/files_trashbin.po b/l10n/af_ZA/files_trashbin.po index 0ac05a625a..6fd4dfb314 100644 --- a/l10n/af_ZA/files_trashbin.po +++ b/l10n/af_ZA/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: af_ZA\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/af_ZA/files_versions.po b/l10n/af_ZA/files_versions.po index 6cb41d2c08..14eaae1474 100644 --- a/l10n/af_ZA/files_versions.po +++ b/l10n/af_ZA/files_versions.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-01 00:17+0100\n" -"PO-Revision-Date: 2012-08-12 22:37+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,10 +17,45 @@ msgstr "" "Language: af_ZA\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/af_ZA/lib.po b/l10n/af_ZA/lib.po index e03f329b9b..fb18d96801 100644 --- a/l10n/af_ZA/lib.po +++ b/l10n/af_ZA/lib.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-05 00:19+0100\n" -"PO-Revision-Date: 2012-07-27 22:23+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,27 +17,27 @@ msgstr "" "Language: af_ZA\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:312 +#: app.php:339 msgid "Help" msgstr "Hulp" -#: app.php:319 +#: app.php:346 msgid "Personal" msgstr "Persoonlik" -#: app.php:324 +#: app.php:351 msgid "Settings" msgstr "Instellings" -#: app.php:329 +#: app.php:356 msgid "Users" msgstr "Gebruikers" -#: app.php:336 +#: app.php:363 msgid "Apps" msgstr "Toepassings" -#: app.php:338 +#: app.php:365 msgid "Admin" msgstr "Admin" @@ -85,6 +85,103 @@ msgstr "" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/af_ZA/settings.po b/l10n/af_ZA/settings.po index a768c32d6c..6418c5c70f 100644 --- a/l10n/af_ZA/settings.po +++ b/l10n/af_ZA/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -21,12 +21,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -80,7 +80,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -177,99 +177,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "Wagwoord" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "Wagwoord" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nuwe wagwoord" -#: templates/personal.php:28 -msgid "show" -msgstr "" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/ar/core.po b/l10n/ar/core.po index 201273ebb9..f3cdb9f639 100644 --- a/l10n/ar/core.po +++ b/l10n/ar/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -52,8 +52,9 @@ msgid "No category to add?" msgstr "ألا توجد فئة للإضافة؟" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "هذه الفئة موجودة مسبقاً" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +158,59 @@ msgstr "تشرين الثاني" msgid "December" msgstr "كانون الاول" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "تعديلات" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "منذ ثواني" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "منذ دقيقة" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} منذ دقائق" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "اليوم" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "" @@ -468,7 +469,7 @@ msgstr "عدل الفئات" msgid "Add" msgstr "أدخل" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "تحذير أمان" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "لا يوجد مولّد أرقام عشوائية ، الرجاء تفعيل الـ PHP OpenSSL extension." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "أضف مستخدم رئيسي " -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "خيارات متقدمة" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "مجلد المعلومات" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "أسس قاعدة البيانات" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "سيتم استخدمه" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "مستخدم قاعدة البيانات" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "كلمة سر مستخدم قاعدة البيانات" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "إسم قاعدة البيانات" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "مساحة جدول قاعدة البيانات" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "خادم قاعدة البيانات" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "انهاء التعديلات" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "خدمات الوب تحت تصرفك" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "الخروج" diff --git a/l10n/ar/files.po b/l10n/ar/files.po index 76278a3e1a..3e5b521eab 100644 --- a/l10n/ar/files.po +++ b/l10n/ar/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,20 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -54,7 +68,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -65,51 +79,52 @@ msgstr "" msgid "Files" msgstr "الملفات" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "إلغاء مشاركة" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "محذوف" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -149,64 +164,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "إغلق" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "الاسم" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "حجم" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "معدل" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -263,7 +274,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -278,6 +289,10 @@ msgstr "لا يوجد شيء هنا. إرفع بعض الملفات!" msgid "Download" msgstr "تحميل" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "إلغاء مشاركة" + #: templates/index.php:105 msgid "Upload too large" msgstr "حجم الترفيع أعلى من المسموح" diff --git a/l10n/ar/files_encryption.po b/l10n/ar/files_encryption.po index 59f5adcf60..6604007653 100644 --- a/l10n/ar/files_encryption.po +++ b/l10n/ar/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "التشفير" diff --git a/l10n/ar/files_trashbin.po b/l10n/ar/files_trashbin.po index 6b11eb74a1..70c6ea95dd 100644 --- a/l10n/ar/files_trashbin.po +++ b/l10n/ar/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/ar/files_versions.po b/l10n/ar/files_versions.po index 8224c62762..b915753ced 100644 --- a/l10n/ar/files_versions.po +++ b/l10n/ar/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "السجل الزمني" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "أصدرة الملفات" diff --git a/l10n/ar/lib.po b/l10n/ar/lib.po index dbb9b7359c..458bcb72e2 100644 --- a/l10n/ar/lib.po +++ b/l10n/ar/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "المساعدة" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "شخصي" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "تعديلات" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "المستخدمين" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "معلومات إضافية" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "منذ ثواني" diff --git a/l10n/ar/settings.po b/l10n/ar/settings.po index e3785a9b5a..2a33d8939d 100644 --- a/l10n/ar/settings.po +++ b/l10n/ar/settings.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "فشل تحميل القائمة من الآب ستور" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "لم يتم التأكد من الشخصية بنجاح" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -83,7 +83,7 @@ msgstr "فشل إضافة المستخدم الى المجموعة %s" msgid "Unable to remove user from group %s" msgstr "فشل إزالة المستخدم من المجموعة %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -180,99 +180,87 @@ msgstr "دعم تجاري" msgid "You have used %s of the available %s" msgstr "تم إستهلاك %s من المتوفر %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "الزبائن" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "تحميل عملاء سطح المكتب" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "تحميل عميل آندرويد" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "تحميل عميل آي أو أس" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "كلمات السر" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "لقد تم تغيير كلمة السر" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "لم يتم تعديل كلمة السر بنجاح" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "كلمات السر الحالية" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "كلمات سر جديدة" -#: templates/personal.php:28 -msgid "show" -msgstr "أظهر" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "عدل كلمة السر" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "العنوان البريدي" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "عنوانك البريدي" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "أدخل عنوانك البريدي لتفعيل استرجاع كلمة المرور" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "اللغة" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "ساعد في الترجمه" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "إستخدم هذا العنوان للإتصال بـ ownCloud في مدير الملفات" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "إصدار" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/bg_BG/core.po b/l10n/bg_BG/core.po index 7a92f335d3..06b082dffc 100644 --- a/l10n/bg_BG/core.po +++ b/l10n/bg_BG/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 10:30+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -54,7 +54,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -159,59 +160,59 @@ msgstr "" msgid "December" msgstr "" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Настройки" -#: js/js.js:760 +#: js/js.js:766 msgid "seconds ago" msgstr "преди секунди" -#: js/js.js:761 +#: js/js.js:767 msgid "1 minute ago" msgstr "преди 1 минута" -#: js/js.js:762 +#: js/js.js:768 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:769 msgid "1 hour ago" msgstr "преди 1 час" -#: js/js.js:764 +#: js/js.js:770 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:771 msgid "today" msgstr "днес" -#: js/js.js:766 +#: js/js.js:772 msgid "yesterday" msgstr "вчера" -#: js/js.js:767 +#: js/js.js:773 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:774 msgid "last month" msgstr "последният месец" -#: js/js.js:769 +#: js/js.js:775 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:776 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:777 msgid "last year" msgstr "последната година" -#: js/js.js:772 +#: js/js.js:778 msgid "years ago" msgstr "последните години" @@ -241,8 +242,8 @@ msgid "The object type is not specified." msgstr "" #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Грешка" @@ -262,7 +263,7 @@ msgstr "Споделяне" msgid "Shared" msgstr "" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "" @@ -358,23 +359,23 @@ msgstr "" msgid "share" msgstr "" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "" -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "" @@ -428,7 +429,7 @@ msgstr "" #: lostpassword/templates/resetpassword.php:8 msgid "New password" -msgstr "" +msgstr "Нова парола" #: lostpassword/templates/resetpassword.php:11 msgid "Reset password" @@ -470,7 +471,7 @@ msgstr "" msgid "Add" msgstr "Добавяне" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -480,71 +481,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "уеб услуги под Ваш контрол" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "" diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index ef076ab4f3..827d1e52d1 100644 --- a/l10n/bg_BG/files.po +++ b/l10n/bg_BG/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -19,6 +19,20 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -55,7 +69,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -66,51 +80,52 @@ msgstr "" msgid "Files" msgstr "Файлове" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Изтриване" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Преименуване" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "препокриване" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "отказ" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "препокриване" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "отказ" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "възтановяване" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -150,64 +165,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" -msgstr "" +msgstr "Затвори" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Качването е спряно." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Име" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Размер" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Променено" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -264,7 +275,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -279,6 +290,10 @@ msgstr "Няма нищо тук. Качете нещо." msgid "Download" msgstr "Изтегляне" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "Файлът който сте избрали за качване е прекалено голям" diff --git a/l10n/bg_BG/files_encryption.po b/l10n/bg_BG/files_encryption.po index 6faf2d1a51..4ec6da246a 100644 --- a/l10n/bg_BG/files_encryption.po +++ b/l10n/bg_BG/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Криптиране" diff --git a/l10n/bg_BG/files_external.po b/l10n/bg_BG/files_external.po index 656df3768c..66a058cb87 100644 --- a/l10n/bg_BG/files_external.po +++ b/l10n/bg_BG/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-10 00:04+0100\n" -"PO-Revision-Date: 2013-01-09 20:47+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 10:20+0000\n" "Last-Translator: Stefan Ilivanov \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -42,13 +42,13 @@ msgstr "" msgid "Error configuring Google Drive storage" msgstr "" -#: lib/config.php:434 +#: lib/config.php:405 msgid "" "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares " "is not possible. Please ask your system administrator to install it." msgstr "" -#: lib/config.php:435 +#: lib/config.php:406 msgid "" "Warning: The FTP support in PHP is not enabled or installed. Mounting" " of FTP shares is not possible. Please ask your system administrator to " @@ -77,7 +77,7 @@ msgstr "Опции" #: templates/settings.php:12 msgid "Applicable" -msgstr "" +msgstr "Приложимо" #: templates/settings.php:27 msgid "Add mount point" diff --git a/l10n/bg_BG/files_trashbin.po b/l10n/bg_BG/files_trashbin.po index f759ccb5bd..bd5ca7e1fe 100644 --- a/l10n/bg_BG/files_trashbin.po +++ b/l10n/bg_BG/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 10:30+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" @@ -55,4 +65,4 @@ msgstr "" #: templates/index.php:20 templates/index.php:22 msgid "Restore" -msgstr "" +msgstr "Възтановяване" diff --git a/l10n/bg_BG/files_versions.po b/l10n/bg_BG/files_versions.po index be466434b9..c79f0e6384 100644 --- a/l10n/bg_BG/files_versions.po +++ b/l10n/bg_BG/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "История" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/bg_BG/lib.po b/l10n/bg_BG/lib.po index 5e238d1136..a027f6cb72 100644 --- a/l10n/bg_BG/lib.po +++ b/l10n/bg_BG/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -18,49 +18,49 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Помощ" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Лични" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Настройки" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Потребители" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Приложения" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Админ" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Изтеглянето като ZIP е изключено." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Файловете трябва да се изтеглят един по един." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Назад към файловете" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Избраните файлове са прекалено големи за генерирането на ZIP архив." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" -msgstr "" +msgstr "не може да се определи" #: json.php:28 msgid "Application is not enabled" @@ -86,6 +86,103 @@ msgstr "Текст" msgid "Images" msgstr "Снимки" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "преди секунди" diff --git a/l10n/bg_BG/settings.po b/l10n/bg_BG/settings.po index 4cef09976a..c03227a653 100644 --- a/l10n/bg_BG/settings.po +++ b/l10n/bg_BG/settings.po @@ -4,14 +4,14 @@ # # Translators: # , 2011. -# Stefan Ilivanov , 2011. +# Stefan Ilivanov , 2011,2013. # Yasen Pramatarov , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Възникна проблем с идентификацията" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -63,7 +63,7 @@ msgstr "" #: ajax/setlanguage.php:15 msgid "Language changed" -msgstr "" +msgstr "Езикът е променен" #: ajax/setlanguage.php:17 ajax/setlanguage.php:20 msgid "Invalid request" @@ -83,7 +83,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -125,11 +125,11 @@ msgstr "" #: personal.php:34 personal.php:35 msgid "__language_name__" -msgstr "" +msgstr "__language_name__" #: templates/apps.php:10 msgid "Add your App" -msgstr "" +msgstr "Добавете Ваше приложение" #: templates/apps.php:11 msgid "More Apps" @@ -137,7 +137,7 @@ msgstr "" #: templates/apps.php:24 msgid "Select an App" -msgstr "" +msgstr "Изберете приложение" #: templates/apps.php:28 msgid "See application page at apps.owncloud.com" @@ -180,99 +180,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "Парола" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Покажи настройките за първоначално зареждане отново" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "Парола" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" -msgstr "" +msgstr "Промяната на паролата не беше извършена" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" -msgstr "" +msgstr "Текуща парола" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" -msgstr "" +msgstr "Нова парола" -#: templates/personal.php:28 -msgid "show" -msgstr "" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" -msgstr "" +msgstr "Промяна на паролата" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "E-mail" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" -msgstr "" +msgstr "Вашия email адрес" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" -msgstr "" +msgstr "Език" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" -msgstr "" +msgstr "Помогнете с превода" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/bn_BD/core.po b/l10n/bn_BD/core.po index 9628871138..6b0d2ba269 100644 --- a/l10n/bn_BD/core.po +++ b/l10n/bn_BD/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -52,8 +52,9 @@ msgid "No category to add?" msgstr "যোগ করার মত কোন ক্যাটেগরি নেই ?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "এই ক্যাটেগরিটি পূর্ব থেকেই বিদ্যমানঃ" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +158,59 @@ msgstr "নভেম্বর" msgid "December" msgstr "ডিসেম্বর" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "নিয়ামকসমূহ" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "সেকেন্ড পূর্বে" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 মিনিট পূর্বে" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} মিনিট পূর্বে" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 ঘন্টা পূর্বে" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} ঘন্টা পূর্বে" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "আজ" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "গতকাল" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} দিন পূর্বে" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "গতমাস" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} মাস পূর্বে" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "মাস পূর্বে" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "গত বছর" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "বছর পূর্বে" @@ -468,7 +469,7 @@ msgstr "ক্যাটেগরি সম্পাদনা" msgid "Add" msgstr "যোগ কর" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "নিরাপত্তাজনিত সতর্কতা" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "প্রশাসক একাউন্ট তৈরী করুন" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "সুচারু" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "ডাটা ফোল্ডার " -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "ডাটাবেচ কনফিগার করুন" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "ব্যবহৃত হবে" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "ডাটাবেজ ব্যবহারকারী" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "ডাটাবেজ কূটশব্দ" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "ডাটাবেজের নাম" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "ডাটাবেজ টেবলস্পেস" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "ডাটাবেজ হোস্ট" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "সেটআপ সুসম্পন্ন কর" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "ওয়েব সার্ভিসের নিয়ন্ত্রণ আপনার হাতের মুঠোয়" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "প্রস্থান" diff --git a/l10n/bn_BD/files.po b/l10n/bn_BD/files.po index c2ccab5b33..0cc1231047 100644 --- a/l10n/bn_BD/files.po +++ b/l10n/bn_BD/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,20 @@ msgstr "" "Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "%s কে স্থানান্তর করা সম্ভব হলো না - এই নামের ফাইল বিদ্যমান" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "%s কে স্থানান্তর করা সম্ভব হলো না" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "ফাইলের নাম পরিবর্তন করা সম্ভব হলো না" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "কোন ফাইল আপলোড করা হয় নি। সমস্যা অজ্ঞাত।" @@ -54,8 +68,8 @@ msgid "Failed to write to disk" msgstr "ডিস্কে লিখতে ব্যর্থ" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "যথেষ্ঠ পরিমাণ স্থান নেই" +msgid "Not enough storage available" +msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." @@ -65,51 +79,52 @@ msgstr "ভুল ডিরেক্টরি" msgid "Files" msgstr "ফাইল" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "ভাগাভাগি বাতিল " - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "মুছে ফেল" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "পূনঃনামকরণ" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "মুলতুবি" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} টি বিদ্যমান" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "প্রতিস্থাপন" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "নাম সুপারিশ করুন" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "বাতিল" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name} প্রতিস্থাপন করা হয়েছে" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "ক্রিয়া প্রত্যাহার" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} কে {old_name} নামে প্রতিস্থাপন করা হয়েছে" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -149,64 +164,60 @@ msgstr "আপনার ফাইলটি আপলোড করা সম্ msgid "Upload Error" msgstr "আপলোড করতে সমস্যা " -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "বন্ধ" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "মুলতুবি" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "১টি ফাইল আপলোড করা হচ্ছে" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} টি ফাইল আপলোড করা হচ্ছে" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "আপলোড বাতিল করা হয়েছে।" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "ফাইল আপলোড চলমান। এই পৃষ্ঠা পরিত্যাগ করলে আপলোড বাতিল করা হবে।" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL ফাঁকা রাখা যাবে না।" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "ফোল্ডারের নামটি সঠিক নয়। 'ভাগাভাগি করা' শুধুমাত্র Owncloud এর জন্য সংরক্ষিত।" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "নাম" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "আকার" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "পরিবর্তিত" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "১টি ফোল্ডার" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} টি ফোল্ডার" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "১টি ফাইল" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} টি ফাইল" @@ -263,7 +274,7 @@ msgid "From link" msgstr " লিংক থেকে" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -278,6 +289,10 @@ msgstr "এখানে কিছুই নেই। কিছু আপলো msgid "Download" msgstr "ডাউনলোড" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "ভাগাভাগি বাতিল " + #: templates/index.php:105 msgid "Upload too large" msgstr "আপলোডের আকারটি অনেক বড়" diff --git a/l10n/bn_BD/files_encryption.po b/l10n/bn_BD/files_encryption.po index aa9ec98462..7c8a89fc3b 100644 --- a/l10n/bn_BD/files_encryption.po +++ b/l10n/bn_BD/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "সংকেতায়ন" diff --git a/l10n/bn_BD/files_trashbin.po b/l10n/bn_BD/files_trashbin.po index e3052a641a..ff75311f2f 100644 --- a/l10n/bn_BD/files_trashbin.po +++ b/l10n/bn_BD/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/bn_BD/files_versions.po b/l10n/bn_BD/files_versions.po index 2af1e4efdd..3c072f7816 100644 --- a/l10n/bn_BD/files_versions.po +++ b/l10n/bn_BD/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "ইতিহাস" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "ফাইল ভার্সন করা" diff --git a/l10n/bn_BD/lib.po b/l10n/bn_BD/lib.po index da90c84c97..747a2e2819 100644 --- a/l10n/bn_BD/lib.po +++ b/l10n/bn_BD/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "সহায়িকা" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "ব্যক্তিগত" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "নিয়ামকসমূহ" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "ব্যভহারকারী" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "অ্যাপ" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "প্রশাসক" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP ডাউনলোড বন্ধ করা আছে।" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "ফাইলগুলো একে একে ডাউনলোড করা আবশ্যক।" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "ফাইলে ফিরে চল" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "নির্বাচিত ফাইলগুলো এতই বৃহৎ যে জিপ ফাইল তৈরী করা সম্ভব নয়।" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "সেকেন্ড পূর্বে" diff --git a/l10n/bn_BD/settings.po b/l10n/bn_BD/settings.po index 946bd8cd25..2d3a44faeb 100644 --- a/l10n/bn_BD/settings.po +++ b/l10n/bn_BD/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -22,12 +22,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "অ্যাপস্টোর থেকে তালিকা লোড করতে সক্ষম নয়" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "অনুমোদন ঘটিত সমস্যা" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -81,7 +81,7 @@ msgstr " %s গোষ্ঠীতে ব্যবহারকারী যোগ msgid "Unable to remove user from group %s" msgstr "%s গোষ্ঠী থেকে ব্যবহারকারীকে অপসারণ করা সম্ভব হলো না" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -178,99 +178,87 @@ msgstr "বাণিজ্যিক সাপোর্ট" msgid "You have used %s of the available %s" msgstr "আপনি ব্যবহার করছেন %s, সুলভ %s এর মধ্যে।" -#: templates/personal.php:12 -msgid "Clients" -msgstr "ক্লায়েন্ট" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "ডেস্কটপ ক্লায়েন্ট ডাউনলোড করুন" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "অ্যান্ড্রয়েড ক্লায়েন্ট ডাউনলোড করুন" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "iOS ক্লায়েন্ট ডাউনলোড করুন" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "প্রথমবার চালানোর যাদুকর পূনরায় প্রদর্শন কর" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "কূটশব্দ" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "আপনার কূটশব্দটি পরিবর্তন করা হয়েছে " -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "আপনার কূটশব্দটি পরিবর্তন করতে সক্ষম নয়" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "বর্তমান কূটশব্দ" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "নতুন কূটশব্দ" -#: templates/personal.php:28 -msgid "show" -msgstr "প্রদর্শন" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "কূটশব্দ পরিবর্তন করুন" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "ই-মেইল " -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "আপনার ই-মেইল ঠিকানা" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "কূটশব্দ পূনরূদ্ধার সক্রিয় করার জন্য ই-মেইল ঠিকানাটি পূরণ করুন" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "ভাষা" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "অনুবাদ করতে সহায়তা করুন" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "আপনার ownCloud এ সংযুক্ত হতে এই ঠিকানাটি আপনার ফাইল ব্যবস্থাপকে ব্যবহার করুন" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "ভার্সন" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -213,8 +213,8 @@ msgid "Use TLS" msgstr "TLS ব্যবহার কর" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "SSL সংযোগের জন্য এটি ব্যবহার করবেন না, তাহলে ব্যর্থ হবেনই।" +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/ca/core.po b/l10n/ca/core.po index 8f10fe8239..bdfbedf5a5 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/core.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 10:20+0000\n" +"Last-Translator: rogerc \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -53,8 +53,9 @@ msgid "No category to add?" msgstr "No voleu afegir cap categoria?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Aquesta categoria ja existeix:" +#, php-format +msgid "This category already exists: %s" +msgstr "Aquesta categoria ja existeix: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -158,59 +159,59 @@ msgstr "Novembre" msgid "December" msgstr "Desembre" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Arranjament" -#: js/js.js:760 +#: js/js.js:766 msgid "seconds ago" msgstr "segons enrere" -#: js/js.js:761 +#: js/js.js:767 msgid "1 minute ago" msgstr "fa 1 minut" -#: js/js.js:762 +#: js/js.js:768 msgid "{minutes} minutes ago" msgstr "fa {minutes} minuts" -#: js/js.js:763 +#: js/js.js:769 msgid "1 hour ago" msgstr "fa 1 hora" -#: js/js.js:764 +#: js/js.js:770 msgid "{hours} hours ago" msgstr "fa {hours} hores" -#: js/js.js:765 +#: js/js.js:771 msgid "today" msgstr "avui" -#: js/js.js:766 +#: js/js.js:772 msgid "yesterday" msgstr "ahir" -#: js/js.js:767 +#: js/js.js:773 msgid "{days} days ago" msgstr "fa {days} dies" -#: js/js.js:768 +#: js/js.js:774 msgid "last month" msgstr "el mes passat" -#: js/js.js:769 +#: js/js.js:775 msgid "{months} months ago" msgstr "fa {months} mesos" -#: js/js.js:770 +#: js/js.js:776 msgid "months ago" msgstr "mesos enrere" -#: js/js.js:771 +#: js/js.js:777 msgid "last year" msgstr "l'any passat" -#: js/js.js:772 +#: js/js.js:778 msgid "years ago" msgstr "anys enrere" @@ -240,8 +241,8 @@ msgid "The object type is not specified." msgstr "No s'ha especificat el tipus d'objecte." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Error" @@ -261,7 +262,7 @@ msgstr "Comparteix" msgid "Shared" msgstr "Compartit" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Error en compartir" @@ -357,23 +358,23 @@ msgstr "elimina" msgid "share" msgstr "comparteix" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Protegeix amb contrasenya" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Error en eliminar la data d'expiració" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Error en establir la data d'expiració" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Enviant..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "El correu electrónic s'ha enviat" @@ -469,7 +470,7 @@ msgstr "Edita les categories" msgid "Add" msgstr "Afegeix" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Avís de seguretat" @@ -479,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "No està disponible el generador de nombres aleatoris segurs, habiliteu l'extensió de PHP OpenSSL." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Sense un generador de nombres aleatoris segurs un atacant podria predir els senyals per restablir la contrasenya i prendre-us el compte." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "La carpeta de dades i els fitxers provablement són accessibles des d'internet. El fitxer .htaccess que proporciona ownCloud no funciona. Us recomanem que configureu el vostre servidor web de manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de la carpeta arrel del servidor web." +"For information how to properly configure your server, please see the documentation." +msgstr "Per més informació sobre com configurar correctament el servidor, mireu la documentació." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Crea un compte d'administrador" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avançat" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Carpeta de dades" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configura la base de dades" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "s'usarà" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Usuari de la base de dades" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Contrasenya de la base de dades" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nom de la base de dades" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Espai de taula de la base de dades" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Ordinador central de la base de dades" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Acaba la configuració" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "controleu els vostres serveis web" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Surt" @@ -575,7 +580,7 @@ msgstr "Inici de sessió" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Acreditacions alternatives" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/ca/files.po b/l10n/ca/files.po index 78422f41e6..6442aaa9c9 100644 --- a/l10n/ca/files.po +++ b/l10n/ca/files.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 15:40+0000\n" +"Last-Translator: rogerc \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,6 +24,20 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr " No s'ha pogut moure %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "No es pot canviar el nom del fitxer" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "No s'ha carregat cap fitxer. Error desconegut" @@ -60,7 +74,7 @@ msgid "Failed to write to disk" msgstr "Ha fallat en escriure al disc" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "No hi ha prou espai disponible" #: ajax/upload.php:83 @@ -71,51 +85,52 @@ msgstr "Directori no vàlid." msgid "Files" msgstr "Fitxers" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Deixa de compartir" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Esborra permanentment" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Suprimeix" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Reanomena" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Pendents" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} ja existeix" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "substitueix" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "sugereix un nom" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "cancel·la" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "s'ha substituït {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "desfés" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "s'ha substituït {old_name} per {new_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "executa d'operació d'esborrar" @@ -155,64 +170,60 @@ msgstr "No es pot pujar el fitxer perquè és una carpeta o té 0 bytes" msgid "Upload Error" msgstr "Error en la pujada" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Tanca" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Pendents" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 fitxer pujant" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} fitxers en pujada" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "La pujada s'ha cancel·lat." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Hi ha una pujada en curs. Si abandoneu la pàgina la pujada es cancel·larà." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "La URL no pot ser buida" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nom de carpeta no vàlid. L'ús de 'Shared' està reservat per Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Nom" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Mida" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Modificat" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 carpeta" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} carpetes" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 fitxer" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} fitxers" @@ -269,8 +280,8 @@ msgid "From link" msgstr "Des d'enllaç" #: templates/index.php:40 -msgid "Trash" -msgstr "Esborra" +msgid "Trash bin" +msgstr "Paperera" #: templates/index.php:46 msgid "Cancel upload" @@ -284,6 +295,10 @@ msgstr "Res per aquí. Pugeu alguna cosa!" msgid "Download" msgstr "Baixa" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Deixa de compartir" + #: templates/index.php:105 msgid "Upload too large" msgstr "La pujada és massa gran" diff --git a/l10n/ca/files_encryption.po b/l10n/ca/files_encryption.po index 481b00ceee..98f7c39d55 100644 --- a/l10n/ca/files_encryption.po +++ b/l10n/ca/files_encryption.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 07:20+0000\n" -"Last-Translator: rogerc \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,28 +19,6 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Connecteu-vos al client ownCloud i canvieu la contrasenya d'encriptació per completar la conversió." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "s'ha commutat a l'encriptació per part del client" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Canvia la contrasenya d'encriptació per la d'accés" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Comproveu les contrasenyes i proveu-ho de nou." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "No s'ha pogut canviar la contrasenya d'encriptació de fitxers per la d'accés" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Encriptatge" diff --git a/l10n/ca/files_trashbin.po b/l10n/ca/files_trashbin.po index 2563d256cc..4c5e094e6d 100644 --- a/l10n/ca/files_trashbin.po +++ b/l10n/ca/files_trashbin.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 15:22+0000\n" +"Last-Translator: rogerc \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +18,23 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "No s'ha pogut esborrar permanentment %s" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "No s'ha pogut restaurar %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "executa l'operació de restauració" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "esborra el fitxer permanentment" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/ca/files_versions.po b/l10n/ca/files_versions.po index 0db50601e4..43021a3304 100644 --- a/l10n/ca/files_versions.po +++ b/l10n/ca/files_versions.po @@ -4,14 +4,15 @@ # # Translators: # , 2012. +# , 2013. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 15:40+0000\n" +"Last-Translator: rogerc \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +20,45 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "No s'ha pogut revertir: %s" + +#: history.php:40 +msgid "success" +msgstr "èxit" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "El fitxer %s s'ha revertit a la versió %s" + +#: history.php:49 +msgid "failure" +msgstr "fallada" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "El fitxer %s no s'ha pogut revertir a la versió %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "No hi ha versións antigues disponibles" + +#: history.php:73 +msgid "No path specified" +msgstr "No heu especificat el camí" + #: js/versions.js:16 msgid "History" msgstr "Historial" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Reverteix un fitxer a una versió anterior fent clic en el seu botó de reverteix" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Fitxers de Versions" diff --git a/l10n/ca/lib.po b/l10n/ca/lib.po index 965da96ee3..a96153767f 100644 --- a/l10n/ca/lib.po +++ b/l10n/ca/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2013. # , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 09:24+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:10+0000\n" "Last-Translator: rogerc \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -18,47 +19,47 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Ajuda" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personal" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Configuració" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Usuaris" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplicacions" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administració" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "La baixada en ZIP està desactivada." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Els fitxers s'han de baixar d'un en un." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Torna a Fitxers" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Els fitxers seleccionats son massa grans per generar un fitxer zip." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "no s'ha pogut determinar" @@ -86,6 +87,103 @@ msgstr "Text" msgid "Images" msgstr "Imatges" +#: setup.php:34 +msgid "Set an admin username." +msgstr "Establiu un nom d'usuari per l'administrador." + +#: setup.php:37 +msgid "Set an admin password." +msgstr "Establiu una contrasenya per l'administrador." + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "Especifiqueu una carpeta de dades." + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "%s escriviu el nom d'usuari de la base de dades." + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "%s escriviu el nom de la base de dades." + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "%s no podeu usar punts en el nom de la base de dades" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "%s establiu l'ordinador central de la base de dades." + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "Nom d'usuari i/o contrasenya PostgreSQL no vàlids" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "Heu d'escriure un compte existent o el d'administrador." + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "Nom d'usuari i/o contrasenya Oracle no vàlids" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "Nom d'usuari i/o contrasenya MySQL no vàlids" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "Error DB: \"%s\"" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "L'ordre en conflicte és: \"%s\"" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "L'usuari MySQL '%s'@'localhost' ja existeix." + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "Elimina aquest usuari de MySQL" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "L'usuari MySQL '%s'@'%%' ja existeix" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "Elimina aquest usuari de MySQL." + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "L'ordre en conflicte és: \"%s\", nom: %s, contrasenya: %s" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Comproveu les guies d'instal·lació." + #: template.php:113 msgid "seconds ago" msgstr "segons enrere" diff --git a/l10n/ca/settings.po b/l10n/ca/settings.po index 4f2bbf05a0..d722e07654 100644 --- a/l10n/ca/settings.po +++ b/l10n/ca/settings.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:00+0000\n" +"Last-Translator: rogerc \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,14 +27,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "No s'ha pogut carregar la llista des de l'App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Error d'autenticació" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "No s'ha pogut canviar el nom a mostrar" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -86,7 +86,7 @@ msgstr "No es pot afegir l'usuari al grup %s" msgid "Unable to remove user from group %s" msgstr "No es pot eliminar l'usuari del grup %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "No s'ha pogut actualitzar l'aplicació." @@ -183,99 +183,87 @@ msgstr "Suport comercial" msgid "You have used %s of the available %s" msgstr "Heu utilitzat %s d'un total disponible de %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clients" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Baixa clients d'escriptori" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr " Baixa el client per Android" +msgid "Get the apps to sync your files" +msgstr "Obtén les aplicacions per sincronitzar fitxers" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Baixa el client per iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Torna a mostrar l'assistent de primera execució" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Contrasenya" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "La seva contrasenya s'ha canviat" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "No s'ha pogut canviar la contrasenya" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Contrasenya actual" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Contrasenya nova" -#: templates/personal.php:28 -msgid "show" -msgstr "mostra" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Canvia la contrasenya" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Nom a mostrar" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "El vostre nom a mostrar ha canviat" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "No s'ha pogut canviar el vostre nom a mostrar" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Canvia el nom a mostrar" + +#: templates/personal.php:68 msgid "Email" msgstr "Correu electrònic" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Correu electrònic" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Ompliu el correu electrònic per activar la recuperació de contrasenya" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Idioma" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Ajudeu-nos amb la traducció" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Useu aquesta adreça per connectar amb ownCloud des del gestor de fitxers" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versió" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Usa TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "No ho useu en connexions SSL, fallarà." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "No ho useu adicionalment per a conexions LDAPS, fallarà." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/cs_CZ/core.po b/l10n/cs_CZ/core.po index 91324803c1..87c6869293 100644 --- a/l10n/cs_CZ/core.po +++ b/l10n/cs_CZ/core.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 13:30+0000\n" +"Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,8 +54,9 @@ msgid "No category to add?" msgstr "Žádná kategorie k přidání?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Tato kategorie již existuje: " +#, php-format +msgid "This category already exists: %s" +msgstr "Kategorie již existuje: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -159,59 +160,59 @@ msgstr "Listopad" msgid "December" msgstr "Prosinec" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Nastavení" -#: js/js.js:760 +#: js/js.js:766 msgid "seconds ago" msgstr "před pár vteřinami" -#: js/js.js:761 +#: js/js.js:767 msgid "1 minute ago" msgstr "před minutou" -#: js/js.js:762 +#: js/js.js:768 msgid "{minutes} minutes ago" msgstr "před {minutes} minutami" -#: js/js.js:763 +#: js/js.js:769 msgid "1 hour ago" msgstr "před hodinou" -#: js/js.js:764 +#: js/js.js:770 msgid "{hours} hours ago" msgstr "před {hours} hodinami" -#: js/js.js:765 +#: js/js.js:771 msgid "today" msgstr "dnes" -#: js/js.js:766 +#: js/js.js:772 msgid "yesterday" msgstr "včera" -#: js/js.js:767 +#: js/js.js:773 msgid "{days} days ago" msgstr "před {days} dny" -#: js/js.js:768 +#: js/js.js:774 msgid "last month" msgstr "minulý mesíc" -#: js/js.js:769 +#: js/js.js:775 msgid "{months} months ago" msgstr "před {months} měsíci" -#: js/js.js:770 +#: js/js.js:776 msgid "months ago" msgstr "před měsíci" -#: js/js.js:771 +#: js/js.js:777 msgid "last year" msgstr "minulý rok" -#: js/js.js:772 +#: js/js.js:778 msgid "years ago" msgstr "před lety" @@ -241,8 +242,8 @@ msgid "The object type is not specified." msgstr "Není určen typ objektu." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Chyba" @@ -262,7 +263,7 @@ msgstr "Sdílet" msgid "Shared" msgstr "Sdílené" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Chyba při sdílení" @@ -358,23 +359,23 @@ msgstr "smazat" msgid "share" msgstr "sdílet" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Chráněno heslem" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Chyba při odstraňování data vypršení platnosti" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Chyba při nastavení data vypršení platnosti" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Odesílám..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "E-mail odeslán" @@ -470,7 +471,7 @@ msgstr "Upravit kategorie" msgid "Add" msgstr "Přidat" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Bezpečnostní upozornění" @@ -480,71 +481,75 @@ msgid "" "OpenSSL extension." msgstr "Není dostupný žádný bezpečný generátor náhodných čísel. Povolte, prosím, rozšíření OpenSSL v PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Bez bezpečného generátoru náhodných čísel může útočník předpovědět token pro obnovu hesla a převzít kontrolu nad Vaším účtem." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Váš adresář s daty a soubory jsou dostupné z internetu, protože soubor .htaccess nefunguje." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Váš adresář dat a všechny Vaše soubory jsou pravděpodobně přístupné z internetu. Soubor .htaccess, který je poskytován ownCloud, nefunguje. Důrazně Vám doporučujeme nastavit váš webový server tak, aby nebyl adresář dat přístupný, nebo přesunout adresář dat mimo kořenovou složku dokumentů webového serveru." +"For information how to properly configure your server, please see the documentation." +msgstr "Pro informace jak správně nastavit váš server se podívejte do dokumentace." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Vytvořit účet správce" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Pokročilé" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Složka s daty" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Nastavit databázi" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "bude použito" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Uživatel databáze" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Heslo databáze" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Název databáze" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Tabulkový prostor databáze" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Hostitel databáze" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Dokončit nastavení" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "webové služby pod Vaší kontrolou" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Odhlásit se" @@ -576,7 +581,7 @@ msgstr "Přihlásit" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Alternativní přihlášení" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index 09eccd4644..c6ea61394f 100644 --- a/l10n/cs_CZ/files.po +++ b/l10n/cs_CZ/files.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 10:40+0000\n" +"Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,6 +20,20 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Nelze přesunout %s - existuje soubor se stejným názvem" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Nelze přesunout %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Nelze přejmenovat soubor" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Soubor nebyl odeslán. Neznámá chyba" @@ -56,8 +70,8 @@ msgid "Failed to write to disk" msgstr "Zápis na disk selhal" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Nedostatek dostupného místa" +msgid "Not enough storage available" +msgstr "Nedostatek dostupného úložného prostoru" #: ajax/upload.php:83 msgid "Invalid directory." @@ -67,51 +81,52 @@ msgstr "Neplatný adresář" msgid "Files" msgstr "Soubory" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Zrušit sdílení" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Trvale odstranit" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Smazat" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Přejmenovat" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Čekající" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} již existuje" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "nahradit" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "navrhnout název" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "zrušit" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "nahrazeno {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "zpět" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "nahrazeno {new_name} s {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "provést smazání" @@ -151,64 +166,60 @@ msgstr "Nelze odeslat Váš soubor, protože je to adresář nebo má velikost 0 msgid "Upload Error" msgstr "Chyba odesílání" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Zavřít" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Čekající" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "odesílá se 1 soubor" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "odesílám {count} souborů" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Odesílání zrušeno." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Probíhá odesílání souboru. Opuštění stránky vyústí ve zrušení nahrávání." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL nemůže být prázdná" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Neplatný název složky. Použití 'Shared' je rezervováno pro vnitřní potřeby Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Název" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Velikost" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Změněno" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 složka" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} složky" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 soubor" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} soubory" @@ -265,7 +276,7 @@ msgid "From link" msgstr "Z odkazu" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "Koš" #: templates/index.php:46 @@ -280,6 +291,10 @@ msgstr "Žádný obsah. Nahrajte něco." msgid "Download" msgstr "Stáhnout" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Zrušit sdílení" + #: templates/index.php:105 msgid "Upload too large" msgstr "Odeslaný soubor je příliš velký" diff --git a/l10n/cs_CZ/files_encryption.po b/l10n/cs_CZ/files_encryption.po index ea06c00d30..566eff0e84 100644 --- a/l10n/cs_CZ/files_encryption.po +++ b/l10n/cs_CZ/files_encryption.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 09:51+0000\n" -"Last-Translator: Tomáš Chvátal \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,28 +19,6 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Prosím přejděte na svého klienta ownCloud a nastavte šifrovací heslo pro dokončení konverze." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "přepnuto na šifrování na straně klienta" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Změnit šifrovací heslo na přihlašovací" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Zkontrolujte, prosím, své heslo a zkuste to znovu." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Nelze změnit šifrovací heslo na přihlašovací." - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Šifrování" diff --git a/l10n/cs_CZ/files_trashbin.po b/l10n/cs_CZ/files_trashbin.po index 11b7352f65..5055b34733 100644 --- a/l10n/cs_CZ/files_trashbin.po +++ b/l10n/cs_CZ/files_trashbin.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 06:40+0000\n" +"Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +18,23 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Nelze trvale odstranit %s" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Nelze obnovit %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "provést obnovu" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "trvale odstranit soubor" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/cs_CZ/files_versions.po b/l10n/cs_CZ/files_versions.po index 3e62a18ee4..928ac501c8 100644 --- a/l10n/cs_CZ/files_versions.po +++ b/l10n/cs_CZ/files_versions.po @@ -4,14 +4,14 @@ # # Translators: # Martin , 2012. -# Tomáš Chvátal , 2012. +# Tomáš Chvátal , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 06:40+0000\n" +"Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +19,45 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Nelze navrátit: %s" + +#: history.php:40 +msgid "success" +msgstr "úspěch" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Soubor %s byl navrácen na verzi %s" + +#: history.php:49 +msgid "failure" +msgstr "sehlhání" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Soubor %s nemohl být navrácen na verzi %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Nejsou dostupné žádné starší verze" + +#: history.php:73 +msgid "No path specified" +msgstr "Nezadána cesta" + #: js/versions.js:16 msgid "History" msgstr "Historie" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Navraťte soubor do předchozí verze kliknutím na tlačítko navrátit" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Verzování souborů" diff --git a/l10n/cs_CZ/lib.po b/l10n/cs_CZ/lib.po index 55cc3d0f58..a540304621 100644 --- a/l10n/cs_CZ/lib.po +++ b/l10n/cs_CZ/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 11:01+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:19+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Nápověda" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Osobní" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Nastavení" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Uživatelé" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplikace" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administrace" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Stahování ZIPu je vypnuto." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Soubory musí být stahovány jednotlivě." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Zpět k souborům" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Vybrané soubory jsou příliš velké pro vytvoření zip souboru." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "nelze zjistit" @@ -87,6 +87,103 @@ msgstr "Text" msgid "Images" msgstr "Obrázky" +#: setup.php:34 +msgid "Set an admin username." +msgstr "Zadejte uživatelské jméno správce." + +#: setup.php:37 +msgid "Set an admin password." +msgstr "Zadejte heslo správce." + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "Určete složku dat." + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "Zadejte uživatelské jméno %s databáze." + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "Zadejte název databáze pro %s databáze." + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "V názvu databáze %s nesmíte používat tečky." + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "Zadejte název počítače s databází %s." + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "Uživatelské jméno, či heslo PostgreSQL není platné" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "Musíte zadat existující účet, či správce." + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "Uživatelské jméno, či heslo Oracle není platné" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "Uživatelské jméno, či heslo MySQL není platné" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "Chyba DB: \"%s\"" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "Podezřelý příkaz byl: \"%s\"" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "Uživatel '%s'@'localhost' již v MySQL existuje." + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "Zahodit uživatele z MySQL" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "Uživatel '%s'@'%%' již v MySQL existuje" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "Zahodit uživatele z MySQL." + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "Podezřelý příkaz byl: \"%s\", jméno: %s, heslo: %s" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Váš webový server není správně nastaven pro umožnění synchronizace, protože rozhraní WebDAV je rozbité." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Zkonzultujte, prosím, průvodce instalací." + #: template.php:113 msgid "seconds ago" msgstr "před vteřinami" diff --git a/l10n/cs_CZ/settings.po b/l10n/cs_CZ/settings.po index 88caa49b13..2d64e35603 100644 --- a/l10n/cs_CZ/settings.po +++ b/l10n/cs_CZ/settings.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:07+0000\n" +"Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,14 +27,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Nelze načíst seznam z App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Chyba ověření" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Nelze změnit zobrazované jméno" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -86,7 +86,7 @@ msgstr "Nelze přidat uživatele do skupiny %s" msgid "Unable to remove user from group %s" msgstr "Nelze odstranit uživatele ze skupiny %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Nelze aktualizovat aplikaci." @@ -183,99 +183,87 @@ msgstr "Placená podpora" msgid "You have used %s of the available %s" msgstr "Používáte %s z %s dostupných" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klienti" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Stáhnout klienty pro počítač" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Stáhnout klienta pro android" +msgid "Get the apps to sync your files" +msgstr "Získat aplikace pro synchronizaci vašich souborů" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Stáhnout klienta pro iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Znovu zobrazit průvodce prvním spuštěním" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Heslo" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Vaše heslo bylo změněno" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Vaše heslo nelze změnit" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Současné heslo" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nové heslo" -#: templates/personal.php:28 -msgid "show" -msgstr "zobrazit" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Změnit heslo" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Zobrazované jméno" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Vaše zobrazované jméno bylo změněno" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Nelze změnit vaše zobrazované jméno" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Změnit zobrazované jméno" + +#: templates/personal.php:68 msgid "Email" msgstr "E-mail" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Vaše e-mailová adresa" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Pro povolení změny hesla vyplňte adresu e-mailu" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Jazyk" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Pomoci s překladem" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Použijte tuto adresu pro připojení k vašemu ownCloud skrze správce souborů" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Verze" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Použít TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Nepoužívejte pro připojení pomocí SSL, připojení selže." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "Nepoužívejte pro spojení LDAP, selže." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/da/core.po b/l10n/da/core.po index 1b44a2e8cd..a5720e0702 100644 --- a/l10n/da/core.po +++ b/l10n/da/core.po @@ -4,6 +4,7 @@ # # Translators: # , 2012. +# Frederik Lassen , 2013. # , 2011, 2012. # Morten Juhl-Johansen Zölde-Fejér , 2011-2013. # Ole Holm Frandsen , 2012. @@ -16,9 +17,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:15+0000\n" +"Last-Translator: Frederik Lassen \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -59,8 +60,9 @@ msgid "No category to add?" msgstr "Ingen kategori at tilføje?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Denne kategori eksisterer allerede: " +#, php-format +msgid "This category already exists: %s" +msgstr "Kategorien eksisterer allerede: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -164,59 +166,59 @@ msgstr "November" msgid "December" msgstr "December" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Indstillinger" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "sekunder siden" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "1 minut siden" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "{minutes} minutter siden" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "1 time siden" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "{hours} timer siden" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "i dag" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "i går" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "{days} dage siden" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "sidste måned" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "{months} måneder siden" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "måneder siden" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "sidste år" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "år siden" @@ -246,8 +248,8 @@ msgid "The object type is not specified." msgstr "Objekttypen er ikke angivet." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Fejl" @@ -259,15 +261,15 @@ msgstr "Den app navn er ikke angivet." msgid "The required file {file} is not installed!" msgstr "Den krævede fil {file} er ikke installeret!" -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +#: js/share.js:29 js/share.js:43 js/share.js:90 +msgid "Shared" +msgstr "Delt" + +#: js/share.js:93 msgid "Share" msgstr "Del" -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 -msgid "Shared" -msgstr "" - -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Fejl under deling" @@ -363,23 +365,23 @@ msgstr "slet" msgid "share" msgstr "del" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Beskyttet med adgangskode" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Fejl ved fjernelse af udløbsdato" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Fejl under sætning af udløbsdato" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Sender ..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "E-mail afsendt" @@ -475,7 +477,7 @@ msgstr "Rediger kategorier" msgid "Add" msgstr "Tilføj" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Sikkerhedsadvarsel" @@ -485,71 +487,75 @@ msgid "" "OpenSSL extension." msgstr "Ingen sikker tilfældighedsgenerator til tal er tilgængelig. Aktiver venligst OpenSSL udvidelsen." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Uden en sikker tilfældighedsgenerator til tal kan en angriber måske gætte dit gendan kodeord og overtage din konto" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Dine data mappe og filer er sandsynligvis tilgængelige fra internettet fordi .htaccess filen ikke virker." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Din data mappe og dine filer er muligvis tilgængelige fra internettet. .htaccess filen som ownCloud leverer virker ikke. Vi anbefaler på det kraftigste at du konfigurerer din webserver på en måske så data mappen ikke længere er tilgængelig eller at du flytter data mappen uden for webserverens dokument rod. " +"For information how to properly configure your server, please see the documentation." +msgstr "For at vide mere om hvordan du konfigurerer din server ordentligt, se venligst dokumentationen." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Opret en administratorkonto" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avanceret" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datamappe" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfigurer databasen" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "vil blive brugt" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Databasebruger" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Databasekodeord" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Navn på database" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Database tabelplads" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Databasehost" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Afslut opsætning" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Webtjenester under din kontrol" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Log ud" @@ -581,7 +587,7 @@ msgstr "Log ind" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Alternative logins" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/da/files.po b/l10n/da/files.po index 9477b306d4..420e9032f1 100644 --- a/l10n/da/files.po +++ b/l10n/da/files.po @@ -4,6 +4,7 @@ # # Translators: # , 2012. +# Frederik Lassen , 2013. # Morten Juhl-Johansen Zölde-Fejér , 2011-2013. # Ole Holm Frandsen , 2012. # , 2012. @@ -15,9 +16,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:16+0000\n" +"Last-Translator: Frederik Lassen \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,6 +26,20 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Kunne ikke flytte %s - der findes allerede en fil med dette navn" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Kunne ikke flytte %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Kunne ikke omdøbe fil" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Ingen fil blev uploadet. Ukendt fejl." @@ -61,8 +76,8 @@ msgid "Failed to write to disk" msgstr "Fejl ved skrivning til disk." #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "" +msgid "Not enough storage available" +msgstr "Der er ikke nok plads til rådlighed" #: ajax/upload.php:83 msgid "Invalid directory." @@ -72,53 +87,54 @@ msgstr "Ugyldig mappe." msgid "Files" msgstr "Filer" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Fjern deling" - -#: js/fileactions.js:119 +#: js/fileactions.js:125 msgid "Delete permanently" -msgstr "" +msgstr "Slet permanent" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:127 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Slet" -#: js/fileactions.js:187 +#: js/fileactions.js:193 msgid "Rename" msgstr "Omdøb" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Afventer" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} eksisterer allerede" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "erstat" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "foreslå navn" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "fortryd" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "erstattede {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "fortryd" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "erstattede {new_name} med {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" -msgstr "" +msgstr "udfør slet operation" #: js/files.js:52 msgid "'.' is an invalid file name." @@ -156,64 +172,60 @@ msgstr "Kunne ikke uploade din fil, da det enten er en mappe eller er tom" msgid "Upload Error" msgstr "Fejl ved upload" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Luk" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Afventer" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 fil uploades" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} filer uploades" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Upload afbrudt." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URLen kan ikke være tom." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Ugyldigt mappenavn. Brug af \"Shared\" er forbeholdt Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Navn" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Størrelse" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Ændret" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 mappe" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} mapper" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 fil" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} filer" @@ -270,8 +282,8 @@ msgid "From link" msgstr "Fra link" #: templates/index.php:40 -msgid "Trash" -msgstr "" +msgid "Trash bin" +msgstr "Papirkurv" #: templates/index.php:46 msgid "Cancel upload" @@ -285,6 +297,10 @@ msgstr "Her er tomt. Upload noget!" msgid "Download" msgstr "Download" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Fjern deling" + #: templates/index.php:105 msgid "Upload too large" msgstr "Upload for stor" @@ -305,4 +321,4 @@ msgstr "Indlæser" #: templates/upgrade.php:2 msgid "Upgrading filesystem cache..." -msgstr "" +msgstr "Opgraderer filsystems cachen..." diff --git a/l10n/da/files_encryption.po b/l10n/da/files_encryption.po index 2a28a291a5..ebf1d1824b 100644 --- a/l10n/da/files_encryption.po +++ b/l10n/da/files_encryption.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Frederik Lassen , 2013. # Morten Juhl-Johansen Zölde-Fejér , 2013. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:33+0000\n" +"Last-Translator: Frederik Lassen \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,43 +20,21 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Skift venligst til din ownCloud-klient og skift krypteringskoden for at fuldføre konverteringen." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "skiftet til kryptering på klientsiden" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Udskift krypteringskode til login-adgangskode" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Check adgangskoder og forsøg igen." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Kunne ikke udskifte krypteringskode med login-adgangskode" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Kryptering" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "Fil kryptering aktiveret." #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "De følgende filtyper vil ikke blive krypteret:" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Ekskluder de følgende fil typer fra kryptering:" #: templates/settings.php:12 msgid "None" diff --git a/l10n/da/files_trashbin.po b/l10n/da/files_trashbin.po index 6f1c6e6b46..c29dc6c7cc 100644 --- a/l10n/da/files_trashbin.po +++ b/l10n/da/files_trashbin.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Frederik Lassen , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:31+0000\n" +"Last-Translator: Frederik Lassen \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,13 +18,23 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Kunne ikke slette %s permanent" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Kunne ikke gendanne %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" -msgstr "" +msgstr "udfør gendannelsesoperation" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "slet fil permanent" #: js/trash.js:125 templates/index.php:17 msgid "Name" @@ -31,7 +42,7 @@ msgstr "Navn" #: js/trash.js:126 templates/index.php:27 msgid "Deleted" -msgstr "" +msgstr "Slettet" #: js/trash.js:135 msgid "1 folder" @@ -51,7 +62,7 @@ msgstr "{count} filer" #: templates/index.php:9 msgid "Nothing in here. Your trash bin is empty!" -msgstr "" +msgstr "Intet at se her. Din papirkurv er tom!" #: templates/index.php:20 templates/index.php:22 msgid "Restore" diff --git a/l10n/da/files_versions.po b/l10n/da/files_versions.po index 847d3bda8a..f92adb3b54 100644 --- a/l10n/da/files_versions.po +++ b/l10n/da/files_versions.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Frederik Lassen , 2013. # Morten Juhl-Johansen Zölde-Fejér , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:37+0000\n" +"Last-Translator: Frederik Lassen \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +20,45 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Kunne ikke genskabe: %s" + +#: history.php:40 +msgid "success" +msgstr "success" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Filen %s blev genskabt til version: %s" + +#: history.php:49 +msgid "failure" +msgstr "fejl" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Filen %s blev genskabt til version: %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Ingen gamle version tilgængelige" + +#: history.php:73 +msgid "No path specified" +msgstr "Ingen sti specificeret" + #: js/versions.js:16 msgid "History" msgstr "Historik" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Genskab en fil til en tidligere version ved at klikke på denne genskab knap." + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Versionering af filer" diff --git a/l10n/da/lib.po b/l10n/da/lib.po index 5596da61c3..f17d031540 100644 --- a/l10n/da/lib.po +++ b/l10n/da/lib.po @@ -4,15 +4,16 @@ # # Translators: # , 2012. +# Frederik Lassen , 2013. # Morten Juhl-Johansen Zölde-Fejér , 2012-2013. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-30 00:23+0100\n" -"PO-Revision-Date: 2013-01-29 11:52+0000\n" -"Last-Translator: Morten Juhl-Johansen Zölde-Fejér \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:27+0000\n" +"Last-Translator: Frederik Lassen \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,47 +21,47 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Hjælp" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personlig" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Indstillinger" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Brugere" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Apps" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP-download er slået fra." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Filer skal downloades en for en." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Tilbage til Filer" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "De markerede filer er for store til at generere en ZIP-fil." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "kunne ikke fastslås" @@ -88,6 +89,103 @@ msgstr "SMS" msgid "Images" msgstr "Billeder" +#: setup.php:34 +msgid "Set an admin username." +msgstr "Angiv et admin brugernavn." + +#: setup.php:37 +msgid "Set an admin password." +msgstr "Angiv et admin kodeord." + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "Specificer en data mappe." + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "%s indtast database brugernavnet." + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "%s indtast database navnet." + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "%s du må ikke bruge punktummer i databasenavnet." + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "%s sæt database værten." + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "PostgreSQL brugernavn og/eller kodeord er ikke gyldigt." + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "Du bliver nødt til at indtaste en eksisterende bruger eller en administrator." + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "Oracle brugernavn og/eller kodeord er ikke gyldigt." + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "MySQL brugernavn og/eller kodeord er ikke gyldigt." + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "Databasefejl: \"%s\"" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "Fejlende kommando var: \"%s\"" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "MySQL brugeren '%s'@'localhost' eksisterer allerede." + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "Slet denne bruger fra MySQL" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "MySQL brugeren '%s'@'%%' eksisterer allerede." + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "Slet denne bruger fra MySQL" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "Fejlende kommando var: \"%s\", navn: %s, password: %s" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Din webserver er endnu ikke sat op til at tillade fil synkronisering fordi WebDAV grænsefladen virker ødelagt." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Dobbelttjek venligst installations vejledningerne." + #: template.php:113 msgid "seconds ago" msgstr "sekunder siden" diff --git a/l10n/da/settings.po b/l10n/da/settings.po index b2be1f6379..ef39734eee 100644 --- a/l10n/da/settings.po +++ b/l10n/da/settings.po @@ -4,6 +4,7 @@ # # Translators: # , 2012. +# Frederik Lassen , 2013. # , 2012. # , 2011. # Morten Juhl-Johansen Zölde-Fejér , 2011-2012. @@ -17,9 +18,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:19+0000\n" +"Last-Translator: Frederik Lassen \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,14 +32,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Kunne ikke indlæse listen fra App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Adgangsfejl" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Kunne ikke skifte skærmnavn" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -90,13 +91,13 @@ msgstr "Brugeren kan ikke tilføjes til gruppen %s" msgid "Unable to remove user from group %s" msgstr "Brugeren kan ikke fjernes fra gruppen %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." -msgstr "" +msgstr "Kunne ikke opdatere app'en." #: js/apps.js:30 msgid "Update to {appversion}" -msgstr "" +msgstr "Opdatér til {appversion}" #: js/apps.js:36 js/apps.js:76 msgid "Disable" @@ -108,15 +109,15 @@ msgstr "Aktiver" #: js/apps.js:55 msgid "Please wait...." -msgstr "" +msgstr "Vent venligst..." #: js/apps.js:84 msgid "Updating...." -msgstr "" +msgstr "Opdaterer...." #: js/apps.js:87 msgid "Error while updating app" -msgstr "" +msgstr "Der opstod en fejl under app opgraderingen" #: js/apps.js:87 msgid "Error" @@ -124,7 +125,7 @@ msgstr "Fejl" #: js/apps.js:90 msgid "Updated" -msgstr "" +msgstr "Opdateret" #: js/personal.js:96 msgid "Saving..." @@ -187,99 +188,87 @@ msgstr "Kommerciel support" msgid "You have used %s of the available %s" msgstr "Du har brugt %s af den tilgængelige %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klienter" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Hent Desktop Klienter" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Hent Android Klient" +msgid "Get the apps to sync your files" +msgstr "Hent applikationerne for at synkronisere dine filer" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Hent iOS Klient" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Vis Første Kørsel Guiden igen" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Kodeord" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Din adgangskode blev ændret" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Ude af stand til at ændre dit kodeord" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Nuværende adgangskode" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Ny adgangskode" -#: templates/personal.php:28 -msgid "show" -msgstr "vis" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Skift kodeord" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" -msgstr "" - -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" +msgstr "Skærmnavn" #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Dit skærmnavn blev ændret" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Kunne ikke skifte dit skærmnavn" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Skift skærmnavn" + +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Din emailadresse" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Indtast en emailadresse for at kunne få påmindelse om adgangskode" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Sprog" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Hjælp med oversættelsen" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Brug denne adresse til at oprette forbindelse til din ownCloud i din filstyring" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Version" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the ow #: templates/users.php:21 templates/users.php:79 msgid "Login Name" -msgstr "" +msgstr "Loginnavn" #: templates/users.php:26 templates/users.php:82 templates/users.php:107 msgid "Groups" @@ -323,11 +312,11 @@ msgstr "Opbevaring" #: templates/users.php:97 msgid "change display name" -msgstr "" +msgstr "skift skærmnavn" #: templates/users.php:101 msgid "set new password" -msgstr "" +msgstr "skift kodeord" #: templates/users.php:137 msgid "Default" diff --git a/l10n/da/user_ldap.po b/l10n/da/user_ldap.po index 63c885ecaa..31ec98eaba 100644 --- a/l10n/da/user_ldap.po +++ b/l10n/da/user_ldap.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-03 00:04+0100\n" -"PO-Revision-Date: 2013-02-02 23:05+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" @@ -218,8 +218,8 @@ msgid "Use TLS" msgstr "Brug TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Brug ikke til SSL forbindelser, da den vil fejle." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/de/core.po b/l10n/de/core.po index f8626030e1..eb62f53aca 100644 --- a/l10n/de/core.po +++ b/l10n/de/core.po @@ -23,8 +23,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -66,8 +66,9 @@ msgid "No category to add?" msgstr "Keine Kategorie hinzuzufügen?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Kategorie existiert bereits:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -171,59 +172,59 @@ msgstr "November" msgid "December" msgstr "Dezember" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Einstellungen" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "Gerade eben" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "vor einer Minute" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "Vor {minutes} Minuten" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "Vor einer Stunde" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "Vor {hours} Stunden" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "Heute" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "Gestern" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "Vor {days} Tag(en)" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "Letzten Monat" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "Vor {months} Monaten" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "Vor Monaten" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "Letztes Jahr" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "Vor Jahren" @@ -482,7 +483,7 @@ msgstr "Kategorien bearbeiten" msgid "Add" msgstr "Hinzufügen" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Sicherheitswarnung" @@ -492,71 +493,75 @@ msgid "" "OpenSSL extension." msgstr "Es ist kein sicherer Zufallszahlengenerator verfügbar, bitte aktiviere die PHP-Erweiterung für OpenSSL." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Ohne einen sicheren Zufallszahlengenerator sind Angreifer in der Lage die Tokens für das Zurücksetzen der Passwörter vorherzusehen und Konten zu übernehmen." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Dein Datenverzeichnis und deine Datein sind vielleicht vom Internet aus erreichbar. Die .htaccess Datei, die ownCloud verwendet, arbeitet nicht richtig. Wir schlagen Dir dringend vor, dass du deinen Webserver so konfigurierst, dass das Datenverzeichnis nicht länger erreichbar ist oder, dass du dein Datenverzeichnis aus dem Dokumenten-root des Webservers bewegst." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Administrator-Konto anlegen" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Fortgeschritten" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datenverzeichnis" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Datenbank einrichten" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "wird verwendet" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Datenbank-Benutzer" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Datenbank-Passwort" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Datenbank-Name" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Datenbank-Tablespace" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Datenbank-Host" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Installation abschließen" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Web-Services unter Ihrer Kontrolle" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Abmelden" diff --git a/l10n/de/files.po b/l10n/de/files.po index 7cf13d9caa..bf70be47a7 100644 --- a/l10n/de/files.po +++ b/l10n/de/files.po @@ -28,8 +28,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -38,6 +38,20 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits." + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Konnte %s nicht verschieben" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Konnte Datei nicht umbenennen" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Keine Datei hochgeladen. Unbekannter Fehler" @@ -74,7 +88,7 @@ msgid "Failed to write to disk" msgstr "Fehler beim Schreiben auf die Festplatte" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "Nicht genug Speicherplatz verfügbar" #: ajax/upload.php:83 @@ -85,51 +99,52 @@ msgstr "Ungültiges Verzeichnis." msgid "Files" msgstr "Dateien" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Nicht mehr freigeben" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Löschen" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Umbenennen" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Ausstehend" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} existiert bereits" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "ersetzen" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "Name vorschlagen" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "abbrechen" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name} wurde ersetzt" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "rückgängig machen" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{old_name} ersetzt durch {new_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "Löschvorgang ausführen" @@ -169,64 +184,60 @@ msgstr "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichn msgid "Upload Error" msgstr "Fehler beim Upload" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Schließen" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Ausstehend" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "Eine Datei wird hoch geladen" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} Dateien werden hochgeladen" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Upload abgebrochen." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Die URL darf nicht leer sein." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten." -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Name" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Größe" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Bearbeitet" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 Ordner" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} Ordner" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 Datei" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} Dateien" @@ -283,8 +294,8 @@ msgid "From link" msgstr "Von einem Link" #: templates/index.php:40 -msgid "Trash" -msgstr "Papierkorb" +msgid "Trash bin" +msgstr "" #: templates/index.php:46 msgid "Cancel upload" @@ -298,6 +309,10 @@ msgstr "Alles leer. Lade etwas hoch!" msgid "Download" msgstr "Herunterladen" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Nicht mehr freigeben" + #: templates/index.php:105 msgid "Upload too large" msgstr "Upload zu groß" diff --git a/l10n/de/files_encryption.po b/l10n/de/files_encryption.po index 858ca4d692..075f5b7734 100644 --- a/l10n/de/files_encryption.po +++ b/l10n/de/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -19,28 +19,6 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Bitte wechseln Sie nun zum ownCloud Client und ändern Sie ihr Verschlüsselungspasswort um die Konvertierung abzuschließen." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "Zur Clientseitigen Verschlüsselung gewechselt" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Ändern des Verschlüsselungspasswortes zum Anmeldepasswort" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Bitte überprüfen sie Ihr Passwort und versuchen Sie es erneut." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Ihr Verschlüsselungspasswort konnte nicht als Anmeldepasswort gesetzt werden." - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Verschlüsselung" diff --git a/l10n/de/files_trashbin.po b/l10n/de/files_trashbin.po index 6950494d02..b9692802ff 100644 --- a/l10n/de/files_trashbin.po +++ b/l10n/de/files_trashbin.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -19,6 +19,16 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "Wiederherstellung ausführen" diff --git a/l10n/de/files_versions.po b/l10n/de/files_versions.po index a3e251c142..e969e09606 100644 --- a/l10n/de/files_versions.po +++ b/l10n/de/files_versions.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -22,10 +22,45 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Historie" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Dateiversionierung" diff --git a/l10n/de/lib.po b/l10n/de/lib.po index d27f2e0504..28beedf69f 100644 --- a/l10n/de/lib.po +++ b/l10n/de/lib.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-20 03:39+0000\n" -"Last-Translator: Marcel Kühlhorn \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,47 +24,47 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Hilfe" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Persönlich" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Einstellungen" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Benutzer" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Apps" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administrator" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Der ZIP-Download ist deaktiviert." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Die Dateien müssen einzeln heruntergeladen werden." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Zurück zu \"Dateien\"" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Die gewählten Dateien sind zu groß, um eine ZIP-Datei zu erstellen." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "Konnte nicht festgestellt werden" @@ -92,6 +92,103 @@ msgstr "Text" msgid "Images" msgstr "Bilder" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "Gerade eben" diff --git a/l10n/de/settings.po b/l10n/de/settings.po index 701892688c..2b1f0007ef 100644 --- a/l10n/de/settings.po +++ b/l10n/de/settings.po @@ -26,8 +26,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -40,12 +40,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Die Liste der Anwendungen im Store konnte nicht geladen werden." -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Fehler bei der Anmeldung" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -99,7 +99,7 @@ msgstr "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden" msgid "Unable to remove user from group %s" msgstr "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -196,99 +196,87 @@ msgstr "Kommerzieller Support" msgid "You have used %s of the available %s" msgstr "Du verwendest %s der verfügbaren %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clients" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Desktop-Client herunterladen" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Android-Client herunterladen" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "iOS-Client herunterladen" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Erstinstallation erneut durchführen" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Passwort" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Dein Passwort wurde geändert." -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Passwort konnte nicht geändert werden" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Aktuelles Passwort" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Neues Passwort" -#: templates/personal.php:28 -msgid "show" -msgstr "zeigen" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Passwort ändern" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Anzeigename" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "E-Mail" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Deine E-Mail-Adresse" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Trage eine E-Mail-Adresse ein, um die Passwort-Wiederherstellung zu aktivieren." -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Sprache" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Hilf bei der Übersetzung" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Verwende diese Adresse, um Deinen Dateimanager mit Deiner ownCloud zu verbinden" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Version" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -222,8 +222,8 @@ msgid "Use TLS" msgstr "Nutze TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Verwende dies nicht für SSL-Verbindungen, es wird fehlschlagen." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/de_DE/core.po b/l10n/de_DE/core.po index 5f59dc9aaf..c67c4205fb 100644 --- a/l10n/de_DE/core.po +++ b/l10n/de_DE/core.po @@ -18,14 +18,15 @@ # , 2012. # Phi Lieb <>, 2012. # , 2013. +# Susi <>, 2013. # , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" @@ -67,8 +68,9 @@ msgid "No category to add?" msgstr "Keine Kategorie hinzuzufügen?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Kategorie existiert bereits:" +#, php-format +msgid "This category already exists: %s" +msgstr "Die Kategorie '%s' existiert bereits." #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -172,59 +174,59 @@ msgstr "November" msgid "December" msgstr "Dezember" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Einstellungen" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "Gerade eben" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "Vor 1 Minute" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "Vor {minutes} Minuten" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "Vor einer Stunde" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "Vor {hours} Stunden" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "Heute" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "Gestern" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "Vor {days} Tag(en)" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "Letzten Monat" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "Vor {months} Monaten" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "Vor Monaten" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "Letztes Jahr" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "Vor Jahren" @@ -483,7 +485,7 @@ msgstr "Kategorien bearbeiten" msgid "Add" msgstr "Hinzufügen" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Sicherheitshinweis" @@ -493,71 +495,75 @@ msgid "" "OpenSSL extension." msgstr "Es ist kein sicherer Zufallszahlengenerator verfügbar, bitte aktivieren Sie die PHP-Erweiterung für OpenSSL." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Ohne einen sicheren Zufallszahlengenerator sind Angreifer in der Lage, die Tokens für das Zurücksetzen der Passwörter vorherzusehen und Ihr Konto zu übernehmen." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich über das Internet erreichbar. Die von ownCloud bereitgestellte .htaccess Datei funktioniert nicht. Wir empfehlen Ihnen dringend, Ihren Webserver so zu konfigurieren, dass das Datenverzeichnis nicht mehr über das Internet erreichbar ist. Alternativ können Sie auch das Datenverzeichnis aus dem Dokumentenverzeichnis des Webservers verschieben." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Administrator-Konto anlegen" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Fortgeschritten" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datenverzeichnis" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Datenbank einrichten" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "wird verwendet" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Datenbank-Benutzer" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Datenbank-Passwort" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Datenbank-Name" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Datenbank-Tablespace" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Datenbank-Host" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Installation abschließen" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Web-Services unter Ihrer Kontrolle" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Abmelden" @@ -589,7 +595,7 @@ msgstr "Einloggen" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Alternative Logins" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/de_DE/files.po b/l10n/de_DE/files.po index 20ad664318..a92ea83e99 100644 --- a/l10n/de_DE/files.po +++ b/l10n/de_DE/files.po @@ -22,6 +22,7 @@ # Phi Lieb <>, 2012. # Phillip Schichtel , 2013. # , 2013. +# Susi <>, 2013. # , 2012. # Thomas Müller <>, 2012. # , 2012. @@ -29,8 +30,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" @@ -39,6 +40,20 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Konnte %s nicht verschieben" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Konnte Datei nicht umbenennen" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Keine Datei hochgeladen. Unbekannter Fehler" @@ -75,8 +90,8 @@ msgid "Failed to write to disk" msgstr "Fehler beim Schreiben auf die Festplatte" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Nicht genügend Speicherplatz verfügbar" +msgid "Not enough storage available" +msgstr "Nicht genug Speicher vorhanden." #: ajax/upload.php:83 msgid "Invalid directory." @@ -86,51 +101,52 @@ msgstr "Ungültiges Verzeichnis." msgid "Files" msgstr "Dateien" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Nicht mehr freigeben" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Entgültig löschen" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Löschen" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Umbenennen" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Ausstehend" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} existiert bereits" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "ersetzen" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "Name vorschlagen" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "abbrechen" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name} wurde ersetzt" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "rückgängig machen" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{old_name} wurde ersetzt durch {new_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "Führe das Löschen aus" @@ -170,64 +186,60 @@ msgstr "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichni msgid "Upload Error" msgstr "Fehler beim Upload" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Schließen" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Ausstehend" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 Datei wird hochgeladen" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} Dateien wurden hochgeladen" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Upload abgebrochen." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Der Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Die URL darf nicht leer sein." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Name" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Größe" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Bearbeitet" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 Ordner" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} Ordner" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 Datei" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} Dateien" @@ -284,8 +296,8 @@ msgid "From link" msgstr "Von einem Link" #: templates/index.php:40 -msgid "Trash" -msgstr "Abfall" +msgid "Trash bin" +msgstr "" #: templates/index.php:46 msgid "Cancel upload" @@ -299,6 +311,10 @@ msgstr "Alles leer. Bitte laden Sie etwas hoch!" msgid "Download" msgstr "Herunterladen" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Nicht mehr freigeben" + #: templates/index.php:105 msgid "Upload too large" msgstr "Der Upload ist zu groß" diff --git a/l10n/de_DE/files_encryption.po b/l10n/de_DE/files_encryption.po index 8d49245d9f..a4b8388e60 100644 --- a/l10n/de_DE/files_encryption.po +++ b/l10n/de_DE/files_encryption.po @@ -8,12 +8,13 @@ # , 2012. # Marc-Andre Husyk , 2013. # Marcel Kühlhorn , 2013. +# Susi <>, 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" @@ -22,43 +23,21 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Bitte wechseln Sie nun zum ownCloud Client und ändern Sie ihr Verschlüsselungspasswort um die Konvertierung abzuschließen." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "Zur Clientseitigen Verschlüsselung gewechselt" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Ändern des Verschlüsselungspasswortes zum Anmeldepasswort" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Bitte überprüfen sie Ihr Passwort und versuchen Sie es erneut." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Ihr Verschlüsselungspasswort konnte nicht als Anmeldepasswort gesetzt werden." - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Verschlüsselung" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "Datei-Verschlüsselung ist aktiviert" #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "Die folgenden Datei-Typen werden nicht verschlüsselt:" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Die folgenden Datei-Typen von der Verschlüsselung ausnehmen:" #: templates/settings.php:12 msgid "None" diff --git a/l10n/de_DE/files_trashbin.po b/l10n/de_DE/files_trashbin.po index 46d04db9de..755e0968db 100644 --- a/l10n/de_DE/files_trashbin.po +++ b/l10n/de_DE/files_trashbin.po @@ -5,12 +5,13 @@ # Translators: # I Robot , 2013. # Phillip Schichtel , 2013. +# Susi <>, 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" @@ -19,13 +20,23 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "Führe die Wiederherstellung aus" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "Datei entgültig löschen" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/de_DE/files_versions.po b/l10n/de_DE/files_versions.po index bef0ee6b76..e6c6d61cb2 100644 --- a/l10n/de_DE/files_versions.po +++ b/l10n/de_DE/files_versions.po @@ -6,15 +6,16 @@ # , 2012. # I Robot , 2012. # , 2012. +# , 2013. # , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 12:20+0000\n" +"Last-Translator: JamFX \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,10 +23,45 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "Erfolgreich" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "Fehlgeschlagen" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "keine älteren Versionen verfügbar" + +#: history.php:73 +msgid "No path specified" +msgstr "Kein Pfad angegeben" + #: js/versions.js:16 msgid "History" msgstr "Historie" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Dateiversionierung" diff --git a/l10n/de_DE/lib.po b/l10n/de_DE/lib.po index 851e152e2d..8465b3420a 100644 --- a/l10n/de_DE/lib.po +++ b/l10n/de_DE/lib.po @@ -15,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 21:16+0000\n" -"Last-Translator: a.tangemann \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,47 +25,47 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Hilfe" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Persönlich" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Einstellungen" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Benutzer" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Apps" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administrator" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Der ZIP-Download ist deaktiviert." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Die Dateien müssen einzeln heruntergeladen werden." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Zurück zu \"Dateien\"" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Die gewählten Dateien sind zu groß, um eine ZIP-Datei zu erstellen." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "konnte nicht ermittelt werden" @@ -93,6 +93,103 @@ msgstr "Text" msgid "Images" msgstr "Bilder" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "Gerade eben" diff --git a/l10n/de_DE/settings.po b/l10n/de_DE/settings.po index 980889f592..79b86613e8 100644 --- a/l10n/de_DE/settings.po +++ b/l10n/de_DE/settings.po @@ -20,6 +20,7 @@ # Phillip Schichtel , 2013. # , 2012. # , 2013. +# Susi <>, 2013. # , 2012. # , 2012. # , 2012. @@ -28,8 +29,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" @@ -42,14 +43,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Die Liste der Anwendungen im Store konnte nicht geladen werden." -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Fehler bei der Anmeldung" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Das Ändern des Anzeigenamens ist nicht möglich" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -101,7 +102,7 @@ msgstr "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden" msgid "Unable to remove user from group %s" msgstr "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Die App konnte nicht geupdated werden." @@ -198,99 +199,87 @@ msgstr "Kommerzieller Support" msgid "You have used %s of the available %s" msgstr "Sie verwenden %s der verfügbaren %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clients" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Desktop-Client herunterladen" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Android-Client herunterladen" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "iOS-Client herunterladen" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Zeige den Einrichtungsassistenten erneut" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Passwort" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Ihr Passwort wurde geändert." -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Das Passwort konnte nicht geändert werden" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Aktuelles Passwort" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Neues Passwort" -#: templates/personal.php:28 -msgid "show" -msgstr "zeigen" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Passwort ändern" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Anzeigename" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Dein Anzeigename wurde geändert" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Das Ändern deines Anzeigenamens ist nicht möglich" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Anzeigenamen ändern" + +#: templates/personal.php:68 msgid "Email" msgstr "E-Mail" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Ihre E-Mail-Adresse" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Bitte tragen Sie eine E-Mail-Adresse ein, um die Passwort-Wiederherstellung zu aktivieren." -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Sprache" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Helfen Sie bei der Übersetzung" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Verwenden Sie diese Adresse, um Ihren Dateimanager mit Ihrer ownCloud zu verbinden" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Version" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -224,8 +224,8 @@ msgid "Use TLS" msgstr "Nutze TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Verwenden Sie dies nicht für SSL-Verbindungen, es wird fehlschlagen." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/el/core.po b/l10n/el/core.po index ed6c06853f..0c8ae8d8ae 100644 --- a/l10n/el/core.po +++ b/l10n/el/core.po @@ -4,7 +4,7 @@ # # Translators: # axil Pι , 2012. -# Dimitris M. , 2012. +# Dimitris M. , 2012-2013. # Efstathios Iosifidis , 2012. # Efstathios Iosifidis , 2012. # Marios Bekatoros <>, 2012. @@ -15,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 14:40+0000\n" +"Last-Translator: Dimitris M. \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -58,8 +58,9 @@ msgid "No category to add?" msgstr "Δεν έχετε κατηγορία να προσθέσετε;" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Αυτή η κατηγορία υπάρχει ήδη:" +#, php-format +msgid "This category already exists: %s" +msgstr "Αυτή η κατηγορία υπάρχει ήδη: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -163,59 +164,59 @@ msgstr "Νοέμβριος" msgid "December" msgstr "Δεκέμβριος" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Ρυθμίσεις" -#: js/js.js:760 +#: js/js.js:766 msgid "seconds ago" msgstr "δευτερόλεπτα πριν" -#: js/js.js:761 +#: js/js.js:767 msgid "1 minute ago" msgstr "1 λεπτό πριν" -#: js/js.js:762 +#: js/js.js:768 msgid "{minutes} minutes ago" msgstr "{minutes} λεπτά πριν" -#: js/js.js:763 +#: js/js.js:769 msgid "1 hour ago" msgstr "1 ώρα πριν" -#: js/js.js:764 +#: js/js.js:770 msgid "{hours} hours ago" msgstr "{hours} ώρες πριν" -#: js/js.js:765 +#: js/js.js:771 msgid "today" msgstr "σήμερα" -#: js/js.js:766 +#: js/js.js:772 msgid "yesterday" msgstr "χτες" -#: js/js.js:767 +#: js/js.js:773 msgid "{days} days ago" msgstr "{days} ημέρες πριν" -#: js/js.js:768 +#: js/js.js:774 msgid "last month" msgstr "τελευταίο μήνα" -#: js/js.js:769 +#: js/js.js:775 msgid "{months} months ago" msgstr "{months} μήνες πριν" -#: js/js.js:770 +#: js/js.js:776 msgid "months ago" msgstr "μήνες πριν" -#: js/js.js:771 +#: js/js.js:777 msgid "last year" msgstr "τελευταίο χρόνο" -#: js/js.js:772 +#: js/js.js:778 msgid "years ago" msgstr "χρόνια πριν" @@ -245,8 +246,8 @@ msgid "The object type is not specified." msgstr "Δεν καθορίστηκε ο τύπος του αντικειμένου." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Σφάλμα" @@ -266,7 +267,7 @@ msgstr "Διαμοιρασμός" msgid "Shared" msgstr "" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Σφάλμα κατά τον διαμοιρασμό" @@ -362,23 +363,23 @@ msgstr "διαγραφή" msgid "share" msgstr "διαμοιρασμός" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Προστασία με συνθηματικό" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Σφάλμα κατά την διαγραφή της ημ. λήξης" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Σφάλμα κατά τον ορισμό ημ. λήξης" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Αποστολή..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Το Email απεστάλη " @@ -474,7 +475,7 @@ msgstr "Επεξεργασία κατηγοριών" msgid "Add" msgstr "Προσθήκη" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Προειδοποίηση Ασφαλείας" @@ -484,71 +485,75 @@ msgid "" "OpenSSL extension." msgstr "Δεν είναι διαθέσιμο το πρόσθετο δημιουργίας τυχαίων αριθμών ασφαλείας, παρακαλώ ενεργοποιήστε το πρόσθετο της PHP, OpenSSL." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Χωρίς το πρόσθετο δημιουργίας τυχαίων αριθμών ασφαλείας, μπορεί να διαρρεύσει ο λογαριασμός σας από επιθέσεις στο διαδίκτυο." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Ο κατάλογος data και τα αρχεία σας πιθανόν να είναι διαθέσιμα στο διαδίκτυο. Το αρχείο .htaccess που παρέχει το ownCloud δεν δουλεύει. Σας προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος data να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο data έξω από τον κατάλογο του διακομιστή." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Δημιουργήστε έναν λογαριασμό διαχειριστή" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Για προχωρημένους" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Φάκελος δεδομένων" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Ρύθμιση της βάσης δεδομένων" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "θα χρησιμοποιηθούν" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Χρήστης της βάσης δεδομένων" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Συνθηματικό βάσης δεδομένων" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Όνομα βάσης δεδομένων" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Κενά Πινάκων Βάσης Δεδομένων" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Διακομιστής βάσης δεδομένων" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Ολοκλήρωση εγκατάστασης" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Υπηρεσίες web υπό τον έλεγχό σας" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Αποσύνδεση" diff --git a/l10n/el/files.po b/l10n/el/files.po index ee4f5f3cf1..d0ce4ea85e 100644 --- a/l10n/el/files.po +++ b/l10n/el/files.po @@ -3,7 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Dimitris M. , 2012. +# Dimitris M. , 2012-2013. # Efstathios Iosifidis , 2012-2013. # Efstathios Iosifidis , 2013. # Efstathios Iosifidis , 2012. @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -25,6 +25,20 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Αδυναμία μετακίνησης του %s - υπάρχει ήδη αρχείο με αυτό το όνομα" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Αδυναμία μετακίνησης του %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Αδυναμία μετονομασίας αρχείου" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Δεν ανέβηκε κάποιο αρχείο. Άγνωστο σφάλμα" @@ -61,8 +75,8 @@ msgid "Failed to write to disk" msgstr "Αποτυχία εγγραφής στο δίσκο" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Δεν υπάρχει αρκετός διαθέσιμος χώρος" +msgid "Not enough storage available" +msgstr "Μη επαρκής διαθέσιμος αποθηκευτικός χώρος" #: ajax/upload.php:83 msgid "Invalid directory." @@ -72,53 +86,54 @@ msgstr "Μη έγκυρος φάκελος." msgid "Files" msgstr "Αρχεία" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Διακοπή κοινής χρήσης" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Μόνιμη διαγραφή" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Διαγραφή" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Μετονομασία" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Εκκρεμεί" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} υπάρχει ήδη" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "αντικατέστησε" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "συνιστώμενο όνομα" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "ακύρωση" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name} αντικαταστάθηκε" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "αναίρεση" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "αντικαταστάθηκε το {new_name} με {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" -msgstr "" +msgstr "εκτέλεση διαδικασία διαγραφής" #: js/files.js:52 msgid "'.' is an invalid file name." @@ -156,64 +171,60 @@ msgstr "Αδυναμία στην αποστολή του αρχείου σας msgid "Upload Error" msgstr "Σφάλμα Αποστολής" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Κλείσιμο" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Εκκρεμεί" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 αρχείο ανεβαίνει" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} αρχεία ανεβαίνουν" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Η αποστολή ακυρώθηκε." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Η URL δεν πρέπει να είναι κενή." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Μη έγκυρο όνομα φακέλου. Η χρήση του 'Κοινόχρηστος' χρησιμοποιείται από ο Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Όνομα" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Μέγεθος" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Τροποποιήθηκε" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 φάκελος" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} φάκελοι" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 αρχείο" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} αρχεία" @@ -270,7 +281,7 @@ msgid "From link" msgstr "Από σύνδεσμο" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -285,6 +296,10 @@ msgstr "Δεν υπάρχει τίποτα εδώ. Ανέβασε κάτι!" msgid "Download" msgstr "Λήψη" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Διακοπή κοινής χρήσης" + #: templates/index.php:105 msgid "Upload too large" msgstr "Πολύ μεγάλο αρχείο προς αποστολή" @@ -305,4 +320,4 @@ msgstr "Τρέχουσα αναζήτηση " #: templates/upgrade.php:2 msgid "Upgrading filesystem cache..." -msgstr "" +msgstr "Αναβάθμιση μνήμης cache του συστήματος αρχείων..." diff --git a/l10n/el/files_encryption.po b/l10n/el/files_encryption.po index fe96e9ba8a..7196402db4 100644 --- a/l10n/el/files_encryption.po +++ b/l10n/el/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Dimitris M. , 2013. # Efstathios Iosifidis , 2012. # Efstathios Iosifidis , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -19,43 +20,21 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Αλλαγή συνθηματικού κρυπτογράφησης στο συνθηματικό εισόδου " - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Παρακαλώ ελέγξτε το συνθηματικό σας και προσπαθήστε ξανά." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Αδυναμία αλλαγής συνθηματικού κρυπτογράφησης αρχείων στο συνθηματικό εισόδου σας" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Κρυπτογράφηση" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "Η κρυπτογράφηση αρχείων είναι ενεργή." #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "Οι παρακάτω τύποι αρχείων δεν θα κρυπτογραφηθούν:" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Εξαίρεση των παρακάτω τύπων αρχείων από την κρυπτογράφηση:" #: templates/settings.php:12 msgid "None" diff --git a/l10n/el/files_trashbin.po b/l10n/el/files_trashbin.po index 21fb46b986..91d2ccfde2 100644 --- a/l10n/el/files_trashbin.po +++ b/l10n/el/files_trashbin.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Dimitris M. , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 14:20+0000\n" +"Last-Translator: Dimitris M. \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,13 +18,23 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Αδύνατη η μόνιμη διαγραφή του %s" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Αδυναμία επαναφοράς %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" -msgstr "" +msgstr "εκτέλεση λειτουργία επαναφοράς" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "μόνιμη διαγραφή αρχείου" #: js/trash.js:125 templates/index.php:17 msgid "Name" @@ -31,7 +42,7 @@ msgstr "Όνομα" #: js/trash.js:126 templates/index.php:27 msgid "Deleted" -msgstr "" +msgstr "Διαγράφηκε" #: js/trash.js:135 msgid "1 folder" @@ -51,7 +62,7 @@ msgstr "{count} αρχεία" #: templates/index.php:9 msgid "Nothing in here. Your trash bin is empty!" -msgstr "" +msgstr "Δεν υπάρχει τίποτα εδώ. Ο κάδος σας είναι άδειος!" #: templates/index.php:20 templates/index.php:22 msgid "Restore" diff --git a/l10n/el/files_versions.po b/l10n/el/files_versions.po index 3812c4bda0..0f2316b7ab 100644 --- a/l10n/el/files_versions.po +++ b/l10n/el/files_versions.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Dimitris M. , 2012. +# Dimitris M. , 2012-2013. # Efstathios Iosifidis , 2012. # Nisok Kosin , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 14:20+0000\n" +"Last-Translator: Dimitris M. \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,10 +20,45 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Αδυναμία επαναφοράς του: %s" + +#: history.php:40 +msgid "success" +msgstr "επιτυχία" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Το αρχείο %s επαναφέρθηκε στην έκδοση %s" + +#: history.php:49 +msgid "failure" +msgstr "αποτυχία" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Το αρχείο %s δεν είναι δυνατό να επαναφερθεί στην έκδοση %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Μη διαθέσιμες παλιές εκδόσεις" + +#: history.php:73 +msgid "No path specified" +msgstr "Δεν καθορίστηκε διαδρομή" + #: js/versions.js:16 msgid "History" msgstr "Ιστορικό" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Επαναφορά ενός αρχείου σε προηγούμενη έκδοση πατώντας στο κουμπί επαναφοράς" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Εκδόσεις Αρχείων" diff --git a/l10n/el/lib.po b/l10n/el/lib.po index 27ef72f2eb..9d54c6a083 100644 --- a/l10n/el/lib.po +++ b/l10n/el/lib.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 20:39+0000\n" -"Last-Translator: xneo1 \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +19,47 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Βοήθεια" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Προσωπικά" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Ρυθμίσεις" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Χρήστες" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Εφαρμογές" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Διαχειριστής" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Η λήψη ZIP απενεργοποιήθηκε." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Τα αρχεία πρέπει να ληφθούν ένα-ένα." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Πίσω στα Αρχεία" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Τα επιλεγμένα αρχεία είναι μεγάλα ώστε να δημιουργηθεί αρχείο zip." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "δεν μπορούσε να προσδιορισθεί" @@ -87,6 +87,103 @@ msgstr "Κείμενο" msgid "Images" msgstr "Εικόνες" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "δευτερόλεπτα πριν" diff --git a/l10n/el/settings.po b/l10n/el/settings.po index c6c5dfb10f..424c557bd5 100644 --- a/l10n/el/settings.po +++ b/l10n/el/settings.po @@ -19,8 +19,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -33,12 +33,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Σφάλμα στην φόρτωση της λίστας από το App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Σφάλμα πιστοποίησης" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -92,7 +92,7 @@ msgstr "Αδυναμία προσθήκη χρήστη στην ομάδα %s" msgid "Unable to remove user from group %s" msgstr "Αδυναμία αφαίρεσης χρήστη από την ομάδα %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -189,99 +189,87 @@ msgstr "Εμπορική Υποστήριξη" msgid "You have used %s of the available %s" msgstr "Χρησιμοποιήσατε %s από διαθέσιμα %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Πελάτες" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Λήψη Προγραμμάτων για Σταθερούς Υπολογιστές" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Λήψη Προγράμματος Android" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Λήψη Προγράμματος iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Προβολή Πρώτης Εκτέλεσης Οδηγού πάλι" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Συνθηματικό" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Το συνθηματικό σας έχει αλλάξει" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Δεν ήταν δυνατή η αλλαγή του κωδικού πρόσβασης" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Τρέχων συνθηματικό" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Νέο συνθηματικό" -#: templates/personal.php:28 -msgid "show" -msgstr "εμφάνιση" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Αλλαγή συνθηματικού" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Η διεύθυνση ηλεκτρονικού ταχυδρομείου σας" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Συμπληρώστε μια διεύθυνση ηλεκτρονικού ταχυδρομείου για να ενεργοποιηθεί η ανάκτηση συνθηματικού" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Γλώσσα" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Βοηθήστε στη μετάφραση" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Χρήση αυτής της διεύθυνσης για σύνδεση στο ownCloud με τον διαχειριστή αρχείων σας" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Έκδοση" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -218,8 +218,8 @@ msgid "Use TLS" msgstr "Χρήση TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Μην χρησιμοποιείτε για συνδέσεις SSL, θα αποτύχει." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/eo/core.po b/l10n/eo/core.po index 49f2fac8a7..15f0635aa2 100644 --- a/l10n/eo/core.po +++ b/l10n/eo/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -53,8 +53,9 @@ msgid "No category to add?" msgstr "Ĉu neniu kategorio estas aldonota?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Ĉi tiu kategorio jam ekzistas: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -158,59 +159,59 @@ msgstr "Novembro" msgid "December" msgstr "Decembro" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Agordo" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "sekundoj antaŭe" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "antaŭ 1 minuto" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "antaŭ {minutes} minutoj" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "antaŭ 1 horo" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "antaŭ {hours} horoj" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "hodiaŭ" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "hieraŭ" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "antaŭ {days} tagoj" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "lastamonate" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "antaŭ {months} monatoj" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "monatoj antaŭe" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "lastajare" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "jaroj antaŭe" @@ -469,7 +470,7 @@ msgstr "Redakti kategoriojn" msgid "Add" msgstr "Aldoni" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Sekureca averto" @@ -479,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "Ne disponeblas sekura generilo de hazardaj numeroj; bonvolu kapabligi la OpenSSL-kromaĵon por PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Krei administran konton" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Progresinta" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datuma dosierujo" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Agordi la datumbazon" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "estos uzata" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Datumbaza uzanto" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Datumbaza pasvorto" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Datumbaza nomo" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Datumbaza tabelospaco" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Datumbaza gastigo" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Fini la instalon" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "TTT-servoj sub via kontrolo" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Elsaluti" diff --git a/l10n/eo/files.po b/l10n/eo/files.po index aa88fa9c85..f2006ab6bd 100644 --- a/l10n/eo/files.po +++ b/l10n/eo/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -20,6 +20,20 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Ne eblis movi %s: dosiero kun ĉi tiu nomo jam ekzistas" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Ne eblis movi %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Ne eblis alinomigi dosieron" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Neniu dosiero alŝutiĝis. Nekonata eraro." @@ -56,8 +70,8 @@ msgid "Failed to write to disk" msgstr "Malsukcesis skribo al disko" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Ne haveblas sufiĉa spaco" +msgid "Not enough storage available" +msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." @@ -67,51 +81,52 @@ msgstr "Nevalida dosierujo." msgid "Files" msgstr "Dosieroj" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Malkunhavigi" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Forigi" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Alinomigi" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Traktotaj" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} jam ekzistas" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "anstataŭigi" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "sugesti nomon" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "nuligi" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "anstataŭiĝis {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "malfari" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "anstataŭiĝis {new_name} per {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -151,64 +166,60 @@ msgstr "Ne eblis alŝuti vian dosieron ĉar ĝi estas dosierujo aŭ havas 0 duum msgid "Upload Error" msgstr "Alŝuta eraro" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Fermi" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Traktotaj" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 dosiero estas alŝutata" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} dosieroj alŝutatas" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "La alŝuto nuliĝis." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Dosieralŝuto plenumiĝas. Lasi la paĝon nun nuligus la alŝuton." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL ne povas esti malplena." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nevalida dosierujnomo. Uzo de “Shared” rezervatas de Owncloud." -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nomo" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Grando" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Modifita" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 dosierujo" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} dosierujoj" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 dosiero" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} dosierujoj" @@ -265,7 +276,7 @@ msgid "From link" msgstr "El ligilo" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -280,6 +291,10 @@ msgstr "Nenio estas ĉi tie. Alŝutu ion!" msgid "Download" msgstr "Elŝuti" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Malkunhavigi" + #: templates/index.php:105 msgid "Upload too large" msgstr "Elŝuto tro larĝa" diff --git a/l10n/eo/files_encryption.po b/l10n/eo/files_encryption.po index 77ddc820b5..1a1260fd41 100644 --- a/l10n/eo/files_encryption.po +++ b/l10n/eo/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Ĉifrado" diff --git a/l10n/eo/files_trashbin.po b/l10n/eo/files_trashbin.po index 6a61ee22d0..407ed42d6d 100644 --- a/l10n/eo/files_trashbin.po +++ b/l10n/eo/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/eo/files_versions.po b/l10n/eo/files_versions.po index 53a59b4912..6e7f83b9ad 100644 --- a/l10n/eo/files_versions.po +++ b/l10n/eo/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Historio" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Dosiereldonigo" diff --git a/l10n/eo/lib.po b/l10n/eo/lib.po index 05fd08aa22..4bdcdeb246 100644 --- a/l10n/eo/lib.po +++ b/l10n/eo/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Helpo" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Persona" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Agordo" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Uzantoj" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplikaĵoj" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administranto" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP-elŝuto estas malkapabligita." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Dosieroj devas elŝutiĝi unuope." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Reen al la dosieroj" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "La elektitaj dosieroj tro grandas por genero de ZIP-dosiero." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -86,6 +86,103 @@ msgstr "Teksto" msgid "Images" msgstr "Bildoj" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "sekundojn antaŭe" diff --git a/l10n/eo/settings.po b/l10n/eo/settings.po index d48c43e7b6..b01137e99a 100644 --- a/l10n/eo/settings.po +++ b/l10n/eo/settings.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Ne eblis ŝargi liston el aplikaĵovendejo" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Aŭtentiga eraro" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -83,7 +83,7 @@ msgstr "Ne eblis aldoni la uzanton al la grupo %s" msgid "Unable to remove user from group %s" msgstr "Ne eblis forigi la uzantan el la grupo %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -180,99 +180,87 @@ msgstr "Komerca subteno" msgid "You have used %s of the available %s" msgstr "Vi uzas %s el la haveblaj %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klientoj" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Elŝuti labortablajn klientojn" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Elŝuti Android-klienton" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Elŝuti iOS-klienton" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Pasvorto" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Via pasvorto ŝanĝiĝis" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Ne eblis ŝanĝi vian pasvorton" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Nuna pasvorto" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nova pasvorto" -#: templates/personal.php:28 -msgid "show" -msgstr "montri" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Ŝanĝi la pasvorton" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Retpoŝto" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Via retpoŝta adreso" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Enigu retpoŝtadreson por kapabligi pasvortan restaŭron" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Lingvo" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Helpu traduki" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Uzu ĉi tiun adreson por konekti al via ownCloud vian dosieradministrilon" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Eldono" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Uzi TLS-on" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Ne uzu ĝin por SSL-konektoj, ĝi malsukcesos." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/es/core.po b/l10n/es/core.po index e3de803c85..4b75e189da 100644 --- a/l10n/es/core.po +++ b/l10n/es/core.po @@ -6,6 +6,7 @@ # Felix Liberio , 2013. # , 2012. # Javier Llorente , 2012. +# , 2013. # , 2011-2013. # , 2012. # oSiNaReF <>, 2012. @@ -15,13 +16,14 @@ # Rubén Trujillo , 2012. # , 2011-2012. # , 2012. +# Vladimir Martinez Sierra , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 11:30+0000\n" +"Last-Translator: juanman \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -62,8 +64,9 @@ msgid "No category to add?" msgstr "¿Ninguna categoría para añadir?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Esta categoría ya existe: " +#, php-format +msgid "This category already exists: %s" +msgstr "Esta categoria ya existe: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -167,59 +170,59 @@ msgstr "Noviembre" msgid "December" msgstr "Diciembre" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Ajustes" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "hace segundos" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "hace 1 minuto" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "hace {minutes} minutos" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "Hace 1 hora" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "Hace {hours} horas" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "hoy" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "ayer" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "hace {days} días" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "mes pasado" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "Hace {months} meses" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "hace meses" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "año pasado" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "hace años" @@ -249,8 +252,8 @@ msgid "The object type is not specified." msgstr "El tipo de objeto no se ha especificado." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Fallo" @@ -270,7 +273,7 @@ msgstr "Compartir" msgid "Shared" msgstr "Compartido" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Error compartiendo" @@ -366,23 +369,23 @@ msgstr "eliminar" msgid "share" msgstr "compartir" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Protegido por contraseña" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Error al eliminar la fecha de caducidad" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Error estableciendo fecha de caducidad" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Enviando..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Correo electrónico enviado" @@ -478,7 +481,7 @@ msgstr "Editar categorías" msgid "Add" msgstr "Añadir" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Advertencia de seguridad" @@ -488,71 +491,75 @@ msgid "" "OpenSSL extension." msgstr "No está disponible un generador de números aleatorios seguro, por favor habilite la extensión OpenSSL de PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Sin un generador de números aleatorios seguro un atacante podría predecir los tokens de reinicio de su contraseña y tomar control de su cuenta." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Su directorio de datos y sus archivos están probablemente accesibles a través de internet ya que el archivo .htaccess no está funcionando." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Su directorio de datos y sus archivos están probablemente accesibles desde internet. El archivo .htaccess que ownCloud provee no está funcionando. Sugerimos fuertemente que configure su servidor web de manera que el directorio de datos ya no esté accesible o mueva el directorio de datos fuera del documento raíz de su servidor web." +"For information how to properly configure your server, please see the documentation." +msgstr "Para información sobre cómo configurar adecuadamente su servidor, por favor vea la documentación." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Crea una cuenta de administrador" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avanzado" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Directorio de almacenamiento" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configurar la base de datos" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "se utilizarán" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Usuario de la base de datos" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Contraseña de la base de datos" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nombre de la base de datos" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Espacio de tablas de la base de datos" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Host de la base de datos" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Completar la instalación" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "servicios web bajo tu control" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Salir" @@ -584,7 +591,7 @@ msgstr "Entrar" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Nombre de usuarios alternativos" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/es/files.po b/l10n/es/files.po index 6cb15f2931..369ddba9fe 100644 --- a/l10n/es/files.po +++ b/l10n/es/files.po @@ -7,6 +7,7 @@ # Agustin Ferrario , 2013. # , 2012. # Javier Llorente , 2012. +# , 2013. # , 2012-2013. # , 2013. # Rubén Trujillo , 2012. @@ -17,9 +18,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 11:30+0000\n" +"Last-Translator: juanman \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,6 +28,20 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "No se puede mover %s - Ya existe un archivo con ese nombre" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "No se puede mover %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "No se puede renombrar el archivo" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Fallo no se subió el fichero" @@ -63,7 +78,7 @@ msgid "Failed to write to disk" msgstr "La escritura en disco ha fallado" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "No hay suficiente espacio disponible" #: ajax/upload.php:83 @@ -74,51 +89,52 @@ msgstr "Directorio invalido." msgid "Files" msgstr "Archivos" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Dejar de compartir" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Eliminar permanentemente" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Eliminar" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Renombrar" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Pendiente" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} ya existe" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "reemplazar" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "sugerir nombre" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "reemplazado {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "deshacer" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "reemplazado {new_name} con {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "Eliminar" @@ -158,64 +174,60 @@ msgstr "No ha sido posible subir tu archivo porque es un directorio o tiene 0 by msgid "Upload Error" msgstr "Error al subir el archivo" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "cerrrar" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Pendiente" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "subiendo 1 archivo" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "Subiendo {count} archivos" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Subida cancelada." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "La subida del archivo está en proceso. Salir de la página ahora cancelará la subida." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "La URL no puede estar vacía." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nombre de carpeta invalido. El uso de \"Shared\" esta reservado para Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Nombre" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Tamaño" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 carpeta" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} carpetas" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 archivo" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} archivos" @@ -272,8 +284,8 @@ msgid "From link" msgstr "Desde el enlace" #: templates/index.php:40 -msgid "Trash" -msgstr "Basura" +msgid "Trash bin" +msgstr "Papelera de reciclaje" #: templates/index.php:46 msgid "Cancel upload" @@ -287,6 +299,10 @@ msgstr "Aquí no hay nada. ¡Sube algo!" msgid "Download" msgstr "Descargar" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Dejar de compartir" + #: templates/index.php:105 msgid "Upload too large" msgstr "El archivo es demasiado grande" diff --git a/l10n/es/files_encryption.po b/l10n/es/files_encryption.po index b7d69adaf0..f4c68c14f4 100644 --- a/l10n/es/files_encryption.po +++ b/l10n/es/files_encryption.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-05 23:10+0000\n" -"Last-Translator: msvladimir \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,28 +21,6 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Por favor, cambie su cliente de ownCloud y cambie su clave de cifrado para completar la conversión." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "Cambiar a cifrado del lado del cliente" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Cambie la clave de cifrado para su contraseña de inicio de sesión" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Por favor revise su contraseña e intentelo de nuevo." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "No se pudo cambiar la contraseña de cifrado de archivos de su contraseña de inicio de sesión" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Cifrado" diff --git a/l10n/es/files_trashbin.po b/l10n/es/files_trashbin.po index e0804a6ea5..7e95d500a1 100644 --- a/l10n/es/files_trashbin.po +++ b/l10n/es/files_trashbin.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 00:30+0000\n" +"Last-Translator: msvladimir \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +18,23 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "No se puede eliminar %s permanentemente" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "No se puede restaurar %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "Restaurar" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "Eliminar archivo permanentemente" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/es/files_versions.po b/l10n/es/files_versions.po index 41ca2e67da..279601b80d 100644 --- a/l10n/es/files_versions.po +++ b/l10n/es/files_versions.po @@ -7,13 +7,14 @@ # , 2012. # Rubén Trujillo , 2012. # , 2012. +# Vladimir Martinez Sierra , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 00:40+0000\n" +"Last-Translator: msvladimir \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,10 +22,45 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "No se puede revertir: %s" + +#: history.php:40 +msgid "success" +msgstr "exitoso" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "El archivo %s fue revertido a la version %s" + +#: history.php:49 +msgid "failure" +msgstr "fallo" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "El archivo %s no puede ser revertido a la version %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "No hay versiones antiguas disponibles" + +#: history.php:73 +msgid "No path specified" +msgstr "Ruta no especificada" + #: js/versions.js:16 msgid "History" msgstr "Historial" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Revertir un archivo a una versión anterior haciendo clic en el boton de revertir" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Versionado de archivos" diff --git a/l10n/es/lib.po b/l10n/es/lib.po index 38c6ee2855..be25031f5d 100644 --- a/l10n/es/lib.po +++ b/l10n/es/lib.po @@ -4,6 +4,7 @@ # # Translators: # Agustin Ferrario , 2013. +# , 2013. # , 2012. # Raul Fernandez Garcia , 2012. # Rubén Trujillo , 2012. @@ -12,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-20 02:14+0000\n" -"Last-Translator: Agustin Ferrario \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,47 +23,47 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Ayuda" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personal" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Ajustes" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Usuarios" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplicaciones" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administración" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "La descarga en ZIP está desactivada." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Los archivos deben ser descargados uno por uno." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Volver a Archivos" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Los archivos seleccionados son demasiado grandes para generar el archivo zip." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "no pudo ser determinado" @@ -90,6 +91,103 @@ msgstr "Texto" msgid "Images" msgstr "Imágenes" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Su servidor web aún no está configurado adecuadamente para permitir sincronización de archivos ya que la interfaz WebDAV parece no estar funcionando." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Por favor, vuelva a comprobar las guías de instalación." + #: template.php:113 msgid "seconds ago" msgstr "hace segundos" diff --git a/l10n/es/settings.po b/l10n/es/settings.po index 6c498f9b5f..664cd1508e 100644 --- a/l10n/es/settings.po +++ b/l10n/es/settings.po @@ -20,8 +20,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Imposible cargar la lista desde el App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Error de autenticación" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Incapaz de cambiar el nombre" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -93,7 +93,7 @@ msgstr "Imposible añadir el usuario al grupo %s" msgid "Unable to remove user from group %s" msgstr "Imposible eliminar al usuario del grupo %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "No se puedo actualizar la aplicacion." @@ -190,99 +190,87 @@ msgstr "Soporte Comercial" msgid "You have used %s of the available %s" msgstr "Ha usado %s de %s disponibles" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clientes" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Descargar clientes de escritorio" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Descargar cliente para android" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Descargar cliente para iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Mostrar asistente para iniciar otra vez" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Contraseña" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Su contraseña ha sido cambiada" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "No se ha podido cambiar tu contraseña" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Contraseña actual" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nueva contraseña:" -#: templates/personal.php:28 -msgid "show" -msgstr "mostrar" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Cambiar contraseña" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Nombre a mostrar" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Su nombre fue cambiado" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Incapaz de cambiar su nombre" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Cambiar nombre" + +#: templates/personal.php:68 msgid "Email" msgstr "Correo electrónico" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Tu dirección de correo" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Escribe una dirección de correo electrónico para restablecer la contraseña" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Idioma" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Ayúdanos a traducir" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Use esta dirección para conectarse a su cuenta de ownCloud en el administrador de archivos" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Version" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" @@ -221,8 +221,8 @@ msgid "Use TLS" msgstr "Usar TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "No usarlo para SSL, habrá error." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "No usar adicionalmente para conecciones LDAPS, estas fallaran" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/es_AR/core.po b/l10n/es_AR/core.po index 2fab6ec64a..8222b4327f 100644 --- a/l10n/es_AR/core.po +++ b/l10n/es_AR/core.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:40+0000\n" +"Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -53,8 +53,9 @@ msgid "No category to add?" msgstr "¿Ninguna categoría para añadir?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Esta categoría ya existe: " +#, php-format +msgid "This category already exists: %s" +msgstr "Esta categoría ya existe: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -158,59 +159,59 @@ msgstr "Noviembre" msgid "December" msgstr "Diciembre" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Ajustes" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "segundos atrás" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "hace 1 minuto" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "hace {minutes} minutos" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "Hace 1 hora" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "{hours} horas atrás" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "hoy" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "ayer" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "hace {days} días" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "el mes pasado" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "{months} meses atrás" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "meses atrás" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "el año pasado" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "años atrás" @@ -240,8 +241,8 @@ msgid "The object type is not specified." msgstr "El tipo de objeto no esta especificado. " #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Error" @@ -253,15 +254,15 @@ msgstr "El nombre de la aplicación no esta especificado." msgid "The required file {file} is not installed!" msgstr "¡El archivo requerido {file} no está instalado!" -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 -msgid "Share" -msgstr "Compartir" - -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +#: js/share.js:29 js/share.js:43 js/share.js:90 msgid "Shared" msgstr "Compartido" -#: js/share.js:141 js/share.js:611 +#: js/share.js:93 +msgid "Share" +msgstr "Compartir" + +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Error al compartir" @@ -357,23 +358,23 @@ msgstr "borrar" msgid "share" msgstr "compartir" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Protegido por contraseña" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Error al remover la fecha de caducidad" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Error al asignar fecha de vencimiento" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Enviando..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Email enviado" @@ -469,7 +470,7 @@ msgstr "Editar categorías" msgid "Add" msgstr "Agregar" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Advertencia de seguridad" @@ -479,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "No hay disponible ningún generador de números aleatorios seguro. Por favor habilitá la extensión OpenSSL de PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Sin un generador de números aleatorios seguro un atacante podría predecir los tokens de reinicio de tu contraseña y tomar control de tu cuenta." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Tu directorio de datos y tus archivos probablemente son accesibles a través de internet, ya que el archivo .htaccess no está funcionando." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Tu directorio de datos y tus archivos son probablemente accesibles desde internet. El archivo .htaccess provisto por ownCloud no está funcionando. Te sugerimos que configures tu servidor web de manera que el directorio de datos ya no esté accesible, o que muevas el directorio de datos afuera del directorio raíz de tu servidor web." +"For information how to properly configure your server, please see the documentation." +msgstr "Para información sobre cómo configurar adecuadamente tu servidor, por favor mirá la documentación." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Crear una cuenta de administrador" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avanzado" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Directorio de almacenamiento" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configurar la base de datos" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "se utilizarán" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Usuario de la base de datos" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Contraseña de la base de datos" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nombre de la base de datos" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Espacio de tablas de la base de datos" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Host de la base de datos" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Completar la instalación" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "servicios web sobre los que tenés control" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Cerrar la sesión" @@ -575,7 +580,7 @@ msgstr "Entrar" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Nombre alternativos de usuarios" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/es_AR/files.po b/l10n/es_AR/files.po index 73b58d8834..eff8521a3e 100644 --- a/l10n/es_AR/files.po +++ b/l10n/es_AR/files.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:50+0000\n" +"Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,6 +20,20 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "No se pudo mover %s - Un archivo con este nombre ya existe" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "No se pudo mover %s " + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "No fue posible cambiar el nombre al archivo" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "El archivo no fue subido. Error desconocido" @@ -56,8 +70,8 @@ msgid "Failed to write to disk" msgstr "Error al escribir en el disco" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "No hay suficiente espacio disponible" +msgid "Not enough storage available" +msgstr "No hay suficiente capacidad de almacenamiento" #: ajax/upload.php:83 msgid "Invalid directory." @@ -67,51 +81,52 @@ msgstr "Directorio invalido." msgid "Files" msgstr "Archivos" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Dejar de compartir" - -#: js/fileactions.js:119 +#: js/fileactions.js:125 msgid "Delete permanently" -msgstr "" +msgstr "Borrar de manera permanente" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:127 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Borrar" -#: js/fileactions.js:187 +#: js/fileactions.js:193 msgid "Rename" msgstr "Cambiar nombre" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Pendiente" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} ya existe" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "reemplazar" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "sugerir nombre" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "reemplazado {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "deshacer" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "reemplazado {new_name} con {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "Eliminar" @@ -151,64 +166,60 @@ msgstr "No fue posible subir el archivo porque es un directorio o porque su tama msgid "Upload Error" msgstr "Error al subir el archivo" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Cerrar" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Pendiente" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "Subiendo 1 archivo" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "Subiendo {count} archivos" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "La subida fue cancelada" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "La URL no puede estar vacía" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nombre de carpeta inválido. El uso de 'Shared' está reservado por ownCloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Nombre" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Tamaño" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 directorio" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} directorios" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 archivo" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} archivos" @@ -265,7 +276,7 @@ msgid "From link" msgstr "Desde enlace" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "Papelera" #: templates/index.php:46 @@ -280,6 +291,10 @@ msgstr "No hay nada. ¡Subí contenido!" msgid "Download" msgstr "Descargar" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Dejar de compartir" + #: templates/index.php:105 msgid "Upload too large" msgstr "El archivo es demasiado grande" diff --git a/l10n/es_AR/files_encryption.po b/l10n/es_AR/files_encryption.po index 0e80127a88..be26d5b095 100644 --- a/l10n/es_AR/files_encryption.po +++ b/l10n/es_AR/files_encryption.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:00+0000\n" +"Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,43 +19,21 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Por favor, cambiá uu cliente de ownCloud y cambiá tu clave de encriptado para completar la conversión." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "Cambiado a encriptación por parte del cliente" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Cambiá la clave de encriptado para tu contraseña de inicio de sesión" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Por favor, revisá tu contraseña e intentalo de nuevo." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "No se pudo cambiar la contraseña de encriptación de archivos de tu contraseña de inicio de sesión" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Encriptación" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "La encriptación de archivos no está habilitada" #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "Los siguientes tipos de archivos no serán encriptados" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Excluir los siguientes tipos de archivos de encriptación:" #: templates/settings.php:12 msgid "None" diff --git a/l10n/es_AR/files_trashbin.po b/l10n/es_AR/files_trashbin.po index 2048ce0e54..690d4ba6ba 100644 --- a/l10n/es_AR/files_trashbin.po +++ b/l10n/es_AR/files_trashbin.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# CJTess , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:00+0000\n" +"Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,13 +18,23 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "No fue posible borrar %s de manera permanente" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "No se pudo restaurar %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" -msgstr "" +msgstr "Restaurar" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "Borrar archivo de manera permanente" #: js/trash.js:125 templates/index.php:17 msgid "Name" @@ -31,7 +42,7 @@ msgstr "Nombre" #: js/trash.js:126 templates/index.php:27 msgid "Deleted" -msgstr "" +msgstr "Borrado" #: js/trash.js:135 msgid "1 folder" @@ -51,7 +62,7 @@ msgstr "{count} archivos" #: templates/index.php:9 msgid "Nothing in here. Your trash bin is empty!" -msgstr "" +msgstr "No hay nada acá. ¡La papelera está vacía!" #: templates/index.php:20 templates/index.php:22 msgid "Restore" diff --git a/l10n/es_AR/files_versions.po b/l10n/es_AR/files_versions.po index 6ab1eed54d..849cd6a3ec 100644 --- a/l10n/es_AR/files_versions.po +++ b/l10n/es_AR/files_versions.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# CJTess , 2013. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:50+0000\n" +"Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,10 +19,45 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "No se pudo revertir: %s " + +#: history.php:40 +msgid "success" +msgstr "Éxito" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "El archivo %s fue revertido a la versión %s" + +#: history.php:49 +msgid "failure" +msgstr "error" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "El archivo %s no pudo ser revertido a la versión %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "No hay versiones antiguas disponibles" + +#: history.php:73 +msgid "No path specified" +msgstr "Ruta de acceso no especificada" + #: js/versions.js:16 msgid "History" msgstr "Historia" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Revertí un archivo a una versión anterior haciendo click en su botón de \"revertir\"" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Versionado de archivos" diff --git a/l10n/es_AR/lib.po b/l10n/es_AR/lib.po index 0b6fd72855..cdd1d35966 100644 --- a/l10n/es_AR/lib.po +++ b/l10n/es_AR/lib.po @@ -4,14 +4,15 @@ # # Translators: # Agustin Ferrario , 2013. +# CJTess , 2013. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-21 00:04+0100\n" -"PO-Revision-Date: 2013-01-20 03:00+0000\n" -"Last-Translator: Agustin Ferrario \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:00+0000\n" +"Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +20,47 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Ayuda" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personal" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Ajustes" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Usuarios" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplicaciones" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administración" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "La descarga en ZIP está desactivada." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Los archivos deben ser descargados de a uno." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Volver a archivos" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Los archivos seleccionados son demasiado grandes para generar el archivo zip." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "no pudo ser determinado" @@ -87,6 +88,103 @@ msgstr "Texto" msgid "Images" msgstr "Imágenes" +#: setup.php:34 +msgid "Set an admin username." +msgstr "Configurar un nombre de administrador" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "Configurar una palabra clave de administrador" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "Especificar un directorio de datos" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Tu servidor web no está configurado todavía para permitir sincronización de archivos porque la interfaz WebDAV parece no funcionar." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Por favor, comprobá nuevamente la guía de instalación." + #: template.php:113 msgid "seconds ago" msgstr "hace unos segundos" diff --git a/l10n/es_AR/settings.po b/l10n/es_AR/settings.po index a9d2e183b6..97de716a79 100644 --- a/l10n/es_AR/settings.po +++ b/l10n/es_AR/settings.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:00+0000\n" +"Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,14 +24,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Imposible cargar la lista desde el App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Error al autenticar" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "No fue posible cambiar el nombre mostrado" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -83,13 +83,13 @@ msgstr "No fue posible añadir el usuario al grupo %s" msgid "Unable to remove user from group %s" msgstr "No es posible eliminar al usuario del grupo %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." -msgstr "" +msgstr "No se pudo actualizar la aplicación." #: js/apps.js:30 msgid "Update to {appversion}" -msgstr "" +msgstr "Actualizado a {appversion}" #: js/apps.js:36 js/apps.js:76 msgid "Disable" @@ -101,15 +101,15 @@ msgstr "Activar" #: js/apps.js:55 msgid "Please wait...." -msgstr "" +msgstr "Por favor, esperá...." #: js/apps.js:84 msgid "Updating...." -msgstr "" +msgstr "Actualizando...." #: js/apps.js:87 msgid "Error while updating app" -msgstr "" +msgstr "Error al actualizar" #: js/apps.js:87 msgid "Error" @@ -117,7 +117,7 @@ msgstr "Error" #: js/apps.js:90 msgid "Updated" -msgstr "" +msgstr "Actualizado" #: js/personal.js:96 msgid "Saving..." @@ -180,99 +180,87 @@ msgstr "Soporte comercial" msgid "You have used %s of the available %s" msgstr "Usaste %s de los %s disponibles" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clientes" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Descargar clientes de escritorio" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Descargar cliente de Android" +msgid "Get the apps to sync your files" +msgstr "Obtené aplicaciones para sincronizar tus archivos" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Descargar cliente de iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Mostrar de nuevo el asistente de primera ejecución" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Contraseña" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Tu contraseña fue cambiada" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "No fue posible cambiar tu contraseña" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Contraseña actual" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nueva contraseña:" -#: templates/personal.php:28 -msgid "show" -msgstr "mostrar" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Cambiar contraseña" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Nombre a mostrar" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "El nombre mostrado fue cambiado" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "No fue posible cambiar tu nombre" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Cambiar nombre" + +#: templates/personal.php:68 msgid "Email" msgstr "Correo electrónico" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Tu dirección de e-mail" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Escribí una dirección de correo electrónico para restablecer la contraseña" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Idioma" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Ayudanos a traducir" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Utiliza esta dirección para conectarte con ownCloud en tu Administrador de Archivos" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versión" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:10+0000\n" +"Last-Translator: cjtess \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,13 +32,13 @@ msgstr "La configuración es valida y la conexión pudo ser establecida." msgid "" "The configuration is valid, but the Bind failed. Please check the server " "settings and credentials." -msgstr "" +msgstr "La configuración es válida, pero el enlace falló. Por favor, comprobá la configuración del servidor y las credenciales." #: ajax/testConfiguration.php:40 msgid "" "The configuration is invalid. Please look in the ownCloud log for further " "details." -msgstr "" +msgstr "La configuración no es válida. Por favor, buscá en el log de ownCloud más detalles." #: js/settings.js:66 msgid "Deletion failed" @@ -46,7 +46,7 @@ msgstr "Error al borrar" #: js/settings.js:82 msgid "Take over settings from recent server configuration?" -msgstr "" +msgstr "Tomar los valores de la anterior configuración de servidor?" #: js/settings.js:83 msgid "Keep settings?" @@ -183,7 +183,7 @@ msgstr "Configuración activa" #: templates/settings.php:33 msgid "When unchecked, this configuration will be skipped." -msgstr "" +msgstr "Si no está seleccionada, esta configuración será omitida." #: templates/settings.php:34 msgid "Port" @@ -191,17 +191,17 @@ msgstr "Puerto" #: templates/settings.php:35 msgid "Backup (Replica) Host" -msgstr "" +msgstr "Host para copia de seguridad (réplica)" #: templates/settings.php:35 msgid "" "Give an optional backup host. It must be a replica of the main LDAP/AD " "server." -msgstr "" +msgstr "Dar un servidor de copia de seguridad opcional. Debe ser una réplica del servidor principal LDAP/AD." #: templates/settings.php:36 msgid "Backup (Replica) Port" -msgstr "" +msgstr "Puerto para copia de seguridad (réplica)" #: templates/settings.php:37 msgid "Disable Main Server" @@ -209,15 +209,15 @@ msgstr "Deshabilitar el Servidor Principal" #: templates/settings.php:37 msgid "When switched on, ownCloud will only connect to the replica server." -msgstr "" +msgstr "Al comenzar, ownCloud se conectará únicamente al servidor réplica" #: templates/settings.php:38 msgid "Use TLS" msgstr "Usar TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "No usarlo para SSL, dará error." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "No usar adicionalmente para conexiones LDAPS, las mismas fallarán" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" @@ -263,11 +263,11 @@ msgstr "Una DN base de usuario por línea" #: templates/settings.php:47 msgid "User Search Attributes" -msgstr "" +msgstr "Atributos de la búsqueda de usuario" #: templates/settings.php:47 templates/settings.php:50 msgid "Optional; one attribute per line" -msgstr "" +msgstr "Opcional; un atributo por linea" #: templates/settings.php:48 msgid "Group Display Name Field" @@ -287,7 +287,7 @@ msgstr "Una DN base de grupo por línea" #: templates/settings.php:50 msgid "Group Search Attributes" -msgstr "" +msgstr "Atributos de búsqueda de grupo" #: templates/settings.php:51 msgid "Group-Member association" diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po index 6f5386d3a7..54c76b7746 100644 --- a/l10n/et_EE/core.po +++ b/l10n/et_EE/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -51,8 +51,9 @@ msgid "No category to add?" msgstr "Pole kategooriat, mida lisada?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "See kategooria on juba olemas: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -156,59 +157,59 @@ msgstr "November" msgid "December" msgstr "Detsember" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Seaded" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "sekundit tagasi" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 minut tagasi" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} minutit tagasi" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "täna" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "eile" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} päeva tagasi" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "viimasel kuul" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "kuu tagasi" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "viimasel aastal" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "aastat tagasi" @@ -467,7 +468,7 @@ msgstr "Muuda kategooriaid" msgid "Add" msgstr "Lisa" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Turvahoiatus" @@ -477,71 +478,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Loo admini konto" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Lisavalikud" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Andmete kaust" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Seadista andmebaasi" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "kasutatakse" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Andmebaasi kasutaja" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Andmebaasi parool" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Andmebasi nimi" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Andmebaasi tabeliruum" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Andmebaasi host" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Lõpeta seadistamine" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "veebiteenused sinu kontrolli all" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Logi välja" diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index b3de1b124e..3e795d756e 100644 --- a/l10n/et_EE/files.po +++ b/l10n/et_EE/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -19,6 +19,20 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Ühtegi faili ei laetud üles. Tundmatu viga" @@ -55,7 +69,7 @@ msgid "Failed to write to disk" msgstr "Kettale kirjutamine ebaõnnestus" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -66,51 +80,52 @@ msgstr "" msgid "Files" msgstr "Failid" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Lõpeta jagamine" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Kustuta" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "ümber" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Ootel" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} on juba olemas" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "asenda" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "soovita nime" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "loobu" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "asendatud nimega {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "tagasi" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "asendas nime {old_name} nimega {new_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -150,64 +165,60 @@ msgstr "Sinu faili üleslaadimine ebaõnnestus, kuna see on kaust või selle suu msgid "Upload Error" msgstr "Üleslaadimise viga" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Sulge" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Ootel" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 faili üleslaadimisel" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} faili üleslaadimist" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Üleslaadimine tühistati." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL ei saa olla tühi." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nimi" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Suurus" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Muudetud" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 kaust" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} kausta" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 fail" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} faili" @@ -264,7 +275,7 @@ msgid "From link" msgstr "Allikast" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -279,6 +290,10 @@ msgstr "Siin pole midagi. Lae midagi üles!" msgid "Download" msgstr "Lae alla" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Lõpeta jagamine" + #: templates/index.php:105 msgid "Upload too large" msgstr "Üleslaadimine on liiga suur" diff --git a/l10n/et_EE/files_encryption.po b/l10n/et_EE/files_encryption.po index c7abb91cb7..3f06b12afb 100644 --- a/l10n/et_EE/files_encryption.po +++ b/l10n/et_EE/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Krüpteerimine" diff --git a/l10n/et_EE/files_trashbin.po b/l10n/et_EE/files_trashbin.po index 23d134dba9..e4e1d3e437 100644 --- a/l10n/et_EE/files_trashbin.po +++ b/l10n/et_EE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/et_EE/files_versions.po b/l10n/et_EE/files_versions.po index a0309a22fc..b35f2b2c7e 100644 --- a/l10n/et_EE/files_versions.po +++ b/l10n/et_EE/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Ajalugu" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Failide versioonihaldus" diff --git a/l10n/et_EE/lib.po b/l10n/et_EE/lib.po index a137f08e4a..9f3d6200ba 100644 --- a/l10n/et_EE/lib.po +++ b/l10n/et_EE/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Abiinfo" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Isiklik" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Seaded" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Kasutajad" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Rakendused" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP-ina allalaadimine on välja lülitatud." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Failid tuleb alla laadida ükshaaval." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Tagasi failide juurde" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Valitud failid on ZIP-faili loomiseks liiga suured." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -86,6 +86,103 @@ msgstr "Tekst" msgid "Images" msgstr "Pildid" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "sekundit tagasi" diff --git a/l10n/et_EE/settings.po b/l10n/et_EE/settings.po index bd9993e5eb..9b6a08fafc 100644 --- a/l10n/et_EE/settings.po +++ b/l10n/et_EE/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -23,12 +23,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "App Sotre'i nimekirja laadimine ebaõnnestus" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Autentimise viga" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -82,7 +82,7 @@ msgstr "Kasutajat ei saa lisada gruppi %s" msgid "Unable to remove user from group %s" msgstr "Kasutajat ei saa eemaldada grupist %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -179,99 +179,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Kliendid" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Parool" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Sinu parooli on muudetud" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Sa ei saa oma parooli muuta" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Praegune parool" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Uus parool" -#: templates/personal.php:28 -msgid "show" -msgstr "näita" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Muuda parooli" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "E-post" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Sinu e-posti aadress" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Parooli taastamise sisse lülitamiseks sisesta e-posti aadress" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Keel" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Aita tõlkida" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "Kasutaja TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Ära kasuta seda SSL ühenduse jaoks, see ei toimi." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/eu/core.po b/l10n/eu/core.po index 0a89c92c98..faa3a2a3a3 100644 --- a/l10n/eu/core.po +++ b/l10n/eu/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -54,8 +54,9 @@ msgid "No category to add?" msgstr "Ez dago gehitzeko kategoriarik?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Kategoria hau dagoeneko existitzen da:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -159,59 +160,59 @@ msgstr "Azaroa" msgid "December" msgstr "Abendua" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Ezarpenak" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "segundu" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "orain dela minutu 1" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "orain dela {minutes} minutu" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "orain dela ordu bat" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "orain dela {hours} ordu" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "gaur" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "atzo" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "orain dela {days} egun" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "joan den hilabetean" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "orain dela {months} hilabete" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "hilabete" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "joan den urtean" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "urte" @@ -470,7 +471,7 @@ msgstr "Editatu kategoriak" msgid "Add" msgstr "Gehitu" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Segurtasun abisua" @@ -480,71 +481,75 @@ msgid "" "OpenSSL extension." msgstr "Ez dago hausazko zenbaki sortzaile segururik eskuragarri, mesedez gatiu PHP OpenSSL extensioa." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Hausazko zenbaki sortzaile segururik gabe erasotzaile batek pasahitza berrezartzeko kodeak iragarri ditzake eta zure kontuaz jabetu." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Zure data karpeta eta zure fitxategiak internetetik zuzenean eskuragarri egon daitezke. ownCloudek emandako .htaccess fitxategia ez du bere lana egiten. Aholkatzen dizugu zure web zerbitzaria ongi konfiguratzea data karpeta eskuragarri ez izateko edo data karpeta web zerbitzariaren dokumentu errotik mugitzea." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Sortu kudeatzaile kontu bat" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Aurreratua" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datuen karpeta" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfiguratu datu basea" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "erabiliko da" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Datubasearen erabiltzailea" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Datubasearen pasahitza" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Datubasearen izena" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Datu basearen taula-lekua" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Datubasearen hostalaria" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Bukatu konfigurazioa" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "web zerbitzuak zure kontrolpean" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Saioa bukatu" diff --git a/l10n/eu/files.po b/l10n/eu/files.po index aa53f96402..c7a7fc3d32 100644 --- a/l10n/eu/files.po +++ b/l10n/eu/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -21,6 +21,20 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Ezin da %s mugitu - Izen hau duen fitxategia dagoeneko existitzen da" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Ezin dira fitxategiak mugitu %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Ezin izan da fitxategia berrizendatu" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Ez da fitxategirik igo. Errore ezezaguna" @@ -57,8 +71,8 @@ msgid "Failed to write to disk" msgstr "Errore bat izan da diskoan idazterakoan" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Ez dago leku nahikorik." +msgid "Not enough storage available" +msgstr "Ez dago behar aina leku erabilgarri," #: ajax/upload.php:83 msgid "Invalid directory." @@ -68,51 +82,52 @@ msgstr "Baliogabeko karpeta." msgid "Files" msgstr "Fitxategiak" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Ez elkarbanatu" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Ezabatu" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Berrizendatu" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Zain" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} dagoeneko existitzen da" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "ordeztu" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "aholkatu izena" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "ezeztatu" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "ordezkatua {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "desegin" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr " {new_name}-k {old_name} ordezkatu du" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -152,64 +167,60 @@ msgstr "Ezin da zure fitxategia igo, karpeta bat da edo 0 byt ditu" msgid "Upload Error" msgstr "Igotzean errore bat suertatu da" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Itxi" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Zain" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "fitxategi 1 igotzen" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} fitxategi igotzen" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Igoera ezeztatuta" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Fitxategien igoera martxan da. Orria orain uzteak igoera ezeztatutko du." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URLa ezin da hutsik egon." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Baliogabeako karpeta izena. 'Shared' izena Owncloudek erreserbatzen du" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Izena" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Tamaina" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Aldatuta" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "karpeta bat" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} karpeta" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "fitxategi bat" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} fitxategi" @@ -266,7 +277,7 @@ msgid "From link" msgstr "Estekatik" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -281,6 +292,10 @@ msgstr "Ez dago ezer. Igo zerbait!" msgid "Download" msgstr "Deskargatu" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Ez elkarbanatu" + #: templates/index.php:105 msgid "Upload too large" msgstr "Igotakoa handiegia da" diff --git a/l10n/eu/files_encryption.po b/l10n/eu/files_encryption.po index 8f72a0453b..767e018b1f 100644 --- a/l10n/eu/files_encryption.po +++ b/l10n/eu/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -19,28 +19,6 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Mesedez egiaztatu zure pasahitza eta saia zaitez berriro:" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Enkriptazioa" diff --git a/l10n/eu/files_trashbin.po b/l10n/eu/files_trashbin.po index 0eecd4d06c..70120e4257 100644 --- a/l10n/eu/files_trashbin.po +++ b/l10n/eu/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/eu/files_versions.po b/l10n/eu/files_versions.po index 64844cd7ad..fdece04b8c 100644 --- a/l10n/eu/files_versions.po +++ b/l10n/eu/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Historia" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Fitxategien Bertsioak" diff --git a/l10n/eu/lib.po b/l10n/eu/lib.po index 9ba6d45bb6..60cad52a5a 100644 --- a/l10n/eu/lib.po +++ b/l10n/eu/lib.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-20 00:05+0100\n" -"PO-Revision-Date: 2013-01-19 00:06+0000\n" -"Last-Translator: asieriko \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +19,47 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Laguntza" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Pertsonala" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Ezarpenak" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Erabiltzaileak" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplikazioak" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP deskarga ez dago gaituta." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Fitxategiak banan-banan deskargatu behar dira." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Itzuli fitxategietara" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Hautatuko fitxategiak oso handiak dira zip fitxategia sortzeko." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "ezin izan da zehaztu" @@ -87,6 +87,103 @@ msgstr "Testua" msgid "Images" msgstr "Irudiak" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "orain dela segundu batzuk" diff --git a/l10n/eu/settings.po b/l10n/eu/settings.po index b605292a8a..31edff47f6 100644 --- a/l10n/eu/settings.po +++ b/l10n/eu/settings.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -25,12 +25,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Ezin izan da App Dendatik zerrenda kargatu" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Autentifikazio errorea" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -84,7 +84,7 @@ msgstr "Ezin izan da erabiltzailea %s taldera gehitu" msgid "Unable to remove user from group %s" msgstr "Ezin izan da erabiltzailea %s taldetik ezabatu" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -181,99 +181,87 @@ msgstr "Babes komertziala" msgid "You have used %s of the available %s" msgstr "Dagoeneko %s erabili duzu eskuragarri duzun %setatik" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Bezeroak" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Deskargatu mahaigainerako bezeroak" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Deskargatu Android bezeroa" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Deskargatu iOS bezeroa" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Erakutsi berriz Lehenengo Aldiko Morroia" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Pasahitza" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Zere pasahitza aldatu da" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Ezin izan da zure pasahitza aldatu" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Uneko pasahitza" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Pasahitz berria" -#: templates/personal.php:28 -msgid "show" -msgstr "erakutsi" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Aldatu pasahitza" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Bistaratze Izena" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "E-Posta" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Zure e-posta" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Idatz ezazu e-posta bat pasahitza berreskuratu ahal izateko" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Hizkuntza" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Lagundu itzultzen" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Erabili helbide hau zure fitxategi kudeatzailean zure ownCloudera konektatzeko" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Bertsioa" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Erabili TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Ez erabili SSL konexioetan, huts egingo du." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/fa/core.po b/l10n/fa/core.po index a03e7a44d6..de2bbcd700 100644 --- a/l10n/fa/core.po +++ b/l10n/fa/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -52,8 +52,9 @@ msgid "No category to add?" msgstr "آیا گروه دیگری برای افزودن ندارید" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "این گروه از قبل اضافه شده" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +158,59 @@ msgstr "نوامبر" msgid "December" msgstr "دسامبر" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "تنظیمات" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "ثانیه‌ها پیش" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 دقیقه پیش" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{دقیقه ها} دقیقه های پیش" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 ساعت پیش" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{ساعت ها} ساعت ها پیش" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "امروز" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "دیروز" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{روزها} روزهای پیش" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "ماه قبل" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{ماه ها} ماه ها پیش" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "ماه‌های قبل" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "سال قبل" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "سال‌های قبل" @@ -468,7 +469,7 @@ msgstr "ویرایش گروه ها" msgid "Add" msgstr "افزودن" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "اخطار امنیتی" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "هیچ مولد تصادفی امن در دسترس نیست، لطفا فرمت PHP OpenSSL را فعال نمایید." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "بدون وجود یک تولید کننده اعداد تصادفی امن ، یک مهاجم ممکن است این قابلیت را داشته باشد که پیشگویی کند پسوورد های راه انداز گرفته شده و کنترلی روی حساب کاربری شما داشته باشد ." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "لطفا یک شناسه برای مدیر بسازید" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "حرفه ای" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "پوشه اطلاعاتی" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "پایگاه داده برنامه ریزی شدند" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "استفاده خواهد شد" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "شناسه پایگاه داده" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "پسورد پایگاه داده" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "نام پایگاه داده" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "جدول پایگاه داده" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "هاست پایگاه داده" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "اتمام نصب" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "سرویس وب تحت کنترل شما" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "خروج" diff --git a/l10n/fa/files.po b/l10n/fa/files.po index 9739c71ab2..ace120766b 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -21,6 +21,20 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "%s نمی تواند حرکت کند - در حال حاضر پرونده با این نام وجود دارد. " + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "%s نمی تواند حرکت کند " + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "قادر به تغییر نام پرونده نیست." + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "هیچ فایلی آپلود نشد.خطای ناشناس" @@ -57,8 +71,8 @@ msgid "Failed to write to disk" msgstr "نوشتن بر روی دیسک سخت ناموفق بود" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "فضای کافی در دسترس نیست" +msgid "Not enough storage available" +msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." @@ -68,51 +82,52 @@ msgstr "فهرست راهنما نامعتبر می باشد." msgid "Files" msgstr "فایل ها" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "لغو اشتراک" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "پاک کردن" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "تغییرنام" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "در انتظار" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{نام _جدید} در حال حاضر وجود دارد." -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "جایگزین" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "پیشنهاد نام" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "لغو" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{نام _جدید} جایگزین شد " -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "بازگشت" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{نام_جدید} با { نام_قدیمی} جایگزین شد." -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -152,64 +167,60 @@ msgstr "ناتوان در بارگذاری یا فایل یک پوشه است ی msgid "Upload Error" msgstr "خطا در بار گذاری" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "بستن" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "در انتظار" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 پرونده آپلود شد." -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{ شمار } فایل های در حال آپلود" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "بار گذاری لغو شد" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "آپلودکردن پرونده در حال پیشرفت است. در صورت خروج از صفحه آپلود لغو میگردد. " -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL نمی تواند خالی باشد." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "نام پوشه نامعتبر است. استفاده از \" به اشتراک گذاشته شده \" متعلق به سایت Owncloud است." -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "نام" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "اندازه" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "تغییر یافته" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 پوشه" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{ شمار} پوشه ها" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 پرونده" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{ شمار } فایل ها" @@ -266,7 +277,7 @@ msgid "From link" msgstr "از پیوند" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -281,6 +292,10 @@ msgstr "اینجا هیچ چیز نیست." msgid "Download" msgstr "بارگیری" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "لغو اشتراک" + #: templates/index.php:105 msgid "Upload too large" msgstr "حجم بارگذاری بسیار زیاد است" diff --git a/l10n/fa/files_encryption.po b/l10n/fa/files_encryption.po index 586cebd200..ca4053cf7e 100644 --- a/l10n/fa/files_encryption.po +++ b/l10n/fa/files_encryption.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -20,28 +20,6 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "لطفا گذرواژه خود را بررسی کنید و دوباره امتحان کنید." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "رمزگذاری" diff --git a/l10n/fa/files_trashbin.po b/l10n/fa/files_trashbin.po index 3610dde6be..a9bffbf81b 100644 --- a/l10n/fa/files_trashbin.po +++ b/l10n/fa/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/fa/files_versions.po b/l10n/fa/files_versions.po index 276a3e1613..a2a96bc6ec 100644 --- a/l10n/fa/files_versions.po +++ b/l10n/fa/files_versions.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-04 00:05+0100\n" -"PO-Revision-Date: 2013-02-03 11:40+0000\n" -"Last-Translator: miki_mika1362 \n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +19,45 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "تاریخچه" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/fa/lib.po b/l10n/fa/lib.po index 4fb46ee344..5454ea40b1 100644 --- a/l10n/fa/lib.po +++ b/l10n/fa/lib.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-03 00:04+0100\n" -"PO-Revision-Date: 2013-02-02 14:01+0000\n" -"Last-Translator: Amir Reza Asadi \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,27 +19,27 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:312 +#: app.php:339 msgid "Help" msgstr "راه‌نما" -#: app.php:319 +#: app.php:346 msgid "Personal" msgstr "شخصی" -#: app.php:324 +#: app.php:351 msgid "Settings" msgstr "تنظیمات" -#: app.php:329 +#: app.php:356 msgid "Users" msgstr "کاربران" -#: app.php:336 +#: app.php:363 msgid "Apps" msgstr " برنامه ها" -#: app.php:338 +#: app.php:365 msgid "Admin" msgstr "مدیر" @@ -87,6 +87,103 @@ msgstr "متن" msgid "Images" msgstr "تصاویر" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "ثانیه‌ها پیش" diff --git a/l10n/fa/settings.po b/l10n/fa/settings.po index f38f77bf14..02beef1759 100644 --- a/l10n/fa/settings.po +++ b/l10n/fa/settings.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -26,14 +26,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "قادر به بارگذاری لیست از فروشگاه اپ نیستم" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "خطا در اعتبار سنجی" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "امکان تغییر نام نمایشی شما وجود ندارد" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -73,7 +73,7 @@ msgstr "درخواست غیر قابل قبول" #: ajax/togglegroups.php:12 msgid "Admins can't remove themself from the admin group" -msgstr "" +msgstr "مدیران نمی توانند خود را از گروه مدیریت حذف کنند" #: ajax/togglegroups.php:28 #, php-format @@ -85,7 +85,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -155,11 +155,11 @@ msgstr "به روز رسانی" #: templates/help.php:3 msgid "User Documentation" -msgstr "" +msgstr "مستندات کاربر" #: templates/help.php:4 msgid "Administrator Documentation" -msgstr "" +msgstr "مستندات مدیر" #: templates/help.php:6 msgid "Online Documentation" @@ -175,106 +175,94 @@ msgstr "" #: templates/help.php:11 msgid "Commercial Support" -msgstr "" +msgstr "پشتیبانی تجاری" #: templates/personal.php:8 #, php-format msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "مشتریان" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "راهبری کمکی اجرای اول را دوباره نمایش بده" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "گذرواژه" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "رمز عبور شما تغییر یافت" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "ناتوان در تغییر گذرواژه" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "گذرواژه کنونی" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "گذرواژه جدید" -#: templates/personal.php:28 -msgid "show" -msgstr "نمایش" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "تغییر گذر واژه" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" -msgstr "" - -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" +msgstr "نام نمایشی" #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "نام نمایشی شما تغییر یافت" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "امکان تغییر نام نمایشی شما وجود ندارد" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "تغییر نام نمایشی" + +#: templates/personal.php:68 msgid "Email" msgstr "پست الکترونیکی" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "پست الکترونیکی شما" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "پست الکترونیکی را پرکنید تا بازیابی گذرواژه فعال شود" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "زبان" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "به ترجمه آن کمک کنید" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "نسخه" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -215,7 +215,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/fi_FI/core.po b/l10n/fi_FI/core.po index 734dc893ad..fef4938627 100644 --- a/l10n/fi_FI/core.po +++ b/l10n/fi_FI/core.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -57,8 +57,9 @@ msgid "No category to add?" msgstr "Ei lisättävää luokkaa?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Tämä luokka on jo olemassa: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -162,59 +163,59 @@ msgstr "Marraskuu" msgid "December" msgstr "Joulukuu" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Asetukset" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "sekuntia sitten" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 minuutti sitten" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} minuuttia sitten" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 tunti sitten" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} tuntia sitten" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "tänään" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "eilen" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} päivää sitten" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "viime kuussa" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} kuukautta sitten" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "kuukautta sitten" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "viime vuonna" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "vuotta sitten" @@ -473,7 +474,7 @@ msgstr "Muokkaa luokkia" msgid "Add" msgstr "Lisää" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Turvallisuusvaroitus" @@ -483,71 +484,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Data-kansio ja tiedostot ovat ehkä saavutettavissa Internetistä. .htaccess-tiedosto, jolla kontrolloidaan pääsyä, ei toimi. Suosittelemme, että muutat web-palvelimesi asetukset niin ettei data-kansio ole enää pääsyä tai siirrät data-kansion pois web-palvelimen tiedostojen juuresta." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Luo ylläpitäjän tunnus" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Lisäasetukset" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datakansio" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Muokkaa tietokantaa" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "käytetään" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Tietokannan käyttäjä" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Tietokannan salasana" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Tietokannan nimi" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Tietokannan taulukkotila" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Tietokantapalvelin" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Viimeistele asennus" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "verkkopalvelut hallinnassasi" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Kirjaudu ulos" diff --git a/l10n/fi_FI/files.po b/l10n/fi_FI/files.po index 13f67673e0..cbc9351025 100644 --- a/l10n/fi_FI/files.po +++ b/l10n/fi_FI/files.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 10:40+0000\n" +"Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,6 +22,20 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Kohteen %s siirto ei onnistunut" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Tiedoston nimeäminen uudelleen ei onnistunut" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Tiedostoa ei lähetetty. Tuntematon virhe" @@ -58,8 +72,8 @@ msgid "Failed to write to disk" msgstr "Levylle kirjoitus epäonnistui" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Tilaa ei ole riittävästi" +msgid "Not enough storage available" +msgstr "Tallennustilaa ei ole riittävästi käytettävissä" #: ajax/upload.php:83 msgid "Invalid directory." @@ -69,51 +83,52 @@ msgstr "Virheellinen kansio." msgid "Files" msgstr "Tiedostot" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Peru jakaminen" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Poista pysyvästi" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Poista" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Nimeä uudelleen" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Odottaa" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} on jo olemassa" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "korvaa" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "ehdota nimeä" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "peru" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "kumoa" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "suorita poistotoiminto" @@ -153,64 +168,60 @@ msgstr "Tiedoston lähetys epäonnistui, koska sen koko on 0 tavua tai kyseessä msgid "Upload Error" msgstr "Lähetysvirhe." -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Sulje" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Odottaa" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Lähetys peruttu." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Verkko-osoite ei voi olla tyhjä" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Nimi" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Koko" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Muutettu" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 kansio" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} kansiota" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 tiedosto" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} tiedostoa" @@ -267,7 +278,7 @@ msgid "From link" msgstr "Linkistä" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "Roskakori" #: templates/index.php:46 @@ -282,6 +293,10 @@ msgstr "Täällä ei ole mitään. Lähetä tänne jotakin!" msgid "Download" msgstr "Lataa" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Peru jakaminen" + #: templates/index.php:105 msgid "Upload too large" msgstr "Lähetettävä tiedosto on liian suuri" diff --git a/l10n/fi_FI/files_encryption.po b/l10n/fi_FI/files_encryption.po index d8095a939b..00e3d63dbb 100644 --- a/l10n/fi_FI/files_encryption.po +++ b/l10n/fi_FI/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Tarkista salasanasi ja yritä uudelleen." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Salaus" diff --git a/l10n/fi_FI/files_trashbin.po b/l10n/fi_FI/files_trashbin.po index 862e93f1b7..27afca0a85 100644 --- a/l10n/fi_FI/files_trashbin.po +++ b/l10n/fi_FI/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,16 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "suorita palautustoiminto" diff --git a/l10n/fi_FI/files_versions.po b/l10n/fi_FI/files_versions.po index 4a04a540a9..f8ce72e1e0 100644 --- a/l10n/fi_FI/files_versions.po +++ b/l10n/fi_FI/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Historia" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Tiedostojen versiointi" diff --git a/l10n/fi_FI/lib.po b/l10n/fi_FI/lib.po index 7b90f23c2c..8f723746fe 100644 --- a/l10n/fi_FI/lib.po +++ b/l10n/fi_FI/lib.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 08:40+0000\n" -"Last-Translator: Jiri Grönroos \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,47 +18,47 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Ohje" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Henkilökohtainen" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Asetukset" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Käyttäjät" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Sovellukset" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Ylläpitäjä" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP-lataus on poistettu käytöstä." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Tiedostot on ladattava yksittäin." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Takaisin tiedostoihin" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Valitut tiedostot ovat liian suurikokoisia mahtuakseen zip-tiedostoon." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "ei voitu määrittää" @@ -86,6 +86,103 @@ msgstr "Teksti" msgid "Images" msgstr "Kuvat" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Lue tarkasti asennusohjeet." + #: template.php:113 msgid "seconds ago" msgstr "sekuntia sitten" diff --git a/l10n/fi_FI/settings.po b/l10n/fi_FI/settings.po index f31845d910..fc1f84ef06 100644 --- a/l10n/fi_FI/settings.po +++ b/l10n/fi_FI/settings.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -24,14 +24,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Ei pystytä lataamaan listaa sovellusvarastosta (App Store)" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Todennusvirhe" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Näyttönimen muuttaminen epäonnistui" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -83,7 +83,7 @@ msgstr "Käyttäjän tai ryhmän %s lisääminen ei onnistu" msgid "Unable to remove user from group %s" msgstr "Käyttäjän poistaminen ryhmästä %s ei onnistu" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Sovelluksen päivitys epäonnistui." @@ -180,99 +180,87 @@ msgstr "Kaupallinen tuki" msgid "You have used %s of the available %s" msgstr "Käytössäsi on %s/%s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Asiakkaat" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Lataa työpöytäsovelluksia" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Lataa Android-sovellus" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Lataa iOS-sovellus" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Näytä ensimmäisen käyttökerran avustaja uudelleen" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Salasana" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Salasanasi vaihdettiin" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Salasanaasi ei voitu vaihtaa" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Nykyinen salasana" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Uusi salasana" -#: templates/personal.php:28 -msgid "show" -msgstr "näytä" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Vaihda salasana" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Näyttönimi" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Näyttönimesi muutettiin" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Näyttönimen muuttaminen epäonnistui" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Muuta näyttönimeä" + +#: templates/personal.php:68 msgid "Email" msgstr "Sähköposti" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Sähköpostiosoitteesi" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Anna sähköpostiosoitteesi, jotta unohdettu salasana on mahdollista palauttaa" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Kieli" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Auta kääntämisessä" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Käytä tätä osoitetta yhdistäessäsi ownCloudiisi tiedostonhallintaa käyttäen" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versio" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -216,8 +216,8 @@ msgid "Use TLS" msgstr "Käytä TLS:ää" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Älä käytä SSL-yhteyttä varten, se epäonnistuu. " +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/fr/core.po b/l10n/fr/core.po index 31f4f80f35..62f0878214 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/core.po @@ -14,15 +14,16 @@ # Nahir Mohamed , 2012. # , 2012. # , 2012. +# Robert Di Rosa <>, 2013. # , 2011. -# Romain DEP. , 2012. +# Romain DEP. , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 11:00+0000\n" +"Last-Translator: Robert Di Rosa <>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -63,8 +64,9 @@ msgid "No category to add?" msgstr "Pas de catégorie à ajouter ?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Cette catégorie existe déjà : " +#, php-format +msgid "This category already exists: %s" +msgstr "Cette catégorie existe déjà : %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -168,59 +170,59 @@ msgstr "novembre" msgid "December" msgstr "décembre" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Paramètres" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "il y a quelques secondes" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "il y a une minute" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "il y a {minutes} minutes" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "Il y a une heure" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "Il y a {hours} heures" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "aujourd'hui" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "hier" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "il y a {days} jours" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "le mois dernier" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "Il y a {months} mois" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "il y a plusieurs mois" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "l'année dernière" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "il y a plusieurs années" @@ -250,8 +252,8 @@ msgid "The object type is not specified." msgstr "Le type d'objet n'est pas spécifié." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Erreur" @@ -271,7 +273,7 @@ msgstr "Partager" msgid "Shared" msgstr "Partagé" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Erreur lors de la mise en partage" @@ -367,23 +369,23 @@ msgstr "supprimer" msgid "share" msgstr "partager" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Protégé par un mot de passe" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Une erreur est survenue pendant la suppression de la date d'expiration" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Erreur lors de la spécification de la date d'expiration" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "En cours d'envoi ..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Email envoyé" @@ -479,7 +481,7 @@ msgstr "Modifier les catégories" msgid "Add" msgstr "Ajouter" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Avertissement de sécurité" @@ -489,71 +491,75 @@ msgid "" "OpenSSL extension." msgstr "Aucun générateur de nombre aléatoire sécurisé n'est disponible, veuillez activer l'extension PHP OpenSSL" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Sans générateur de nombre aléatoire sécurisé, un attaquant peut être en mesure de prédire les jetons de réinitialisation du mot de passe, et ainsi prendre le contrôle de votre compte utilisateur." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Votre répertoire data est certainement accessible depuis l'internet car le fichier .htaccess ne semble pas fonctionner" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Votre dossier data et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess fourni par ownCloud ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de manière à ce que le dossier data ne soit plus accessible ou bien de déplacer le dossier data en dehors du dossier racine des documents du serveur web." +"For information how to properly configure your server, please see the documentation." +msgstr "Pour les informations de configuration de votre serveur, veuillez lire la documentation." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Créer un compte administrateur" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avancé" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Répertoire des données" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configurer la base de données" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "sera utilisé" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Utilisateur pour la base de données" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Mot de passe de la base de données" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nom de la base de données" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Tablespaces de la base de données" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Serveur de la base de données" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Terminer l'installation" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "services web sous votre contrôle" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Se déconnecter" @@ -585,7 +591,7 @@ msgstr "Connexion" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Logins alternatifs" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index 4d48780dff..1f984617ca 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/files.po @@ -14,16 +14,16 @@ # Guillaume Paumier , 2012. # , 2012. # Nahir Mohamed , 2012. -# Robert Di Rosa <>, 2012. +# Robert Di Rosa <>, 2012-2013. # , 2011. # Romain DEP. , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 11:00+0000\n" +"Last-Translator: Robert Di Rosa <>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,6 +31,20 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Impossible de déplacer %s - Un fichier possédant ce nom existe déjà" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Impossible de déplacer %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Impossible de renommer le fichier" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Aucun fichier n'a été chargé. Erreur inconnue" @@ -67,8 +81,8 @@ msgid "Failed to write to disk" msgstr "Erreur d'écriture sur le disque" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Espace disponible insuffisant" +msgid "Not enough storage available" +msgstr "Plus assez d'espace de stockage disponible" #: ajax/upload.php:83 msgid "Invalid directory." @@ -78,51 +92,52 @@ msgstr "Dossier invalide." msgid "Files" msgstr "Fichiers" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Ne plus partager" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Supprimer de façon définitive" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Supprimer" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Renommer" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "En cours" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} existe déjà" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "remplacer" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "Suggérer un nom" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "annuler" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name} a été remplacé" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "annuler" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} a été remplacé par {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "effectuer l'opération de suppression" @@ -162,64 +177,60 @@ msgstr "Impossible de charger vos fichiers car il s'agit d'un dossier ou le fich msgid "Upload Error" msgstr "Erreur de chargement" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Fermer" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "En cours" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 fichier en cours de téléchargement" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} fichiers téléversés" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Chargement annulé." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "L'URL ne peut-être vide" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nom de dossier invalide. L'utilisation du mot 'Shared' est réservée à Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Nom" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Taille" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Modifié" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 dossier" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} dossiers" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 fichier" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} fichiers" @@ -276,7 +287,7 @@ msgid "From link" msgstr "Depuis le lien" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "Corbeille" #: templates/index.php:46 @@ -291,6 +302,10 @@ msgstr "Il n'y a rien ici ! Envoyez donc quelque chose :)" msgid "Download" msgstr "Télécharger" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Ne plus partager" + #: templates/index.php:105 msgid "Upload too large" msgstr "Fichier trop volumineux" diff --git a/l10n/fr/files_encryption.po b/l10n/fr/files_encryption.po index d20576ced1..7c41515ad8 100644 --- a/l10n/fr/files_encryption.po +++ b/l10n/fr/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -18,43 +18,21 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Veuillez vous connecter depuis votre client de synchronisation ownCloud et changer votre mot de passe de chiffrement pour finaliser la conversion." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "Mode de chiffrement changé en chiffrement côté client" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Convertir le mot de passe de chiffrement en mot de passe de connexion" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Veuillez vérifier vos mots de passe et réessayer." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Impossible de convertir votre mot de passe de chiffrement en mot de passe de connexion" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Chiffrement" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "Le chiffrement des fichiers est activé" #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "Les fichiers de types suivants ne seront pas chiffrés :" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Ne pas chiffrer les fichiers dont les types sont les suivants :" #: templates/settings.php:12 msgid "None" diff --git a/l10n/fr/files_trashbin.po b/l10n/fr/files_trashbin.po index a0b95c58b5..23b922f8f1 100644 --- a/l10n/fr/files_trashbin.po +++ b/l10n/fr/files_trashbin.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 14:03+0000\n" +"Last-Translator: Romain DEP. \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,13 +19,23 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Impossible d'effacer %s de façon permanente" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Impossible de restaurer %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "effectuer l'opération de restauration" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "effacer définitivement le fichier" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/fr/files_versions.po b/l10n/fr/files_versions.po index 1fb4fdb1de..0bfce6ee9b 100644 --- a/l10n/fr/files_versions.po +++ b/l10n/fr/files_versions.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Romain DEP. , 2012. +# Romain DEP. , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 14:02+0000\n" +"Last-Translator: Romain DEP. \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,10 +18,45 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Impossible de restaurer %s" + +#: history.php:40 +msgid "success" +msgstr "succès" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Le fichier %s a été restauré dans sa version %s" + +#: history.php:49 +msgid "failure" +msgstr "échec" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Le fichier %s ne peut être restauré dans sa version %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Aucune ancienne version n'est disponible" + +#: history.php:73 +msgid "No path specified" +msgstr "Aucun chemin spécifié" + #: js/versions.js:16 msgid "History" msgstr "Historique" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Restaurez un fichier dans une version antérieure en cliquant sur son bouton de restauration" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Versionnage des fichiers" diff --git a/l10n/fr/lib.po b/l10n/fr/lib.po index 0ae131d5c5..15c8dea258 100644 --- a/l10n/fr/lib.po +++ b/l10n/fr/lib.po @@ -4,14 +4,15 @@ # # Translators: # Geoffrey Guerrier , 2012. +# Robert Di Rosa <>, 2013. # Romain DEP. , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-25 00:05+0100\n" -"PO-Revision-Date: 2013-01-24 01:17+0000\n" -"Last-Translator: Romain DEP. \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +20,47 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Aide" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personnel" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Paramètres" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Utilisateurs" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Applications" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administration" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Téléchargement ZIP désactivé." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Les fichiers nécessitent d'être téléchargés un par un." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Retour aux Fichiers" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Les fichiers sélectionnés sont trop volumineux pour être compressés." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "impossible à déterminer" @@ -87,6 +88,103 @@ msgstr "Texte" msgid "Images" msgstr "Images" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Votre serveur web, n'est pas correctement configuré pour permettre la synchronisation des fichiers, car l'interface WebDav ne fonctionne pas comme il faut." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Veuillez vous référer au guide d'installation." + #: template.php:113 msgid "seconds ago" msgstr "à l'instant" diff --git a/l10n/fr/settings.po b/l10n/fr/settings.po index 926b1a0e08..626aa20e7f 100644 --- a/l10n/fr/settings.po +++ b/l10n/fr/settings.po @@ -24,8 +24,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -38,14 +38,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Impossible de charger la liste depuis l'App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Erreur d'authentification" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Impossible de modifier le nom d'affichage" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -97,7 +97,7 @@ msgstr "Impossible d'ajouter l'utilisateur au groupe %s" msgid "Unable to remove user from group %s" msgstr "Impossible de supprimer l'utilisateur du groupe %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Impossible de mettre à jour l'application" @@ -194,99 +194,87 @@ msgstr "Support commercial" msgid "You have used %s of the available %s" msgstr "Vous avez utilisé %s des %s disponibles" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clients" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Télécharger le client de synchronisation pour votre ordinateur" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Télécharger le client Android" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Télécharger le client iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Revoir le premier lancement de l'installeur" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Mot de passe" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Votre mot de passe a été changé" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Impossible de changer votre mot de passe" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Mot de passe actuel" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nouveau mot de passe" -#: templates/personal.php:28 -msgid "show" -msgstr "Afficher" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Changer de mot de passe" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Nom affiché" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Votre nom d'affichage a bien été modifié" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Impossible de modifier votre nom d'affichage" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Changer le nom affiché" + +#: templates/personal.php:68 msgid "Email" msgstr "E-mail" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Votre adresse e-mail" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Entrez votre adresse e-mail pour permettre la réinitialisation du mot de passe" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Langue" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Aidez à traduire" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Utiliser cette adresse pour vous connecter à ownCloud dans votre gestionnaire de fichiers" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Version" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 14:02+0000\n" +"Last-Translator: Romain DEP. \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -220,8 +220,8 @@ msgid "Use TLS" msgstr "Utiliser TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Ne pas utiliser pour les connexions SSL, car cela échouera." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "À ne pas utiliser pour les connexions LDAPS (cela échouera)." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/gl/core.po b/l10n/gl/core.po index c2a5a1d2f0..0135ef4233 100644 --- a/l10n/gl/core.po +++ b/l10n/gl/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 10:10+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -53,8 +53,9 @@ msgid "No category to add?" msgstr "Sen categoría que engadir?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Esta categoría xa existe: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -158,59 +159,59 @@ msgstr "novembro" msgid "December" msgstr "decembro" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Configuracións" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "segundos atrás" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "hai 1 minuto" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "hai {minutes} minutos" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "hai 1 hora" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "hai {hours} horas" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "hoxe" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "onte" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "hai {days} días" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "último mes" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "hai {months} meses" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "meses atrás" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "último ano" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "anos atrás" @@ -240,8 +241,8 @@ msgid "The object type is not specified." msgstr "Non se especificou o tipo de obxecto." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Erro" @@ -261,7 +262,7 @@ msgstr "Compartir" msgid "Shared" msgstr "" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Produciuse un erro ao compartir" @@ -357,23 +358,23 @@ msgstr "eliminar" msgid "share" msgstr "compartir" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Protexido con contrasinal" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Produciuse un erro ao retirar a data de caducidade" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Produciuse un erro ao definir a data de caducidade" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Enviando..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Correo enviado" @@ -469,7 +470,7 @@ msgstr "Editar categorías" msgid "Add" msgstr "Engadir" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Aviso de seguranza" @@ -479,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "Non hai un xerador de números ao chou dispoñíbel. Active o engadido de OpenSSL para PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Sen un xerador seguro de números ao chou podería acontecer que predicindo as cadeas de texto de reinicio de contrasinais se afagan coa súa conta." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "O seu cartafol de datos e os seus ficheiros probabelmente sexan accesíbeis a través da Internet. O ficheiro .htaccess que fornece ownCloud non está a empregarse. Suxerimoslle que configure o seu servidor web de tal xeito que o cartafol de datos non estea accesíbel ou mova o cartafol de datos fora do directorio raíz de datos do servidor web." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Crear unha contra de administrador" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avanzado" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Cartafol de datos" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configurar a base de datos" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "vai ser utilizado" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Usuario da base de datos" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Contrasinal da base de datos" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nome da base de datos" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Táboa de espazos da base de datos" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Servidor da base de datos" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Rematar a configuración" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "servizos web baixo o seu control" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Desconectar" diff --git a/l10n/gl/files.po b/l10n/gl/files.po index d309fb232d..469ef89426 100644 --- a/l10n/gl/files.po +++ b/l10n/gl/files.po @@ -4,14 +4,15 @@ # # Translators: # antiparvos , 2012-2013. +# , 2013. # Xosé M. Lamas , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 11:40+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,38 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Non se moveu %s - Xa existe un ficheiro con ese nome." + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Non foi posíbel mover %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Non é posíbel renomear o ficheiro" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" -msgstr "Non se subiu ningún ficheiro. Erro descoñecido." +msgstr "Non foi enviado ningún ficheiro. Produciuse un erro descoñecido." #: ajax/upload.php:26 msgid "There is no error, the file uploaded with success" -msgstr "Non hai erros. O ficheiro enviouse correctamente" +msgstr "Non se produciu ningún erro. O ficheiro enviouse correctamente" #: ajax/upload.php:27 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " -msgstr "O ficheiro subido excede a directiva indicada polo tamaño_máximo_de_subida de php.ini" +msgstr "O ficheiro enviado excede a directiva indicada por upload_max_filesize de php.ini:" #: ajax/upload.php:29 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" -msgstr "O ficheiro enviado supera a directiva MAX_FILE_SIZE que foi indicada no formulario HTML" +msgstr "O ficheiro enviado excede a directiva MAX_FILE_SIZE que foi indicada no formulario HTML" #: ajax/upload.php:31 msgid "The uploaded file was only partially uploaded" @@ -52,11 +67,11 @@ msgstr "Falta un cartafol temporal" #: ajax/upload.php:34 msgid "Failed to write to disk" -msgstr "Erro ao escribir no disco" +msgstr "Produciuse un erro ao escribir no disco" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "O espazo dispoñíbel é insuficiente" +msgid "Not enough storage available" +msgstr "Non hai espazo de almacenamento abondo" #: ajax/upload.php:83 msgid "Invalid directory." @@ -66,148 +81,145 @@ msgstr "O directorio é incorrecto." msgid "Files" msgstr "Ficheiros" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Deixar de compartir" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Eliminar permanentemente" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Eliminar" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" -msgstr "Mudar o nome" +msgstr "Renomear" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Pendentes" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "xa existe un {new_name}" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "substituír" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "suxerir nome" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "substituír {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "desfacer" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" -msgstr "substituír {new_name} polo {old_name}" +msgstr "substituír {new_name} por {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" -msgstr "" +msgstr "realizar a operación de eliminación" #: js/files.js:52 msgid "'.' is an invalid file name." -msgstr "'.' é un nonme de ficheiro non válido" +msgstr "«.» é un nome de ficheiro incorrecto" #: js/files.js:56 msgid "File name cannot be empty." -msgstr "O nome de ficheiro non pode estar baldeiro" +msgstr "O nome de ficheiro non pode estar baleiro" #: js/files.js:64 msgid "" "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " "allowed." -msgstr "Nome non válido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten." +msgstr "Nome incorrecto, non se permite «\\», «/», «<», «>», «:», «\"», «|», «?» e «*»." #: js/files.js:78 msgid "Your storage is full, files can not be updated or synced anymore!" -msgstr "" +msgstr "O seu espazo de almacenamento está cheo, non é posíbel actualizar ou sincronizar máis os ficheiros!" #: js/files.js:82 msgid "Your storage is almost full ({usedSpacePercent}%)" -msgstr "" +msgstr "O seu espazo de almacenamento está case cheo ({usedSpacePercent}%)" #: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." -msgstr "" +msgstr "Está a prepararse a súa descarga. Isto pode levar bastante tempo se os ficheiros son grandes." #: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" -msgstr "Non se puido subir o ficheiro pois ou é un directorio ou ten 0 bytes" +msgstr "Non foi posíbel enviar o ficheiro pois ou é un directorio ou ten 0 bytes" #: js/files.js:261 msgid "Upload Error" -msgstr "Erro na subida" +msgstr "Produciuse un erro no envío" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Pechar" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Pendentes" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" -msgstr "1 ficheiro subíndose" +msgstr "Enviándose 1 ficheiro" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" -msgstr "{count} ficheiros subíndose" +msgstr "Enviandose {count} ficheiros" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." -msgstr "Subida cancelada." +msgstr "Envío cancelado." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "A subida do ficheiro está en curso. Saír agora da páxina cancelará a subida." +msgstr "O envío do ficheiro está en proceso. Saír agora da páxina cancelará o envío." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." -msgstr "URL non pode quedar baleiro." +msgstr "O URL non pode quedar baleiro." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -msgstr "Nome de cartafol non válido. O uso de 'Shared' está reservado por Owncloud" +msgstr "Nome de cartafol incorrecto. O uso de «Shared» está reservado por Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Nome" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Tamaño" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 cartafol" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} cartafoles" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 ficheiro" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} ficheiros" @@ -221,11 +233,11 @@ msgstr "Manexo de ficheiro" #: templates/admin.php:7 msgid "Maximum upload size" -msgstr "Tamaño máximo de envío" +msgstr "Tamaño máximo do envío" #: templates/admin.php:10 msgid "max. possible: " -msgstr "máx. posible: " +msgstr "máx. posíbel: " #: templates/admin.php:15 msgid "Needed for multi-file and folder downloads." @@ -241,7 +253,7 @@ msgstr "0 significa ilimitado" #: templates/admin.php:22 msgid "Maximum input size for ZIP files" -msgstr "Tamaño máximo de descarga para os ZIP" +msgstr "Tamaño máximo de descarga para os ficheiros ZIP" #: templates/admin.php:26 msgid "Save" @@ -261,24 +273,28 @@ msgstr "Cartafol" #: templates/index.php:14 msgid "From link" -msgstr "Dende a ligazón" +msgstr "Desde a ligazón" #: templates/index.php:40 -msgid "Trash" -msgstr "" +msgid "Trash bin" +msgstr "Cesto do lixo" #: templates/index.php:46 msgid "Cancel upload" -msgstr "Cancelar a subida" +msgstr "Cancelar o envío" #: templates/index.php:59 msgid "Nothing in here. Upload something!" -msgstr "Nada por aquí. Envía algo." +msgstr "Aquí non hai nada por aquí. Envíe algo." #: templates/index.php:73 msgid "Download" msgstr "Descargar" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Deixar de compartir" + #: templates/index.php:105 msgid "Upload too large" msgstr "Envío demasiado grande" @@ -287,11 +303,11 @@ msgstr "Envío demasiado grande" msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." -msgstr "Os ficheiros que trata de subir superan o tamaño máximo permitido neste servidor" +msgstr "Os ficheiros que tenta enviar exceden do tamaño máximo permitido neste servidor" #: templates/index.php:112 msgid "Files are being scanned, please wait." -msgstr "Estanse analizando os ficheiros. Agarda." +msgstr "Estanse analizando os ficheiros. Agarde." #: templates/index.php:115 msgid "Current scanning" @@ -299,4 +315,4 @@ msgstr "Análise actual" #: templates/upgrade.php:2 msgid "Upgrading filesystem cache..." -msgstr "" +msgstr "Anovando a caché do sistema de ficheiros..." diff --git a/l10n/gl/files_encryption.po b/l10n/gl/files_encryption.po index 2d7038a124..0f66e72f33 100644 --- a/l10n/gl/files_encryption.po +++ b/l10n/gl/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2013. # Xosé M. Lamas , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 10:01+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,44 +19,22 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Cifrado" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "O cifrado de ficheiros está activado" #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "Os seguintes tipos de ficheiros non van seren cifrados:" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Excluír os seguintes tipos de ficheiros do cifrado:" #: templates/settings.php:12 msgid "None" -msgstr "Nada" +msgstr "Ningún" diff --git a/l10n/gl/files_trashbin.po b/l10n/gl/files_trashbin.po index 8f00ed2b31..b1c8fe7992 100644 --- a/l10n/gl/files_trashbin.po +++ b/l10n/gl/files_trashbin.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 11:20+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,13 +18,23 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Non foi posíbel eliminar %s permanente" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Non foi posíbel restaurar %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" -msgstr "" +msgstr "realizar a operación de restauración" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "eliminar o ficheiro permanentemente" #: js/trash.js:125 templates/index.php:17 msgid "Name" @@ -31,7 +42,7 @@ msgstr "Nome" #: js/trash.js:126 templates/index.php:27 msgid "Deleted" -msgstr "" +msgstr "Eliminado" #: js/trash.js:135 msgid "1 folder" @@ -51,7 +62,7 @@ msgstr "{count} ficheiros" #: templates/index.php:9 msgid "Nothing in here. Your trash bin is empty!" -msgstr "" +msgstr "Aquí non hai nada. O cesto do lixo está baleiro!" #: templates/index.php:20 templates/index.php:22 msgid "Restore" diff --git a/l10n/gl/files_versions.po b/l10n/gl/files_versions.po index c0ac98462b..7bfd504e63 100644 --- a/l10n/gl/files_versions.po +++ b/l10n/gl/files_versions.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -20,10 +20,45 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Historial" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Sistema de versión de ficheiros" diff --git a/l10n/gl/lib.po b/l10n/gl/lib.po index c6fc161311..12ac1761ec 100644 --- a/l10n/gl/lib.po +++ b/l10n/gl/lib.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2013. # , 2012. # Miguel Branco , 2012. # Xosé M. Lamas , 2012-2013. @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-22 06:11+0000\n" -"Last-Translator: Xosé M. Lamas \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,49 +21,49 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Axuda" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Persoal" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Configuracións" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Usuarios" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplicativos" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administración" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." -msgstr "As descargas ZIP están desactivadas" +msgstr "As descargas ZIP están desactivadas." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Os ficheiros necesitan seren descargados de un en un." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Volver aos ficheiros" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Os ficheiros seleccionados son demasiado grandes como para xerar un ficheiro zip." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" -msgstr "non puido ser determinado" +msgstr "non foi posíbel determinalo" #: json.php:28 msgid "Application is not enabled" @@ -88,9 +89,106 @@ msgstr "Texto" msgid "Images" msgstr "Imaxes" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "O seu servidor web non está aínda configurado adecuadamente para permitir a sincronización de ficheiros xa que semella que a interface WebDAV non está a funcionar." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Volva comprobar as guías de instalación" + #: template.php:113 msgid "seconds ago" -msgstr "hai segundos" +msgstr "segundos atrás" #: template.php:114 msgid "1 minute ago" diff --git a/l10n/gl/settings.po b/l10n/gl/settings.po index ca408e9994..3ea089b4b6 100644 --- a/l10n/gl/settings.po +++ b/l10n/gl/settings.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Non foi posíbel cargar a lista desde a App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Produciuse un erro de autenticación" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -83,7 +83,7 @@ msgstr "Non é posíbel engadir o usuario ao grupo %s" msgid "Unable to remove user from group %s" msgstr "Non é posíbel eliminar o usuario do grupo %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -180,99 +180,87 @@ msgstr "Asistencia comercial" msgid "You have used %s of the available %s" msgstr "Te en uso %s do total dispoñíbel de %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clientes" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Descargar clientes para escritorio" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Descargar clientes para Android" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Descargar clientes ra iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Amosar o axudante da primeira execución outra vez" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Contrasinal" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "O seu contrasinal foi cambiado" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Non é posíbel cambiar o seu contrasinal" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Contrasinal actual" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Novo contrasinal" -#: templates/personal.php:28 -msgid "show" -msgstr "amosar" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Cambiar o contrasinal" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Correo" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "O seu enderezo de correo" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Escriba un enderezo de correo para activar a recuperación do contrasinal" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Idioma" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Axude na tradución" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Utilice este enderezo para conectarse ao seu ownCloud co administrador de ficheiros" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versión" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Usar TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Non empregalo para conexións SSL: fallará." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/gl/user_webdavauth.po b/l10n/gl/user_webdavauth.po index 2004bb9b3c..e16010dc69 100644 --- a/l10n/gl/user_webdavauth.po +++ b/l10n/gl/user_webdavauth.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# , 2013. # , 2012. # Miguel Branco, 2012. # Xosé M. Lamas , 2013. @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-19 00:04+0100\n" -"PO-Revision-Date: 2013-01-18 06:15+0000\n" -"Last-Translator: Xosé M. Lamas \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 11:20+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,9 +29,9 @@ msgstr "Autenticación WebDAV" msgid "URL: http://" msgstr "URL: http://" -#: templates/settings.php:6 +#: templates/settings.php:7 msgid "" "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." -msgstr "ownCloud enviará as credenciais do usuario a esta URL. Este conector comproba a resposta e interpretará os códigos de estado 401 e 403 como credenciais non válidas, e todas as outras respostas como credenciais válidas." +msgstr "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/l10n/he/core.po b/l10n/he/core.po index 2c90c77e73..63923beacf 100644 --- a/l10n/he/core.po +++ b/l10n/he/core.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -55,8 +55,9 @@ msgid "No category to add?" msgstr "אין קטגוריה להוספה?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "קטגוריה זאת כבר קיימת: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -160,59 +161,59 @@ msgstr "נובמבר" msgid "December" msgstr "דצמבר" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "הגדרות" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "שניות" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "לפני דקה אחת" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "לפני {minutes} דקות" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "לפני שעה" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "לפני {hours} שעות" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "היום" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "אתמול" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "לפני {days} ימים" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "חודש שעבר" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "לפני {months} חודשים" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "חודשים" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "שנה שעברה" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "שנים" @@ -471,7 +472,7 @@ msgstr "עריכת הקטגוריות" msgid "Add" msgstr "הוספה" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "אזהרת אבטחה" @@ -481,71 +482,75 @@ msgid "" "OpenSSL extension." msgstr "אין מחולל מספרים אקראיים מאובטח, נא להפעיל את ההרחבה OpenSSL ב־PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "ללא מחולל מספרים אקראיים מאובטח תוקף יכול לנבא את מחרוזות איפוס הססמה ולהשתלט על החשבון שלך." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "יתכן שתיקיית הנתונים והקבצים שלך נגישים דרך האינטרנט. קובץ ה־‎.htaccess שמסופק על ידי ownCloud כנראה אינו עובד. אנו ממליצים בחום להגדיר את שרת האינטרנט שלך בדרך שבה תיקיית הנתונים לא תהיה זמינה עוד או להעביר את תיקיית הנתונים מחוץ לספריית העל של שרת האינטרנט." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "יצירת חשבון מנהל" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "מתקדם" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "תיקיית נתונים" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "הגדרת מסד הנתונים" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "ינוצלו" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "שם משתמש במסד הנתונים" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "ססמת מסד הנתונים" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "שם מסד הנתונים" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "מרחב הכתובות של מסד הנתונים" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "שרת בסיס נתונים" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "סיום התקנה" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "שירותי רשת בשליטתך" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "התנתקות" diff --git a/l10n/he/files.po b/l10n/he/files.po index 0c221283b6..8a109378c4 100644 --- a/l10n/he/files.po +++ b/l10n/he/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -21,6 +21,20 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "לא הועלה קובץ. טעות בלתי מזוהה." @@ -57,7 +71,7 @@ msgid "Failed to write to disk" msgstr "הכתיבה לכונן נכשלה" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -68,51 +82,52 @@ msgstr "" msgid "Files" msgstr "קבצים" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "הסר שיתוף" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "מחיקה" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "שינוי שם" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "ממתין" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} כבר קיים" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "החלפה" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "הצעת שם" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "ביטול" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name} הוחלף" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "ביטול" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} הוחלף ב־{old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -152,64 +167,60 @@ msgstr "לא יכול להעלות את הקובץ מכיוון שזו תקיה msgid "Upload Error" msgstr "שגיאת העלאה" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "סגירה" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "ממתין" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "קובץ אחד נשלח" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} קבצים נשלחים" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "ההעלאה בוטלה." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "קישור אינו יכול להיות ריק." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "שם" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "גודל" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "זמן שינוי" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "תיקייה אחת" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} תיקיות" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "קובץ אחד" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} קבצים" @@ -266,7 +277,7 @@ msgid "From link" msgstr "מקישור" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -281,6 +292,10 @@ msgstr "אין כאן שום דבר. אולי ברצונך להעלות משהו msgid "Download" msgstr "הורדה" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "הסר שיתוף" + #: templates/index.php:105 msgid "Upload too large" msgstr "העלאה גדולה מידי" diff --git a/l10n/he/files_encryption.po b/l10n/he/files_encryption.po index 5347a271b6..2c26e96cd1 100644 --- a/l10n/he/files_encryption.po +++ b/l10n/he/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "הצפנה" diff --git a/l10n/he/files_trashbin.po b/l10n/he/files_trashbin.po index cd56509235..4291039ce1 100644 --- a/l10n/he/files_trashbin.po +++ b/l10n/he/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/he/files_versions.po b/l10n/he/files_versions.po index 15bb3e971b..4d1caaf114 100644 --- a/l10n/he/files_versions.po +++ b/l10n/he/files_versions.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -19,10 +19,45 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "היסטוריה" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "שמירת הבדלי גרסאות של קבצים" diff --git a/l10n/he/lib.po b/l10n/he/lib.po index 8383f3ccc9..499a5bf35a 100644 --- a/l10n/he/lib.po +++ b/l10n/he/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "עזרה" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "אישי" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "הגדרות" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "משתמשים" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "יישומים" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "מנהל" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "הורדת ZIP כבויה" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "יש להוריד את הקבצים אחד אחרי השני." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "חזרה לקבצים" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "הקבצים הנבחרים גדולים מידי ליצירת קובץ zip." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -87,6 +87,103 @@ msgstr "טקסט" msgid "Images" msgstr "תמונות" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "שניות" diff --git a/l10n/he/settings.po b/l10n/he/settings.po index 018aebd9f6..be030e636c 100644 --- a/l10n/he/settings.po +++ b/l10n/he/settings.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -25,12 +25,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "לא ניתן לטעון רשימה מה־App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "שגיאת הזדהות" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -84,7 +84,7 @@ msgstr "לא ניתן להוסיף משתמש לקבוצה %s" msgid "Unable to remove user from group %s" msgstr "לא ניתן להסיר משתמש מהקבוצה %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -181,99 +181,87 @@ msgstr "תמיכה בתשלום" msgid "You have used %s of the available %s" msgstr "השתמשת ב־%s מתוך %s הזמינים לך" -#: templates/personal.php:12 -msgid "Clients" -msgstr "לקוחות" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "הורד לתוכנה למחשב" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "הורד תוכנה לאנדרואיד" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "הורד תוכנה לiOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "ססמה" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "הססמה שלך הוחלפה" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "לא ניתן לשנות את הססמה שלך" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "ססמה נוכחית" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "ססמה חדשה" -#: templates/personal.php:28 -msgid "show" -msgstr "הצגה" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "שינוי ססמה" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "דוא״ל" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "כתובת הדוא״ל שלך" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "נא למלא את כתובת הדוא״ל שלך כדי לאפשר שחזור ססמה" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "פה" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "עזרה בתרגום" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "השתמש בכתובת זאת על מנת להתחבר אל ownCloud דרך סייר קבצים." -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "גרסא" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -214,7 +214,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/hi/core.po b/l10n/hi/core.po index d41343f3c0..7d3595d491 100644 --- a/l10n/hi/core.po +++ b/l10n/hi/core.po @@ -4,14 +4,14 @@ # # Translators: # Omkar Tapale , 2012. -# Sanjay Rabidas , 2012. +# Sanjay Rabidas , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:19+0000\n" +"Last-Translator: Sanjay Rabidas \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -52,7 +52,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -157,59 +158,59 @@ msgstr "" msgid "December" msgstr "" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" -msgstr "" +msgstr "सेटिंग्स" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "" @@ -239,8 +240,8 @@ msgid "The object type is not specified." msgstr "" #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "" @@ -252,15 +253,15 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 -msgid "Share" -msgstr "" - -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +#: js/share.js:29 js/share.js:43 js/share.js:90 msgid "Shared" msgstr "" -#: js/share.js:141 js/share.js:611 +#: js/share.js:93 +msgid "Share" +msgstr "" + +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "" @@ -356,23 +357,23 @@ msgstr "" msgid "share" msgstr "" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "" -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "" @@ -434,15 +435,15 @@ msgstr "" #: strings.php:5 msgid "Personal" -msgstr "" +msgstr "यक्तिगत" #: strings.php:6 msgid "Users" -msgstr "" +msgstr "उपयोगकर्ता" #: strings.php:7 msgid "Apps" -msgstr "" +msgstr "Apps" #: strings.php:8 msgid "Admin" @@ -450,7 +451,7 @@ msgstr "" #: strings.php:9 msgid "Help" -msgstr "" +msgstr "सहयोग" #: templates/403.php:12 msgid "Access forbidden" @@ -468,7 +469,7 @@ msgstr "" msgid "Add" msgstr "" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -478,73 +479,77 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "व्यवस्थापक खाता बनाएँ" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "उन्नत" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" -msgstr "" +msgstr "डाटा फोल्डर" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "डेटाबेस कॉन्फ़िगर करें " -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" -msgstr "" +msgstr "उपयोग होगा" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "डेटाबेस उपयोगकर्ता" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "डेटाबेस पासवर्ड" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" -msgstr "" +msgstr "डेटाबेस का नाम" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "सेटअप समाप्त करे" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" -msgstr "" +msgstr "लोग आउट" #: templates/login.php:10 msgid "Automatic logon rejected!" @@ -566,7 +571,7 @@ msgstr "" #: templates/login.php:41 msgid "remember" -msgstr "" +msgstr "याद रखें" #: templates/login.php:43 msgid "Log in" diff --git a/l10n/hi/files.po b/l10n/hi/files.po index e0189f4da4..fe4e56b565 100644 --- a/l10n/hi/files.po +++ b/l10n/hi/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,20 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -53,7 +67,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -64,51 +78,52 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -148,64 +163,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -262,7 +273,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -277,6 +288,10 @@ msgstr "" msgid "Download" msgstr "" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "" diff --git a/l10n/hi/files_encryption.po b/l10n/hi/files_encryption.po index 82eea01a3f..94768da1fc 100644 --- a/l10n/hi/files_encryption.po +++ b/l10n/hi/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/hi/files_trashbin.po b/l10n/hi/files_trashbin.po index fad204d073..a0b6e4cede 100644 --- a/l10n/hi/files_trashbin.po +++ b/l10n/hi/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/hi/files_versions.po b/l10n/hi/files_versions.po index 293e4b558a..65790b4d6b 100644 --- a/l10n/hi/files_versions.po +++ b/l10n/hi/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/hi/lib.po b/l10n/hi/lib.po index 9cb9753235..fe9cd8b388 100644 --- a/l10n/hi/lib.po +++ b/l10n/hi/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/hi/settings.po b/l10n/hi/settings.po index b0e88f95c9..2388add5fd 100644 --- a/l10n/hi/settings.po +++ b/l10n/hi/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -21,12 +21,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -80,7 +80,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -177,99 +177,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "पासवर्ड" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "पासवर्ड" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "नया पासवर्ड" -#: templates/personal.php:28 -msgid "show" -msgstr "" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/hr/core.po b/l10n/hr/core.po index c61e19fa2b..ebbeae5639 100644 --- a/l10n/hr/core.po +++ b/l10n/hr/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -54,8 +54,9 @@ msgid "No category to add?" msgstr "Nemate kategorija koje možete dodati?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Ova kategorija već postoji: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -159,59 +160,59 @@ msgstr "Studeni" msgid "December" msgstr "Prosinac" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Postavke" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "sekundi prije" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "danas" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "jučer" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "prošli mjesec" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "mjeseci" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "prošlu godinu" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "godina" @@ -470,7 +471,7 @@ msgstr "Uredi kategorije" msgid "Add" msgstr "Dodaj" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -480,71 +481,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Stvori administratorski račun" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Dodatno" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Mapa baze podataka" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfiguriraj bazu podataka" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "će se koristiti" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Korisnik baze podataka" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Lozinka baze podataka" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Ime baze podataka" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Database tablespace" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Poslužitelj baze podataka" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Završi postavljanje" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "web usluge pod vašom kontrolom" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Odjava" diff --git a/l10n/hr/files.po b/l10n/hr/files.po index d7b7d81a29..4e58c45f93 100644 --- a/l10n/hr/files.po +++ b/l10n/hr/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -20,6 +20,20 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -56,7 +70,7 @@ msgid "Failed to write to disk" msgstr "Neuspjelo pisanje na disk" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -67,51 +81,52 @@ msgstr "" msgid "Files" msgstr "Datoteke" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Prekini djeljenje" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Briši" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Promjeni ime" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "U tijeku" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "zamjeni" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "predloži ime" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "odustani" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "vrati" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -151,64 +166,60 @@ msgstr "Nemoguće poslati datoteku jer je prazna ili je direktorij" msgid "Upload Error" msgstr "Pogreška pri slanju" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Zatvori" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "U tijeku" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 datoteka se učitava" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Slanje poništeno." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Učitavanje datoteke. Napuštanjem stranice će prekinuti učitavanje." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Naziv" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Veličina" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Zadnja promjena" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -265,7 +276,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -280,6 +291,10 @@ msgstr "Nema ničega u ovoj mapi. Pošalji nešto!" msgid "Download" msgstr "Preuzmi" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Prekini djeljenje" + #: templates/index.php:105 msgid "Upload too large" msgstr "Prijenos je preobiman" diff --git a/l10n/hr/files_encryption.po b/l10n/hr/files_encryption.po index 9b86d0ed1f..434831e8ab 100644 --- a/l10n/hr/files_encryption.po +++ b/l10n/hr/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/hr/files_trashbin.po b/l10n/hr/files_trashbin.po index 6a7bfdabab..a5e90a28bb 100644 --- a/l10n/hr/files_trashbin.po +++ b/l10n/hr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/hr/files_versions.po b/l10n/hr/files_versions.po index 0425c2dc56..a1fb9209e3 100644 --- a/l10n/hr/files_versions.po +++ b/l10n/hr/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/hr/lib.po b/l10n/hr/lib.po index 28ed5873c3..33cacb70ee 100644 --- a/l10n/hr/lib.po +++ b/l10n/hr/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Pomoć" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Osobno" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Postavke" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Korisnici" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "Tekst" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "sekundi prije" diff --git a/l10n/hr/settings.po b/l10n/hr/settings.po index 062d280811..842287d3fc 100644 --- a/l10n/hr/settings.po +++ b/l10n/hr/settings.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Nemogićnost učitavanja liste sa Apps Stora" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Greška kod autorizacije" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -83,7 +83,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -180,99 +180,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klijenti" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "Lozinka" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "Lozinka" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Nemoguće promijeniti lozinku" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Trenutna lozinka" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nova lozinka" -#: templates/personal.php:28 -msgid "show" -msgstr "prikaz" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Izmjena lozinke" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "e-mail adresa" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Vaša e-mail adresa" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Ispunite vase e-mail adresa kako bi se omogućilo oporavak lozinke" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Jezik" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Pomoć prevesti" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/hu_HU/core.po b/l10n/hu_HU/core.po index 792943a1d7..9cd13d6adf 100644 --- a/l10n/hu_HU/core.po +++ b/l10n/hu_HU/core.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -55,8 +55,9 @@ msgid "No category to add?" msgstr "Nincs hozzáadandó kategória?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Ez a kategória már létezik: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -160,59 +161,59 @@ msgstr "november" msgid "December" msgstr "december" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Beállítások" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "pár másodperce" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 perce" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} perce" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 órája" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} órája" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "ma" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "tegnap" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} napja" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "múlt hónapban" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} hónapja" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "több hónapja" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "tavaly" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "több éve" @@ -471,7 +472,7 @@ msgstr "Kategóriák szerkesztése" msgid "Add" msgstr "Hozzáadás" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Biztonsági figyelmeztetés" @@ -481,71 +482,75 @@ msgid "" "OpenSSL extension." msgstr "Nem érhető el megfelelő véletlenszám-generátor, telepíteni kellene a PHP OpenSSL kiegészítését." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Megfelelő véletlenszám-generátor hiányában egy támadó szándékú idegen képes lehet megjósolni a jelszóvisszaállító tokent, és Ön helyett belépni." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Az adatkönytára és az itt levő fájlok valószínűleg elérhetők az internetről. Az ownCloud által beillesztett .htaccess fájl nem működik. Nagyon fontos, hogy a webszervert úgy konfigurálja, hogy az adatkönyvtár nem legyen közvetlenül kívülről elérhető, vagy az adatkönyvtárt tegye a webszerver dokumentumfáján kívülre." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Rendszergazdai belépés létrehozása" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Haladó" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Adatkönyvtár" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Adatbázis konfigurálása" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "adatbázist fogunk használni" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Adatbázis felhasználónév" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Adatbázis jelszó" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Az adatbázis neve" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Az adatbázis táblázattér (tablespace)" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Adatbázis szerver" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "A beállítások befejezése" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "webszolgáltatások saját kézben" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Kilépés" diff --git a/l10n/hu_HU/files.po b/l10n/hu_HU/files.po index bc65aedf64..5a793b84bf 100644 --- a/l10n/hu_HU/files.po +++ b/l10n/hu_HU/files.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -24,6 +24,20 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "%s áthelyezése nem sikerült - már létezik másik fájl ezzel a névvel" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Nem sikerült %s áthelyezése" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Nem lehet átnevezni a fájlt" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Nem történt feltöltés. Ismeretlen hiba" @@ -60,8 +74,8 @@ msgid "Failed to write to disk" msgstr "Nem sikerült a lemezre történő írás" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Nincs elég szabad hely" +msgid "Not enough storage available" +msgstr "Nincs elég szabad hely." #: ajax/upload.php:83 msgid "Invalid directory." @@ -71,51 +85,52 @@ msgstr "Érvénytelen mappa." msgid "Files" msgstr "Fájlok" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Megosztás visszavonása" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Törlés" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Átnevezés" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Folyamatban" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} már létezik" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "írjuk fölül" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "legyen más neve" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "mégse" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "a(z) {new_name} állományt kicseréltük" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "visszavonás" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} fájlt kicseréltük ezzel: {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -155,64 +170,60 @@ msgstr "Nem tölthető fel, mert mappa volt, vagy 0 byte méretű" msgid "Upload Error" msgstr "Feltöltési hiba" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Bezárás" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Folyamatban" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 fájl töltődik föl" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} fájl töltődik föl" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "A feltöltést megszakítottuk." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Az URL nem lehet semmi." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Érvénytelen mappanév. A név használata csak a Owncloud számára lehetséges." -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Név" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Méret" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Módosítva" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 mappa" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} mappa" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 fájl" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} fájl" @@ -269,7 +280,7 @@ msgid "From link" msgstr "Feltöltés linkről" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -284,6 +295,10 @@ msgstr "Itt nincs semmi. Töltsön fel valamit!" msgid "Download" msgstr "Letöltés" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Megosztás visszavonása" + #: templates/index.php:105 msgid "Upload too large" msgstr "A feltöltés túl nagy" diff --git a/l10n/hu_HU/files_encryption.po b/l10n/hu_HU/files_encryption.po index 0409118f14..3a5ec713fb 100644 --- a/l10n/hu_HU/files_encryption.po +++ b/l10n/hu_HU/files_encryption.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -20,28 +20,6 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Kérjük, hogy váltson át az ownCloud kliensére, és változtassa meg a titkosítási jelszót az átalakítás befejezéséhez." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "átváltva a kliens oldalai titkosításra" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Titkosítási jelszó módosítása a bejelentkezési jelszóra" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Kérjük, ellenőrizze a jelszavait, és próbálja meg újra." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Nem módosíthatja a fájltitkosítási jelszavát a bejelentkezési jelszavára" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Titkosítás" diff --git a/l10n/hu_HU/files_trashbin.po b/l10n/hu_HU/files_trashbin.po index ed96fa7cee..0f7239c2cd 100644 --- a/l10n/hu_HU/files_trashbin.po +++ b/l10n/hu_HU/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/hu_HU/files_versions.po b/l10n/hu_HU/files_versions.po index d5db4ac603..f2b3829c7a 100644 --- a/l10n/hu_HU/files_versions.po +++ b/l10n/hu_HU/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Korábbi változatok" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Az állományok verzionálása" diff --git a/l10n/hu_HU/lib.po b/l10n/hu_HU/lib.po index c3c29798b1..09fe7b2dce 100644 --- a/l10n/hu_HU/lib.po +++ b/l10n/hu_HU/lib.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-26 00:09+0100\n" -"PO-Revision-Date: 2013-01-25 12:37+0000\n" -"Last-Translator: Laszlo Tornoci \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,47 +20,47 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Súgó" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Személyes" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Beállítások" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Felhasználók" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Alkalmazások" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "A ZIP-letöltés nincs engedélyezve." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "A fájlokat egyenként kell letölteni" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Vissza a Fájlokhoz" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "A kiválasztott fájlok túl nagyok a zip tömörítéshez." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "nem határozható meg" @@ -88,6 +88,103 @@ msgstr "Szöveg" msgid "Images" msgstr "Képek" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "másodperce" diff --git a/l10n/hu_HU/settings.po b/l10n/hu_HU/settings.po index d544d5d95b..858bd01dcd 100644 --- a/l10n/hu_HU/settings.po +++ b/l10n/hu_HU/settings.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Nem tölthető le a lista az App Store-ból" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Azonosítási hiba" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -83,7 +83,7 @@ msgstr "A felhasználó nem adható hozzá ehhez a csoporthoz: %s" msgid "Unable to remove user from group %s" msgstr "A felhasználó nem távolítható el ebből a csoportból: %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -180,99 +180,87 @@ msgstr "Megvásárolható támogatás" msgid "You have used %s of the available %s" msgstr "Az Ön tárterület-felhasználása jelenleg: %s. Maximálisan ennyi áll rendelkezésére: %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Kliensek" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Desktop kliensprogramok letöltése" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Android kliens letöltése" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "iOS kliens letöltése" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Jelszó" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "A jelszava megváltozott" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "A jelszó nem változtatható meg" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "A jelenlegi jelszó" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Az új jelszó" -#: templates/personal.php:28 -msgid "show" -msgstr "lássam" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "A jelszó megváltoztatása" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Az Ön email címe" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Adja meg az email címét, hogy jelszó-emlékeztetőt kérhessen, ha elfelejtette a jelszavát!" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Nyelv" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Segítsen a fordításban!" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Ennek a címnek a megadásával a WebDAV-protokollon keresztül saját gépének fájlkezelőjével is is elérheti az állományait." -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Verzió" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Használjunk TLS-t" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Ne használjuk SSL-kapcsolat esetén, mert nem fog működni!" +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/ia/core.po b/l10n/ia/core.po index dff261f33d..385d32959d 100644 --- a/l10n/ia/core.po +++ b/l10n/ia/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -51,8 +51,9 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Iste categoria jam existe:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -156,59 +157,59 @@ msgstr "Novembre" msgid "December" msgstr "Decembre" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Configurationes" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "" @@ -467,7 +468,7 @@ msgstr "Modificar categorias" msgid "Add" msgstr "Adder" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -477,71 +478,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Crear un conto de administration" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avantiate" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Dossier de datos" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configurar le base de datos" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "essera usate" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Usator de base de datos" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Contrasigno de base de datos" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nomine de base de datos" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Hospite de base de datos" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "servicios web sub tu controlo" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Clauder le session" diff --git a/l10n/ia/files.po b/l10n/ia/files.po index 8a63e7c909..bbc3d82ed7 100644 --- a/l10n/ia/files.po +++ b/l10n/ia/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -19,6 +19,20 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -55,7 +69,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -66,51 +80,52 @@ msgstr "" msgid "Files" msgstr "Files" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Deler" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -150,64 +165,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Clauder" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nomine" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Dimension" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Modificate" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -264,7 +275,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -279,6 +290,10 @@ msgstr "Nihil hic. Incarga alcun cosa!" msgid "Download" msgstr "Discargar" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "Incargamento troppo longe" diff --git a/l10n/ia/files_encryption.po b/l10n/ia/files_encryption.po index e9ea289fb9..11e4cc8eb8 100644 --- a/l10n/ia/files_encryption.po +++ b/l10n/ia/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/ia/files_trashbin.po b/l10n/ia/files_trashbin.po index 9256a728ff..a6fdefcf40 100644 --- a/l10n/ia/files_trashbin.po +++ b/l10n/ia/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/ia/files_versions.po b/l10n/ia/files_versions.po index 7b2dbb7efe..f3b805ad93 100644 --- a/l10n/ia/files_versions.po +++ b/l10n/ia/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/ia/lib.po b/l10n/ia/lib.po index 2e63828482..bcd34dae7d 100644 --- a/l10n/ia/lib.po +++ b/l10n/ia/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Adjuta" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personal" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Configurationes" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Usatores" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "Texto" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/ia/settings.po b/l10n/ia/settings.po index 47c4885728..e63d5efd07 100644 --- a/l10n/ia/settings.po +++ b/l10n/ia/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -23,12 +23,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -82,7 +82,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -179,99 +179,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clientes" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "Contrasigno" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "Contrasigno" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Non pote cambiar tu contrasigno" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Contrasigno currente" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nove contrasigno" -#: templates/personal.php:28 -msgid "show" -msgstr "monstrar" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Cambiar contrasigno" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "E-posta" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Tu adresse de e-posta" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Linguage" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Adjuta a traducer" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/id/core.po b/l10n/id/core.po index 018cb02da7..315f226f15 100644 --- a/l10n/id/core.po +++ b/l10n/id/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -54,8 +54,9 @@ msgid "No category to add?" msgstr "Tidak ada kategori yang akan ditambahkan?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Kategori ini sudah ada:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -159,59 +160,59 @@ msgstr "Nopember" msgid "December" msgstr "Desember" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Setelan" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "beberapa detik yang lalu" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 menit lalu" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "hari ini" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "kemarin" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "bulan kemarin" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "beberapa bulan lalu" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "tahun kemarin" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "beberapa tahun lalu" @@ -470,7 +471,7 @@ msgstr "Edit kategori" msgid "Add" msgstr "Tambahkan" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "peringatan keamanan" @@ -480,71 +481,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "tanpa generator angka acak, penyerang mungkin dapat menebak token reset kata kunci dan mengambil alih akun anda." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Buat sebuah akun admin" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Tingkat Lanjut" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Folder data" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfigurasi database" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "akan digunakan" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Pengguna database" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Password database" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nama database" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "tablespace basis data" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Host database" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Selesaikan instalasi" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "web service dibawah kontrol anda" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Keluar" diff --git a/l10n/id/files.po b/l10n/id/files.po index 7275ccf2ed..e8dd16f5fa 100644 --- a/l10n/id/files.po +++ b/l10n/id/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -20,6 +20,20 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -56,7 +70,7 @@ msgid "Failed to write to disk" msgstr "Gagal menulis ke disk" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -67,51 +81,52 @@ msgstr "" msgid "Files" msgstr "Berkas" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "batalkan berbagi" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Hapus" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Menunggu" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "mengganti" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "batalkan" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "batal dikerjakan" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -151,64 +166,60 @@ msgstr "Gagal mengunggah berkas anda karena berupa direktori atau mempunyai ukur msgid "Upload Error" msgstr "Terjadi Galat Pengunggahan" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "tutup" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Menunggu" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Pengunggahan dibatalkan." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "tautan tidak boleh kosong" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nama" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Ukuran" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Dimodifikasi" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -265,7 +276,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -280,6 +291,10 @@ msgstr "Tidak ada apa-apa di sini. Unggah sesuatu!" msgid "Download" msgstr "Unduh" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "batalkan berbagi" + #: templates/index.php:105 msgid "Upload too large" msgstr "Unggahan terlalu besar" diff --git a/l10n/id/files_encryption.po b/l10n/id/files_encryption.po index 88fc1f30a5..28191e4f23 100644 --- a/l10n/id/files_encryption.po +++ b/l10n/id/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "enkripsi" diff --git a/l10n/id/files_trashbin.po b/l10n/id/files_trashbin.po index 074b7145fc..70eaf1fc21 100644 --- a/l10n/id/files_trashbin.po +++ b/l10n/id/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/id/files_versions.po b/l10n/id/files_versions.po index 7b9d5d1874..490e0fc816 100644 --- a/l10n/id/files_versions.po +++ b/l10n/id/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "riwayat" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "pembuatan versi file" diff --git a/l10n/id/lib.po b/l10n/id/lib.po index 013ed9d846..32d4cfd14e 100644 --- a/l10n/id/lib.po +++ b/l10n/id/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "bantu" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "perseorangan" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "pengaturan" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "pengguna" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "aplikasi" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "download ZIP sedang dimatikan" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "file harus di unduh satu persatu" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "kembali ke daftar file" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "file yang dipilih terlalu besar untuk membuat file zip" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -87,6 +87,103 @@ msgstr "teks" msgid "Images" msgstr "Gambar" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "beberapa detik yang lalu" diff --git a/l10n/id/settings.po b/l10n/id/settings.po index 2787995bd7..78a5b777e3 100644 --- a/l10n/id/settings.po +++ b/l10n/id/settings.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -25,12 +25,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "autentikasi bermasalah" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -84,7 +84,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -181,99 +181,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klien" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "Password" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "Password" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Tidak dapat merubah password anda" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Password saat ini" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "kata kunci baru" -#: templates/personal.php:28 -msgid "show" -msgstr "perlihatkan" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Rubah password" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Alamat email anda" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Masukkan alamat email untuk mengaktifkan pemulihan password" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Bahasa" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Bantu menerjemahkan" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "gunakan TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "jangan gunakan untuk koneksi SSL, itu akan gagal." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/is/core.po b/l10n/is/core.po index 5ab11b122d..5dd96b65d4 100644 --- a/l10n/is/core.po +++ b/l10n/is/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -52,8 +52,9 @@ msgid "No category to add?" msgstr "Enginn flokkur til að bæta við?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Þessi flokkur er þegar til:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +158,59 @@ msgstr "Nóvember" msgid "December" msgstr "Desember" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Stillingar" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "sek síðan" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 min síðan" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} min síðan" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "Fyrir 1 klst." -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "fyrir {hours} klst." -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "í dag" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "í gær" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} dagar síðan" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "síðasta mánuði" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "fyrir {months} mánuðum" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "mánuðir síðan" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "síðasta ári" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "árum síðan" @@ -468,7 +469,7 @@ msgstr "Breyta flokkum" msgid "Add" msgstr "Bæta" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Öryggis aðvörun" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "Enginn traustur slembitölugjafi í boði, vinsamlegast virkjaðu PHP OpenSSL viðbótina." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Án öruggs slembitölugjafa er mögulegt að sjá fyrir öryggis auðkenni til að endursetja lykilorð og komast inn á aðganginn þinn." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Gagnamappan þín er að öllum líkindum aðgengileg frá internetinu. Skráin .htaccess sem fylgir með ownCloud er ekki að virka. Við mælum eindregið með því að þú stillir vefþjóninn þannig að gagnamappan verði ekki aðgengileg frá internetinu eða færir hana út fyrir vefrótina." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Útbúa vefstjóra aðgang" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Ítarlegt" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Gagnamappa" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Stilla gagnagrunn" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "verður notað" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Gagnagrunns notandi" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Gagnagrunns lykilorð" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nafn gagnagrunns" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Töflusvæði gagnagrunns" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Netþjónn gagnagrunns" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Virkja uppsetningu" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "vefþjónusta undir þinni stjórn" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Útskrá" diff --git a/l10n/is/files.po b/l10n/is/files.po index 7e071bbb5d..c4b5238a06 100644 --- a/l10n/is/files.po +++ b/l10n/is/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,20 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Gat ekki fært %s - Skrá með þessu nafni er þegar til" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Gat ekki fært %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Gat ekki endurskýrt skrá" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Engin skrá var send inn. Óþekkt villa." @@ -54,8 +68,8 @@ msgid "Failed to write to disk" msgstr "Tókst ekki að skrifa á disk" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Ekki nægt pláss tiltækt" +msgid "Not enough storage available" +msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." @@ -65,51 +79,52 @@ msgstr "Ógild mappa." msgid "Files" msgstr "Skrár" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Hætta deilingu" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Eyða" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Endurskýra" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Bíður" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} er þegar til" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "yfirskrifa" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "stinga upp á nafni" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "hætta við" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "endurskýrði {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "afturkalla" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "yfirskrifaði {new_name} með {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -149,64 +164,60 @@ msgstr "Innsending á skrá mistókst, hugsanlega sendir þú möppu eða skrái msgid "Upload Error" msgstr "Villa við innsendingu" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Loka" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Bíður" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 skrá innsend" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} skrár innsendar" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Hætt við innsendingu." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending misheppnast." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Vefslóð má ekki vera tóm." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Óleyfilegt nafn á möppu. Nafnið 'Shared' er frátekið fyrir Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nafn" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Stærð" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Breytt" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 mappa" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} möppur" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 skrá" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} skrár" @@ -263,7 +274,7 @@ msgid "From link" msgstr "Af tengli" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -278,6 +289,10 @@ msgstr "Ekkert hér. Settu eitthvað inn!" msgid "Download" msgstr "Niðurhal" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Hætta deilingu" + #: templates/index.php:105 msgid "Upload too large" msgstr "Innsend skrá er of stór" diff --git a/l10n/is/files_encryption.po b/l10n/is/files_encryption.po index 4d128e6b4f..63f151c73c 100644 --- a/l10n/is/files_encryption.po +++ b/l10n/is/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Dulkóðun" diff --git a/l10n/is/files_trashbin.po b/l10n/is/files_trashbin.po index a738a0a24a..808dfe5a4c 100644 --- a/l10n/is/files_trashbin.po +++ b/l10n/is/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/is/files_versions.po b/l10n/is/files_versions.po index 1a0acfa5b8..5ee90ab20d 100644 --- a/l10n/is/files_versions.po +++ b/l10n/is/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Saga" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Útgáfur af skrám" diff --git a/l10n/is/lib.po b/l10n/is/lib.po index e6b54f855f..034f5b7eda 100644 --- a/l10n/is/lib.po +++ b/l10n/is/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Hjálp" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Um mig" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Stillingar" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Notendur" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Forrit" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Stjórnun" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Slökkt á ZIP niðurhali." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Skrárnar verður að sækja eina og eina" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Aftur í skrár" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Valdar skrár eru of stórar til að búa til ZIP skrá." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -86,6 +86,103 @@ msgstr "Texti" msgid "Images" msgstr "Myndir" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "sek." diff --git a/l10n/is/settings.po b/l10n/is/settings.po index fea2c37878..985e8df4f9 100644 --- a/l10n/is/settings.po +++ b/l10n/is/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -22,12 +22,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Ekki tókst að hlaða lista frá forrita síðu" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Villa við auðkenningu" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -81,7 +81,7 @@ msgstr "Ekki tókst að bæta notenda við hópinn %s" msgid "Unable to remove user from group %s" msgstr "Ekki tókst að fjarlægja notanda úr hópnum %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -178,99 +178,87 @@ msgstr "Borgaður stuðningur" msgid "You have used %s of the available %s" msgstr "Þú hefur notað %s af tiltæku %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Notendahugbúnaður" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Hlaða niður notendahugbúnaði" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Hlaða niður Andoid hugbúnaði" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Hlaða niður iOS hugbúnaði" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Lykilorð" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Lykilorði þínu hefur verið breytt" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Ekki tókst að breyta lykilorðinu þínu" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Núverandi lykilorð" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nýtt lykilorð" -#: templates/personal.php:28 -msgid "show" -msgstr "sýna" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Breyta lykilorði" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Netfang" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Netfangið þitt" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Sláðu inn netfangið þitt til að virkja endurheimt á lykilorði" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Tungumál" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Hjálpa við þýðingu" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Notaðu þessa vefslóð til að tengjast ownCloud svæðinu þínu" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Útgáfa" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -214,7 +214,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/it/core.po b/l10n/it/core.po index c639278023..bca11b8fb8 100644 --- a/l10n/it/core.po +++ b/l10n/it/core.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 00:44+0000\n" +"Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -56,8 +56,9 @@ msgid "No category to add?" msgstr "Nessuna categoria da aggiungere?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Questa categoria esiste già: " +#, php-format +msgid "This category already exists: %s" +msgstr "Questa categoria esiste già: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -161,59 +162,59 @@ msgstr "Novembre" msgid "December" msgstr "Dicembre" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Impostazioni" -#: js/js.js:760 +#: js/js.js:766 msgid "seconds ago" msgstr "secondi fa" -#: js/js.js:761 +#: js/js.js:767 msgid "1 minute ago" msgstr "Un minuto fa" -#: js/js.js:762 +#: js/js.js:768 msgid "{minutes} minutes ago" msgstr "{minutes} minuti fa" -#: js/js.js:763 +#: js/js.js:769 msgid "1 hour ago" msgstr "1 ora fa" -#: js/js.js:764 +#: js/js.js:770 msgid "{hours} hours ago" msgstr "{hours} ore fa" -#: js/js.js:765 +#: js/js.js:771 msgid "today" msgstr "oggi" -#: js/js.js:766 +#: js/js.js:772 msgid "yesterday" msgstr "ieri" -#: js/js.js:767 +#: js/js.js:773 msgid "{days} days ago" msgstr "{days} giorni fa" -#: js/js.js:768 +#: js/js.js:774 msgid "last month" msgstr "mese scorso" -#: js/js.js:769 +#: js/js.js:775 msgid "{months} months ago" msgstr "{months} mesi fa" -#: js/js.js:770 +#: js/js.js:776 msgid "months ago" msgstr "mesi fa" -#: js/js.js:771 +#: js/js.js:777 msgid "last year" msgstr "anno scorso" -#: js/js.js:772 +#: js/js.js:778 msgid "years ago" msgstr "anni fa" @@ -243,8 +244,8 @@ msgid "The object type is not specified." msgstr "Il tipo di oggetto non è specificato." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Errore" @@ -264,7 +265,7 @@ msgstr "Condividi" msgid "Shared" msgstr "Condivisi" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Errore durante la condivisione" @@ -360,23 +361,23 @@ msgstr "eliminare" msgid "share" msgstr "condividere" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Protetta da password" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Errore durante la rimozione della data di scadenza" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Errore durante l'impostazione della data di scadenza" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Invio in corso..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Messaggio inviato" @@ -472,7 +473,7 @@ msgstr "Modifica le categorie" msgid "Add" msgstr "Aggiungi" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Avviso di sicurezza" @@ -482,71 +483,75 @@ msgid "" "OpenSSL extension." msgstr "Non è disponibile alcun generatore di numeri casuali sicuro. Abilita l'estensione OpenSSL di PHP" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Senza un generatore di numeri casuali sicuro, un malintenzionato potrebbe riuscire a individuare i token di ripristino delle password e impossessarsi del tuo account." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "La cartella dei dati e i file sono probabilmente accessibili da Internet poiché il file .htaccess non funziona." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet. Il file .htaccess fornito da ownCloud non funziona. Ti suggeriamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile o sposta tale cartella fuori dalla radice del sito." +"For information how to properly configure your server, please see the documentation." +msgstr "Per informazioni su come configurare correttamente il server, vedi la documentazione." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Crea un account amministratore" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avanzate" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Cartella dati" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configura il database" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "sarà utilizzato" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Utente del database" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Password del database" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nome del database" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Spazio delle tabelle del database" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Host del database" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Termina la configurazione" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "servizi web nelle tue mani" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Esci" @@ -578,7 +583,7 @@ msgstr "Accedi" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Accessi alternativi" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/it/files.po b/l10n/it/files.po index e419f624cc..206c29c048 100644 --- a/l10n/it/files.po +++ b/l10n/it/files.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-09 23:50+0000\n" +"Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,20 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Impossibile spostare %s - un file con questo nome esiste già" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Impossibile spostare %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Impossibile rinominare il file" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Nessun file è stato inviato. Errore sconosciuto" @@ -57,8 +71,8 @@ msgid "Failed to write to disk" msgstr "Scrittura su disco non riuscita" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Spazio disponibile insufficiente" +msgid "Not enough storage available" +msgstr "Spazio di archiviazione insufficiente" #: ajax/upload.php:83 msgid "Invalid directory." @@ -68,51 +82,52 @@ msgstr "Cartella non valida." msgid "Files" msgstr "File" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Rimuovi condivisione" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Elimina definitivamente" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Elimina" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Rinomina" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "In corso" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} esiste già" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "sostituisci" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "suggerisci nome" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "annulla" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "sostituito {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "annulla" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "sostituito {new_name} con {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "esegui l'operazione di eliminazione" @@ -152,64 +167,60 @@ msgstr "Impossibile inviare il file poiché è una cartella o ha dimensione 0 by msgid "Upload Error" msgstr "Errore di invio" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Chiudi" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "In corso" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 file in fase di caricamento" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} file in fase di caricamentoe" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Invio annullato" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "L'URL non può essere vuoto." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nome della cartella non valido. L'uso di 'Shared' è riservato da ownCloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Nome" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Dimensione" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Modificato" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 cartella" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} cartelle" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 file" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} file" @@ -266,7 +277,7 @@ msgid "From link" msgstr "Da collegamento" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "Cestino" #: templates/index.php:46 @@ -281,6 +292,10 @@ msgstr "Non c'è niente qui. Carica qualcosa!" msgid "Download" msgstr "Scarica" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Rimuovi condivisione" + #: templates/index.php:105 msgid "Upload too large" msgstr "Il file caricato è troppo grande" diff --git a/l10n/it/files_encryption.po b/l10n/it/files_encryption.po index 843b2a267d..e94b789221 100644 --- a/l10n/it/files_encryption.po +++ b/l10n/it/files_encryption.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-05 23:20+0000\n" -"Last-Translator: Vincenzo Reale \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,28 +18,6 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Passa al tuo client ownCloud e cambia la password di cifratura per completare la conversione." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "passato alla cifratura lato client" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Converti la password di cifratura nella password di accesso" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Controlla la password e prova ancora." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Impossibile convertire la password di cifratura nella password di accesso" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Cifratura" diff --git a/l10n/it/files_trashbin.po b/l10n/it/files_trashbin.po index 8e3a6451a8..f023541c85 100644 --- a/l10n/it/files_trashbin.po +++ b/l10n/it/files_trashbin.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-07 23:30+0000\n" +"Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +18,23 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Impossibile eliminare %s definitivamente" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Impossibile ripristinare %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "esegui operazione di ripristino" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "elimina il file definitivamente" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/it/files_versions.po b/l10n/it/files_versions.po index 5bb90cec90..8953241ed5 100644 --- a/l10n/it/files_versions.po +++ b/l10n/it/files_versions.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Vincenzo Reale , 2012. +# Vincenzo Reale , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-07 23:40+0000\n" +"Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,10 +18,45 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Impossibild ripristinare: %s" + +#: history.php:40 +msgid "success" +msgstr "completata" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Il file %s è stato ripristinato alla versione %s" + +#: history.php:49 +msgid "failure" +msgstr "non riuscita" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Il file %s non può essere ripristinato alla versione %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Non sono disponibili versioni precedenti" + +#: history.php:73 +msgid "No path specified" +msgstr "Nessun percorso specificato" + #: js/versions.js:16 msgid "History" msgstr "Cronologia" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Ripristina un file a una versione precedente facendo clic sul rispettivo pulsante di ripristino" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Controllo di versione dei file" diff --git a/l10n/it/lib.po b/l10n/it/lib.po index e162e94ad3..925ddb2d35 100644 --- a/l10n/it/lib.po +++ b/l10n/it/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 06:44+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 14:51+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Aiuto" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personale" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Impostazioni" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Utenti" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Applicazioni" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Lo scaricamento in formato ZIP è stato disabilitato." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "I file devono essere scaricati uno alla volta." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Torna ai file" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "I file selezionati sono troppo grandi per generare un file zip." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "non può essere determinato" @@ -86,6 +86,103 @@ msgstr "Testo" msgid "Images" msgstr "Immagini" +#: setup.php:34 +msgid "Set an admin username." +msgstr "Imposta un nome utente di amministrazione." + +#: setup.php:37 +msgid "Set an admin password." +msgstr "Imposta una password di amministrazione." + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "Specifica una cartella dei dati." + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "%s digita il nome utente del database." + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "%s digita il nome del database." + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "%s non dovresti utilizzare punti nel nome del database" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "%s imposta l'host del database." + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "Nome utente e/o password di PostgreSQL non validi" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "È necessario inserire un account esistente o l'amministratore." + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "Nome utente e/o password di Oracle non validi" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "Nome utente e/o password di MySQL non validi" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "Errore DB: \"%s\"" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "Il comando non consentito era: \"%s\"" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "L'utente MySQL '%s'@'localhost' esiste già." + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "Elimina questo utente da MySQL" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "L'utente MySQL '%s'@'%%' esiste già" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "Elimina questo utente da MySQL." + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "Il comando non consentito era: \"%s\", nome: %s, password: %s" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Il tuo server web non è configurato correttamente per consentire la sincronizzazione dei file poiché l'interfaccia WebDAV sembra essere danneggiata." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Leggi attentamente le guide d'installazione." + #: template.php:113 msgid "seconds ago" msgstr "secondi fa" diff --git a/l10n/it/settings.po b/l10n/it/settings.po index 6b729305e4..284078f2d2 100644 --- a/l10n/it/settings.po +++ b/l10n/it/settings.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 14:51+0000\n" +"Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,14 +28,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Impossibile caricare l'elenco dall'App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Errore di autenticazione" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Impossibile cambiare il nome visualizzato" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -87,7 +87,7 @@ msgstr "Impossibile aggiungere l'utente al gruppo %s" msgid "Unable to remove user from group %s" msgstr "Impossibile rimuovere l'utente dal gruppo %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Impossibile aggiornate l'applicazione." @@ -184,99 +184,87 @@ msgstr "Supporto commerciale" msgid "You have used %s of the available %s" msgstr "Hai utilizzato %s dei %s disponibili" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Client" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Scarica client desktop" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Scarica client Android" +msgid "Get the apps to sync your files" +msgstr "Scarica le applicazioni per sincronizzare i tuoi file" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Scarica client iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Mostra nuovamente la procedura di primo avvio" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Password" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "La tua password è cambiata" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Modifica password non riuscita" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Password attuale" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nuova password" -#: templates/personal.php:28 -msgid "show" -msgstr "mostra" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Modifica password" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Nome visualizzato" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Il tuo nome visualizzato è stato cambiato" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Impossibile cambiare il tuo nome visualizzato" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Cambia il nome visualizzato" + +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Il tuo indirizzo email" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Inserisci il tuo indirizzo email per abilitare il recupero della password" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Lingua" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Migliora la traduzione" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Usa questo indirizzo per connetterti al tuo ownCloud dal tuo gestore file" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versione" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Usa TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Non utilizzare per le connessioni SSL, fallirà." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "Da non utilizzare per le connessioni LDAPS, non funzionerà." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/ja_JP/core.po b/l10n/ja_JP/core.po index 0668a44ddc..312d7f72ce 100644 --- a/l10n/ja_JP/core.po +++ b/l10n/ja_JP/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -53,8 +53,9 @@ msgid "No category to add?" msgstr "追加するカテゴリはありませんか?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "このカテゴリはすでに存在します: " +#, php-format +msgid "This category already exists: %s" +msgstr "このカテゴリはすでに存在します: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -158,59 +159,59 @@ msgstr "11月" msgid "December" msgstr "12月" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "設定" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "秒前" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 分前" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} 分前" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 時間前" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} 時間前" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "今日" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "昨日" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} 日前" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "一月前" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} 月前" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "月前" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "一年前" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "年前" @@ -469,7 +470,7 @@ msgstr "カテゴリを編集" msgid "Add" msgstr "追加" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "セキュリティ警告" @@ -479,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "セキュアな乱数生成器が利用可能ではありません。PHPのOpenSSL拡張を有効にして下さい。" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "セキュアな乱数生成器が無い場合、攻撃者はパスワードリセットのトークンを予測してアカウントを乗っ取られる可能性があります。" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "データディレクトリとファイルが恐らくインターネットからアクセスできるようになっています。ownCloudが提供する .htaccessファイルが機能していません。データディレクトリを全くアクセスできないようにするか、データディレクトリをウェブサーバのドキュメントルートの外に置くようにウェブサーバを設定することを強くお勧めします。 " +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "管理者アカウントを作成してください" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "詳細設定" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "データフォルダ" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "データベースを設定してください" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "が使用されます" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "データベースのユーザ名" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "データベースのパスワード" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "データベース名" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "データベースの表領域" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "データベースのホスト名" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "セットアップを完了します" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "管理下にあるウェブサービス" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "ログアウト" @@ -575,7 +580,7 @@ msgstr "ログイン" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "代替ログイン" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/ja_JP/files.po b/l10n/ja_JP/files.po index cd42db946c..ff098adc1b 100644 --- a/l10n/ja_JP/files.po +++ b/l10n/ja_JP/files.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -22,6 +22,20 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "%s を移動できませんでした ― この名前のファイルはすでに存在します" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "%s を移動できませんでした" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "ファイル名の変更ができません" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "ファイルは何もアップロードされていません。不明なエラー" @@ -58,8 +72,8 @@ msgid "Failed to write to disk" msgstr "ディスクへの書き込みに失敗しました" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "利用可能なスペースが十分にありません" +msgid "Not enough storage available" +msgstr "ストレージに十分な空き容量がありません" #: ajax/upload.php:83 msgid "Invalid directory." @@ -69,51 +83,52 @@ msgstr "無効なディレクトリです。" msgid "Files" msgstr "ファイル" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "共有しない" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "完全に削除する" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "削除" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "名前の変更" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "保留" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} はすでに存在しています" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "置き換え" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "推奨名称" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "キャンセル" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name} を置換" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "元に戻す" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{old_name} を {new_name} に置換" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "削除を実行" @@ -153,64 +168,60 @@ msgstr "ディレクトリもしくは0バイトのファイルはアップロ msgid "Upload Error" msgstr "アップロードエラー" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "閉じる" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "保留" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "ファイルを1つアップロード中" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} ファイルをアップロード中" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "アップロードはキャンセルされました。" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URLは空にできません。" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "無効なフォルダ名です。'Shared' の利用は ownCloud が予約済みです。" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "名前" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "サイズ" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "更新日時" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 フォルダ" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} フォルダ" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 ファイル" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} ファイル" @@ -267,8 +278,8 @@ msgid "From link" msgstr "リンク" #: templates/index.php:40 -msgid "Trash" -msgstr "ゴミ箱" +msgid "Trash bin" +msgstr "" #: templates/index.php:46 msgid "Cancel upload" @@ -282,6 +293,10 @@ msgstr "ここには何もありません。何かアップロードしてくだ msgid "Download" msgstr "ダウンロード" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "共有しない" + #: templates/index.php:105 msgid "Upload too large" msgstr "ファイルサイズが大きすぎます" diff --git a/l10n/ja_JP/files_encryption.po b/l10n/ja_JP/files_encryption.po index 95a5230904..6d5a563dfe 100644 --- a/l10n/ja_JP/files_encryption.po +++ b/l10n/ja_JP/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -19,43 +19,21 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "変換を完了するために、ownCloud クライアントに切り替えて、暗号化パスワードを変更してください。" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "クライアントサイドの暗号化に切り替えました" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "暗号化パスワードをログインパスワードに変更" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "パスワードを確認してもう一度行なってください。" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "ファイル暗号化パスワードをログインパスワードに変更できませんでした。" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "暗号化" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "ファイルの暗号化は有効です。" #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "次のファイルタイプは暗号化されません:" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "次のファイルタイプを暗号化から除外:" #: templates/settings.php:12 msgid "None" diff --git a/l10n/ja_JP/files_trashbin.po b/l10n/ja_JP/files_trashbin.po index f5fcfbe9a0..81066069c8 100644 --- a/l10n/ja_JP/files_trashbin.po +++ b/l10n/ja_JP/files_trashbin.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 04:10+0000\n" +"Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +18,23 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "%s を完全に削除出来ませんでした" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "%s を復元出来ませんでした" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "復元操作を実行する" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "ファイルを完全に削除する" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/ja_JP/files_versions.po b/l10n/ja_JP/files_versions.po index 5ebe43b485..79e1e19a46 100644 --- a/l10n/ja_JP/files_versions.po +++ b/l10n/ja_JP/files_versions.po @@ -4,14 +4,15 @@ # # Translators: # Daisuke Deguchi , 2012. +# Daisuke Deguchi , 2013. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 04:20+0000\n" +"Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +20,45 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "元に戻せませんでした: %s" + +#: history.php:40 +msgid "success" +msgstr "成功" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "ファイル %s をバージョン %s に戻しました" + +#: history.php:49 +msgid "failure" +msgstr "失敗" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "ファイル %s をバージョン %s に戻せませんでした" + +#: history.php:68 +msgid "No old versions available" +msgstr "利用可能な古いバージョンはありません" + +#: history.php:73 +msgid "No path specified" +msgstr "パスが指定されていません" + #: js/versions.js:16 msgid "History" msgstr "履歴" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "もとに戻すボタンをクリックすると、ファイルを過去のバージョンに戻します" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "ファイルのバージョン管理" diff --git a/l10n/ja_JP/lib.po b/l10n/ja_JP/lib.po index 8dca495799..b7ce6d2372 100644 --- a/l10n/ja_JP/lib.po +++ b/l10n/ja_JP/lib.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-19 00:04+0100\n" -"PO-Revision-Date: 2013-01-18 08:12+0000\n" -"Last-Translator: Daisuke Deguchi \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +19,47 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "ヘルプ" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "個人設定" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "設定" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "ユーザ" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "アプリ" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "管理者" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIPダウンロードは無効です。" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "ファイルは1つずつダウンロードする必要があります。" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "ファイルに戻る" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "選択したファイルはZIPファイルの生成には大きすぎます。" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "測定できませんでした" @@ -87,6 +87,103 @@ msgstr "TTY TDD" msgid "Images" msgstr "画像" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "秒前" diff --git a/l10n/ja_JP/settings.po b/l10n/ja_JP/settings.po index 1774eebf3f..fc4db1d928 100644 --- a/l10n/ja_JP/settings.po +++ b/l10n/ja_JP/settings.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -26,14 +26,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "アプリストアからリストをロードできません" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "認証エラー" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "表示名を変更できません" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -85,7 +85,7 @@ msgstr "ユーザをグループ %s に追加できません" msgid "Unable to remove user from group %s" msgstr "ユーザをグループ %s から削除できません" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "アプリを更新出来ませんでした。" @@ -182,99 +182,87 @@ msgstr "コマーシャルサポート" msgid "You have used %s of the available %s" msgstr "現在、%s / %s を利用しています" -#: templates/personal.php:12 -msgid "Clients" -msgstr "顧客" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "デスクトップクライアントをダウンロード" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Androidクライアントをダウンロード" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "iOSクライアントをダウンロード" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "初回実行ウィザードを再度表示する" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "パスワード" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "パスワードを変更しました" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "パスワードを変更することができません" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "現在のパスワード" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "新しいパスワード" -#: templates/personal.php:28 -msgid "show" -msgstr "表示" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "パスワードを変更" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "表示名" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "あなたの表示名を変更しました" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "あなたの表示名を変更できません" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "表示名を変更" + +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "あなたのメールアドレス" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "※パスワード回復を有効にするにはメールアドレスの入力が必要です" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "言語" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "翻訳に協力する" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "ファイルマネージャでownCloudに接続する際はこのアドレスを利用してください" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "バージョン" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 04:10+0000\n" +"Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -217,8 +217,8 @@ msgid "Use TLS" msgstr "TLSを利用" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "SSL接続に利用しないでください、失敗します。" +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "LDAPS接続のために追加でそれを利用しないで下さい。失敗します。" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/ka_GE/core.po b/l10n/ka_GE/core.po index 74de8601d7..9874547f03 100644 --- a/l10n/ka_GE/core.po +++ b/l10n/ka_GE/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -51,8 +51,9 @@ msgid "No category to add?" msgstr "არ არის კატეგორია დასამატებლად?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "კატეგორია უკვე არსებობს" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -156,59 +157,59 @@ msgstr "ნოემბერი" msgid "December" msgstr "დეკემბერი" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "პარამეტრები" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "წამის წინ" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 წუთის წინ" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} წუთის წინ" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "დღეს" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "გუშინ" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} დღის წინ" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "გასულ თვეში" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "თვის წინ" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "ბოლო წელს" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "წლის წინ" @@ -467,7 +468,7 @@ msgstr "კატეგორიების რედაქტირება" msgid "Add" msgstr "დამატება" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "უსაფრთხოების გაფრთხილება" @@ -477,71 +478,75 @@ msgid "" "OpenSSL extension." msgstr "შემთხვევითი სიმბოლოების გენერატორი არ არსებობს, გთხოვთ ჩართოთ PHP OpenSSL გაფართოება." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "შემთხვევითი სიმბოლოების გენერატორის გარეშე, შემტევმა შეიძლება ამოიცნოს თქვენი პაროლი შეგიცვალოთ ის და დაეუფლოს თქვენს ექაუნთს." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "შექმენი ადმინ ექაუნტი" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Advanced" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "მონაცემთა საქაღალდე" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "ბაზის კონფიგურირება" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "გამოყენებული იქნება" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "ბაზის მომხმარებელი" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "ბაზის პაროლი" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "ბაზის სახელი" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "ბაზის ცხრილის ზომა" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "ბაზის ჰოსტი" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "კონფიგურაციის დასრულება" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "თქვენი კონტროლის ქვეშ მყოფი ვებ სერვისები" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "გამოსვლა" diff --git a/l10n/ka_GE/files.po b/l10n/ka_GE/files.po index 828806cc05..c9b22c6c9c 100644 --- a/l10n/ka_GE/files.po +++ b/l10n/ka_GE/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,20 @@ msgstr "" "Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -54,7 +68,7 @@ msgid "Failed to write to disk" msgstr "შეცდომა დისკზე ჩაწერისას" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -65,51 +79,52 @@ msgstr "" msgid "Files" msgstr "ფაილები" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "გაზიარების მოხსნა" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "წაშლა" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "გადარქმევა" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "მოცდის რეჟიმში" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} უკვე არსებობს" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "შეცვლა" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "სახელის შემოთავაზება" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "უარყოფა" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name} შეცვლილია" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "დაბრუნება" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} შეცვლილია {old_name}–ით" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -149,64 +164,60 @@ msgstr "თქვენი ფაილის ატვირთვა ვერ msgid "Upload Error" msgstr "შეცდომა ატვირთვისას" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "დახურვა" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "მოცდის რეჟიმში" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 ფაილის ატვირთვა" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} ფაილი იტვირთება" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "ატვირთვა შეჩერებულ იქნა." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "მიმდინარეობს ფაილის ატვირთვა. სხვა გვერდზე გადასვლა გამოიწვევს ატვირთვის შეჩერებას" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "სახელი" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "ზომა" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "შეცვლილია" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 საქაღალდე" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} საქაღალდე" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 ფაილი" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} ფაილი" @@ -263,7 +274,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -278,6 +289,10 @@ msgstr "აქ არაფერი არ არის. ატვირთე msgid "Download" msgstr "ჩამოტვირთვა" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "გაზიარების მოხსნა" + #: templates/index.php:105 msgid "Upload too large" msgstr "ასატვირთი ფაილი ძალიან დიდია" diff --git a/l10n/ka_GE/files_encryption.po b/l10n/ka_GE/files_encryption.po index 3bdaa16e10..81a4932c14 100644 --- a/l10n/ka_GE/files_encryption.po +++ b/l10n/ka_GE/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/ka_GE/files_trashbin.po b/l10n/ka_GE/files_trashbin.po index b79b1af3d2..0b9d8c59f9 100644 --- a/l10n/ka_GE/files_trashbin.po +++ b/l10n/ka_GE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/ka_GE/files_versions.po b/l10n/ka_GE/files_versions.po index aafddd05a3..56f77fc852 100644 --- a/l10n/ka_GE/files_versions.po +++ b/l10n/ka_GE/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/ka_GE/lib.po b/l10n/ka_GE/lib.po index f43fa26c13..8bdb5af258 100644 --- a/l10n/ka_GE/lib.po +++ b/l10n/ka_GE/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "დახმარება" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "პირადი" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "პარამეტრები" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "მომხმარებელი" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "აპლიკაციები" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "ადმინისტრატორი" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -86,6 +86,103 @@ msgstr "ტექსტი" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "წამის წინ" diff --git a/l10n/ka_GE/settings.po b/l10n/ka_GE/settings.po index 2f73884030..39d86db4d3 100644 --- a/l10n/ka_GE/settings.po +++ b/l10n/ka_GE/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -22,12 +22,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "აპლიკაციების სია ვერ ჩამოიტვირთა App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "ავთენტიფიკაციის შეცდომა" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -81,7 +81,7 @@ msgstr "მომხმარებლის დამატება ვერ msgid "Unable to remove user from group %s" msgstr "მომხმარებლის წაშლა ვერ მოხეხდა ჯგუფიდან %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -178,99 +178,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "კლიენტები" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "პაროლი" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "თქვენი პაროლი შეიცვალა" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "თქვენი პაროლი არ შეიცვალა" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "მიმდინარე პაროლი" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "ახალი პაროლი" -#: templates/personal.php:28 -msgid "show" -msgstr "გამოაჩინე" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "პაროლის შეცვლა" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "იმეილი" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "თქვენი იმეილ მისამართი" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "შეავსეთ იმეილ მისამართის ველი პაროლის აღსადგენად" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "ენა" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "თარგმნის დახმარება" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/ko/core.po b/l10n/ko/core.po index 5f7bca9c09..72fae94a3d 100644 --- a/l10n/ko/core.po +++ b/l10n/ko/core.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -55,8 +55,9 @@ msgid "No category to add?" msgstr "추가할 분류가 없습니까?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "이 분류는 이미 존재합니다:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -160,59 +161,59 @@ msgstr "11월" msgid "December" msgstr "12월" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "설정" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "초 전" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1분 전" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes}분 전" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1시간 전" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours}시간 전" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "오늘" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "어제" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days}일 전" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "지난 달" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months}개월 전" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "개월 전" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "작년" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "년 전" @@ -471,7 +472,7 @@ msgstr "분류 편집" msgid "Add" msgstr "추가" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "보안 경고" @@ -481,71 +482,75 @@ msgid "" "OpenSSL extension." msgstr "안전한 난수 생성기를 사용할 수 없습니다. PHP의 OpenSSL 확장을 활성화해 주십시오." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "안전한 난수 생성기를 사용하지 않으면 공격자가 암호 초기화 토큰을 추측하여 계정을 탈취할 수 있습니다." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "데이터 디렉터리와 파일을 인터넷에서 접근할 수 있는 것 같습니다. ownCloud에서 제공한 .htaccess 파일이 작동하지 않습니다. 웹 서버를 다시 설정하여 데이터 디렉터리에 접근할 수 없도록 하거나 문서 루트 바깥쪽으로 옮기는 것을 추천합니다." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "관리자 계정 만들기" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "고급" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "데이터 폴더" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "데이터베이스 설정" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "사용될 예정" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "데이터베이스 사용자" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "데이터베이스 암호" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "데이터베이스 이름" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "데이터베이스 테이블 공간" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "데이터베이스 호스트" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "설치 완료" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "내가 관리하는 웹 서비스" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "로그아웃" diff --git a/l10n/ko/files.po b/l10n/ko/files.po index 6ab4e6667e..4fc91abaee 100644 --- a/l10n/ko/files.po +++ b/l10n/ko/files.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -23,6 +23,20 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "%s 항목을 이동시키지 못하였음 - 파일 이름이 이미 존재함" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "%s 항목을 이딩시키지 못하였음" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "파일 이름바꾸기 할 수 없음" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "파일이 업로드되지 않았습니다. 알 수 없는 오류입니다" @@ -59,8 +73,8 @@ msgid "Failed to write to disk" msgstr "디스크에 쓰지 못했습니다" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "여유 공간이 부족합니다" +msgid "Not enough storage available" +msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." @@ -70,51 +84,52 @@ msgstr "올바르지 않은 디렉터리입니다." msgid "Files" msgstr "파일" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "공유 해제" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "삭제" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "이름 바꾸기" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "보류 중" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name}이(가) 이미 존재함" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "바꾸기" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "이름 제안" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "취소" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name}을(를) 대체함" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "실행 취소" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{old_name}이(가) {new_name}(으)로 대체됨" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -154,64 +169,60 @@ msgstr "이 파일은 디렉터리이거나 비어 있기 때문에 업로드할 msgid "Upload Error" msgstr "업로드 오류" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "닫기" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "보류 중" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "파일 1개 업로드 중" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "파일 {count}개 업로드 중" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "업로드가 취소되었습니다." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL을 입력해야 합니다." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "폴더 이름이 유효하지 않습니다. " -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "이름" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "크기" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "수정됨" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "폴더 1개" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "폴더 {count}개" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "파일 1개" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "파일 {count}개" @@ -268,7 +279,7 @@ msgid "From link" msgstr "링크에서" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -283,6 +294,10 @@ msgstr "내용이 없습니다. 업로드할 수 있습니다!" msgid "Download" msgstr "다운로드" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "공유 해제" + #: templates/index.php:105 msgid "Upload too large" msgstr "업로드 용량 초과" diff --git a/l10n/ko/files_encryption.po b/l10n/ko/files_encryption.po index 22d55b9697..79f1c6ae60 100644 --- a/l10n/ko/files_encryption.po +++ b/l10n/ko/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -19,28 +19,6 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "ownCloud로 전환한 다음 암호화에 사용할 암호를 변경하면 변환이 완료됩니다." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "클라이언트 암호화로 변경됨" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "암호화 암호를 로그인 암호로 변경" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "암호를 확인한 다음 다시 시도하십시오." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "암호화 암호를 로그인 암호로 변경할 수 없습니다" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "암호화" diff --git a/l10n/ko/files_trashbin.po b/l10n/ko/files_trashbin.po index ad7567a005..85904a36e1 100644 --- a/l10n/ko/files_trashbin.po +++ b/l10n/ko/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/ko/files_versions.po b/l10n/ko/files_versions.po index 0fe524b770..9e99e48e77 100644 --- a/l10n/ko/files_versions.po +++ b/l10n/ko/files_versions.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -19,10 +19,45 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "역사" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "파일 버전 관리" diff --git a/l10n/ko/lib.po b/l10n/ko/lib.po index ffbaa11a4e..eeaa4b93c1 100644 --- a/l10n/ko/lib.po +++ b/l10n/ko/lib.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-31 17:02+0100\n" -"PO-Revision-Date: 2013-01-31 08:10+0000\n" -"Last-Translator: Shinjo Park \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +20,27 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "도움말" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "개인" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "설정" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "사용자" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "앱" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "관리자" @@ -88,6 +88,103 @@ msgstr "텍스트" msgid "Images" msgstr "그림" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "초 전" diff --git a/l10n/ko/settings.po b/l10n/ko/settings.po index 65a8c9d6e2..d4cfd06a0e 100644 --- a/l10n/ko/settings.po +++ b/l10n/ko/settings.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -26,12 +26,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "앱 스토어에서 목록을 가져올 수 없습니다" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "인증 오류" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -85,7 +85,7 @@ msgstr "그룹 %s에 사용자를 추가할 수 없습니다." msgid "Unable to remove user from group %s" msgstr "그룹 %s에서 사용자를 삭제할 수 없습니다." -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -182,99 +182,87 @@ msgstr "상업용 지원" msgid "You have used %s of the available %s" msgstr "현재 공간 %s/%s을(를) 사용 중입니다" -#: templates/personal.php:12 -msgid "Clients" -msgstr "클라이언트" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "데스크톱 클라이언트 다운로드" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "안드로이드 클라이언트 다운로드" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "iOS 클라이언트 다운로드" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "첫 실행 마법사 다시 보이기" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "암호" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "암호가 변경되었습니다" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "암호를 변경할 수 없음" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "현재 암호" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "새 암호" -#: templates/personal.php:28 -msgid "show" -msgstr "보이기" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "암호 변경" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "표시 이름" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "이메일" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "이메일 주소" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "암호 찾기 기능을 사용하려면 이메일 주소를 입력하십시오." -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "언어" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "번역 돕기" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "파일 관리자에서 ownCloud에 접속하려면 이 주소를 사용하십시오." -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "버전" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the , 2013. # 남자사람 , 2012. +# Harim Park , 2013. # Shinjo Park , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-03 00:04+0100\n" -"PO-Revision-Date: 2013-02-02 23:05+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:18+0000\n" +"Last-Translator: Harim Park \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -50,7 +51,7 @@ msgstr "" #: js/settings.js:83 msgid "Keep settings?" -msgstr "" +msgstr "설정을 유지합니까?" #: js/settings.js:97 msgid "Cannot add server configuration" @@ -58,11 +59,11 @@ msgstr "" #: js/settings.js:121 msgid "Connection test succeeded" -msgstr "" +msgstr "연결 시험 성공" #: js/settings.js:126 msgid "Connection test failed" -msgstr "" +msgstr "연결 시험 실패" #: js/settings.js:136 msgid "Do you really want to delete the current Server Configuration?" @@ -175,11 +176,11 @@ msgstr "자리 비움자를 사용할 수 없습니다. 예제: \"objectClass=po #: templates/settings.php:31 msgid "Connection Settings" -msgstr "" +msgstr "연결 설정" #: templates/settings.php:33 msgid "Configuration Active" -msgstr "" +msgstr "구성 활성화" #: templates/settings.php:33 msgid "When unchecked, this configuration will be skipped." @@ -191,7 +192,7 @@ msgstr "포트" #: templates/settings.php:35 msgid "Backup (Replica) Host" -msgstr "" +msgstr "백업 (복제) 포트" #: templates/settings.php:35 msgid "" @@ -201,11 +202,11 @@ msgstr "" #: templates/settings.php:36 msgid "Backup (Replica) Port" -msgstr "" +msgstr "백업 (복제) 포트" #: templates/settings.php:37 msgid "Disable Main Server" -msgstr "" +msgstr "주 서버 비활성화" #: templates/settings.php:37 msgid "When switched on, ownCloud will only connect to the replica server." @@ -216,8 +217,8 @@ msgid "Use TLS" msgstr "TLS 사용" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "SSL 연결 시 사용하는 경우 연결되지 않습니다." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" @@ -243,7 +244,7 @@ msgstr "초. 항목 변경 시 캐시가 갱신됩니다." #: templates/settings.php:43 msgid "Directory Settings" -msgstr "" +msgstr "디렉토리 설정" #: templates/settings.php:45 msgid "User Display Name Field" @@ -263,7 +264,7 @@ msgstr "사용자 DN을 한 줄에 하나씩 입력하십시오" #: templates/settings.php:47 msgid "User Search Attributes" -msgstr "" +msgstr "사용자 검색 속성" #: templates/settings.php:47 templates/settings.php:50 msgid "Optional; one attribute per line" @@ -287,7 +288,7 @@ msgstr "그룹 기본 DN을 한 줄에 하나씩 입력하십시오" #: templates/settings.php:50 msgid "Group Search Attributes" -msgstr "" +msgstr "그룹 검색 속성" #: templates/settings.php:51 msgid "Group-Member association" diff --git a/l10n/ku_IQ/core.po b/l10n/ku_IQ/core.po index 9811940473..f665ac3e0a 100644 --- a/l10n/ku_IQ/core.po +++ b/l10n/ku_IQ/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -51,7 +51,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -156,59 +157,59 @@ msgstr "" msgid "December" msgstr "" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "ده‌ستكاری" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "" @@ -467,7 +468,7 @@ msgstr "" msgid "Add" msgstr "زیادکردن" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -477,71 +478,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "هه‌ڵبژاردنی پیشكه‌وتوو" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "زانیاری فۆڵده‌ر" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "به‌كارهێنه‌ری داتابه‌یس" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "وشه‌ی نهێنی داتا به‌یس" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "ناوی داتابه‌یس" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "هۆستی داتابه‌یس" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "كۆتایی هات ده‌ستكاریه‌كان" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "ڕاژه‌ی وێب له‌ژێر چاودێریت دایه" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "چوونەدەرەوە" diff --git a/l10n/ku_IQ/files.po b/l10n/ku_IQ/files.po index 8f5359f7a0..e22bec404b 100644 --- a/l10n/ku_IQ/files.po +++ b/l10n/ku_IQ/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,20 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -53,7 +67,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -64,51 +78,52 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -148,64 +163,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "داخستن" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "ناونیشانی به‌سته‌ر نابێت به‌تاڵ بێت." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "ناو" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -262,7 +273,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -277,6 +288,10 @@ msgstr "" msgid "Download" msgstr "داگرتن" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "" diff --git a/l10n/ku_IQ/files_encryption.po b/l10n/ku_IQ/files_encryption.po index db1496b70d..25da3eec3a 100644 --- a/l10n/ku_IQ/files_encryption.po +++ b/l10n/ku_IQ/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "نهێنیکردن" diff --git a/l10n/ku_IQ/files_trashbin.po b/l10n/ku_IQ/files_trashbin.po index 5a86701073..37690656b8 100644 --- a/l10n/ku_IQ/files_trashbin.po +++ b/l10n/ku_IQ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/ku_IQ/files_versions.po b/l10n/ku_IQ/files_versions.po index b3fa1af635..d241d5d28b 100644 --- a/l10n/ku_IQ/files_versions.po +++ b/l10n/ku_IQ/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "مێژوو" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "وه‌شانی په‌ڕگه" diff --git a/l10n/ku_IQ/lib.po b/l10n/ku_IQ/lib.po index 64ee0185d3..e53da4b593 100644 --- a/l10n/ku_IQ/lib.po +++ b/l10n/ku_IQ/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "یارمەتی" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "ده‌ستكاری" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "به‌كارهێنه‌ر" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/ku_IQ/settings.po b/l10n/ku_IQ/settings.po index 7973f6b16d..0b5761e3cb 100644 --- a/l10n/ku_IQ/settings.po +++ b/l10n/ku_IQ/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -21,12 +21,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -80,7 +80,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -177,99 +177,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "وشەی تێپەربو" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "وشەی تێپەربو" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "وشەی نهێنی نوێ" -#: templates/personal.php:28 -msgid "show" -msgstr "" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "ئیمه‌یل" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/lb/core.po b/l10n/lb/core.po index 1bbbfe7cdc..a3e8cd581d 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -52,8 +52,9 @@ msgid "No category to add?" msgstr "Keng Kategorie fir bäizesetzen?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Des Kategorie existéiert schonn:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +158,59 @@ msgstr "November" msgid "December" msgstr "Dezember" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Astellungen" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "vrun 1 Stonn" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "vru {hours} Stonnen" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "Läschte Mount" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "vru {months} Méint" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "Méint hier" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "Läscht Joer" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "Joren hier" @@ -468,7 +469,7 @@ msgstr "Kategorien editéieren" msgid "Add" msgstr "Bäisetzen" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Sécherheets Warnung" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "En Admin Account uleeën" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avancéiert" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Daten Dossier" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Datebank konfiguréieren" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "wärt benotzt ginn" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Datebank Benotzer" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Datebank Passwuert" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Datebank Numm" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Datebank Tabelle-Gréisst" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Datebank Server" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Installatioun ofschléissen" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Web Servicer ënnert denger Kontroll" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Ausloggen" diff --git a/l10n/lb/files.po b/l10n/lb/files.po index 251898c3e5..fbd5a7b1bc 100644 --- a/l10n/lb/files.po +++ b/l10n/lb/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,20 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -54,7 +68,7 @@ msgid "Failed to write to disk" msgstr "Konnt net op den Disk schreiwen" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -65,51 +79,52 @@ msgstr "" msgid "Files" msgstr "Dateien" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Net méi deelen" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Läschen" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "ersetzen" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "ofbriechen" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "ersetzen" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "ofbriechen" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "réckgängeg man" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -149,64 +164,60 @@ msgstr "Kann deng Datei net eroplueden well et en Dossier ass oder 0 byte grouss msgid "Upload Error" msgstr "Fehler beim eroplueden" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Zoumaachen" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Upload ofgebrach." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "File Upload am gaang. Wann's de des Säit verléiss gëtt den Upload ofgebrach." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Numm" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Gréisst" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Geännert" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -263,7 +274,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -278,6 +289,10 @@ msgstr "Hei ass näischt. Lued eppes rop!" msgid "Download" msgstr "Eroflueden" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Net méi deelen" + #: templates/index.php:105 msgid "Upload too large" msgstr "Upload ze grouss" diff --git a/l10n/lb/files_encryption.po b/l10n/lb/files_encryption.po index c8fc462a15..6705693de9 100644 --- a/l10n/lb/files_encryption.po +++ b/l10n/lb/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/lb/files_trashbin.po b/l10n/lb/files_trashbin.po index ae9caf692e..2d2039da8d 100644 --- a/l10n/lb/files_trashbin.po +++ b/l10n/lb/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/lb/files_versions.po b/l10n/lb/files_versions.po index 3eeeda4f06..1b9a2bc1c0 100644 --- a/l10n/lb/files_versions.po +++ b/l10n/lb/files_versions.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-27 00:04+0100\n" -"PO-Revision-Date: 2013-01-26 12:27+0000\n" -"Last-Translator: sim0n \n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,10 +18,45 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Historique" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Fichier's Versionéierung " diff --git a/l10n/lb/lib.po b/l10n/lb/lib.po index b7995af644..82f5b5434d 100644 --- a/l10n/lb/lib.po +++ b/l10n/lb/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-27 00:04+0100\n" -"PO-Revision-Date: 2013-01-26 13:36+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Hëllef" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Perséinlech" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Astellungen" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "SMS" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/lb/settings.po b/l10n/lb/settings.po index 021e271d8f..635adeed39 100644 --- a/l10n/lb/settings.po +++ b/l10n/lb/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -22,12 +22,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Konnt Lescht net vum App Store lueden" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Authentifikatioun's Fehler" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -178,99 +178,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clienten" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "Passwuert" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "Passwuert" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Konnt däin Passwuert net änneren" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Momentan 't Passwuert" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Neit Passwuert" -#: templates/personal.php:28 -msgid "show" -msgstr "weisen" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Passwuert änneren" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Deng Email Adress" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Gëff eng Email Adress an fir d'Passwuert recovery ze erlaben" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Sprooch" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Hëllef iwwersetzen" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index c1773e3cf7..423db4d659 100644 --- a/l10n/lt_LT/core.po +++ b/l10n/lt_LT/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -52,8 +52,9 @@ msgid "No category to add?" msgstr "Nepridėsite jokios kategorijos?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Tokia kategorija jau yra:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +158,59 @@ msgstr "Lapkritis" msgid "December" msgstr "Gruodis" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Nustatymai" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "prieš sekundę" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "Prieš 1 minutę" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "Prieš {count} minutes" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "šiandien" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "vakar" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "Prieš {days} dienas" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "praeitą mėnesį" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "prieš mėnesį" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "praeitais metais" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "prieš metus" @@ -468,7 +469,7 @@ msgstr "Redaguoti kategorijas" msgid "Add" msgstr "Pridėti" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Saugumo pranešimas" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "Saugaus atsitiktinių skaičių generatoriaus nėra, prašome įjungti PHP OpenSSL modulį." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Be saugaus atsitiktinių skaičių generatoriaus, piktavaliai gali atspėti Jūsų slaptažodį ir pasisavinti paskyrą." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Jūsų duomenų aplankalas ir Jūsų failai turbūt yra pasiekiami per internetą. Failas .htaccess, kuris duodamas, neveikia. Mes rekomenduojame susitvarkyti savo nustatymsu taip, kad failai nebūtų pasiekiami per internetą, arba persikelti juos kitur." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Sukurti administratoriaus paskyrą" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Išplėstiniai" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Duomenų katalogas" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Nustatyti duomenų bazę" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "bus naudojama" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Duomenų bazės vartotojas" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Duomenų bazės slaptažodis" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Duomenų bazės pavadinimas" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Duomenų bazės loginis saugojimas" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Duomenų bazės serveris" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Baigti diegimą" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "jūsų valdomos web paslaugos" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Atsijungti" diff --git a/l10n/lt_LT/files.po b/l10n/lt_LT/files.po index c6bf98088b..966c0c8a34 100644 --- a/l10n/lt_LT/files.po +++ b/l10n/lt_LT/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -20,6 +20,20 @@ msgstr "" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -56,7 +70,7 @@ msgid "Failed to write to disk" msgstr "Nepavyko įrašyti į diską" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -67,51 +81,52 @@ msgstr "" msgid "Files" msgstr "Failai" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Nebesidalinti" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Ištrinti" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Pervadinti" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Laukiantis" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} jau egzistuoja" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "pakeisti" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "pasiūlyti pavadinimą" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "atšaukti" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "pakeiskite {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "anuliuoti" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "pakeiskite {new_name} į {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -151,64 +166,60 @@ msgstr "Neįmanoma įkelti failo - jo dydis gali būti 0 bitų arba tai kataloga msgid "Upload Error" msgstr "Įkėlimo klaida" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Užverti" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Laukiantis" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "įkeliamas 1 failas" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} įkeliami failai" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Įkėlimas atšauktas." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Failo įkėlimas pradėtas. Jei paliksite šį puslapį, įkėlimas nutrūks." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Pavadinimas" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Dydis" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Pakeista" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 aplankalas" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} aplankalai" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 failas" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} failai" @@ -265,7 +276,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -280,6 +291,10 @@ msgstr "Čia tuščia. Įkelkite ką nors!" msgid "Download" msgstr "Atsisiųsti" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Nebesidalinti" + #: templates/index.php:105 msgid "Upload too large" msgstr "Įkėlimui failas per didelis" diff --git a/l10n/lt_LT/files_encryption.po b/l10n/lt_LT/files_encryption.po index 6e52ef83bb..2e398b6292 100644 --- a/l10n/lt_LT/files_encryption.po +++ b/l10n/lt_LT/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Šifravimas" diff --git a/l10n/lt_LT/files_trashbin.po b/l10n/lt_LT/files_trashbin.po index 674308b81b..b5e0d72e3f 100644 --- a/l10n/lt_LT/files_trashbin.po +++ b/l10n/lt_LT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/lt_LT/files_versions.po b/l10n/lt_LT/files_versions.po index b3cf7ff9e9..42087e7e32 100644 --- a/l10n/lt_LT/files_versions.po +++ b/l10n/lt_LT/files_versions.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -19,10 +19,45 @@ msgstr "" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Istorija" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Failų versijos" diff --git a/l10n/lt_LT/lib.po b/l10n/lt_LT/lib.po index 1f676fdd4e..f27b3d7a45 100644 --- a/l10n/lt_LT/lib.po +++ b/l10n/lt_LT/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Pagalba" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Asmeniniai" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Nustatymai" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Vartotojai" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Programos" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administravimas" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP atsisiuntimo galimybė yra išjungta." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Failai turi būti parsiunčiami vienas po kito." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Atgal į Failus" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Pasirinkti failai per dideli archyvavimui į ZIP." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -87,6 +87,103 @@ msgstr "Žinučių" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "prieš kelias sekundes" diff --git a/l10n/lt_LT/settings.po b/l10n/lt_LT/settings.po index e1ef964d69..8b73d9d720 100644 --- a/l10n/lt_LT/settings.po +++ b/l10n/lt_LT/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -23,12 +23,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Neįmanoma įkelti sąrašo iš Programų Katalogo" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Autentikacijos klaida" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -82,7 +82,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -179,99 +179,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klientai" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Slaptažodis" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Jūsų slaptažodis buvo pakeistas" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Neįmanoma pakeisti slaptažodžio" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Dabartinis slaptažodis" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Naujas slaptažodis" -#: templates/personal.php:28 -msgid "show" -msgstr "rodyti" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Pakeisti slaptažodį" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "El. paštas" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Jūsų el. pašto adresas" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Pamiršto slaptažodžio atkūrimui įveskite savo el. pašto adresą" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Kalba" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Padėkite išversti" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -214,7 +214,7 @@ msgid "Use TLS" msgstr "Naudoti TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/lv/core.po b/l10n/lv/core.po index dc5ca491cf..3b10e4c5c0 100644 --- a/l10n/lv/core.po +++ b/l10n/lv/core.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 14:21+0000\n" +"Last-Translator: Rūdolfs Mazurs \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -52,8 +52,9 @@ msgid "No category to add?" msgstr "Nav kategoriju, ko pievienot?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Šāda kategorija jau eksistē:" +#, php-format +msgid "This category already exists: %s" +msgstr "Šāda kategorija jau eksistē — %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +158,59 @@ msgstr "Novembris" msgid "December" msgstr "Decembris" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Iestatījumi" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "sekundes atpakaļ" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "pirms 1 minūtes" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "pirms {minutes} minūtēm" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "pirms 1 stundas" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "pirms {hours} stundām" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "šodien" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "vakar" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "pirms {days} dienām" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "pagājušajā mēnesī" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "pirms {months} mēnešiem" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "mēnešus atpakaļ" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "gājušajā gadā" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "gadus atpakaļ" @@ -239,8 +240,8 @@ msgid "The object type is not specified." msgstr "Nav norādīts objekta tips." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Kļūda" @@ -260,7 +261,7 @@ msgstr "Dalīties" msgid "Shared" msgstr "Kopīgs" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Kļūda, daloties" @@ -356,23 +357,23 @@ msgstr "dzēst" msgid "share" msgstr "dalīties" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Aizsargāts ar paroli" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Kļūda, noņemot termiņa datumu" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Kļūda, iestatot termiņa datumu" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Sūta..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Vēstule nosūtīta" @@ -468,7 +469,7 @@ msgstr "Rediģēt kategoriju" msgid "Add" msgstr "Pievienot" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Brīdinājums par drošību" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "Nav pieejams drošs nejaušu skaitļu ģenerators. Lūdzu, aktivējiet PHP OpenSSL paplašinājumu." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Bez droša nejaušu skaitļu ģeneratora uzbrucējs var paredzēt paroļu atjaunošanas marķierus un pārņem jūsu kontu." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Jūsu datu direktorija un datnes visdrīzāk ir pieejamas no interneta. ownCloud nodrošinātā .htaccess datne nedarbojas. Mēs iesakām konfigurēt serveri tā, lai datu direktorija vairs nebūtu pieejama, vai arī pārvietojiet datu direktoriju ārpus tīmekļa servera dokumentu saknes." +"For information how to properly configure your server, please see the documentation." +msgstr "Lai uzzinātu, kā pareizi jākonfigurē šis serveris, skatiet dokumentāciju." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Izveidot administratora kontu" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Paplašināti" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datu mape" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfigurēt datubāzi" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "tiks izmantots" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Datubāzes lietotājs" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Datubāzes parole" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Datubāzes nosaukums" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Datubāzes tabulas telpa" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Datubāzes serveris" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Pabeigt iestatīšanu" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "jūsu vadībā esošie tīmekļa servisi" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Izrakstīties" @@ -574,7 +579,7 @@ msgstr "Ierakstīties" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Alternatīvās pieteikšanās" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/lv/files.po b/l10n/lv/files.po index a003b4fdf1..348038ee69 100644 --- a/l10n/lv/files.po +++ b/l10n/lv/files.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 14:21+0000\n" +"Last-Translator: Rūdolfs Mazurs \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,6 +20,20 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Nevarēja pārvietot %s — jau eksistē datne ar tādu nosaukumu" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Nevarēja pārvietot %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Nevarēja pārsaukt datni" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Netika augšupielādēta neviena datne. Nezināma kļūda" @@ -56,8 +70,8 @@ msgid "Failed to write to disk" msgstr "Neizdevās saglabāt diskā" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Nepietiek brīvas vietas" +msgid "Not enough storage available" +msgstr "Nav pietiekami daudz vietas" #: ajax/upload.php:83 msgid "Invalid directory." @@ -67,51 +81,52 @@ msgstr "Nederīga direktorija." msgid "Files" msgstr "Datnes" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Pārtraukt dalīšanos" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Dzēst pavisam" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Dzēst" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Pārsaukt" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Gaida savu kārtu" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} jau eksistē" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "aizvietot" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "ieteiktais nosaukums" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "atcelt" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "aizvietots {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "atsaukt" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "aizvietoja {new_name} ar {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "veikt dzēšanas darbību" @@ -151,64 +166,60 @@ msgstr "Nevar augšupielādēt jūsu datni, jo tā ir direktorija vai arī tās msgid "Upload Error" msgstr "Kļūda augšupielādējot" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Aizvērt" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Gaida savu kārtu" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "Augšupielādē 1 datni" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "augšupielādē {count} datnes" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Augšupielāde ir atcelta." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Notiek augšupielāde. Pametot lapu tagad, tiks atcelta augšupielāde." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL nevar būt tukšs." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nederīgs mapes nosaukums. “Koplietots” izmantojums ir rezervēts ownCloud servisam." -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Nosaukums" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Izmērs" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Mainīts" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 mape" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} mapes" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 datne" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} datnes" @@ -265,7 +276,7 @@ msgid "From link" msgstr "No saites" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "Miskaste" #: templates/index.php:46 @@ -280,6 +291,10 @@ msgstr "Te vēl nekas nav. Rīkojies, sāc augšupielādēt!" msgid "Download" msgstr "Lejupielādēt" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Pārtraukt dalīšanos" + #: templates/index.php:105 msgid "Upload too large" msgstr "Datne ir par lielu, lai to augšupielādētu" diff --git a/l10n/lv/files_encryption.po b/l10n/lv/files_encryption.po index c5f33459a2..845062cf87 100644 --- a/l10n/lv/files_encryption.po +++ b/l10n/lv/files_encryption.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 20:40+0000\n" -"Last-Translator: Rūdolfs Mazurs \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,28 +18,6 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Lūdzu, pārslēdzieties uz savu ownCloud klientu un maniet savu šifrēšanas paroli, lai pabeigtu pārveidošanu." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "Pārslēdzās uz klienta puses šifrēšanu" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Mainīt šifrēšanas paroli uz ierakstīšanās paroli" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Lūdzu, pārbaudiet savas paroles un mēģiniet vēlreiz." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Nevarēja mainīt datņu šifrēšanas paroli uz ierakstīšanās paroli" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Šifrēšana" diff --git a/l10n/lv/files_trashbin.po b/l10n/lv/files_trashbin.po index 0cd0f39d48..ef9c6063c3 100644 --- a/l10n/lv/files_trashbin.po +++ b/l10n/lv/files_trashbin.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 12:20+0000\n" +"Last-Translator: Rūdolfs Mazurs \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +18,23 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Nevarēja pilnībā izdzēst %s" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Nevarēja atjaunot %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "veikt atjaunošanu" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "dzēst datni pavisam" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/lv/files_versions.po b/l10n/lv/files_versions.po index fa500081cc..7d9e694059 100644 --- a/l10n/lv/files_versions.po +++ b/l10n/lv/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-05 00:19+0100\n" -"PO-Revision-Date: 2013-02-04 10:50+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 12:20+0000\n" "Last-Translator: Rūdolfs Mazurs \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Nevarēja atgriezt — %s" + +#: history.php:40 +msgid "success" +msgstr "veiksme" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Datne %s tika atgriezt uz versiju %s" + +#: history.php:49 +msgid "failure" +msgstr "neveiksme" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Datni %s nevarēja atgriezt uz versiju %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Nav pieejamu vecāku versiju" + +#: history.php:73 +msgid "No path specified" +msgstr "Nav norādīts ceļš" + #: js/versions.js:16 msgid "History" msgstr "Vēsture" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Atgriez datni uz iepriekšēju versiju, spiežot uz tās atgriešanas pogu" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Datņu versiju izskošana" diff --git a/l10n/lv/lib.po b/l10n/lv/lib.po index 3dd07bcc2b..645a5833c1 100644 --- a/l10n/lv/lib.po +++ b/l10n/lv/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 21:40+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 17:20+0000\n" "Last-Translator: Rūdolfs Mazurs \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -18,27 +18,27 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: app.php:313 +#: app.php:339 msgid "Help" msgstr "Palīdzība" -#: app.php:320 +#: app.php:346 msgid "Personal" msgstr "Personīgi" -#: app.php:325 +#: app.php:351 msgid "Settings" msgstr "Iestatījumi" -#: app.php:330 +#: app.php:356 msgid "Users" msgstr "Lietotāji" -#: app.php:337 +#: app.php:363 msgid "Apps" msgstr "Lietotnes" -#: app.php:339 +#: app.php:365 msgid "Admin" msgstr "Administratori" @@ -86,6 +86,103 @@ msgstr "Teksts" msgid "Images" msgstr "Attēli" +#: setup.php:34 +msgid "Set an admin username." +msgstr "Iestatiet administratora lietotājvārdu." + +#: setup.php:37 +msgid "Set an admin password." +msgstr "Iestatiet administratora paroli." + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "Norādiet datu mapi." + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "%s ievadiet datubāzes lietotājvārdu." + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "%s ievadiet datubāzes nosaukumu." + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "%s datubāžu nosaukumos nedrīkst izmantot punktus" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "%s iestatiet datubāžu serveri." + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "Nav derīga PostgreSQL parole un/vai lietotājvārds" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "Jums jāievada vai nu esošs vai administratora konts." + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "Nav derīga Oracle parole un/vai lietotājvārds" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "Nav derīga MySQL parole un/vai lietotājvārds" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "DB kļūda — “%s”" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "Vainīgā komanda bija “%s”" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "MySQL lietotājs %s'@'localhost' jau eksistē." + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "Izmest šo lietotāju no MySQL" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "MySQL lietotājs '%s'@'%%' jau eksistē" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "Izmest šo lietotāju no MySQL." + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "Vainīgā komanda bija \"%s\", vārds: %s, parole: %s" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Jūsu serveris vēl nav pareizi iestatīts, lai ļautu sinhronizēt datnes, jo izskatās, ka WebDAV saskarne ir salauzta." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Lūdzu, vēlreiz pārbaudiet instalēšanas palīdzību." + #: template.php:113 msgid "seconds ago" msgstr "sekundes atpakaļ" diff --git a/l10n/lv/settings.po b/l10n/lv/settings.po index daca3930d1..d982718513 100644 --- a/l10n/lv/settings.po +++ b/l10n/lv/settings.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 17:10+0000\n" +"Last-Translator: Rūdolfs Mazurs \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,14 +24,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Nevar lejupielādēt sarakstu no lietotņu veikala" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Autentifikācijas kļūda" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Nevarēja mainīt redzamo vārdu" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -83,7 +83,7 @@ msgstr "Nevar pievienot lietotāju grupai %s" msgid "Unable to remove user from group %s" msgstr "Nevar izņemt lietotāju no grupas %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Nevarēja atjaunināt lietotni." @@ -180,99 +180,87 @@ msgstr "Komerciālais atbalsts" msgid "You have used %s of the available %s" msgstr "Jūs lietojat %s no pieejamajiem %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klienti" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Lejupielādēt darbvirsmas klientus" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Lejupielādēt Android klientu" +msgid "Get the apps to sync your files" +msgstr "Saņem lietotnes, lai sinhronizētu savas datnes" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Lejupielādēt iOS klientu" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Vēlreiz rādīt pirmās palaišanas vedni" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Parole" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Jūru parole tika nomainīta" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Nevar nomainīt jūsu paroli" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Pašreizējā parole" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Jauna parole" -#: templates/personal.php:28 -msgid "show" -msgstr "parādīt" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Mainīt paroli" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Redzamais vārds" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Jūsu redzamais vārds tika mainīts" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Nevarēja mainīt jūsu redzamo vārdu" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Mainīt redzamo vārdu" + +#: templates/personal.php:68 msgid "Email" msgstr "E-pasts" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Jūsu e-pasta adrese" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Ievadiet epasta adresi, lai vēlāk varētu atgūt paroli, ja būs nepieciešamība" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Valoda" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Palīdzi tulkot" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Izmanto šo adresi, lai, izmantojot datņu pārvaldnieku, savienotos ar savu ownCloud" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versija" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "Lietot TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Neizmanto to SSL savienojumiem, tas neizdosies." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "Neizmanto papildu LDAPS savienojumus! Tas nestrādās." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/mk/core.po b/l10n/mk/core.po index 907d9476d3..547295277d 100644 --- a/l10n/mk/core.po +++ b/l10n/mk/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -53,8 +53,9 @@ msgid "No category to add?" msgstr "Нема категорија да се додаде?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Оваа категорија веќе постои:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -158,59 +159,59 @@ msgstr "Ноември" msgid "December" msgstr "Декември" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Поставки" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "пред секунди" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "пред 1 минута" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "пред {minutes} минути" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "пред 1 час" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "пред {hours} часови" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "денеска" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "вчера" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "пред {days} денови" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "минатиот месец" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "пред {months} месеци" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "пред месеци" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "минатата година" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "пред години" @@ -469,7 +470,7 @@ msgstr "Уреди категории" msgid "Add" msgstr "Додади" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Безбедносно предупредување" @@ -479,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "Не е достапен безбеден генератор на случајни броеви, Ве молам озвоможете го OpenSSL PHP додатокот." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Без сигурен генератор на случајни броеви напаѓач може да ги предвиди жетоните за ресетирање на лозинка и да преземе контрола врз Вашата сметка. " +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Вашата папка со податоци и датотеките е најверојатно достапна од интернет. .htaccess датотеката што ја овозможува ownCloud не фунционира. Силно препорачуваме да го исконфигурирате вашиот сервер за вашата папка со податоци не е достапна преку интернетт или преместете ја надвор од коренот на веб серверот." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Направете администраторска сметка" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Напредно" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Фолдер со податоци" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Конфигурирај ја базата" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "ќе биде користено" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Корисник на база" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Лозинка на база" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Име на база" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Табела во базата на податоци" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Сервер со база" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Заврши го подесувањето" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "веб сервиси под Ваша контрола" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Одјава" diff --git a/l10n/mk/files.po b/l10n/mk/files.po index 040ed8a2a7..1d5a2ed386 100644 --- a/l10n/mk/files.po +++ b/l10n/mk/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -20,6 +20,20 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Ниту еден фајл не се вчита. Непозната грешка" @@ -56,7 +70,7 @@ msgid "Failed to write to disk" msgstr "Неуспеав да запишам на диск" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -67,51 +81,52 @@ msgstr "" msgid "Files" msgstr "Датотеки" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Не споделувај" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Избриши" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Преименувај" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Чека" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} веќе постои" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "замени" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "предложи име" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "откажи" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "земенета {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "врати" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "заменета {new_name} со {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -151,64 +166,60 @@ msgstr "Не може да се преземе вашата датотека б msgid "Upload Error" msgstr "Грешка при преземање" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Затвои" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Чека" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 датотека се подига" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} датотеки се подигаат" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Преземањето е прекинато." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Подигање на датотека е во тек. Напуштење на страницата ќе го прекине." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Адресата неможе да биде празна." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Име" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Големина" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Променето" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 папка" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} папки" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 датотека" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} датотеки" @@ -265,7 +276,7 @@ msgid "From link" msgstr "Од врска" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -280,6 +291,10 @@ msgstr "Тука нема ништо. Снимете нешто!" msgid "Download" msgstr "Преземи" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Не споделувај" + #: templates/index.php:105 msgid "Upload too large" msgstr "Датотеката е премногу голема" diff --git a/l10n/mk/files_encryption.po b/l10n/mk/files_encryption.po index 56ed5df95c..3eab97885b 100644 --- a/l10n/mk/files_encryption.po +++ b/l10n/mk/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Енкрипција" diff --git a/l10n/mk/files_trashbin.po b/l10n/mk/files_trashbin.po index 99097d14e0..6fe48847d7 100644 --- a/l10n/mk/files_trashbin.po +++ b/l10n/mk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/mk/files_versions.po b/l10n/mk/files_versions.po index 3f4e68131e..3ea9e4d20c 100644 --- a/l10n/mk/files_versions.po +++ b/l10n/mk/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Историја" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Верзии на датотеки" diff --git a/l10n/mk/lib.po b/l10n/mk/lib.po index ada3766072..ca43b14fec 100644 --- a/l10n/mk/lib.po +++ b/l10n/mk/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Помош" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Лично" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Параметри" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Корисници" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Аппликации" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Админ" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Преземање во ZIP е исклучено" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Датотеките треба да се симнат една по една." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Назад кон датотеки" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Избраните датотеки се преголеми за да се генерира zip." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -86,6 +86,103 @@ msgstr "Текст" msgid "Images" msgstr "Слики" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "пред секунди" diff --git a/l10n/mk/settings.po b/l10n/mk/settings.po index f441c26ada..a53f1fbe2c 100644 --- a/l10n/mk/settings.po +++ b/l10n/mk/settings.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Неможам да вчитам листа од App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Грешка во автентикација" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -83,7 +83,7 @@ msgstr "Неможе да додадам корисник во група %s" msgid "Unable to remove user from group %s" msgstr "Неможе да избришам корисник од група %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -180,99 +180,87 @@ msgstr "Комерцијална подршка" msgid "You have used %s of the available %s" msgstr "Имате искористено %s од достапните %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Клиенти" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Преземи клиенти за десктоп" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Преземи клиент за Андроид" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Преземи iOS клиент" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Лозинка" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Вашата лозинка беше променета." -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Вашата лозинка неможе да се смени" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Моментална лозинка" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Нова лозинка" -#: templates/personal.php:28 -msgid "show" -msgstr "прикажи" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Смени лозинка" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Е-пошта" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Вашата адреса за е-пошта" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Пополни ја адресата за е-пошта за да може да ја обновуваш лозинката" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Јазик" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Помогни во преводот" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Користете ја оваа адреса да " -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Верзија" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -214,7 +214,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/ms_MY/core.po b/l10n/ms_MY/core.po index 239b6a5dd6..e52ed67030 100644 --- a/l10n/ms_MY/core.po +++ b/l10n/ms_MY/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -53,8 +53,9 @@ msgid "No category to add?" msgstr "Tiada kategori untuk di tambah?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Kategori ini telah wujud" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -158,59 +159,59 @@ msgstr "November" msgid "December" msgstr "Disember" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Tetapan" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "" @@ -469,7 +470,7 @@ msgstr "Edit kategori" msgid "Add" msgstr "Tambah" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Amaran keselamatan" @@ -479,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "buat akaun admin" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Maju" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Fail data" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfigurasi pangkalan data" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "akan digunakan" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Nama pengguna pangkalan data" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Kata laluan pangkalan data" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nama pangkalan data" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Hos pangkalan data" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Setup selesai" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Perkhidmatan web di bawah kawalan anda" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Log keluar" diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po index d27c0cdafb..8498ceb302 100644 --- a/l10n/ms_MY/files.po +++ b/l10n/ms_MY/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -21,6 +21,20 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Tiada fail dimuatnaik. Ralat tidak diketahui." @@ -57,7 +71,7 @@ msgid "Failed to write to disk" msgstr "Gagal untuk disimpan" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -68,51 +82,52 @@ msgstr "" msgid "Files" msgstr "fail" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Padam" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Dalam proses" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "ganti" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "Batal" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -152,64 +167,60 @@ msgstr "Tidak boleh memuatnaik fail anda kerana mungkin ianya direktori atau sai msgid "Upload Error" msgstr "Muat naik ralat" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Tutup" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Dalam proses" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Muatnaik dibatalkan." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nama " -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Saiz" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Dimodifikasi" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -266,7 +277,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -281,6 +292,10 @@ msgstr "Tiada apa-apa di sini. Muat naik sesuatu!" msgid "Download" msgstr "Muat turun" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "Muat naik terlalu besar" diff --git a/l10n/ms_MY/files_encryption.po b/l10n/ms_MY/files_encryption.po index 5c9ecb2f22..b87b0fa030 100644 --- a/l10n/ms_MY/files_encryption.po +++ b/l10n/ms_MY/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/ms_MY/files_trashbin.po b/l10n/ms_MY/files_trashbin.po index 7ae2747a24..047d892067 100644 --- a/l10n/ms_MY/files_trashbin.po +++ b/l10n/ms_MY/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/ms_MY/files_versions.po b/l10n/ms_MY/files_versions.po index 389afec231..c6fa87619d 100644 --- a/l10n/ms_MY/files_versions.po +++ b/l10n/ms_MY/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/ms_MY/lib.po b/l10n/ms_MY/lib.po index 5365e602ba..ff74402b4c 100644 --- a/l10n/ms_MY/lib.po +++ b/l10n/ms_MY/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 21:57+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Bantuan" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Peribadi" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Tetapan" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Pengguna" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "Teks" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/ms_MY/settings.po b/l10n/ms_MY/settings.po index b04dd7bcb1..9ddacb0a78 100644 --- a/l10n/ms_MY/settings.po +++ b/l10n/ms_MY/settings.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -25,12 +25,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Ralat pengesahan" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -84,7 +84,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -181,99 +181,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "klien" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "Kata laluan " - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "Kata laluan " + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Gagal mengubah kata laluan anda " -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Kata laluan semasa" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Kata laluan baru" -#: templates/personal.php:28 -msgid "show" -msgstr "Papar" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Ubah kata laluan" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Emel" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Alamat emel anda" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Isi alamat emel anda untuk membolehkan pemulihan kata laluan" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Bahasa" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Bantu terjemah" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/nb_NO/core.po b/l10n/nb_NO/core.po index d5c9ee553a..014392c6d2 100644 --- a/l10n/nb_NO/core.po +++ b/l10n/nb_NO/core.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -57,8 +57,9 @@ msgid "No category to add?" msgstr "Ingen kategorier å legge til?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Denne kategorien finnes allerede:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -162,59 +163,59 @@ msgstr "November" msgid "December" msgstr "Desember" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Innstillinger" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "sekunder siden" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 minutt siden" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} minutter siden" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 time siden" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} timer siden" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "i dag" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "i går" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} dager siden" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "forrige måned" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} måneder siden" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "måneder siden" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "forrige år" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "år siden" @@ -473,7 +474,7 @@ msgstr "Rediger kategorier" msgid "Add" msgstr "Legg til" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Sikkerhetsadvarsel" @@ -483,71 +484,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "opprett en administrator-konto" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avansert" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datamappe" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfigurer databasen" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "vil bli brukt" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Databasebruker" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Databasepassord" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Databasenavn" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Database tabellområde" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Databasevert" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Fullfør oppsetting" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "nettjenester under din kontroll" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Logg ut" diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index eb59e0831f..885b07c549 100644 --- a/l10n/nb_NO/files.po +++ b/l10n/nb_NO/files.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -26,6 +26,20 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Ingen filer ble lastet opp. Ukjent feil." @@ -62,7 +76,7 @@ msgid "Failed to write to disk" msgstr "Klarte ikke å skrive til disk" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -73,51 +87,52 @@ msgstr "" msgid "Files" msgstr "Filer" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Avslutt deling" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Slett" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Omdøp" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Ventende" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} finnes allerede" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "erstatt" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "foreslå navn" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "avbryt" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "erstatt {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "angre" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "erstatt {new_name} med {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -157,64 +172,60 @@ msgstr "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes msgid "Upload Error" msgstr "Opplasting feilet" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Lukk" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Ventende" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 fil lastes opp" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} filer laster opp" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Opplasting avbrutt." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL-en kan ikke være tom." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Navn" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Størrelse" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Endret" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 mappe" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} mapper" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 fil" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} filer" @@ -271,7 +282,7 @@ msgid "From link" msgstr "Fra link" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -286,6 +297,10 @@ msgstr "Ingenting her. Last opp noe!" msgid "Download" msgstr "Last ned" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Avslutt deling" + #: templates/index.php:105 msgid "Upload too large" msgstr "Opplasting for stor" diff --git a/l10n/nb_NO/files_encryption.po b/l10n/nb_NO/files_encryption.po index c8657a91e1..7be43b41df 100644 --- a/l10n/nb_NO/files_encryption.po +++ b/l10n/nb_NO/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Kryptering" diff --git a/l10n/nb_NO/files_trashbin.po b/l10n/nb_NO/files_trashbin.po index c2c66d6ca1..96d6a05b9d 100644 --- a/l10n/nb_NO/files_trashbin.po +++ b/l10n/nb_NO/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/nb_NO/files_versions.po b/l10n/nb_NO/files_versions.po index 38f8fbe36f..4441ba7870 100644 --- a/l10n/nb_NO/files_versions.po +++ b/l10n/nb_NO/files_versions.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -19,10 +19,45 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Historie" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Fil versjonering" diff --git a/l10n/nb_NO/lib.po b/l10n/nb_NO/lib.po index 4de8700485..440e6fdc28 100644 --- a/l10n/nb_NO/lib.po +++ b/l10n/nb_NO/lib.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -22,47 +22,47 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Hjelp" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personlig" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Innstillinger" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Brukere" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Apper" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP-nedlasting av avslått" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Filene må lastes ned en om gangen" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Tilbake til filer" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "De valgte filene er for store til å kunne generere ZIP-fil" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -90,6 +90,103 @@ msgstr "Tekst" msgid "Images" msgstr "Bilder" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "sekunder siden" diff --git a/l10n/nb_NO/settings.po b/l10n/nb_NO/settings.po index f96018e116..d032a85c9b 100644 --- a/l10n/nb_NO/settings.po +++ b/l10n/nb_NO/settings.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -29,12 +29,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Lasting av liste fra App Store feilet." -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Autentikasjonsfeil" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -88,7 +88,7 @@ msgstr "Kan ikke legge bruker til gruppen %s" msgid "Unable to remove user from group %s" msgstr "Kan ikke slette bruker fra gruppen %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -185,99 +185,87 @@ msgstr "Kommersiell støtte" msgid "You have used %s of the available %s" msgstr "Du har brukt %s av tilgjengelig %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klienter" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Last ned skrivebordsklienter" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Last ned Android-klient" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Last ned iOS-klient" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Passord" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Passord har blitt endret" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Kunne ikke endre passordet ditt" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Nåværende passord" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nytt passord" -#: templates/personal.php:28 -msgid "show" -msgstr "vis" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Endre passord" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "E-post" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Din e-postadresse" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Oppi epostadressen du vil tilbakestille passordet for" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Språk" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Bidra til oversettelsen" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versjon" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "Bruk TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Ikke bruk for SSL tilkoblinger, dette vil ikke fungere." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/nl/core.po b/l10n/nl/core.po index 84dd24a065..2fe64d46ba 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/core.po @@ -21,9 +21,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:20+0000\n" +"Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -64,8 +64,9 @@ msgid "No category to add?" msgstr "Geen categorie toevoegen?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Deze categorie bestaat al." +#, php-format +msgid "This category already exists: %s" +msgstr "Deze categorie bestaat al: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -169,59 +170,59 @@ msgstr "november" msgid "December" msgstr "december" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Instellingen" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "seconden geleden" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "1 minuut geleden" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "{minutes} minuten geleden" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "1 uur geleden" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "{hours} uren geleden" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "vandaag" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "gisteren" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "{days} dagen geleden" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "vorige maand" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "{months} maanden geleden" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "maanden geleden" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "vorig jaar" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "jaar geleden" @@ -251,8 +252,8 @@ msgid "The object type is not specified." msgstr "Het object type is niet gespecificeerd." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Fout" @@ -264,15 +265,15 @@ msgstr "De app naam is niet gespecificeerd." msgid "The required file {file} is not installed!" msgstr "Het vereiste bestand {file} is niet geïnstalleerd!" -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 -msgid "Share" -msgstr "Delen" - -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +#: js/share.js:29 js/share.js:43 js/share.js:90 msgid "Shared" msgstr "Gedeeld" -#: js/share.js:141 js/share.js:611 +#: js/share.js:93 +msgid "Share" +msgstr "Delen" + +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Fout tijdens het delen" @@ -368,23 +369,23 @@ msgstr "verwijderen" msgid "share" msgstr "deel" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Wachtwoord beveiligd" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Fout tijdens het verwijderen van de verval datum" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Fout tijdens het instellen van de vervaldatum" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Versturen ..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "E-mail verzonden" @@ -480,7 +481,7 @@ msgstr "Wijzigen categorieën" msgid "Add" msgstr "Toevoegen" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Beveiligingswaarschuwing" @@ -490,71 +491,75 @@ msgid "" "OpenSSL extension." msgstr "Er kon geen willekeurig nummer worden gegenereerd. Zet de PHP OpenSSL extentie aan." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "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." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Uw gegevensdirectory en bestanden zijn vermoedelijk bereikbaar vanaf het internet omdat het .htaccess bestand niet werkt." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Uw data is waarschijnlijk toegankelijk vanaf net internet. Het .htaccess bestand dat ownCloud levert werkt niet goed. U wordt aangeraden om de configuratie van uw webserver zodanig aan te passen dat de data folders niet meer publiekelijk toegankelijk zijn. U kunt ook de data folder verplaatsen naar een folder buiten de webserver document folder." +"For information how to properly configure your server, please see the documentation." +msgstr "Informatie over het configureren van uw server is hier te vinden documentatie." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Maak een beheerdersaccount aan" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Geavanceerd" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Gegevensmap" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configureer de database" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "zal gebruikt worden" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Gebruiker database" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Wachtwoord database" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Naam database" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Database tablespace" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Database server" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Installatie afronden" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Webdiensten in eigen beheer" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Afmelden" @@ -586,7 +591,7 @@ msgstr "Meld je aan" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Alternatieve inlogs" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/nl/files.po b/l10n/nl/files.po index f21914fb29..c54526b0b0 100644 --- a/l10n/nl/files.po +++ b/l10n/nl/files.po @@ -19,9 +19,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:26+0000\n" +"Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,6 +29,20 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Kon %s niet verplaatsen - Er bestaat al een bestand met deze naam" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Kon %s niet verplaatsen" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Kan bestand niet hernoemen" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Er was geen bestand geladen. Onbekende fout" @@ -65,8 +79,8 @@ msgid "Failed to write to disk" msgstr "Schrijven naar schijf mislukt" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Niet genoeg ruimte beschikbaar" +msgid "Not enough storage available" +msgstr "Niet genoeg opslagruimte beschikbaar" #: ajax/upload.php:83 msgid "Invalid directory." @@ -76,51 +90,52 @@ msgstr "Ongeldige directory." msgid "Files" msgstr "Bestanden" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Stop delen" - -#: js/fileactions.js:119 +#: js/fileactions.js:125 msgid "Delete permanently" -msgstr "" +msgstr "Verwijder definitief" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:127 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Verwijder" -#: js/fileactions.js:187 +#: js/fileactions.js:193 msgid "Rename" msgstr "Hernoem" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Wachten" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} bestaat al" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "vervang" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "Stel een naam voor" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "annuleren" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "verving {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "ongedaan maken" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "verving {new_name} met {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "uitvoeren verwijderactie" @@ -160,64 +175,60 @@ msgstr "uploaden van de file mislukt, het is of een directory of de bestandsgroo msgid "Upload Error" msgstr "Upload Fout" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Sluit" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Wachten" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 bestand wordt ge-upload" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} bestanden aan het uploaden" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Uploaden geannuleerd." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL kan niet leeg zijn." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Ongeldige mapnaam. Gebruik van'Gedeeld' is voorbehouden aan Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Naam" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Bestandsgrootte" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Laatst aangepast" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 map" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} mappen" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 bestand" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} bestanden" @@ -274,8 +285,8 @@ msgid "From link" msgstr "Vanaf link" #: templates/index.php:40 -msgid "Trash" -msgstr "Verwijderen" +msgid "Trash bin" +msgstr "Prullenbak" #: templates/index.php:46 msgid "Cancel upload" @@ -289,6 +300,10 @@ msgstr "Er bevindt zich hier niets. Upload een bestand!" msgid "Download" msgstr "Download" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Stop delen" + #: templates/index.php:105 msgid "Upload too large" msgstr "Bestanden te groot" diff --git a/l10n/nl/files_encryption.po b/l10n/nl/files_encryption.po index 4aafb1900d..c287efb9f7 100644 --- a/l10n/nl/files_encryption.po +++ b/l10n/nl/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# André Koot , 2013. # Lennart Weijl , 2013. # Richard Bos , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -19,43 +20,21 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "overgeschakeld naar client side encryptie" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Verander encryptie wachtwoord naar login wachtwoord" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Controleer uw wachtwoorden en probeer het opnieuw." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Kon het bestandsencryptie wachtwoord niet veranderen naar het login wachtwoord" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Versleuteling" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "Bestandsversleuteling geactiveerd." #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "De volgende bestandstypen zullen niet worden versleuteld:" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Sluit de volgende bestandstypen uit van versleuteling:" #: templates/settings.php:12 msgid "None" diff --git a/l10n/nl/files_trashbin.po b/l10n/nl/files_trashbin.po index 14b518d6dd..7a6c132004 100644 --- a/l10n/nl/files_trashbin.po +++ b/l10n/nl/files_trashbin.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:26+0000\n" +"Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +18,23 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Kon %s niet permanent verwijderen" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Kon %s niet herstellen" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "uitvoeren restore operatie" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "verwijder bestanden definitief" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/nl/files_versions.po b/l10n/nl/files_versions.po index 95169bacce..075855ed84 100644 --- a/l10n/nl/files_versions.po +++ b/l10n/nl/files_versions.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# André Koot , 2013. # Richard Bos , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:35+0000\n" +"Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,10 +19,45 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Kon niet terugdraaien: %s" + +#: history.php:40 +msgid "success" +msgstr "succes" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Bestand %s is teruggedraaid naar versie %s" + +#: history.php:49 +msgid "failure" +msgstr "mislukking" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Bestand %s kon niet worden teruggedraaid naar versie %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Geen oudere versies beschikbaar" + +#: history.php:73 +msgid "No path specified" +msgstr "Geen pad opgegeven" + #: js/versions.js:16 msgid "History" msgstr "Geschiedenis" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Draai een bestand terug naar een voorgaande versie door te klikken op de terugdraai knop" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Bestand versies" diff --git a/l10n/nl/lib.po b/l10n/nl/lib.po index 2ae038b9e4..2265897161 100644 --- a/l10n/nl/lib.po +++ b/l10n/nl/lib.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-19 00:04+0100\n" -"PO-Revision-Date: 2013-01-18 09:03+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 21:18+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -21,47 +21,47 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Help" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Persoonlijk" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Instellingen" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Gebruikers" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Apps" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Beheerder" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP download is uitgeschakeld." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Bestanden moeten één voor één worden gedownload." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Terug naar bestanden" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "De geselecteerde bestanden zijn te groot om een zip bestand te maken." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "kon niet worden vastgesteld" @@ -89,6 +89,103 @@ msgstr "Tekst" msgid "Images" msgstr "Afbeeldingen" +#: setup.php:34 +msgid "Set an admin username." +msgstr "Stel de gebruikersnaam van de beheerder in." + +#: setup.php:37 +msgid "Set an admin password." +msgstr "Stel een beheerderswachtwoord in." + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "Geef een datamap op." + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "%s opgeven database gebruikersnaam." + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "%s opgeven databasenaam." + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "%s er mogen geen puntjes in de databasenaam voorkomen" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "%s instellen databaseservernaam." + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "PostgreSQL gebruikersnaam en/of wachtwoord ongeldig" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "Geef of een bestaand account op of het beheerdersaccount." + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "Oracle gebruikersnaam en/of wachtwoord ongeldig" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "MySQL gebruikersnaam en/of wachtwoord ongeldig" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "DB Fout: \"%s\"" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "Onjuiste commande was: \"%s\"" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "MySQL gebruiker '%s'@'localhost' bestaat al." + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "Verwijder deze gebruiker uit MySQL" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "MySQL gebruiker '%s'@'%%' bestaat al" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "Verwijder deze gebruiker uit MySQL." + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "Onjuiste commando was: \"%s\", naam: %s, wachtwoord: %s" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Uw webserver is nog niet goed ingesteld voor bestandssynchronisatie omdat de WebDAV interface verbroken lijkt." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Conntroleer de installatie handleiding goed." + #: template.php:113 msgid "seconds ago" msgstr "seconden geleden" diff --git a/l10n/nl/settings.po b/l10n/nl/settings.po index 86d93f44aa..051ea6f1f1 100644 --- a/l10n/nl/settings.po +++ b/l10n/nl/settings.po @@ -18,9 +18,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:24+0000\n" +"Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,14 +32,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Kan de lijst niet van de App store laden" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Authenticatie fout" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Kon de weergavenaam niet wijzigen" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -91,7 +91,7 @@ msgstr "Niet in staat om gebruiker toe te voegen aan groep %s" msgid "Unable to remove user from group %s" msgstr "Niet in staat om gebruiker te verwijderen uit groep %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Kon de app niet bijwerken." @@ -113,7 +113,7 @@ msgstr "Even geduld aub...." #: js/apps.js:84 msgid "Updating...." -msgstr "" +msgstr "Bijwerken...." #: js/apps.js:87 msgid "Error while updating app" @@ -188,99 +188,87 @@ msgstr "Commerciële ondersteuning" msgid "You have used %s of the available %s" msgstr "U heeft %s van de %s beschikbaren gebruikt" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klanten" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Download Desktop Clients" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Download Android Client" +msgid "Get the apps to sync your files" +msgstr "Download de apps om bestanden te synchen" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Download iOS Client" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Toon de Eerste start Wizard opnieuw" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Wachtwoord" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Je wachtwoord is veranderd" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Niet in staat om uw wachtwoord te wijzigen" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Huidig wachtwoord" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nieuw wachtwoord" -#: templates/personal.php:28 -msgid "show" -msgstr "weergeven" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Wijzig wachtwoord" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Weergavenaam" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Uw weergavenaam is gewijzigd" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Kon de weergavenaam niet wijzigen" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Wijzig weergavenaam" + +#: templates/personal.php:68 msgid "Email" msgstr "E-mailadres" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Uw e-mailadres" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Vul een e-mailadres in om wachtwoord reset uit te kunnen voeren" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Taal" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Help met vertalen" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Gebruik dit adres om te verbinden met uw ownCloud in uw bestandsbeheer" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versie" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:25+0000\n" +"Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,7 +32,7 @@ msgstr "De configuratie is geldig en de verbinding is geslaagd!" msgid "" "The configuration is valid, but the Bind failed. Please check the server " "settings and credentials." -msgstr "" +msgstr "De configuratie is geldig, maar Bind mislukte. Controleer de serverinstellingen en inloggegevens." #: ajax/testConfiguration.php:40 msgid "" @@ -175,7 +175,7 @@ msgstr "zonder een placeholder, bijv. \"objectClass=posixGroup\"" #: templates/settings.php:31 msgid "Connection Settings" -msgstr "" +msgstr "Verbindingsinstellingen" #: templates/settings.php:33 msgid "Configuration Active" @@ -183,7 +183,7 @@ msgstr "Configuratie actief" #: templates/settings.php:33 msgid "When unchecked, this configuration will be skipped." -msgstr "" +msgstr "Als dit niet is ingeschakeld wordt deze configuratie overgeslagen." #: templates/settings.php:34 msgid "Port" @@ -197,7 +197,7 @@ msgstr "Backup (Replica) Host" msgid "" "Give an optional backup host. It must be a replica of the main LDAP/AD " "server." -msgstr "" +msgstr "Opgeven optionele backup host. Het moet een replica van de hoofd LDAP/AD server." #: templates/settings.php:36 msgid "Backup (Replica) Port" @@ -216,8 +216,8 @@ msgid "Use TLS" msgstr "Gebruik TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Gebruik niet voor SSL connecties, deze mislukken." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "Gebruik het niet voor LDAPS verbindingen, dat gaat niet lukken." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" @@ -243,7 +243,7 @@ msgstr "in seconden. Een verandering maakt de cache leeg." #: templates/settings.php:43 msgid "Directory Settings" -msgstr "" +msgstr "Mapinstellingen" #: templates/settings.php:45 msgid "User Display Name Field" @@ -263,7 +263,7 @@ msgstr "Een User Base DN per regel" #: templates/settings.php:47 msgid "User Search Attributes" -msgstr "" +msgstr "Attributen voor gebruikerszoekopdrachten" #: templates/settings.php:47 templates/settings.php:50 msgid "Optional; one attribute per line" @@ -287,7 +287,7 @@ msgstr "Een Group Base DN per regel" #: templates/settings.php:50 msgid "Group Search Attributes" -msgstr "" +msgstr "Attributen voor groepszoekopdrachten" #: templates/settings.php:51 msgid "Group-Member association" @@ -295,7 +295,7 @@ msgstr "Groepslid associatie" #: templates/settings.php:53 msgid "Special Attributes" -msgstr "" +msgstr "Speciale attributen" #: templates/settings.php:56 msgid "in bytes" diff --git a/l10n/nn_NO/core.po b/l10n/nn_NO/core.po index f9d7583a1a..9146472fcc 100644 --- a/l10n/nn_NO/core.po +++ b/l10n/nn_NO/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -52,7 +52,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -157,59 +158,59 @@ msgstr "November" msgid "December" msgstr "Desember" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Innstillingar" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "" @@ -468,7 +469,7 @@ msgstr "" msgid "Add" msgstr "Legg til" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Lag ein admin-konto" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avansert" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datamappe" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfigurer databasen" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "vil bli nytta" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Databasebrukar" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Databasepassord" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Databasenamn" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Databasetenar" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Fullfør oppsettet" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Vev tjenester under din kontroll" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Logg ut" diff --git a/l10n/nn_NO/files.po b/l10n/nn_NO/files.po index 555ee14359..67550c2332 100644 --- a/l10n/nn_NO/files.po +++ b/l10n/nn_NO/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -19,6 +19,20 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -55,7 +69,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -66,51 +80,52 @@ msgstr "" msgid "Files" msgstr "Filer" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Slett" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -150,64 +165,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Lukk" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Namn" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Storleik" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Endra" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -264,7 +275,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -279,6 +290,10 @@ msgstr "Ingenting her. Last noko opp!" msgid "Download" msgstr "Last ned" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "For stor opplasting" diff --git a/l10n/nn_NO/files_encryption.po b/l10n/nn_NO/files_encryption.po index 4db0ffa21b..5b5ba56793 100644 --- a/l10n/nn_NO/files_encryption.po +++ b/l10n/nn_NO/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/nn_NO/files_trashbin.po b/l10n/nn_NO/files_trashbin.po index 9047a8f1ce..ba74bb698b 100644 --- a/l10n/nn_NO/files_trashbin.po +++ b/l10n/nn_NO/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/nn_NO/files_versions.po b/l10n/nn_NO/files_versions.po index 3d20ded946..3ed063fcb5 100644 --- a/l10n/nn_NO/files_versions.po +++ b/l10n/nn_NO/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/nn_NO/lib.po b/l10n/nn_NO/lib.po index 5d33fc1e80..609a1a3624 100644 --- a/l10n/nn_NO/lib.po +++ b/l10n/nn_NO/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Hjelp" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personleg" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Innstillingar" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Brukarar" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "Tekst" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/nn_NO/settings.po b/l10n/nn_NO/settings.po index 0d0f12e96e..3fc74b3f42 100644 --- a/l10n/nn_NO/settings.po +++ b/l10n/nn_NO/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -23,12 +23,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Klarer ikkje å laste inn liste fra App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Feil i autentisering" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -82,7 +82,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -179,99 +179,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klientar" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "Passord" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "Passord" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Klarte ikkje å endra passordet" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Passord" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nytt passord" -#: templates/personal.php:28 -msgid "show" -msgstr "vis" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Endra passord" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Epost" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Din epost addresse" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Fyll inn din e-post addresse for og kunne motta passord tilbakestilling" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Språk" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Hjelp oss å oversett" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/oc/core.po b/l10n/oc/core.po index a239c32531..8860e32037 100644 --- a/l10n/oc/core.po +++ b/l10n/oc/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -51,8 +51,9 @@ msgid "No category to add?" msgstr "Pas de categoria d'ajustar ?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "La categoria exista ja :" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -156,59 +157,59 @@ msgstr "Novembre" msgid "December" msgstr "Decembre" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Configuracion" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "segonda a" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 minuta a" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "uèi" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "ièr" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "mes passat" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "meses a" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "an passat" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "ans a" @@ -467,7 +468,7 @@ msgstr "Edita categorias" msgid "Add" msgstr "Ajusta" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Avertiment de securitat" @@ -477,71 +478,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Crea un compte admin" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avançat" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Dorsièr de donadas" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configura la basa de donadas" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "serà utilizat" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Usancièr de la basa de donadas" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Senhal de la basa de donadas" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nom de la basa de donadas" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Espandi de taula de basa de donadas" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Òste de basa de donadas" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Configuracion acabada" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Services web jos ton contraròtle" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Sortida" diff --git a/l10n/oc/files.po b/l10n/oc/files.po index 16d511d2e4..46ec34e547 100644 --- a/l10n/oc/files.po +++ b/l10n/oc/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,20 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -54,7 +68,7 @@ msgid "Failed to write to disk" msgstr "L'escriptura sul disc a fracassat" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -65,51 +79,52 @@ msgstr "" msgid "Files" msgstr "Fichièrs" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Non parteja" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Escafa" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Torna nomenar" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Al esperar" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "remplaça" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "nom prepausat" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "anulla" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "defar" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -149,64 +164,60 @@ msgstr "Impossible d'amontcargar lo teu fichièr qu'es un repertòri o que ten p msgid "Upload Error" msgstr "Error d'amontcargar" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Al esperar" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 fichièr al amontcargar" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Amontcargar anullat." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Un amontcargar es a se far. Daissar aquesta pagina ara tamparà lo cargament. " -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nom" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Talha" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Modificat" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -263,7 +274,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -278,6 +289,10 @@ msgstr "Pas res dedins. Amontcarga qualquaren" msgid "Download" msgstr "Avalcarga" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Non parteja" + #: templates/index.php:105 msgid "Upload too large" msgstr "Amontcargament tròp gròs" diff --git a/l10n/oc/files_encryption.po b/l10n/oc/files_encryption.po index a912cb58e7..4db4079a8e 100644 --- a/l10n/oc/files_encryption.po +++ b/l10n/oc/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/oc/files_trashbin.po b/l10n/oc/files_trashbin.po index 7ddc063e1b..064f9be30a 100644 --- a/l10n/oc/files_trashbin.po +++ b/l10n/oc/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/oc/files_versions.po b/l10n/oc/files_versions.po index e884888718..ed722b6022 100644 --- a/l10n/oc/files_versions.po +++ b/l10n/oc/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/oc/lib.po b/l10n/oc/lib.po index 7a056315f6..ada37ffbff 100644 --- a/l10n/oc/lib.po +++ b/l10n/oc/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Ajuda" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personal" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Configuracion" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Usancièrs" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Apps" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Avalcargar los ZIP es inactiu." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Los fichièrs devan èsser avalcargats un per un." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Torna cap als fichièrs" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -86,6 +86,103 @@ msgstr "" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "segonda a" diff --git a/l10n/oc/settings.po b/l10n/oc/settings.po index 2c3d180e39..040e8f2d8e 100644 --- a/l10n/oc/settings.po +++ b/l10n/oc/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -22,12 +22,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Pas possible de cargar la tièra dempuèi App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Error d'autentificacion" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -81,7 +81,7 @@ msgstr "Pas capable d'apondre un usancièr al grop %s" msgid "Unable to remove user from group %s" msgstr "Pas capable de tira un usancièr del grop %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -178,99 +178,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Practica" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Senhal" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Ton senhal a cambiat" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Pas possible de cambiar ton senhal" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Senhal en cors" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Senhal novèl" -#: templates/personal.php:28 -msgid "show" -msgstr "mòstra" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Cambia lo senhal" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Corrièl" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Ton adreiça de corrièl" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Emplena una adreiça de corrièl per permetre lo mandadís del senhal perdut" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Lenga" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Ajuda a la revirada" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/pl/core.po b/l10n/pl/core.po index be55347d04..780d9e45d7 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/core.po @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -60,8 +60,9 @@ msgid "No category to add?" msgstr "Brak kategorii" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Ta kategoria już istnieje" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -165,59 +166,59 @@ msgstr "Listopad" msgid "December" msgstr "Grudzień" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Ustawienia" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "sekund temu" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 minute temu" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} minut temu" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 godzine temu" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} godzin temu" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "dziś" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "wczoraj" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} dni temu" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "ostani miesiąc" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} miesięcy temu" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "miesięcy temu" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "ostatni rok" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "lat temu" @@ -476,7 +477,7 @@ msgstr "Edytuj kategorię" msgid "Add" msgstr "Dodaj" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Ostrzeżenie o zabezpieczeniach" @@ -486,71 +487,75 @@ msgid "" "OpenSSL extension." msgstr "Niedostępny bezpieczny generator liczb losowych, należy włączyć rozszerzenie OpenSSL w PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Bez bezpiecznego generatora liczb losowych, osoba atakująca może być w stanie przewidzieć resetujące hasło tokena i przejąć kontrolę nad swoim kontem." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Katalog danych (data) i pliki są prawdopodobnie dostępnego z Internetu. Sprawdź plik .htaccess oraz konfigurację serwera (hosta). Sugerujemy, skonfiguruj swój serwer w taki sposób, żeby dane katalogu nie były dostępne lub przenieść katalog danych spoza głównego dokumentu webserwera." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Tworzenie konta administratora" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Zaawansowane" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Katalog danych" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfiguracja bazy danych" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "zostanie użyte" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Użytkownik bazy danych" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Hasło do bazy danych" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nazwa bazy danych" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Obszar tabel bazy danych" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Komputer bazy danych" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Zakończ konfigurowanie" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "usługi internetowe pod kontrolą" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Wylogowuje użytkownika" diff --git a/l10n/pl/files.po b/l10n/pl/files.po index 86f9c33c28..f49e1712ec 100644 --- a/l10n/pl/files.po +++ b/l10n/pl/files.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -25,6 +25,20 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Nie można było przenieść %s - Plik o takiej nazwie już istnieje" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Nie można było przenieść %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Nie można zmienić nazwy pliku" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Plik nie został załadowany. Nieznany błąd" @@ -61,8 +75,8 @@ msgid "Failed to write to disk" msgstr "Błąd zapisu na dysk" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Za mało miejsca" +msgid "Not enough storage available" +msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." @@ -72,51 +86,52 @@ msgstr "Zła ścieżka." msgid "Files" msgstr "Pliki" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Nie udostępniaj" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Usuwa element" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Zmień nazwę" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Oczekujące" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} już istnieje" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "zastap" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "zasugeruj nazwę" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "anuluj" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "zastąpiony {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "wróć" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "zastąpiony {new_name} z {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -156,64 +171,60 @@ msgstr "Nie można wczytać pliku jeśli jest katalogiem lub ma 0 bajtów" msgid "Upload Error" msgstr "Błąd wczytywania" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Zamknij" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Oczekujące" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 plik wczytany" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} przesyłanie plików" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Wczytywanie anulowane." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Wysyłanie pliku jest w toku. Teraz opuszczając stronę wysyłanie zostanie anulowane." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL nie może być pusty." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nazwa folderu nieprawidłowa. Wykorzystanie \"Shared\" jest zarezerwowane przez Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nazwa" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Rozmiar" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Czas modyfikacji" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 folder" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} foldery" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 plik" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} pliki" @@ -270,7 +281,7 @@ msgid "From link" msgstr "Z linku" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -285,6 +296,10 @@ msgstr "Brak zawartości. Proszę wysłać pliki!" msgid "Download" msgstr "Pobiera element" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Nie udostępniaj" + #: templates/index.php:105 msgid "Upload too large" msgstr "Wysyłany plik ma za duży rozmiar" diff --git a/l10n/pl/files_encryption.po b/l10n/pl/files_encryption.po index acf7f3f06e..414c6659d9 100644 --- a/l10n/pl/files_encryption.po +++ b/l10n/pl/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Szyfrowanie" diff --git a/l10n/pl/files_trashbin.po b/l10n/pl/files_trashbin.po index 3f8e7a9564..3f85b77dcc 100644 --- a/l10n/pl/files_trashbin.po +++ b/l10n/pl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/pl/files_versions.po b/l10n/pl/files_versions.po index a2020d78f2..4d5b44af34 100644 --- a/l10n/pl/files_versions.po +++ b/l10n/pl/files_versions.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -19,10 +19,45 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Historia" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Wersjonowanie plików" diff --git a/l10n/pl/lib.po b/l10n/pl/lib.po index 917ce3b654..39c053a157 100644 --- a/l10n/pl/lib.po +++ b/l10n/pl/lib.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-29 00:05+0100\n" -"PO-Revision-Date: 2013-01-28 19:59+0000\n" -"Last-Translator: Marcin Małecki \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,47 +20,47 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Pomoc" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Osobiste" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Ustawienia" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Użytkownicy" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplikacje" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Administrator" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Pobieranie ZIP jest wyłączone." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Pliki muszą zostać pobrane pojedynczo." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Wróć do plików" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Wybrane pliki są zbyt duże, aby wygenerować plik zip." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "nie może zostać znaleziony" @@ -88,6 +88,103 @@ msgstr "Połączenie tekstowe" msgid "Images" msgstr "Obrazy" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "sekund temu" diff --git a/l10n/pl/settings.po b/l10n/pl/settings.po index 7849faf367..3926796c18 100644 --- a/l10n/pl/settings.po +++ b/l10n/pl/settings.po @@ -10,6 +10,7 @@ # Kamil Domański , 2011. # Marcin Małecki , 2011, 2012. # Marcin Małecki , 2011. +# Michał Plichta , 2013. # , 2011. # , 2012. # Piotr Sokół , 2012. @@ -18,9 +19,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 20:22+0000\n" +"Last-Translator: emc \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,12 +33,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Nie mogę załadować listy aplikacji" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Błąd uwierzytelniania" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -91,13 +92,13 @@ msgstr "Nie można dodać użytkownika do grupy %s" msgid "Unable to remove user from group %s" msgstr "Nie można usunąć użytkownika z grupy %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." -msgstr "" +msgstr "Nie można uaktualnić aplikacji" #: js/apps.js:30 msgid "Update to {appversion}" -msgstr "" +msgstr "Aktualizacja do {appversion}" #: js/apps.js:36 js/apps.js:76 msgid "Disable" @@ -109,15 +110,15 @@ msgstr "Włącz" #: js/apps.js:55 msgid "Please wait...." -msgstr "" +msgstr "Prosze czekać..." #: js/apps.js:84 msgid "Updating...." -msgstr "" +msgstr "Aktualizacja w toku..." #: js/apps.js:87 msgid "Error while updating app" -msgstr "" +msgstr "Błąd podczas aktualizacji aplikacji" #: js/apps.js:87 msgid "Error" @@ -125,7 +126,7 @@ msgstr "Błąd" #: js/apps.js:90 msgid "Updated" -msgstr "" +msgstr "Zaktualizowano" #: js/personal.js:96 msgid "Saving..." @@ -188,99 +189,87 @@ msgstr "Wsparcie komercyjne" msgid "You have used %s of the available %s" msgstr "Korzystasz z %s z dostępnych %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klienci" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Pobierz klienta dla Komputera" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Pobierz klienta dla Androida" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Pobierz klienta dla iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Hasło" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Twoje hasło zostało zmienione" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Nie można zmienić hasła" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Bieżące hasło" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nowe hasło" -#: templates/personal.php:28 -msgid "show" -msgstr "Wyświetlanie" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Zmień hasło" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" -msgstr "" +msgstr "Wyświetlana nazwa" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" -msgstr "" +msgstr "Nie można zmianić wyświetlanej nazwy" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" -msgstr "" +msgstr "Zmiana wyświetlanej nazwy" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "E-mail" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Adres e-mail użytkownika" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Proszę wprowadzić adres e-mail, aby uzyskać możliwość odzyskania hasła" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Język" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Pomóż w tłumaczeniu" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Użyj tego adresu aby podłączyć zasób ownCloud w menedżerze plików" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Wersja" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -216,8 +216,8 @@ msgid "Use TLS" msgstr "Użyj TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Nie używaj SSL dla połączeń, jeśli się nie powiedzie." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/pl_PL/core.po b/l10n/pl_PL/core.po index 29f70cf7c9..fd6666ba2d 100644 --- a/l10n/pl_PL/core.po +++ b/l10n/pl_PL/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -50,7 +50,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -155,59 +156,59 @@ msgstr "" msgid "December" msgstr "" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Ustawienia" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "" @@ -466,7 +467,7 @@ msgstr "" msgid "Add" msgstr "" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -476,71 +477,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "" diff --git a/l10n/pl_PL/files.po b/l10n/pl_PL/files.po index 23c778df2b..e1e8188680 100644 --- a/l10n/pl_PL/files.po +++ b/l10n/pl_PL/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,20 @@ msgstr "" "Language: pl_PL\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -53,7 +67,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -64,51 +78,52 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -148,64 +163,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -262,7 +273,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -277,6 +288,10 @@ msgstr "" msgid "Download" msgstr "" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "" diff --git a/l10n/pl_PL/files_encryption.po b/l10n/pl_PL/files_encryption.po index 2e95f4ce7e..d41a8cb3da 100644 --- a/l10n/pl_PL/files_encryption.po +++ b/l10n/pl_PL/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: pl_PL\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/pl_PL/files_trashbin.po b/l10n/pl_PL/files_trashbin.po index 2190a524e9..d35b236c8f 100644 --- a/l10n/pl_PL/files_trashbin.po +++ b/l10n/pl_PL/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: pl_PL\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/pl_PL/files_versions.po b/l10n/pl_PL/files_versions.po index 38bf131e3e..4423dd3512 100644 --- a/l10n/pl_PL/files_versions.po +++ b/l10n/pl_PL/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: pl_PL\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/pl_PL/lib.po b/l10n/pl_PL/lib.po index af7e0260b9..2d0b956907 100644 --- a/l10n/pl_PL/lib.po +++ b/l10n/pl_PL/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: pl_PL\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Ustawienia" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/pl_PL/settings.po b/l10n/pl_PL/settings.po index 991c4808c5..bc0086b23a 100644 --- a/l10n/pl_PL/settings.po +++ b/l10n/pl_PL/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -21,12 +21,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -80,7 +80,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -177,99 +177,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "" -#: templates/personal.php:28 -msgid "show" -msgstr "" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/pt_BR/core.po b/l10n/pt_BR/core.po index d3b3d31ad4..bf4e2100d6 100644 --- a/l10n/pt_BR/core.po +++ b/l10n/pt_BR/core.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -61,8 +61,9 @@ msgid "No category to add?" msgstr "Nenhuma categoria adicionada?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Essa categoria já existe" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -166,59 +167,59 @@ msgstr "Novembro" msgid "December" msgstr "Dezembro" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Configurações" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "segundos atrás" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 minuto atrás" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} minutos atrás" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 hora atrás" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} horas atrás" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "hoje" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "ontem" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} dias atrás" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "último mês" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} meses atrás" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "meses atrás" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "último ano" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "anos atrás" @@ -477,7 +478,7 @@ msgstr "Editar categorias" msgid "Add" msgstr "Adicionar" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Aviso de Segurança" @@ -487,71 +488,75 @@ msgid "" "OpenSSL extension." msgstr "Nenhum gerador de número aleatório de segurança disponível. Habilite a extensão OpenSSL do PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Sem um gerador de número aleatório de segurança, um invasor pode ser capaz de prever os símbolos de redefinição de senhas e assumir sua conta." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Seu diretório de dados e seus arquivos estão, provavelmente, acessíveis a partir da internet. O .htaccess que o ownCloud fornece não está funcionando. Nós sugerimos que você configure o seu servidor web de uma forma que o diretório de dados esteja mais acessível ou que você mova o diretório de dados para fora da raiz do servidor web." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Criar uma conta de administrador" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avançado" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Pasta de dados" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configurar o banco de dados" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "será usado" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Usuário de banco de dados" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Senha do banco de dados" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nome do banco de dados" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Espaço de tabela do banco de dados" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Banco de dados do host" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Concluir configuração" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "web services sob seu controle" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Sair" diff --git a/l10n/pt_BR/files.po b/l10n/pt_BR/files.po index d9891649b5..2fd721d545 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/files.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -26,6 +26,20 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Não possível mover %s - Um arquivo com este nome já existe" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Não possível mover %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Impossível renomear arquivo" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Nenhum arquivo foi transferido. Erro desconhecido" @@ -62,8 +76,8 @@ msgid "Failed to write to disk" msgstr "Falha ao escrever no disco" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "" +msgid "Not enough storage available" +msgstr "Espaço de armazenamento insuficiente" #: ajax/upload.php:83 msgid "Invalid directory." @@ -73,51 +87,52 @@ msgstr "Diretório inválido." msgid "Files" msgstr "Arquivos" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Descompartilhar" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Excluir" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Renomear" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Pendente" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} já existe" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "substituir" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "sugerir nome" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "substituído {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "desfazer" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "Substituído {old_name} por {new_name} " -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -157,64 +172,60 @@ msgstr "Impossível enviar seus arquivo como diretório ou ele tem 0 bytes." msgid "Upload Error" msgstr "Erro de envio" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Fechar" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Pendente" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "enviando 1 arquivo" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "Enviando {count} arquivos" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Envio cancelado." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Upload em andamento. Sair da página agora resultará no cancelamento do envio." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL não pode ficar em branco" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nome de pasta inválido. O uso de 'Shared' é reservado para o Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nome" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Tamanho" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 pasta" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} pastas" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 arquivo" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} arquivos" @@ -271,7 +282,7 @@ msgid "From link" msgstr "Do link" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -286,6 +297,10 @@ msgstr "Nada aqui.Carrege alguma coisa!" msgid "Download" msgstr "Baixar" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Descompartilhar" + #: templates/index.php:105 msgid "Upload too large" msgstr "Arquivo muito grande" diff --git a/l10n/pt_BR/files_encryption.po b/l10n/pt_BR/files_encryption.po index 1a4579181b..ee2e192fb4 100644 --- a/l10n/pt_BR/files_encryption.po +++ b/l10n/pt_BR/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -19,28 +19,6 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Por favor, vá ao seu cliente ownCloud e mude sua criptografia de senha para completar a conversão." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "alterado para criptografia por parte do cliente" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Mudar senha de criptografia para senha de login" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Por favor, verifique suas senhas e tente novamente." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Não foi possível mudar sua senha de criptografia de arquivos para sua senha de login" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Criptografia" diff --git a/l10n/pt_BR/files_trashbin.po b/l10n/pt_BR/files_trashbin.po index ef507ea244..785b8eddbe 100644 --- a/l10n/pt_BR/files_trashbin.po +++ b/l10n/pt_BR/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,16 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "realizar operação de restauração" diff --git a/l10n/pt_BR/files_versions.po b/l10n/pt_BR/files_versions.po index d6cf483ba3..d47f04d6cf 100644 --- a/l10n/pt_BR/files_versions.po +++ b/l10n/pt_BR/files_versions.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-31 00:27+0100\n" -"PO-Revision-Date: 2013-01-30 15:50+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -19,10 +19,45 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Histórico" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Versionamento de Arquivos" diff --git a/l10n/pt_BR/lib.po b/l10n/pt_BR/lib.po index d20d57c814..52305f6403 100644 --- a/l10n/pt_BR/lib.po +++ b/l10n/pt_BR/lib.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-31 00:27+0100\n" -"PO-Revision-Date: 2013-01-30 15:50+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -20,27 +20,27 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Ajuda" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Pessoal" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Ajustes" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Usuários" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplicações" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" @@ -88,6 +88,103 @@ msgstr "Texto" msgid "Images" msgstr "Imagens" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "segundos atrás" diff --git a/l10n/pt_BR/settings.po b/l10n/pt_BR/settings.po index de48363261..7ee994677c 100644 --- a/l10n/pt_BR/settings.po +++ b/l10n/pt_BR/settings.po @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -31,12 +31,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Não foi possível carregar lista da App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Erro de autenticação" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -90,7 +90,7 @@ msgstr "Não foi possível adicionar usuário ao grupo %s" msgid "Unable to remove user from group %s" msgstr "Não foi possível remover usuário do grupo %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -187,99 +187,87 @@ msgstr "Suporte Comercial" msgid "You have used %s of the available %s" msgstr "Você usou %s do seu espaço de %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clientes" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Baixar Clientes Desktop" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Baixar Cliente Android" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Baixar Cliente iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Mostrar este Assistente de novo" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Senha" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Sua senha foi alterada" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Não é possivel alterar a sua senha" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Senha atual" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nova senha" -#: templates/personal.php:28 -msgid "show" -msgstr "mostrar" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Alterar senha" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Nome de Exibição" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "E-mail" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Seu endereço de e-mail" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Preencha um endereço de e-mail para habilitar a recuperação de senha" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Idioma" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Ajude a traduzir" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Usar este endereço para conectar-se ao seu ownCloud no seu gerenciador de arquivos" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versão" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "Usar TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Não use-o para conexões SSL, pois falhará." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/pt_PT/core.po b/l10n/pt_PT/core.po index 59cabef006..7b19a97058 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/core.po @@ -8,16 +8,16 @@ # , 2013. # Duarte Velez Grilo , 2012. # , 2011, 2012. -# Helder Meneses , 2012. +# Helder Meneses , 2012-2013. # Nelson Rosado , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 14:21+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -58,8 +58,9 @@ msgid "No category to add?" msgstr "Nenhuma categoria para adicionar?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Esta categoria já existe:" +#, php-format +msgid "This category already exists: %s" +msgstr "A categoria já existe: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -163,59 +164,59 @@ msgstr "Novembro" msgid "December" msgstr "Dezembro" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Definições" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "Minutos atrás" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "Há 1 minuto" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "{minutes} minutos atrás" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "Há 1 hora" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "Há {hours} horas atrás" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "hoje" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "ontem" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "{days} dias atrás" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "ultímo mês" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "Há {months} meses atrás" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "meses atrás" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "ano passado" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "anos atrás" @@ -245,8 +246,8 @@ msgid "The object type is not specified." msgstr "O tipo de objecto não foi especificado" #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Erro" @@ -266,7 +267,7 @@ msgstr "Partilhar" msgid "Shared" msgstr "Partilhado" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Erro ao partilhar" @@ -362,23 +363,23 @@ msgstr "apagar" msgid "share" msgstr "partilhar" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Protegido com palavra-passe" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Erro ao retirar a data de expiração" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Erro ao aplicar a data de expiração" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "A Enviar..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "E-mail enviado" @@ -474,7 +475,7 @@ msgstr "Editar categorias" msgid "Add" msgstr "Adicionar" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Aviso de Segurança" @@ -484,71 +485,75 @@ msgid "" "OpenSSL extension." msgstr "Não existe nenhum gerador seguro de números aleatórios, por favor, active a extensão OpenSSL no PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Sem nenhum gerador seguro de números aleatórios, uma pessoa mal intencionada pode prever a sua password, reiniciar as seguranças adicionais e tomar conta da sua conta. " +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "A pasta de dados do ownCloud e os respectivos ficheiros, estarão provavelmente acessíveis a partir da internet, pois o ficheiros .htaccess não funciona." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "A sua pasta com os dados e os seus ficheiros estão provavelmente acessíveis a partir das internet. Sugerimos veementemente que configure o seu servidor web de maneira a que a pasta com os dados deixe de ficar acessível, ou mova a pasta com os dados para fora da raiz de documentos do servidor web." +"For information how to properly configure your server, please see the documentation." +msgstr "Para obter informações de como configurar correctamente o servidor, veja em: documentation." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Criar uma conta administrativa" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avançado" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Pasta de dados" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configure a base de dados" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "vai ser usada" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Utilizador da base de dados" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Password da base de dados" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Nome da base de dados" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Tablespace da base de dados" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Anfitrião da base de dados" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Acabar instalação" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "serviços web sob o seu controlo" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Sair" @@ -580,7 +585,7 @@ msgstr "Entrar" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Contas de acesso alternativas" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po index 284e463f1a..9e6b511ab9 100644 --- a/l10n/pt_PT/files.po +++ b/l10n/pt_PT/files.po @@ -8,16 +8,16 @@ # , 2013. # Duarte Velez Grilo , 2012. # , 2012. -# Helder Meneses , 2012. +# Helder Meneses , 2012-2013. # Miguel Sousa , 2013. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 14:21+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,6 +25,20 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Não foi possível mover o ficheiro %s - Já existe um ficheiro com esse nome" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Não foi possível move o ficheiro %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Não foi possível renomear o ficheiro" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Nenhum ficheiro foi carregado. Erro desconhecido" @@ -61,8 +75,8 @@ msgid "Failed to write to disk" msgstr "Falhou a escrita no disco" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Espaço em disco insuficiente!" +msgid "Not enough storage available" +msgstr "Não há espaço suficiente em disco" #: ajax/upload.php:83 msgid "Invalid directory." @@ -72,51 +86,52 @@ msgstr "Directório Inválido" msgid "Files" msgstr "Ficheiros" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Deixar de partilhar" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Eliminar permanentemente" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Apagar" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Renomear" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Pendente" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "O nome {new_name} já existe" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "substituir" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "sugira um nome" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "cancelar" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "{new_name} substituido" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "desfazer" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "substituido {new_name} por {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "Executar a tarefa de apagar" @@ -156,64 +171,60 @@ msgstr "Não é possível fazer o envio do ficheiro devido a ser uma pasta ou te msgid "Upload Error" msgstr "Erro no envio" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Fechar" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Pendente" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "A enviar 1 ficheiro" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "A carregar {count} ficheiros" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Envio cancelado." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Envio de ficheiro em progresso. Irá cancelar o envio se sair da página agora." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "O URL não pode estar vazio." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Nome de pasta inválido. O Uso de 'shared' é reservado para o ownCloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Nome" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Tamanho" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Modificado" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 pasta" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} pastas" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 ficheiro" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} ficheiros" @@ -270,8 +281,8 @@ msgid "From link" msgstr "Da ligação" #: templates/index.php:40 -msgid "Trash" -msgstr "Lixo" +msgid "Trash bin" +msgstr "Reciclagem" #: templates/index.php:46 msgid "Cancel upload" @@ -285,6 +296,10 @@ msgstr "Vazio. Envie alguma coisa!" msgid "Download" msgstr "Transferir" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Deixar de partilhar" + #: templates/index.php:105 msgid "Upload too large" msgstr "Envio muito grande" diff --git a/l10n/pt_PT/files_encryption.po b/l10n/pt_PT/files_encryption.po index 09e55792f7..461a5030b7 100644 --- a/l10n/pt_PT/files_encryption.po +++ b/l10n/pt_PT/files_encryption.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 14:21+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,43 +19,21 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Por favor, use o seu cliente de sincronização do ownCloud e altere a sua password de encriptação para concluír a conversão." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "Alterado para encriptação do lado do cliente" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Alterar a password de encriptação para a password de login" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Por favor verifique as suas paswords e tente de novo." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Não foi possível alterar a password de encriptação de ficheiros para a sua password de login" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Encriptação" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "A encriptação de ficheiros está ligada" #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "Os seguintes ficheiros não serão encriptados:" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Excluir da encriptação os seguintes tipos de ficheiro:" #: templates/settings.php:12 msgid "None" diff --git a/l10n/pt_PT/files_trashbin.po b/l10n/pt_PT/files_trashbin.po index 5dca5cbe11..5e720d8b5c 100644 --- a/l10n/pt_PT/files_trashbin.po +++ b/l10n/pt_PT/files_trashbin.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 14:21+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +18,23 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Não foi possível eliminar %s de forma permanente" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Não foi possível restaurar %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "Restaurar" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "Eliminar permanentemente o(s) ficheiro(s)" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/pt_PT/files_versions.po b/l10n/pt_PT/files_versions.po index 596deab439..9e0c86ead3 100644 --- a/l10n/pt_PT/files_versions.po +++ b/l10n/pt_PT/files_versions.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Daniel Pinto , 2013. # Duarte Velez Grilo , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 14:21+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,10 +19,45 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Não foi possível reverter: %s" + +#: history.php:40 +msgid "success" +msgstr "Sucesso" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "O ficheiro %s foi revertido para a versão %s" + +#: history.php:49 +msgid "failure" +msgstr "Falha" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Não foi possível reverter o ficheiro %s para a versão %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Não existem versões mais antigas" + +#: history.php:73 +msgid "No path specified" +msgstr "Nenhum caminho especificado" + #: js/versions.js:16 msgid "History" msgstr "Histórico" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Reverter um ficheiro para uma versão anterior clicando no seu botão reverter." + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Versionamento de Ficheiros" diff --git a/l10n/pt_PT/lib.po b/l10n/pt_PT/lib.po index b9d558cbb4..583e386d61 100644 --- a/l10n/pt_PT/lib.po +++ b/l10n/pt_PT/lib.po @@ -4,14 +4,15 @@ # # Translators: # , 2012-2013. +# Daniel Pinto , 2013. # Duarte Velez Grilo , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 00:47+0000\n" -"Last-Translator: Mouxy \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +20,47 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Ajuda" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Pessoal" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Configurações" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Utilizadores" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplicações" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Descarregamento em ZIP está desligado." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Os ficheiros precisam de ser descarregados um por um." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Voltar a Ficheiros" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Os ficheiros seleccionados são grandes demais para gerar um ficheiro zip." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "Não foi possível determinar" @@ -87,6 +88,103 @@ msgstr "Texto" msgid "Images" msgstr "Imagens" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "O seu servidor web não está configurado correctamente para autorizar sincronização de ficheiros, pois o interface WebDAV parece estar com problemas." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Por favor verifique installation guides." + #: template.php:113 msgid "seconds ago" msgstr "há alguns segundos" diff --git a/l10n/pt_PT/settings.po b/l10n/pt_PT/settings.po index 8c1833afc0..512617cf3a 100644 --- a/l10n/pt_PT/settings.po +++ b/l10n/pt_PT/settings.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" @@ -29,14 +29,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Incapaz de carregar a lista da App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Erro de autenticação" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Não foi possível alterar o nome" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -88,7 +88,7 @@ msgstr "Impossível acrescentar utilizador ao grupo %s" msgid "Unable to remove user from group %s" msgstr "Impossível apagar utilizador do grupo %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Não foi possível actualizar a aplicação." @@ -185,99 +185,87 @@ msgstr "Suporte Comercial" msgid "You have used %s of the available %s" msgstr "Usou %s do disponivel %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clientes" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Transferir os clientes de sincronização" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Transferir o cliente android" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Transferir o cliente iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Mostrar novamente Wizard de Arranque Inicial" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Palavra-chave" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "A sua palavra-passe foi alterada" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Não foi possivel alterar a sua palavra-chave" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Palavra-chave actual" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nova palavra-chave" -#: templates/personal.php:28 -msgid "show" -msgstr "mostrar" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Alterar palavra-chave" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Nome público" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "O seu nome foi alterado" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Não foi possível alterar o seu nome" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Alterar nome" + +#: templates/personal.php:68 msgid "Email" msgstr "endereço de email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "O seu endereço de email" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Preencha com o seu endereço de email para ativar a recuperação da palavra-chave" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Idioma" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Ajude a traduzir" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Use este endereço no seu gestor de ficheiros para ligar à sua ownCloud" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versão" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the , 2012-2013. # Daniel Pinto , 2013. # Duarte Velez Grilo , 2012. -# Helder Meneses , 2012. +# Helder Meneses , 2012-2013. # Nelson Rosado , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-03 00:04+0100\n" -"PO-Revision-Date: 2013-02-02 23:05+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 14:21+0000\n" +"Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -177,7 +177,7 @@ msgstr "Sem nenhuma variável. Exemplo: \"objectClass=posixGroup\"." #: templates/settings.php:31 msgid "Connection Settings" -msgstr "" +msgstr "Definições de ligação" #: templates/settings.php:33 msgid "Configuration Active" @@ -218,8 +218,8 @@ msgid "Use TLS" msgstr "Usar TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Não use para ligações SSL, irá falhar." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "Não utilize para adicionar ligações LDAP, irá falhar!" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" @@ -245,7 +245,7 @@ msgstr "em segundos. Uma alteração esvazia a cache." #: templates/settings.php:43 msgid "Directory Settings" -msgstr "" +msgstr "Definições de directorias" #: templates/settings.php:45 msgid "User Display Name Field" @@ -297,7 +297,7 @@ msgstr "Associar utilizador ao grupo." #: templates/settings.php:53 msgid "Special Attributes" -msgstr "" +msgstr "Atributos especiais" #: templates/settings.php:56 msgid "in bytes" diff --git a/l10n/ro/core.po b/l10n/ro/core.po index b4e708bd8b..ef9d59ed88 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/core.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -56,8 +56,9 @@ msgid "No category to add?" msgstr "Nici o categorie de adăugat?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Această categorie deja există:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -161,59 +162,59 @@ msgstr "Noiembrie" msgid "December" msgstr "Decembrie" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Configurări" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "secunde în urmă" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 minut în urmă" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} minute in urma" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "Acum o ora" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} ore în urmă" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "astăzi" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "ieri" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} zile in urma" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "ultima lună" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} luni în urmă" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "luni în urmă" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "ultimul an" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "ani în urmă" @@ -472,7 +473,7 @@ msgstr "Editează categoriile" msgid "Add" msgstr "Adaugă" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Avertisment de securitate" @@ -482,71 +483,75 @@ msgid "" "OpenSSL extension." msgstr "Generatorul de numere pentru securitate nu este disponibil, va rog activati extensia PHP OpenSSL" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Fara generatorul pentru numere de securitate , un atacator poate afla parola si reseta contul tau" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Directorul tău de date și fișierele tale probabil sunt accesibile prin internet. Fișierul .htaccess oferit de ownCloud nu funcționează. Îți recomandăm să configurezi server-ul tău web într-un mod în care directorul de date să nu mai fie accesibil sau mută directorul de date în afara directorului root al server-ului web." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Crează un cont de administrator" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avansat" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Director date" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Configurează baza de date" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "vor fi folosite" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Utilizatorul bazei de date" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Parola bazei de date" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Numele bazei de date" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Tabela de spațiu a bazei de date" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Bază date" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Finalizează instalarea" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "servicii web controlate de tine" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Ieșire" diff --git a/l10n/ro/files.po b/l10n/ro/files.po index 1310971139..4e321298f0 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/files.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -23,6 +23,20 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Nu se poate de mutat %s - Fișier cu acest nume deja există" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Nu s-a putut muta %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Nu s-a putut redenumi fișierul" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Nici un fișier nu a fost încărcat. Eroare necunoscută" @@ -59,8 +73,8 @@ msgid "Failed to write to disk" msgstr "Eroare la scriere pe disc" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Nu este suficient spațiu disponibil" +msgid "Not enough storage available" +msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." @@ -70,51 +84,52 @@ msgstr "Director invalid." msgid "Files" msgstr "Fișiere" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Anulează partajarea" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Șterge" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Redenumire" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "În așteptare" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} deja exista" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "înlocuire" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "sugerează nume" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "anulare" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "inlocuit {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "Anulează ultima acțiune" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} inlocuit cu {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -154,64 +169,60 @@ msgstr "Nu s-a putut încărca fișierul tău deoarece pare să fie un director msgid "Upload Error" msgstr "Eroare la încărcare" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Închide" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "În așteptare" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "un fișier se încarcă" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} fisiere incarcate" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Încărcare anulată." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Fișierul este în curs de încărcare. Părăsirea paginii va întrerupe încărcarea." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Adresa URL nu poate fi goală." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Invalid folder name. Usage of 'Shared' is reserved by Ownclou" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Nume" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Dimensiune" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Modificat" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 folder" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} foldare" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 fisier" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} fisiere" @@ -268,7 +279,7 @@ msgid "From link" msgstr "de la adresa" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -283,6 +294,10 @@ msgstr "Nimic aici. Încarcă ceva!" msgid "Download" msgstr "Descarcă" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Anulează partajarea" + #: templates/index.php:105 msgid "Upload too large" msgstr "Fișierul încărcat este prea mare" diff --git a/l10n/ro/files_encryption.po b/l10n/ro/files_encryption.po index 10fad6ca46..ba27a3e08d 100644 --- a/l10n/ro/files_encryption.po +++ b/l10n/ro/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -19,28 +19,6 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Te rugăm să mergi în clientul ownCloud și să schimbi parola pentru a finisa conversia" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "setat la encriptare locală" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Schimbă parola de ecriptare în parolă de acces" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Verifică te rog parolele și înceracă din nou." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Nu s-a putut schimba parola de encripție a fișierelor ca parolă de acces" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Încriptare" diff --git a/l10n/ro/files_trashbin.po b/l10n/ro/files_trashbin.po index bf376bb048..252b8a0e7d 100644 --- a/l10n/ro/files_trashbin.po +++ b/l10n/ro/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/ro/files_versions.po b/l10n/ro/files_versions.po index 28514d6ddd..46715013ca 100644 --- a/l10n/ro/files_versions.po +++ b/l10n/ro/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Istoric" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Versionare fișiere" diff --git a/l10n/ro/lib.po b/l10n/ro/lib.po index a48eb33474..4380e638e1 100644 --- a/l10n/ro/lib.po +++ b/l10n/ro/lib.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-26 00:09+0100\n" -"PO-Revision-Date: 2013-01-25 21:31+0000\n" -"Last-Translator: Dimon Pockemon <>\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,47 +20,47 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Ajutor" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personal" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Setări" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Utilizatori" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplicații" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Descărcarea ZIP este dezactivată." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Fișierele trebuie descărcate unul câte unul." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Înapoi la fișiere" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Fișierele selectate sunt prea mari pentru a genera un fișier zip." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "nu poate fi determinat" @@ -88,6 +88,103 @@ msgstr "Text" msgid "Images" msgstr "Imagini" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "secunde în urmă" diff --git a/l10n/ro/settings.po b/l10n/ro/settings.po index a54bf6ea81..e078fbdc93 100644 --- a/l10n/ro/settings.po +++ b/l10n/ro/settings.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -28,12 +28,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Imposibil de încărcat lista din App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Eroare de autentificare" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -87,7 +87,7 @@ msgstr "Nu s-a putut adăuga utilizatorul la grupul %s" msgid "Unable to remove user from group %s" msgstr "Nu s-a putut elimina utilizatorul din grupul %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -184,99 +184,87 @@ msgstr "Suport comercial" msgid "You have used %s of the available %s" msgstr "Ați utilizat %s din %s disponibile" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Clienți" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Descarcă client desktop" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Descarcă client Android" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Descarcă client iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Parolă" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Parola a fost modificată" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Imposibil de-ați schimbat parola" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Parola curentă" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Noua parolă" -#: templates/personal.php:28 -msgid "show" -msgstr "afișează" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Schimbă parola" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Adresa ta de email" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Completează o adresă de mail pentru a-ți putea recupera parola" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Limba" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Ajută la traducere" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Folosește această adresă pentru a conecta ownCloud cu managerul de fișiere" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Versiunea" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -216,8 +216,8 @@ msgid "Use TLS" msgstr "Utilizează TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "A nu se utiliza pentru conexiuni SSL, va eșua." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/ru/core.po b/l10n/ru/core.po index a39f8a3672..b9e138452b 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/core.po @@ -14,13 +14,14 @@ # , 2011. # Victor Bravo <>, 2012. # , 2012. +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 18:40+0000\n" +"Last-Translator: Langaru \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -61,8 +62,9 @@ msgid "No category to add?" msgstr "Нет категорий для добавления?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Эта категория уже существует: " +#, php-format +msgid "This category already exists: %s" +msgstr "Эта категория уже существует: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -166,59 +168,59 @@ msgstr "Ноябрь" msgid "December" msgstr "Декабрь" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Настройки" -#: js/js.js:760 +#: js/js.js:766 msgid "seconds ago" msgstr "несколько секунд назад" -#: js/js.js:761 +#: js/js.js:767 msgid "1 minute ago" msgstr "1 минуту назад" -#: js/js.js:762 +#: js/js.js:768 msgid "{minutes} minutes ago" msgstr "{minutes} минут назад" -#: js/js.js:763 +#: js/js.js:769 msgid "1 hour ago" msgstr "час назад" -#: js/js.js:764 +#: js/js.js:770 msgid "{hours} hours ago" msgstr "{hours} часов назад" -#: js/js.js:765 +#: js/js.js:771 msgid "today" msgstr "сегодня" -#: js/js.js:766 +#: js/js.js:772 msgid "yesterday" msgstr "вчера" -#: js/js.js:767 +#: js/js.js:773 msgid "{days} days ago" msgstr "{days} дней назад" -#: js/js.js:768 +#: js/js.js:774 msgid "last month" msgstr "в прошлом месяце" -#: js/js.js:769 +#: js/js.js:775 msgid "{months} months ago" msgstr "{months} месяцев назад" -#: js/js.js:770 +#: js/js.js:776 msgid "months ago" msgstr "несколько месяцев назад" -#: js/js.js:771 +#: js/js.js:777 msgid "last year" msgstr "в прошлом году" -#: js/js.js:772 +#: js/js.js:778 msgid "years ago" msgstr "несколько лет назад" @@ -248,8 +250,8 @@ msgid "The object type is not specified." msgstr "Тип объекта не указан" #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Ошибка" @@ -269,7 +271,7 @@ msgstr "Открыть доступ" msgid "Shared" msgstr "Общие" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Ошибка при открытии доступа" @@ -365,23 +367,23 @@ msgstr "удалить" msgid "share" msgstr "открыть доступ" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Защищено паролем" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Ошибка при отмене срока доступа" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Ошибка при установке срока доступа" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Отправляется ..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Письмо отправлено" @@ -477,7 +479,7 @@ msgstr "Редактировать категории" msgid "Add" msgstr "Добавить" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Предупреждение безопасности" @@ -487,71 +489,75 @@ msgid "" "OpenSSL extension." msgstr "Нет доступного защищенного генератора случайных чисел, пожалуйста, включите расширение PHP OpenSSL." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Без защищенного генератора случайных чисел злоумышленник может предугадать токены сброса пароля и завладеть Вашей учетной записью." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Ваша папка с данными и файлы возможно доступны из интернета потому что файл .htaccess не работает." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Ваши каталоги данных и файлы, вероятно, доступны из Интернета. Файл .htaccess, предоставляемый ownCloud, не работает. Мы настоятельно рекомендуем Вам настроить вебсервер таким образом, чтобы каталоги данных больше не были доступны, или переместить их за пределы корневого каталога документов веб-сервера." +"For information how to properly configure your server, please see the documentation." +msgstr "Для информации как правильно настроить Ваш сервер, пожалйста загляните в документацию." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Создать учётную запись администратора" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Дополнительно" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Директория с данными" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Настройка базы данных" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "будет использовано" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Имя пользователя для базы данных" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Пароль для базы данных" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Название базы данных" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Табличое пространство базы данных" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Хост базы данных" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Завершить установку" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "Сетевые службы под твоим контролем" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Выйти" @@ -583,7 +589,7 @@ msgstr "Войти" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Альтернативные имена пользователя" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index 60b9353187..4e2a6e1edb 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/files.po @@ -13,15 +13,17 @@ # , 2013. # , 2012. # , 2011. +# Victor Ashirov , 2013. # Victor Bravo <>, 2012. # , 2012. +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:30+0000\n" +"Last-Translator: unixoid \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,6 +31,20 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Невозможно переместить %s - файл с таким именем уже существует" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Невозможно переместить %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Невозможно переименовать файл" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Файл не был загружен. Неизвестная ошибка" @@ -65,8 +81,8 @@ msgid "Failed to write to disk" msgstr "Ошибка записи на диск" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Недостаточно свободного места" +msgid "Not enough storage available" +msgstr "Недостаточно доступного места в хранилище" #: ajax/upload.php:83 msgid "Invalid directory." @@ -76,51 +92,52 @@ msgstr "Неправильный каталог." msgid "Files" msgstr "Файлы" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Отменить публикацию" - -#: js/fileactions.js:119 +#: js/fileactions.js:125 msgid "Delete permanently" -msgstr "" +msgstr "Удалено навсегда" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:127 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Удалить" -#: js/fileactions.js:187 +#: js/fileactions.js:193 msgid "Rename" msgstr "Переименовать" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Ожидание" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} уже существует" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "заменить" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "предложить название" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "отмена" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "заменено {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "отмена" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "заменено {new_name} на {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "выполняется операция удаления" @@ -160,64 +177,60 @@ msgstr "Не удается загрузить файл размером 0 ба msgid "Upload Error" msgstr "Ошибка загрузки" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Закрыть" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Ожидание" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "загружается 1 файл" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} файлов загружается" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Загрузка отменена." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Файл в процессе загрузки. Покинув страницу вы прервёте загрузку." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Ссылка не может быть пустой." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Неправильное имя каталога. Имя 'Shared' зарезервировано." -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Название" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Размер" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Изменён" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 папка" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} папок" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 файл" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} файлов" @@ -274,7 +287,7 @@ msgid "From link" msgstr "Из ссылки" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "Корзина" #: templates/index.php:46 @@ -289,6 +302,10 @@ msgstr "Здесь ничего нет. Загрузите что-нибудь!" msgid "Download" msgstr "Скачать" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Отменить публикацию" + #: templates/index.php:105 msgid "Upload too large" msgstr "Файл слишком большой" diff --git a/l10n/ru/files_encryption.po b/l10n/ru/files_encryption.po index b9f437eee8..1244183e43 100644 --- a/l10n/ru/files_encryption.po +++ b/l10n/ru/files_encryption.po @@ -4,12 +4,13 @@ # # Translators: # Denis , 2012. +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" @@ -18,43 +19,21 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Шифрование" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "Шифрование файла включено." #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "Следующие типы файлов не будут зашифрованы:" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Исключить следующие типы файлов из шифрованных:" #: templates/settings.php:12 msgid "None" diff --git a/l10n/ru/files_trashbin.po b/l10n/ru/files_trashbin.po index 87ecf686fe..2da2f61dbc 100644 --- a/l10n/ru/files_trashbin.po +++ b/l10n/ru/files_trashbin.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 04:50+0000\n" +"Last-Translator: Langaru \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,13 +18,23 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "%s не может быть удалён навсегда" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "%s не может быть восстановлен" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" -msgstr "" +msgstr "выполнить операцию восстановления" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "удалить файл навсегда" #: js/trash.js:125 templates/index.php:17 msgid "Name" @@ -31,7 +42,7 @@ msgstr "Имя" #: js/trash.js:126 templates/index.php:27 msgid "Deleted" -msgstr "" +msgstr "Удалён" #: js/trash.js:135 msgid "1 folder" @@ -51,8 +62,8 @@ msgstr "{count} файлов" #: templates/index.php:9 msgid "Nothing in here. Your trash bin is empty!" -msgstr "" +msgstr "Здесь ничего нет. Ваша корзина пуста!" #: templates/index.php:20 templates/index.php:22 msgid "Restore" -msgstr "" +msgstr "Восстановить" diff --git a/l10n/ru/files_versions.po b/l10n/ru/files_versions.po index e25aa41375..87dce55db7 100644 --- a/l10n/ru/files_versions.po +++ b/l10n/ru/files_versions.po @@ -6,13 +6,14 @@ # Denis , 2012. # , 2012. # , 2012. +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 06:30+0000\n" +"Last-Translator: Langaru \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,10 +21,45 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Не может быть возвращён: %s" + +#: history.php:40 +msgid "success" +msgstr "успех" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Файл %s был возвращён к версии %s" + +#: history.php:49 +msgid "failure" +msgstr "провал" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Файл %s не может быть возвращён к версии %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Нет доступных старых версий" + +#: history.php:73 +msgid "No path specified" +msgstr "Путь не указан" + #: js/versions.js:16 msgid "History" msgstr "История" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Вернуть файл к предыдущей версии нажатием на кнопку возврата" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Версии файлов" diff --git a/l10n/ru/lib.po b/l10n/ru/lib.po index f834d506e2..53b9586115 100644 --- a/l10n/ru/lib.po +++ b/l10n/ru/lib.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 07:20+0000\n" -"Last-Translator: m4rkell \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,27 +23,27 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:313 +#: app.php:339 msgid "Help" msgstr "Помощь" -#: app.php:320 +#: app.php:346 msgid "Personal" msgstr "Личное" -#: app.php:325 +#: app.php:351 msgid "Settings" msgstr "Настройки" -#: app.php:330 +#: app.php:356 msgid "Users" msgstr "Пользователи" -#: app.php:337 +#: app.php:363 msgid "Apps" msgstr "Приложения" -#: app.php:339 +#: app.php:365 msgid "Admin" msgstr "Admin" @@ -91,6 +91,103 @@ msgstr "Текст" msgid "Images" msgstr "Изображения" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "менее минуты" diff --git a/l10n/ru/settings.po b/l10n/ru/settings.po index 1d09ca48a2..7bee1b88c6 100644 --- a/l10n/ru/settings.po +++ b/l10n/ru/settings.po @@ -14,15 +14,17 @@ # , 2012-2013. # , 2012. # , 2011. +# Victor Ashirov , 2013. # Victor Bravo <>, 2012. # , 2012. +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:30+0000\n" +"Last-Translator: unixoid \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,14 +36,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Загрузка из App Store запрещена" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Ошибка авторизации" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Невозможно изменить отображаемое имя" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -93,13 +95,13 @@ msgstr "Невозможно добавить пользователя в гру msgid "Unable to remove user from group %s" msgstr "Невозможно удалить пользователя из группы %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Невозможно обновить приложение" #: js/apps.js:30 msgid "Update to {appversion}" -msgstr "" +msgstr "Обновить до {версия приложения}" #: js/apps.js:36 js/apps.js:76 msgid "Disable" @@ -119,7 +121,7 @@ msgstr "Обновление..." #: js/apps.js:87 msgid "Error while updating app" -msgstr "" +msgstr "Ошибка в процессе обновления приложения" #: js/apps.js:87 msgid "Error" @@ -190,99 +192,87 @@ msgstr "Коммерческая поддержка" msgid "You have used %s of the available %s" msgstr "Вы использовали %s из доступных %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Клиенты" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Загрузка приложений для компьютера" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Загрузка Android-приложения" +msgid "Get the apps to sync your files" +msgstr "Получить приложения для синхронизации ваших файлов" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Загрузка iOS-приложения" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Показать помощник настройки" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Пароль" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Ваш пароль изменён" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Невозможно сменить пароль" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Текущий пароль" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Новый пароль" -#: templates/personal.php:28 -msgid "show" -msgstr "показать" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Сменить пароль" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Отображаемое имя" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Ваше отображаемое имя было изменено" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Невозможно изменить Ваше отображаемое имя" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Изменить отображаемое имя" + +#: templates/personal.php:68 msgid "Email" msgstr "e-mail" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Ваш адрес электронной почты" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Введите адрес электронной почты, чтобы появилась возможность восстановления пароля" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Язык" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Помочь с переводом" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Используйте этот URL для подключения файлового менеджера к Вашему хранилищу" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Версия" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the , 2012. # Denis , 2012. # , 2012. +# Victor Ashirov , 2013. +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-03 00:04+0100\n" -"PO-Revision-Date: 2013-02-02 23:05+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 16:30+0000\n" +"Last-Translator: unixoid \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,23 +24,23 @@ msgstr "" #: ajax/deleteConfiguration.php:34 msgid "Failed to delete the server configuration" -msgstr "" +msgstr "Не удалось удалить конфигурацию сервера" #: ajax/testConfiguration.php:35 msgid "The configuration is valid and the connection could be established!" -msgstr "" +msgstr "Конфигурация правильная и подключение может быть установлено!" #: ajax/testConfiguration.php:37 msgid "" "The configuration is valid, but the Bind failed. Please check the server " "settings and credentials." -msgstr "" +msgstr "Конфигурация верна, но операция подключения завершилась неудачно. Пожалуйста, проверьте настройки сервера и учетные данные." #: ajax/testConfiguration.php:40 msgid "" "The configuration is invalid. Please look in the ownCloud log for further " "details." -msgstr "" +msgstr "Конфигурация не верна. Пожалуйста, посмотрите в журнале ownCloud детали." #: js/settings.js:66 msgid "Deletion failed" @@ -46,31 +48,31 @@ msgstr "Удаление не удалось" #: js/settings.js:82 msgid "Take over settings from recent server configuration?" -msgstr "" +msgstr "Принять настройки из последней конфигурации сервера?" #: js/settings.js:83 msgid "Keep settings?" -msgstr "" +msgstr "Сохранить настройки?" #: js/settings.js:97 msgid "Cannot add server configuration" -msgstr "" +msgstr "Не получилось добавить конфигурацию сервера" #: js/settings.js:121 msgid "Connection test succeeded" -msgstr "" +msgstr "Проверка соединения удалась" #: js/settings.js:126 msgid "Connection test failed" -msgstr "" +msgstr "Проверка соединения не удалась" #: js/settings.js:136 msgid "Do you really want to delete the current Server Configuration?" -msgstr "" +msgstr "Вы действительно хотите удалить существующую конфигурацию сервера?" #: js/settings.js:137 msgid "Confirm Deletion" -msgstr "" +msgstr "Подтверждение удаления" #: templates/settings.php:8 msgid "" @@ -83,15 +85,15 @@ msgstr "Внимание:Приложения user_ldap и user_webdavaut msgid "" "Warning: The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "" +msgstr "Внимание: Модуль LDAP для PHP не установлен, бэкенд не будет работать. Пожалуйста, попросите вашего системного администратора его установить. " #: templates/settings.php:15 msgid "Server configuration" -msgstr "" +msgstr "Конфигурация сервера" #: templates/settings.php:17 msgid "Add Server Configuration" -msgstr "" +msgstr "Добавить конфигурацию сервера" #: templates/settings.php:21 msgid "Host" @@ -108,7 +110,7 @@ msgstr "Базовый DN" #: templates/settings.php:22 msgid "One Base DN per line" -msgstr "" +msgstr "По одному базовому DN в строке." #: templates/settings.php:22 msgid "You can specify Base DN for users and groups in the Advanced tab" @@ -175,15 +177,15 @@ msgstr "без заполнения, например \"objectClass=posixGroup\" #: templates/settings.php:31 msgid "Connection Settings" -msgstr "" +msgstr "Настройки подключения" #: templates/settings.php:33 msgid "Configuration Active" -msgstr "" +msgstr "Конфигурация активна" #: templates/settings.php:33 msgid "When unchecked, this configuration will be skipped." -msgstr "" +msgstr "Когда галочка снята, эта конфигурация будет пропущена." #: templates/settings.php:34 msgid "Port" @@ -191,33 +193,33 @@ msgstr "Порт" #: templates/settings.php:35 msgid "Backup (Replica) Host" -msgstr "" +msgstr "Адрес резервного сервера" #: templates/settings.php:35 msgid "" "Give an optional backup host. It must be a replica of the main LDAP/AD " "server." -msgstr "" +msgstr "Укажите дополнительный резервный сервер. Он должен быть репликой главного LDAP/AD сервера." #: templates/settings.php:36 msgid "Backup (Replica) Port" -msgstr "" +msgstr "Порт резервного сервера" #: templates/settings.php:37 msgid "Disable Main Server" -msgstr "" +msgstr "Отключение главного сервера" #: templates/settings.php:37 msgid "When switched on, ownCloud will only connect to the replica server." -msgstr "" +msgstr "Когда включено, ownCloud будет соединяться только с резервным сервером." #: templates/settings.php:38 msgid "Use TLS" msgstr "Использовать TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Не используйте для соединений SSL" +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "Не используйте совместно с безопасными подключениями (LDAPS), это не сработает." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" @@ -243,7 +245,7 @@ msgstr "в секундах. Изменение очистит кэш." #: templates/settings.php:43 msgid "Directory Settings" -msgstr "" +msgstr "Настройки каталога" #: templates/settings.php:45 msgid "User Display Name Field" @@ -259,15 +261,15 @@ msgstr "База пользовательского дерева" #: templates/settings.php:46 msgid "One User Base DN per line" -msgstr "" +msgstr "По одной базовому DN пользователей в строке." #: templates/settings.php:47 msgid "User Search Attributes" -msgstr "" +msgstr "Поисковые атрибуты пользователя" #: templates/settings.php:47 templates/settings.php:50 msgid "Optional; one attribute per line" -msgstr "" +msgstr "Опционально; один атрибут на линию" #: templates/settings.php:48 msgid "Group Display Name Field" @@ -283,11 +285,11 @@ msgstr "База группового дерева" #: templates/settings.php:49 msgid "One Group Base DN per line" -msgstr "" +msgstr "По одной базовому DN групп в строке." #: templates/settings.php:50 msgid "Group Search Attributes" -msgstr "" +msgstr "Атрибуты поиска для группы" #: templates/settings.php:51 msgid "Group-Member association" @@ -295,7 +297,7 @@ msgstr "Ассоциация Группа-Участник" #: templates/settings.php:53 msgid "Special Attributes" -msgstr "" +msgstr "Специальные атрибуты" #: templates/settings.php:56 msgid "in bytes" diff --git a/l10n/ru_RU/core.po b/l10n/ru_RU/core.po index dbb4e95efd..4e06754858 100644 --- a/l10n/ru_RU/core.po +++ b/l10n/ru_RU/core.po @@ -5,13 +5,14 @@ # Translators: # , 2013. # , 2012. +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 18:40+0000\n" +"Last-Translator: Langaru \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -52,8 +53,9 @@ msgid "No category to add?" msgstr "Нет категории для добавления?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Эта категория уже существует:" +#, php-format +msgid "This category already exists: %s" +msgstr "Эта категория уже существует: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +159,59 @@ msgstr "Ноябрь" msgid "December" msgstr "Декабрь" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Настройки" -#: js/js.js:760 +#: js/js.js:766 msgid "seconds ago" msgstr "секунд назад" -#: js/js.js:761 +#: js/js.js:767 msgid "1 minute ago" msgstr " 1 минуту назад" -#: js/js.js:762 +#: js/js.js:768 msgid "{minutes} minutes ago" msgstr "{минуты} минут назад" -#: js/js.js:763 +#: js/js.js:769 msgid "1 hour ago" msgstr "1 час назад" -#: js/js.js:764 +#: js/js.js:770 msgid "{hours} hours ago" msgstr "{часы} часов назад" -#: js/js.js:765 +#: js/js.js:771 msgid "today" msgstr "сегодня" -#: js/js.js:766 +#: js/js.js:772 msgid "yesterday" msgstr "вчера" -#: js/js.js:767 +#: js/js.js:773 msgid "{days} days ago" msgstr "{дни} дней назад" -#: js/js.js:768 +#: js/js.js:774 msgid "last month" msgstr "в прошлом месяце" -#: js/js.js:769 +#: js/js.js:775 msgid "{months} months ago" msgstr "{месяцы} месяцев назад" -#: js/js.js:770 +#: js/js.js:776 msgid "months ago" msgstr "месяц назад" -#: js/js.js:771 +#: js/js.js:777 msgid "last year" msgstr "в прошлом году" -#: js/js.js:772 +#: js/js.js:778 msgid "years ago" msgstr "лет назад" @@ -239,8 +241,8 @@ msgid "The object type is not specified." msgstr "Тип объекта не указан." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Ошибка" @@ -260,7 +262,7 @@ msgstr "Сделать общим" msgid "Shared" msgstr "Опубликовано" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Ошибка создания общего доступа" @@ -356,23 +358,23 @@ msgstr "удалить" msgid "share" msgstr "сделать общим" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Пароль защищен" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Ошибка при отключении даты истечения срока действия" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Ошибка при установке даты истечения срока действия" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Отправка ..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Письмо отправлено" @@ -468,7 +470,7 @@ msgstr "Редактирование категорий" msgid "Add" msgstr "Добавить" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Предупреждение системы безопасности" @@ -478,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "Нет доступного защищенного генератора случайных чисел, пожалуйста, включите расширение PHP OpenSSL." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Без защищенного генератора случайных чисел злоумышленник может спрогнозировать пароль, сбросить учетные данные и завладеть Вашим аккаунтом." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Ваша папка с данными и файлы возможно доступны из интернета потому что файл .htaccess не работает." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Ваши каталоги данных и файлы, вероятно, доступны из Интернета. Файл .htaccess, предоставляемый ownCloud, не работает. Мы настоятельно рекомендуем Вам настроить вебсервер таким образом, чтобы каталоги данных больше не были доступны, или переместить их за пределы корневого каталога документов веб-сервера." +"For information how to properly configure your server, please see the documentation." +msgstr "Для информации как правильно настроить Ваш сервер, пожалйста загляните в документацию." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Создать admin account" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Расширенный" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Папка данных" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Настроить базу данных" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "будет использоваться" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Пользователь базы данных" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Пароль базы данных" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Имя базы данных" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Табличная область базы данных" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Сервер базы данных" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Завершение настройки" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "веб-сервисы под Вашим контролем" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Выйти" @@ -574,7 +580,7 @@ msgstr "Войти" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Альтернативные Имена" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/ru_RU/files.po b/l10n/ru_RU/files.po index 659837c8c9..9d439b6855 100644 --- a/l10n/ru_RU/files.po +++ b/l10n/ru_RU/files.po @@ -6,13 +6,14 @@ # , 2013. # , 2012. # , 2012. +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 12:30+0000\n" +"Last-Translator: Langaru \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,6 +21,20 @@ msgstr "" "Language: ru_RU\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Неполучается перенести %s - Файл с таким именем уже существует" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Неполучается перенести %s " + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Невозможно переименовать файл" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Файл не был загружен. Неизвестная ошибка" @@ -56,8 +71,8 @@ msgid "Failed to write to disk" msgstr "Не удалось записать на диск" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Не достаточно свободного места" +msgid "Not enough storage available" +msgstr "Недостаточно места в хранилище" #: ajax/upload.php:83 msgid "Invalid directory." @@ -67,53 +82,54 @@ msgstr "Неверный каталог." msgid "Files" msgstr "Файлы" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Скрыть" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Удалить навсегда" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Удалить" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Переименовать" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Ожидающий решения" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{новое_имя} уже существует" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "отмена" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "подобрать название" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "отменить" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "заменено {новое_имя}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "отменить действие" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "заменено {новое_имя} с {старое_имя}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" -msgstr "" +msgstr "выполняется процесс удаления" #: js/files.js:52 msgid "'.' is an invalid file name." @@ -131,17 +147,17 @@ msgstr "Некорректное имя, '\\', '/', '<', '>', ':', '\"', '|', '? #: js/files.js:78 msgid "Your storage is full, files can not be updated or synced anymore!" -msgstr "" +msgstr "Ваше хранилище переполнено, фалы больше не могут быть обновлены или синхронизированы!" #: js/files.js:82 msgid "Your storage is almost full ({usedSpacePercent}%)" -msgstr "" +msgstr "Ваше хранилище почти полно ({usedSpacePercent}%)" #: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." -msgstr "" +msgstr "Идёт подготовка к скачке Вашего файла. Это может занять некоторое время, если фалы большие." #: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" @@ -151,64 +167,60 @@ msgstr "Невозможно загрузить файл,\n так как он msgid "Upload Error" msgstr "Ошибка загрузки" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Закрыть" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Ожидающий решения" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "загрузка 1 файла" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{количество} загружено файлов" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Загрузка отменена" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Процесс загрузки файла. Если покинуть страницу сейчас, загрузка будет отменена." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL не должен быть пустым." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Неверное имя папки. Использование наименования 'Опубликовано' зарезервировано Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Имя" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Размер" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Изменен" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 папка" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{количество} папок" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 файл" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{количество} файлов" @@ -265,8 +277,8 @@ msgid "From link" msgstr "По ссылке" #: templates/index.php:40 -msgid "Trash" -msgstr "" +msgid "Trash bin" +msgstr "Корзина" #: templates/index.php:46 msgid "Cancel upload" @@ -280,6 +292,10 @@ msgstr "Здесь ничего нет. Загрузите что-нибудь!" msgid "Download" msgstr "Загрузить" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Скрыть" + #: templates/index.php:105 msgid "Upload too large" msgstr "Загрузка слишком велика" diff --git a/l10n/ru_RU/files_encryption.po b/l10n/ru_RU/files_encryption.po index 41f89c1b29..cd0001f8da 100644 --- a/l10n/ru_RU/files_encryption.po +++ b/l10n/ru_RU/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -19,28 +19,6 @@ msgstr "" "Language: ru_RU\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Пожалуйста, переключитесь на ownCloud-клиент и измените Ваш пароль шифрования для завершения конвертации." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "переключено на шифрование на клиентской стороне" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Пожалуйста, проверьте Ваш пароль и попробуйте снова" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Шифрование" diff --git a/l10n/ru_RU/files_trashbin.po b/l10n/ru_RU/files_trashbin.po index 02991a08ba..1213f4e5eb 100644 --- a/l10n/ru_RU/files_trashbin.po +++ b/l10n/ru_RU/files_trashbin.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 18:20+0000\n" +"Last-Translator: Langaru \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,13 +18,23 @@ msgstr "" "Language: ru_RU\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "%s не может быть удалён навсегда" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "%s не может быть восстановлен" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" -msgstr "" +msgstr "выполнить операцию восстановления" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "удалить файл навсегда" #: js/trash.js:125 templates/index.php:17 msgid "Name" @@ -31,7 +42,7 @@ msgstr "Имя" #: js/trash.js:126 templates/index.php:27 msgid "Deleted" -msgstr "" +msgstr "Удалён" #: js/trash.js:135 msgid "1 folder" @@ -51,8 +62,8 @@ msgstr "{количество} файлов" #: templates/index.php:9 msgid "Nothing in here. Your trash bin is empty!" -msgstr "" +msgstr "Здесь ничего нет. Ваша корзина пуста!" #: templates/index.php:20 templates/index.php:22 msgid "Restore" -msgstr "" +msgstr "Восстановить" diff --git a/l10n/ru_RU/files_versions.po b/l10n/ru_RU/files_versions.po index 440d5bbecb..1cb13519bb 100644 --- a/l10n/ru_RU/files_versions.po +++ b/l10n/ru_RU/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: ru_RU\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "История" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Файлы управления версиями" diff --git a/l10n/ru_RU/lib.po b/l10n/ru_RU/lib.po index 34e58324fb..b05be551ad 100644 --- a/l10n/ru_RU/lib.po +++ b/l10n/ru_RU/lib.po @@ -5,13 +5,14 @@ # Translators: # , 2013. # , 2012. +# Дмитрий , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-30 00:23+0100\n" -"PO-Revision-Date: 2013-01-29 10:41+0000\n" -"Last-Translator: AnnaSch \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +20,47 @@ msgstr "" "Language: ru_RU\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Помощь" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Персональный" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Настройки" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Пользователи" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Приложения" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Админ" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Загрузка ZIP выключена." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Файлы должны быть загружены один за другим." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Обратно к файлам" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Выбранные файлы слишком велики для генерации zip-архива." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "не может быть определено" @@ -87,6 +88,103 @@ msgstr "Текст" msgid "Images" msgstr "Изображения" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Ваш веб сервер ещё не достаточно точно настроен для возможности синхронизации, т.к. похоже, что интерфейс WebDAV сломан." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Пожалуйста проверте дважды гиды по установке." + #: template.php:113 msgid "seconds ago" msgstr "секунд назад" diff --git a/l10n/ru_RU/settings.po b/l10n/ru_RU/settings.po index 184b4e73c6..5bfadd0275 100644 --- a/l10n/ru_RU/settings.po +++ b/l10n/ru_RU/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -23,12 +23,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Невозможно загрузить список из App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Ошибка авторизации" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -82,7 +82,7 @@ msgstr "Невозможно добавить пользователя в гру msgid "Unable to remove user from group %s" msgstr "Невозможно удалить пользователя из группы %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -179,99 +179,87 @@ msgstr "Коммерческая поддержка" msgid "You have used %s of the available %s" msgstr "Вы использовали %s из возможных %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Клиенты" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Загрузка десктопных клиентов" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Загрузить клиент под Android " +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Загрузить клиент под iOS " +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Вновь показать помощника первоначальной настройки" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Пароль" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Ваш пароль был изменен" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Невозможно изменить Ваш пароль" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Текущий пароль" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Новый пароль" -#: templates/personal.php:28 -msgid "show" -msgstr "показать" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Изменить пароль" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Электронная почта" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Адрес Вашей электронной почты" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Введите адрес электронной почты для возможности восстановления пароля" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Язык" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Помогите перевести" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Используйте этот адрес для подключения к ownCloud в Вашем файловом менеджере" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Версия" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Использовать TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Не используйте это SSL-соединений, это не будет выполнено." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/si_LK/core.po b/l10n/si_LK/core.po index bf09a68a99..d628f44703 100644 --- a/l10n/si_LK/core.po +++ b/l10n/si_LK/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -53,7 +53,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -158,59 +159,59 @@ msgstr "නොවැම්බර්" msgid "December" msgstr "දෙසැම්බර්" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "සැකසුම්" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "තත්පරයන්ට පෙර" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 මිනිත්තුවකට පෙර" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "අද" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "ඊයේ" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "පෙර මාසයේ" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "මාස කීපයකට පෙර" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "පෙර අවුරුද්දේ" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "අවුරුදු කීපයකට පෙර" @@ -469,7 +470,7 @@ msgstr "ප්‍රභේදයන් සංස්කරණය" msgid "Add" msgstr "එක් කරන්න" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "ආරක්ෂක නිවේදනයක්" @@ -479,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "ආරක්ෂිත අහඹු සංඛ්‍යා උත්පාදකයක් නොමැති නම් ඔබගේ ගිණුමට පහරදෙන අයකුට එහි මුරපද යළි පිහිටුවීමට අවශ්‍ය ටෝකන පහසුවෙන් සොයාගෙන ඔබගේ ගිණුම පැහැරගත හැක." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "ඔබගේ දත්ත ඩිරෙක්ටරිය හා ගොනුවලට අන්තර්ජාලයෙන් පිවිසිය හැක. ownCloud සපයා ඇති .htaccess ගොනුව ක්‍රියාකරන්නේ නැත. අපි තරයේ කියා සිටිනුයේ නම්, මෙම දත්ත හා ගොනු එසේ පිවිසීමට නොහැකි වන ලෙස ඔබේ වෙබ් සේවාදායකයා වින්‍යාස කරන ලෙස හෝ එම ඩිරෙක්ටරිය වෙබ් මූලයෙන් පිටතට ගෙනයන ලෙසය." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "දියුණු/උසස්" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "දත්ත ෆෝල්ඩරය" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "දත්ත සමුදාය හැඩගැසීම" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "භාවිතා වනු ඇත" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "දත්තගබඩා භාවිතාකරු" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "දත්තගබඩාවේ මුරපදය" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "දත්තගබඩාවේ නම" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "දත්තගබඩා සේවාදායකයා" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "ස්ථාපනය කිරීම අවසන් කරන්න" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "ඔබට පාලනය කළ හැකි වෙබ් සේවාවන්" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "නික්මීම" diff --git a/l10n/si_LK/files.po b/l10n/si_LK/files.po index f98b038c8e..2277e5ab28 100644 --- a/l10n/si_LK/files.po +++ b/l10n/si_LK/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -19,6 +19,20 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "ගොනුවක් උඩුගත නොවුනි. නොහැඳිනු දෝෂයක්" @@ -55,7 +69,7 @@ msgid "Failed to write to disk" msgstr "තැටිගත කිරීම අසාර්ථකයි" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -66,51 +80,52 @@ msgstr "" msgid "Files" msgstr "ගොනු" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "නොබෙදු" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "මකන්න" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "නැවත නම් කරන්න" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "ප්‍රතිස්ථාපනය කරන්න" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "නමක් යෝජනා කරන්න" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "අත් හරින්න" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "ප්‍රතිස්ථාපනය කරන්න" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "නමක් යෝජනා කරන්න" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "අත් හරින්න" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "නිෂ්ප්‍රභ කරන්න" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -150,64 +165,60 @@ msgstr "" msgid "Upload Error" msgstr "උඩුගත කිරීමේ දෝශයක්" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "වසන්න" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 ගොනුවක් උඩගත කෙරේ" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "උඩුගත කිරීම අත් හරින්න ලදී" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "උඩුගතකිරීමක් සිදුවේ. පිටුව හැර යාමෙන් එය නැවතෙනු ඇත" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "යොමුව හිස් විය නොහැක" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "නම" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "ප්‍රමාණය" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "වෙනස් කළ" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 ෆොල්ඩරයක්" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 ගොනුවක්" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -264,7 +275,7 @@ msgid "From link" msgstr "යොමුවෙන්" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -279,6 +290,10 @@ msgstr "මෙහි කිසිවක් නොමැත. යමක් උඩ msgid "Download" msgstr "බාගත කිරීම" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "නොබෙදු" + #: templates/index.php:105 msgid "Upload too large" msgstr "උඩුගත කිරීම විශාල වැඩිය" diff --git a/l10n/si_LK/files_encryption.po b/l10n/si_LK/files_encryption.po index 14724b9e31..7af077ac2a 100644 --- a/l10n/si_LK/files_encryption.po +++ b/l10n/si_LK/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "ගුප්ත කේතනය" diff --git a/l10n/si_LK/files_trashbin.po b/l10n/si_LK/files_trashbin.po index 67a762da98..a1174c1e82 100644 --- a/l10n/si_LK/files_trashbin.po +++ b/l10n/si_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/si_LK/files_versions.po b/l10n/si_LK/files_versions.po index 65443ed184..a7a9fdc499 100644 --- a/l10n/si_LK/files_versions.po +++ b/l10n/si_LK/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "ඉතිහාසය" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "ගොනු අනුවාදයන්" diff --git a/l10n/si_LK/lib.po b/l10n/si_LK/lib.po index 9fcdc0a05a..d914ff9688 100644 --- a/l10n/si_LK/lib.po +++ b/l10n/si_LK/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "උදව්" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "පෞද්ගලික" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "සිටුවම්" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "පරිශීලකයන්" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "යෙදුම්" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "පරිපාලක" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP භාගත කිරීම් අක්‍රියයි" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "ගොනු එකින් එක භාගත යුතුයි" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "ගොනු වෙතට නැවත යන්න" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "තෝරාගත් ගොනු ZIP ගොනුවක් තැනීමට විශාල වැඩිය." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -87,6 +87,103 @@ msgstr "පෙළ" msgid "Images" msgstr "අනු රූ" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "තත්පරයන්ට පෙර" diff --git a/l10n/si_LK/settings.po b/l10n/si_LK/settings.po index 223283dfa9..251d262f66 100644 --- a/l10n/si_LK/settings.po +++ b/l10n/si_LK/settings.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "සත්‍යාපන දෝෂයක්" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -83,7 +83,7 @@ msgstr "පරිශීලකයා %s කණ්ඩායමට එකතු ක msgid "Unable to remove user from group %s" msgstr "පරිශීලකයා %s කණ්ඩායමින් ඉවත් කළ නොහැක" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -180,99 +180,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "සේවාලාභීන්" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "මුරපදය" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "ඔබගේ මුර පදය වෙනස් කෙරුණි" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "මුර පදය වෙනස් කළ නොහැකි විය" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "වත්මන් මුරපදය" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "නව මුරපදය" -#: templates/personal.php:28 -msgid "show" -msgstr "ප්‍රදර්ශනය කිරීම" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "මුරපදය වෙනස් කිරීම" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "විද්‍යුත් තැපෑල" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "ඔබගේ විද්‍යුත් තැපෑල" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "මුරපද ප්‍රතිස්ථාපනය සඳහා විද්‍යුත් තැපැල් විස්තර ලබා දෙන්න" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "භාෂාව" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "පරිවර්ථන සහය" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -214,7 +214,7 @@ msgid "Use TLS" msgstr "TLS භාවිතා කරන්න" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/sk/core.po b/l10n/sk/core.po new file mode 100644 index 0000000000..5986e77ed4 --- /dev/null +++ b/l10n/sk/core.po @@ -0,0 +1,593 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ajax/share.php:85 +#, php-format +msgid "User %s shared a file with you" +msgstr "" + +#: ajax/share.php:87 +#, php-format +msgid "User %s shared a folder with you" +msgstr "" + +#: ajax/share.php:89 +#, php-format +msgid "" +"User %s shared the file \"%s\" with you. It is available for download here: " +"%s" +msgstr "" + +#: ajax/share.php:91 +#, php-format +msgid "" +"User %s shared the folder \"%s\" with you. It is available for download " +"here: %s" +msgstr "" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "" + +#: ajax/vcategories/add.php:37 +#, php-format +msgid "This category already exists: %s" +msgstr "" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/config.php:32 +msgid "Sunday" +msgstr "" + +#: js/config.php:32 +msgid "Monday" +msgstr "" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "" + +#: js/config.php:32 +msgid "Thursday" +msgstr "" + +#: js/config.php:32 +msgid "Friday" +msgstr "" + +#: js/config.php:32 +msgid "Saturday" +msgstr "" + +#: js/config.php:33 +msgid "January" +msgstr "" + +#: js/config.php:33 +msgid "February" +msgstr "" + +#: js/config.php:33 +msgid "March" +msgstr "" + +#: js/config.php:33 +msgid "April" +msgstr "" + +#: js/config.php:33 +msgid "May" +msgstr "" + +#: js/config.php:33 +msgid "June" +msgstr "" + +#: js/config.php:33 +msgid "July" +msgstr "" + +#: js/config.php:33 +msgid "August" +msgstr "" + +#: js/config.php:33 +msgid "September" +msgstr "" + +#: js/config.php:33 +msgid "October" +msgstr "" + +#: js/config.php:33 +msgid "November" +msgstr "" + +#: js/config.php:33 +msgid "December" +msgstr "" + +#: js/js.js:284 +msgid "Settings" +msgstr "" + +#: js/js.js:764 +msgid "seconds ago" +msgstr "" + +#: js/js.js:765 +msgid "1 minute ago" +msgstr "" + +#: js/js.js:766 +msgid "{minutes} minutes ago" +msgstr "" + +#: js/js.js:767 +msgid "1 hour ago" +msgstr "" + +#: js/js.js:768 +msgid "{hours} hours ago" +msgstr "" + +#: js/js.js:769 +msgid "today" +msgstr "" + +#: js/js.js:770 +msgid "yesterday" +msgstr "" + +#: js/js.js:771 +msgid "{days} days ago" +msgstr "" + +#: js/js.js:772 +msgid "last month" +msgstr "" + +#: js/js.js:773 +msgid "{months} months ago" +msgstr "" + +#: js/js.js:774 +msgid "months ago" +msgstr "" + +#: js/js.js:775 +msgid "last year" +msgstr "" + +#: js/js.js:776 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "" + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:162 +msgid "No" +msgstr "" + +#: js/oc-dialogs.js:163 +msgid "Yes" +msgstr "" + +#: js/oc-dialogs.js:180 +msgid "Ok" +msgstr "" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" + +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 +msgid "Error" +msgstr "" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "" + +#: js/share.js:141 js/share.js:611 +msgid "Error while sharing" +msgstr "" + +#: js/share.js:152 +msgid "Error while unsharing" +msgstr "" + +#: js/share.js:159 +msgid "Error while changing permissions" +msgstr "" + +#: js/share.js:168 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" + +#: js/share.js:170 +msgid "Shared with you by {owner}" +msgstr "" + +#: js/share.js:175 +msgid "Share with" +msgstr "" + +#: js/share.js:180 +msgid "Share with link" +msgstr "" + +#: js/share.js:183 +msgid "Password protect" +msgstr "" + +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 +msgid "Password" +msgstr "" + +#: js/share.js:189 +msgid "Email link to person" +msgstr "" + +#: js/share.js:190 +msgid "Send" +msgstr "" + +#: js/share.js:194 +msgid "Set expiration date" +msgstr "" + +#: js/share.js:195 +msgid "Expiration date" +msgstr "" + +#: js/share.js:227 +msgid "Share via email:" +msgstr "" + +#: js/share.js:229 +msgid "No people found" +msgstr "" + +#: js/share.js:256 +msgid "Resharing is not allowed" +msgstr "" + +#: js/share.js:292 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:313 +msgid "Unshare" +msgstr "" + +#: js/share.js:325 +msgid "can edit" +msgstr "" + +#: js/share.js:327 +msgid "access control" +msgstr "" + +#: js/share.js:330 +msgid "create" +msgstr "" + +#: js/share.js:333 +msgid "update" +msgstr "" + +#: js/share.js:336 +msgid "delete" +msgstr "" + +#: js/share.js:339 +msgid "share" +msgstr "" + +#: js/share.js:373 js/share.js:558 +msgid "Password protected" +msgstr "" + +#: js/share.js:571 +msgid "Error unsetting expiration date" +msgstr "" + +#: js/share.js:583 +msgid "Error setting expiration date" +msgstr "" + +#: js/share.js:598 +msgid "Sending ..." +msgstr "" + +#: js/share.js:609 +msgid "Email sent" +msgstr "" + +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the ownCloud " +"community." +msgstr "" + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "" + +#: lostpassword/controller.php:47 +msgid "ownCloud password reset" +msgstr "" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "" + +#: lostpassword/templates/lostpassword.php:5 +msgid "Reset email send." +msgstr "" + +#: lostpassword/templates/lostpassword.php:8 +msgid "Request failed!" +msgstr "" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:39 +#: templates/login.php:28 +msgid "Username" +msgstr "" + +#: lostpassword/templates/lostpassword.php:14 +msgid "Request reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "" + +#: strings.php:5 +msgid "Personal" +msgstr "" + +#: strings.php:6 +msgid "Users" +msgstr "" + +#: strings.php:7 +msgid "Apps" +msgstr "" + +#: strings.php:8 +msgid "Admin" +msgstr "" + +#: strings.php:9 +msgid "Help" +msgstr "" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "" + +#: templates/installation.php:23 templates/installation.php:30 +msgid "Security Warning" +msgstr "" + +#: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:25 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"For information how to properly configure your server, please see the documentation." +msgstr "" + +#: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:52 +msgid "Advanced" +msgstr "" + +#: templates/installation.php:54 +msgid "Data folder" +msgstr "" + +#: templates/installation.php:61 +msgid "Configure the database" +msgstr "" + +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 +msgid "will be used" +msgstr "" + +#: templates/installation.php:109 +msgid "Database user" +msgstr "" + +#: templates/installation.php:113 +msgid "Database password" +msgstr "" + +#: templates/installation.php:117 +msgid "Database name" +msgstr "" + +#: templates/installation.php:125 +msgid "Database tablespace" +msgstr "" + +#: templates/installation.php:131 +msgid "Database host" +msgstr "" + +#: templates/installation.php:136 +msgid "Finish setup" +msgstr "" + +#: templates/layout.guest.php:33 +msgid "web services under your control" +msgstr "" + +#: templates/layout.user.php:48 +msgid "Log out" +msgstr "" + +#: templates/login.php:10 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:11 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:13 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:19 +msgid "Lost your password?" +msgstr "" + +#: templates/login.php:41 +msgid "remember" +msgstr "" + +#: templates/login.php:43 +msgid "Log in" +msgstr "" + +#: templates/login.php:49 +msgid "Alternative Logins" +msgstr "" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "" + +#: templates/update.php:3 +#, php-format +msgid "Updating ownCloud to version %s, this may take a while." +msgstr "" diff --git a/l10n/sk/files.po b/l10n/sk/files.po new file mode 100644 index 0000000000..8f6e6f689e --- /dev/null +++ b/l10n/sk/files.po @@ -0,0 +1,315 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + +#: ajax/upload.php:19 +msgid "No file was uploaded. Unknown error" +msgstr "" + +#: ajax/upload.php:26 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:27 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:29 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:31 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:32 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:33 +msgid "Missing a temporary folder" +msgstr "" + +#: ajax/upload.php:34 +msgid "Failed to write to disk" +msgstr "" + +#: ajax/upload.php:52 +msgid "Not enough storage available" +msgstr "" + +#: ajax/upload.php:83 +msgid "Invalid directory." +msgstr "" + +#: appinfo/app.php:10 +msgid "Files" +msgstr "" + +#: js/fileactions.js:116 +msgid "Delete permanently" +msgstr "" + +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 +msgid "Delete" +msgstr "" + +#: js/fileactions.js:184 +msgid "Rename" +msgstr "" + +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 +msgid "undo" +msgstr "" + +#: js/filelist.js:297 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:322 +msgid "perform delete operation" +msgstr "" + +#: js/files.js:52 +msgid "'.' is an invalid file name." +msgstr "" + +#: js/files.js:56 +msgid "File name cannot be empty." +msgstr "" + +#: js/files.js:64 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "" + +#: js/files.js:224 +msgid "" +"Your download is being prepared. This might take some time if the files are " +"big." +msgstr "" + +#: js/files.js:261 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "" + +#: js/files.js:261 +msgid "Upload Error" +msgstr "" + +#: js/files.js:272 +msgid "Close" +msgstr "" + +#: js/files.js:311 +msgid "1 file uploading" +msgstr "" + +#: js/files.js:314 js/files.js:369 js/files.js:384 +msgid "{count} files uploading" +msgstr "" + +#: js/files.js:387 js/files.js:422 +msgid "Upload cancelled." +msgstr "" + +#: js/files.js:496 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "" + +#: js/files.js:569 +msgid "URL cannot be empty." +msgstr "" + +#: js/files.js:574 +msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" +msgstr "" + +#: js/files.js:947 templates/index.php:67 +msgid "Name" +msgstr "" + +#: js/files.js:948 templates/index.php:78 +msgid "Size" +msgstr "" + +#: js/files.js:949 templates/index.php:80 +msgid "Modified" +msgstr "" + +#: js/files.js:968 +msgid "1 folder" +msgstr "" + +#: js/files.js:970 +msgid "{count} folders" +msgstr "" + +#: js/files.js:978 +msgid "1 file" +msgstr "" + +#: js/files.js:980 +msgid "{count} files" +msgstr "" + +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "" + +#: templates/admin.php:10 +msgid "max. possible: " +msgstr "" + +#: templates/admin.php:15 +msgid "Needed for multi-file and folder downloads." +msgstr "" + +#: templates/admin.php:17 +msgid "Enable ZIP-download" +msgstr "" + +#: templates/admin.php:20 +msgid "0 is unlimited" +msgstr "" + +#: templates/admin.php:22 +msgid "Maximum input size for ZIP files" +msgstr "" + +#: templates/admin.php:26 +msgid "Save" +msgstr "" + +#: templates/index.php:7 +msgid "New" +msgstr "" + +#: templates/index.php:10 +msgid "Text file" +msgstr "" + +#: templates/index.php:12 +msgid "Folder" +msgstr "" + +#: templates/index.php:14 +msgid "From link" +msgstr "" + +#: templates/index.php:40 +msgid "Trash bin" +msgstr "" + +#: templates/index.php:46 +msgid "Cancel upload" +msgstr "" + +#: templates/index.php:59 +msgid "Nothing in here. Upload something!" +msgstr "" + +#: templates/index.php:73 +msgid "Download" +msgstr "" + +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + +#: templates/index.php:105 +msgid "Upload too large" +msgstr "" + +#: templates/index.php:107 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + +#: templates/index.php:112 +msgid "Files are being scanned, please wait." +msgstr "" + +#: templates/index.php:115 +msgid "Current scanning" +msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/sk/files_encryption.po b/l10n/sk/files_encryption.po new file mode 100644 index 0000000000..eb687048ca --- /dev/null +++ b/l10n/sk/files_encryption.po @@ -0,0 +1,38 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: templates/settings-personal.php:4 templates/settings.php:5 +msgid "Encryption" +msgstr "" + +#: templates/settings-personal.php:7 +msgid "File encryption is enabled." +msgstr "" + +#: templates/settings-personal.php:11 +msgid "The following file types will not be encrypted:" +msgstr "" + +#: templates/settings.php:7 +msgid "Exclude the following file types from encryption:" +msgstr "" + +#: templates/settings.php:12 +msgid "None" +msgstr "" diff --git a/l10n/sk/files_external.po b/l10n/sk/files_external.po new file mode 100644 index 0000000000..3c72b5b471 --- /dev/null +++ b/l10n/sk/files_external.po @@ -0,0 +1,120 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2012-08-12 22:34+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +msgid "Access granted" +msgstr "" + +#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +msgid "Error configuring Dropbox storage" +msgstr "" + +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +msgid "Grant access" +msgstr "" + +#: js/dropbox.js:73 js/google.js:72 +msgid "Fill out all required fields" +msgstr "" + +#: js/dropbox.js:85 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "" + +#: js/google.js:26 js/google.js:73 js/google.js:78 +msgid "Error configuring Google Drive storage" +msgstr "" + +#: lib/config.php:405 +msgid "" +"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares " +"is not possible. Please ask your system administrator to install it." +msgstr "" + +#: lib/config.php:406 +msgid "" +"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." +msgstr "" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "" + +#: templates/settings.php:8 templates/settings.php:22 +msgid "Mount point" +msgstr "" + +#: templates/settings.php:9 +msgid "Backend" +msgstr "" + +#: templates/settings.php:10 +msgid "Configuration" +msgstr "" + +#: templates/settings.php:11 +msgid "Options" +msgstr "" + +#: templates/settings.php:12 +msgid "Applicable" +msgstr "" + +#: templates/settings.php:27 +msgid "Add mount point" +msgstr "" + +#: templates/settings.php:85 +msgid "None set" +msgstr "" + +#: templates/settings.php:86 +msgid "All Users" +msgstr "" + +#: templates/settings.php:87 +msgid "Groups" +msgstr "" + +#: templates/settings.php:95 +msgid "Users" +msgstr "" + +#: templates/settings.php:108 templates/settings.php:109 +#: templates/settings.php:144 templates/settings.php:145 +msgid "Delete" +msgstr "" + +#: templates/settings.php:124 +msgid "Enable User External Storage" +msgstr "" + +#: templates/settings.php:125 +msgid "Allow users to mount their own external storage" +msgstr "" + +#: templates/settings.php:136 +msgid "SSL root certificates" +msgstr "" + +#: templates/settings.php:153 +msgid "Import Root Certificate" +msgstr "" diff --git a/l10n/sk/files_sharing.po b/l10n/sk/files_sharing.po new file mode 100644 index 0000000000..942e60b049 --- /dev/null +++ b/l10n/sk/files_sharing.po @@ -0,0 +1,48 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2012-08-12 22:35+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: templates/authenticate.php:4 +msgid "Password" +msgstr "" + +#: templates/authenticate.php:6 +msgid "Submit" +msgstr "" + +#: templates/public.php:9 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "" + +#: templates/public.php:11 +#, php-format +msgid "%s shared the file %s with you" +msgstr "" + +#: templates/public.php:14 templates/public.php:30 +msgid "Download" +msgstr "" + +#: templates/public.php:29 +msgid "No preview available for" +msgstr "" + +#: templates/public.php:35 +msgid "web services under your control" +msgstr "" diff --git a/l10n/sk/files_trashbin.po b/l10n/sk/files_trashbin.po new file mode 100644 index 0000000000..8655044756 --- /dev/null +++ b/l10n/sk/files_trashbin.po @@ -0,0 +1,68 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-01-31 16:03+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + +#: js/trash.js:7 js/trash.js:94 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:33 +msgid "delete file permanently" +msgstr "" + +#: js/trash.js:125 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:126 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:135 +msgid "1 folder" +msgstr "" + +#: js/trash.js:137 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:145 +msgid "1 file" +msgstr "" + +#: js/trash.js:147 +msgid "{count} files" +msgstr "" + +#: templates/index.php:9 +msgid "Nothing in here. Your trash bin is empty!" +msgstr "" + +#: templates/index.php:20 templates/index.php:22 +msgid "Restore" +msgstr "" diff --git a/l10n/sk/files_versions.po b/l10n/sk/files_versions.po new file mode 100644 index 0000000000..dd26d70a1c --- /dev/null +++ b/l10n/sk/files_versions.po @@ -0,0 +1,65 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2012-08-12 22:37+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + +#: js/versions.js:16 +msgid "History" +msgstr "" + +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + +#: templates/settings.php:3 +msgid "Files Versioning" +msgstr "" + +#: templates/settings.php:4 +msgid "Enable" +msgstr "" diff --git a/l10n/sk/lib.po b/l10n/sk/lib.po new file mode 100644 index 0000000000..598f2b6441 --- /dev/null +++ b/l10n/sk/lib.po @@ -0,0 +1,253 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: app.php:339 +msgid "Help" +msgstr "" + +#: app.php:346 +msgid "Personal" +msgstr "" + +#: app.php:351 +msgid "Settings" +msgstr "" + +#: app.php:356 +msgid "Users" +msgstr "" + +#: app.php:363 +msgid "Apps" +msgstr "" + +#: app.php:365 +msgid "Admin" +msgstr "" + +#: files.php:202 +msgid "ZIP download is turned off." +msgstr "" + +#: files.php:203 +msgid "Files need to be downloaded one by one." +msgstr "" + +#: files.php:203 files.php:228 +msgid "Back to Files" +msgstr "" + +#: files.php:227 +msgid "Selected files too large to generate zip file." +msgstr "" + +#: helper.php:226 +msgid "couldn't be determined" +msgstr "" + +#: json.php:28 +msgid "Application is not enabled" +msgstr "" + +#: json.php:39 json.php:62 json.php:73 +msgid "Authentication error" +msgstr "" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "" + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + +#: template.php:113 +msgid "seconds ago" +msgstr "" + +#: template.php:114 +msgid "1 minute ago" +msgstr "" + +#: template.php:115 +#, php-format +msgid "%d minutes ago" +msgstr "" + +#: template.php:116 +msgid "1 hour ago" +msgstr "" + +#: template.php:117 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:118 +msgid "today" +msgstr "" + +#: template.php:119 +msgid "yesterday" +msgstr "" + +#: template.php:120 +#, php-format +msgid "%d days ago" +msgstr "" + +#: template.php:121 +msgid "last month" +msgstr "" + +#: template.php:122 +#, php-format +msgid "%d months ago" +msgstr "" + +#: template.php:123 +msgid "last year" +msgstr "" + +#: template.php:124 +msgid "years ago" +msgstr "" + +#: updater.php:75 +#, php-format +msgid "%s is available. Get more information" +msgstr "" + +#: updater.php:77 +msgid "up to date" +msgstr "" + +#: updater.php:80 +msgid "updates check is disabled" +msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/sk/settings.po b/l10n/sk/settings.po new file mode 100644 index 0000000000..30c5368436 --- /dev/null +++ b/l10n/sk/settings.po @@ -0,0 +1,316 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "" + +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/changedisplayname.php:32 +msgid "Unable to change display name" +msgstr "" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "" + +#: ajax/enableapp.php:11 +msgid "Could not enable app. " +msgstr "" + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "" + +#: ajax/removeuser.php:24 +msgid "Unable to delete user" +msgstr "" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "" + +#: ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 +#, php-format +msgid "Unable to add user to group %s" +msgstr "" + +#: ajax/togglegroups.php:34 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "" + +#: ajax/updateapp.php:14 +msgid "Couldn't update app." +msgstr "" + +#: js/apps.js:30 +msgid "Update to {appversion}" +msgstr "" + +#: js/apps.js:36 js/apps.js:76 +msgid "Disable" +msgstr "" + +#: js/apps.js:36 js/apps.js:64 +msgid "Enable" +msgstr "" + +#: js/apps.js:55 +msgid "Please wait...." +msgstr "" + +#: js/apps.js:84 +msgid "Updating...." +msgstr "" + +#: js/apps.js:87 +msgid "Error while updating app" +msgstr "" + +#: js/apps.js:87 +msgid "Error" +msgstr "" + +#: js/apps.js:90 +msgid "Updated" +msgstr "" + +#: js/personal.js:96 +msgid "Saving..." +msgstr "" + +#: personal.php:34 personal.php:35 +msgid "__language_name__" +msgstr "" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "" + +#: templates/apps.php:11 +msgid "More Apps" +msgstr "" + +#: templates/apps.php:24 +msgid "Select an App" +msgstr "" + +#: templates/apps.php:28 +msgid "See application page at apps.owncloud.com" +msgstr "" + +#: templates/apps.php:29 +msgid "-licensed by " +msgstr "" + +#: templates/apps.php:31 +msgid "Update" +msgstr "" + +#: templates/help.php:3 +msgid "User Documentation" +msgstr "" + +#: templates/help.php:4 +msgid "Administrator Documentation" +msgstr "" + +#: templates/help.php:6 +msgid "Online Documentation" +msgstr "" + +#: templates/help.php:7 +msgid "Forum" +msgstr "" + +#: templates/help.php:9 +msgid "Bugtracker" +msgstr "" + +#: templates/help.php:11 +msgid "Commercial Support" +msgstr "" + +#: templates/personal.php:8 +#, php-format +msgid "You have used %s of the available %s" +msgstr "" + +#: templates/personal.php:14 +msgid "Get the apps to sync your files" +msgstr "" + +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:39 +msgid "Current password" +msgstr "" + +#: templates/personal.php:40 +msgid "New password" +msgstr "" + +#: templates/personal.php:42 +msgid "Change password" +msgstr "" + +#: templates/personal.php:54 templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "" + +#: templates/personal.php:68 +msgid "Email" +msgstr "" + +#: templates/personal.php:69 +msgid "Your email address" +msgstr "" + +#: templates/personal.php:70 +msgid "Fill in an email address to enable password recovery" +msgstr "" + +#: templates/personal.php:76 templates/personal.php:77 +msgid "Language" +msgstr "" + +#: templates/personal.php:82 +msgid "Help translate" +msgstr "" + +#: templates/personal.php:87 +msgid "WebDAV" +msgstr "" + +#: templates/personal.php:89 +msgid "Use this address to connect to your ownCloud in your file manager" +msgstr "" + +#: templates/personal.php:98 +msgid "Version" +msgstr "" + +#: templates/personal.php:100 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" + +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 +msgid "Groups" +msgstr "" + +#: templates/users.php:32 +msgid "Create" +msgstr "" + +#: templates/users.php:35 +msgid "Default Storage" +msgstr "" + +#: templates/users.php:42 templates/users.php:142 +msgid "Unlimited" +msgstr "" + +#: templates/users.php:60 templates/users.php:157 +msgid "Other" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 +msgid "Group Admin" +msgstr "" + +#: templates/users.php:86 +msgid "Storage" +msgstr "" + +#: templates/users.php:97 +msgid "change display name" +msgstr "" + +#: templates/users.php:101 +msgid "set new password" +msgstr "" + +#: templates/users.php:137 +msgid "Default" +msgstr "" + +#: templates/users.php:165 +msgid "Delete" +msgstr "" diff --git a/l10n/sk/user_ldap.po b/l10n/sk/user_ldap.po new file mode 100644 index 0000000000..3148a06216 --- /dev/null +++ b/l10n/sk/user_ldap.po @@ -0,0 +1,309 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2012-08-12 22:45+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ajax/deleteConfiguration.php:34 +msgid "Failed to delete the server configuration" +msgstr "" + +#: ajax/testConfiguration.php:35 +msgid "The configuration is valid and the connection could be established!" +msgstr "" + +#: ajax/testConfiguration.php:37 +msgid "" +"The configuration is valid, but the Bind failed. Please check the server " +"settings and credentials." +msgstr "" + +#: ajax/testConfiguration.php:40 +msgid "" +"The configuration is invalid. Please look in the ownCloud log for further " +"details." +msgstr "" + +#: js/settings.js:66 +msgid "Deletion failed" +msgstr "" + +#: js/settings.js:82 +msgid "Take over settings from recent server configuration?" +msgstr "" + +#: js/settings.js:83 +msgid "Keep settings?" +msgstr "" + +#: js/settings.js:97 +msgid "Cannot add server configuration" +msgstr "" + +#: js/settings.js:121 +msgid "Connection test succeeded" +msgstr "" + +#: js/settings.js:126 +msgid "Connection test failed" +msgstr "" + +#: js/settings.js:136 +msgid "Do you really want to delete the current Server Configuration?" +msgstr "" + +#: js/settings.js:137 +msgid "Confirm Deletion" +msgstr "" + +#: templates/settings.php:8 +msgid "" +"Warning: Apps user_ldap and user_webdavauth are incompatible. You may" +" experience unexpected behaviour. Please ask your system administrator to " +"disable one of them." +msgstr "" + +#: templates/settings.php:11 +msgid "" +"Warning: The PHP LDAP module is not installed, the backend will not " +"work. Please ask your system administrator to install it." +msgstr "" + +#: templates/settings.php:15 +msgid "Server configuration" +msgstr "" + +#: templates/settings.php:17 +msgid "Add Server Configuration" +msgstr "" + +#: templates/settings.php:21 +msgid "Host" +msgstr "" + +#: templates/settings.php:21 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "" + +#: templates/settings.php:22 +msgid "Base DN" +msgstr "" + +#: templates/settings.php:22 +msgid "One Base DN per line" +msgstr "" + +#: templates/settings.php:22 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "" + +#: templates/settings.php:23 +msgid "User DN" +msgstr "" + +#: templates/settings.php:23 +msgid "" +"The DN of the client user with which the bind shall be done, e.g. " +"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " +"empty." +msgstr "" + +#: templates/settings.php:24 +msgid "Password" +msgstr "" + +#: templates/settings.php:24 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/settings.php:25 +msgid "User Login Filter" +msgstr "" + +#: templates/settings.php:25 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action." +msgstr "" + +#: templates/settings.php:25 +#, php-format +msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" +msgstr "" + +#: templates/settings.php:26 +msgid "User List Filter" +msgstr "" + +#: templates/settings.php:26 +msgid "Defines the filter to apply, when retrieving users." +msgstr "" + +#: templates/settings.php:26 +msgid "without any placeholder, e.g. \"objectClass=person\"." +msgstr "" + +#: templates/settings.php:27 +msgid "Group Filter" +msgstr "" + +#: templates/settings.php:27 +msgid "Defines the filter to apply, when retrieving groups." +msgstr "" + +#: templates/settings.php:27 +msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." +msgstr "" + +#: templates/settings.php:31 +msgid "Connection Settings" +msgstr "" + +#: templates/settings.php:33 +msgid "Configuration Active" +msgstr "" + +#: templates/settings.php:33 +msgid "When unchecked, this configuration will be skipped." +msgstr "" + +#: templates/settings.php:34 +msgid "Port" +msgstr "" + +#: templates/settings.php:35 +msgid "Backup (Replica) Host" +msgstr "" + +#: templates/settings.php:35 +msgid "" +"Give an optional backup host. It must be a replica of the main LDAP/AD " +"server." +msgstr "" + +#: templates/settings.php:36 +msgid "Backup (Replica) Port" +msgstr "" + +#: templates/settings.php:37 +msgid "Disable Main Server" +msgstr "" + +#: templates/settings.php:37 +msgid "When switched on, ownCloud will only connect to the replica server." +msgstr "" + +#: templates/settings.php:38 +msgid "Use TLS" +msgstr "" + +#: templates/settings.php:38 +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" + +#: templates/settings.php:39 +msgid "Case insensitve LDAP server (Windows)" +msgstr "" + +#: templates/settings.php:40 +msgid "Turn off SSL certificate validation." +msgstr "" + +#: templates/settings.php:40 +msgid "" +"If connection only works with this option, import the LDAP server's SSL " +"certificate in your ownCloud server." +msgstr "" + +#: templates/settings.php:40 +msgid "Not recommended, use for testing only." +msgstr "" + +#: templates/settings.php:41 +msgid "in seconds. A change empties the cache." +msgstr "" + +#: templates/settings.php:43 +msgid "Directory Settings" +msgstr "" + +#: templates/settings.php:45 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:45 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "" + +#: templates/settings.php:46 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:46 +msgid "One User Base DN per line" +msgstr "" + +#: templates/settings.php:47 +msgid "User Search Attributes" +msgstr "" + +#: templates/settings.php:47 templates/settings.php:50 +msgid "Optional; one attribute per line" +msgstr "" + +#: templates/settings.php:48 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:48 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "" + +#: templates/settings.php:49 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:49 +msgid "One Group Base DN per line" +msgstr "" + +#: templates/settings.php:50 +msgid "Group Search Attributes" +msgstr "" + +#: templates/settings.php:51 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:53 +msgid "Special Attributes" +msgstr "" + +#: templates/settings.php:56 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:58 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "" + +#: templates/settings.php:62 +msgid "Help" +msgstr "" diff --git a/l10n/sk/user_webdavauth.po b/l10n/sk/user_webdavauth.po new file mode 100644 index 0000000000..eb6e13c58c --- /dev/null +++ b/l10n/sk/user_webdavauth.po @@ -0,0 +1,33 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: templates/settings.php:3 +msgid "WebDAV Authentication" +msgstr "" + +#: templates/settings.php:4 +msgid "URL: http://" +msgstr "" + +#: templates/settings.php:7 +msgid "" +"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." +msgstr "" diff --git a/l10n/sk_SK/core.po b/l10n/sk_SK/core.po index 353a86346f..d812c7131b 100644 --- a/l10n/sk_SK/core.po +++ b/l10n/sk_SK/core.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# georg , 2013. # , 2011, 2012. # Marián Hvolka , 2013. # , 2012. @@ -13,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 13:30+0000\n" +"Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -56,8 +57,9 @@ msgid "No category to add?" msgstr "Žiadna kategória pre pridanie?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Táto kategória už existuje:" +#, php-format +msgid "This category already exists: %s" +msgstr "Kategéria: %s už existuje." #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -161,59 +163,59 @@ msgstr "November" msgid "December" msgstr "December" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Nastavenia" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "pred sekundami" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "pred minútou" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "pred {minutes} minútami" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "Pred 1 hodinou." -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "Pred {hours} hodinami." -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "dnes" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "včera" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "pred {days} dňami" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "minulý mesiac" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "Pred {months} mesiacmi." -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "pred mesiacmi" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "minulý rok" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "pred rokmi" @@ -243,8 +245,8 @@ msgid "The object type is not specified." msgstr "Nešpecifikovaný typ objektu." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Chyba" @@ -264,7 +266,7 @@ msgstr "Zdieľaj" msgid "Shared" msgstr "Zdieľané" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Chyba počas zdieľania" @@ -322,7 +324,7 @@ msgstr "Zdieľať cez e-mail:" #: js/share.js:229 msgid "No people found" -msgstr "Užívateľ nenájdený" +msgstr "Používateľ nenájdený" #: js/share.js:256 msgid "Resharing is not allowed" @@ -360,23 +362,23 @@ msgstr "zmazať" msgid "share" msgstr "zdieľať" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Chránené heslom" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Chyba pri odstraňovaní dátumu vypršania platnosti" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Chyba pri nastavení dátumu vypršania platnosti" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Odosielam ..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Email odoslaný" @@ -472,7 +474,7 @@ msgstr "Úprava kategórií" msgid "Add" msgstr "Pridať" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Bezpečnostné varovanie" @@ -482,71 +484,75 @@ msgid "" "OpenSSL extension." msgstr "Nie je dostupný žiadny bezpečný generátor náhodných čísel, prosím, povoľte rozšírenie OpenSSL v PHP." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Bez bezpečného generátora náhodných čísel môže útočník predpovedať token pre obnovu hesla a prevziať kontrolu nad vaším kontom." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Váš priečinok s dátami a súbormi je dostupný z internetu, lebo súbor .htaccess nefunguje." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Váš priečinok s dátami a Vaše súbory sú pravdepodobne dostupné z internetu. .htaccess súbor dodávaný s inštaláciou ownCloud nespĺňa úlohu. Dôrazne Vám doporučujeme nakonfigurovať webserver takým spôsobom, aby dáta v priečinku neboli verejné, alebo presuňte dáta mimo štruktúry priečinkov webservera." +"For information how to properly configure your server, please see the documentation." +msgstr "Pre informácie, ako správne nastaviť Váš server sa pozrite do dokumentácie." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Vytvoriť administrátorský účet" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Pokročilé" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Priečinok dát" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Nastaviť databázu" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "bude použité" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Hostiteľ databázy" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Heslo databázy" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Meno databázy" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Tabuľkový priestor databázy" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Server databázy" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Dokončiť inštaláciu" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "webové služby pod vašou kontrolou" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Odhlásiť" @@ -578,7 +584,7 @@ msgstr "Prihlásiť sa" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Altrnatívne loginy" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index 27b5897355..e7c654c382 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/files.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# georg , 2013. # , 2012. # Marián Hvolka , 2013. # , 2012. @@ -12,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 13:50+0000\n" +"Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,6 +23,20 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Nie je možné presunúť %s - súbor s týmto menom už existuje" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Nie je možné presunúť %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Nemožno premenovať súbor" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Žiaden súbor nebol odoslaný. Neznáma chyba" @@ -58,62 +73,63 @@ msgid "Failed to write to disk" msgstr "Zápis na disk sa nepodaril" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Nie je k dispozícii dostatok miesta" +msgid "Not enough storage available" +msgstr "Nedostatok dostupného úložného priestoru" #: ajax/upload.php:83 msgid "Invalid directory." -msgstr "Neplatný adresár" +msgstr "Neplatný priečinok" #: appinfo/app.php:10 msgid "Files" msgstr "Súbory" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Nezdielať" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Zmazať trvalo" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Odstrániť" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Premenovať" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Čaká sa" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} už existuje" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "nahradiť" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "pomôcť s menom" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "zrušiť" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "prepísaný {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "vrátiť" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "prepísaný {new_name} súborom {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "vykonať zmazanie" @@ -153,64 +169,60 @@ msgstr "Nemôžem nahrať súbor lebo je to priečinok alebo má 0 bajtov." msgid "Upload Error" msgstr "Chyba odosielania" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Zavrieť" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Čaká sa" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 súbor sa posiela " -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} súborov odosielaných" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Odosielanie zrušené" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Opustenie stránky zruší práve prebiehajúce odosielanie súboru." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL nemôže byť prázdne" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -msgstr "Neplatné meno adresára. Používanie mena 'Shared' je vyhradené len pre Owncloud" +msgstr "Neplatné meno priečinka. Používanie mena 'Shared' je vyhradené len pre Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Meno" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Veľkosť" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Upravené" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 priečinok" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} priečinkov" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 súbor" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} súborov" @@ -220,7 +232,7 @@ msgstr "Odoslať" #: templates/admin.php:5 msgid "File handling" -msgstr "Nastavenie správanie k súborom" +msgstr "Nastavenie správania sa k súborom" #: templates/admin.php:7 msgid "Maximum upload size" @@ -232,7 +244,7 @@ msgstr "najväčšie možné:" #: templates/admin.php:15 msgid "Needed for multi-file and folder downloads." -msgstr "Vyžadované pre sťahovanie viacerých súborov a adresárov." +msgstr "Vyžadované pre sťahovanie viacerých súborov a priečinkov." #: templates/admin.php:17 msgid "Enable ZIP-download" @@ -267,7 +279,7 @@ msgid "From link" msgstr "Z odkazu" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "Kôš" #: templates/index.php:46 @@ -282,6 +294,10 @@ msgstr "Žiadny súbor. Nahrajte niečo!" msgid "Download" msgstr "Stiahnuť" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Nezdielať" + #: templates/index.php:105 msgid "Upload too large" msgstr "Odosielaný súbor je príliš veľký" @@ -298,7 +314,7 @@ msgstr "Čakajte, súbory sú prehľadávané." #: templates/index.php:115 msgid "Current scanning" -msgstr "Práve prehliadané" +msgstr "Práve prezerané" #: templates/upgrade.php:2 msgid "Upgrading filesystem cache..." diff --git a/l10n/sk_SK/files_encryption.po b/l10n/sk_SK/files_encryption.po index 7977f0fe3e..232ee99f2f 100644 --- a/l10n/sk_SK/files_encryption.po +++ b/l10n/sk_SK/files_encryption.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# georg , 2013. # , 2012. # Marián Hvolka , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 13:10+0000\n" +"Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,43 +20,21 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Prosím, prejdite do svojho klienta ownCloud a zmente šifrovacie heslo na dokončenie konverzie." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "prepnuté na šifrovanie prostredníctvom klienta" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Zmeniť šifrovacie heslo na prihlasovacie" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Skontrolujte si heslo a skúste to znovu." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Nie je možné zmeniť šifrovacie heslo na prihlasovacie" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Šifrovanie" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "Šifrovanie súborov nastavené." #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "Uvedené typy súborov nebudú šifrované:" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Nešifrovať uvedené typy súborov" #: templates/settings.php:12 msgid "None" diff --git a/l10n/sk_SK/files_external.po b/l10n/sk_SK/files_external.po index 56de6320ff..92807a28e1 100644 --- a/l10n/sk_SK/files_external.po +++ b/l10n/sk_SK/files_external.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-31 00:27+0100\n" -"PO-Revision-Date: 2013-01-30 06:20+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 13:30+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -28,11 +28,11 @@ msgstr "Prístup povolený" msgid "Error configuring Dropbox storage" msgstr "Chyba pri konfigurácii úložiska Dropbox" -#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:41 +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 msgid "Grant access" msgstr "Povoliť prístup" -#: js/dropbox.js:73 js/google.js:73 +#: js/dropbox.js:73 js/google.js:72 msgid "Fill out all required fields" msgstr "Vyplňte všetky vyžadované kolónky" @@ -40,17 +40,17 @@ msgstr "Vyplňte všetky vyžadované kolónky" msgid "Please provide a valid Dropbox app key and secret." msgstr "Zadajte platný kľúč aplikácie a heslo Dropbox" -#: js/google.js:26 js/google.js:74 js/google.js:79 +#: js/google.js:26 js/google.js:73 js/google.js:78 msgid "Error configuring Google Drive storage" msgstr "Chyba pri konfigurácii úložiska Google drive" -#: lib/config.php:405 +#: lib/config.php:413 msgid "" "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares " "is not possible. Please ask your system administrator to install it." msgstr "Upozornenie: \"smbclient\" nie je nainštalovaný. Nie je možné pripojenie oddielov CIFS/SMB. Požiadajte administrátora systému, nech ho nainštaluje." -#: lib/config.php:406 +#: lib/config.php:414 msgid "" "Warning: The FTP support in PHP is not enabled or installed. Mounting" " of FTP shares is not possible. Please ask your system administrator to " @@ -91,7 +91,7 @@ msgstr "Žiadne nastavené" #: templates/settings.php:86 msgid "All Users" -msgstr "Všetci užívatelia" +msgstr "Všetci používatelia" #: templates/settings.php:87 msgid "Groups" @@ -99,7 +99,7 @@ msgstr "Skupiny" #: templates/settings.php:95 msgid "Users" -msgstr "Užívatelia" +msgstr "Používatelia" #: templates/settings.php:108 templates/settings.php:109 #: templates/settings.php:144 templates/settings.php:145 @@ -112,7 +112,7 @@ msgstr "Povoliť externé úložisko" #: templates/settings.php:125 msgid "Allow users to mount their own external storage" -msgstr "Povoliť užívateľom pripojiť ich vlastné externé úložisko" +msgstr "Povoliť používateľom pripojiť ich vlastné externé úložisko" #: templates/settings.php:136 msgid "SSL root certificates" diff --git a/l10n/sk_SK/files_trashbin.po b/l10n/sk_SK/files_trashbin.po index bc6bc046f1..220a875b8d 100644 --- a/l10n/sk_SK/files_trashbin.po +++ b/l10n/sk_SK/files_trashbin.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# georg , 2013. # Marián Hvolka , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 10:30+0000\n" +"Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +19,23 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Nemožno zmazať %s navždy" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Nemožno obnoviť %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "vykonať obnovu" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "trvalo zmazať súbor" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/sk_SK/files_versions.po b/l10n/sk_SK/files_versions.po index 32d3549ff9..5cf9366ed6 100644 --- a/l10n/sk_SK/files_versions.po +++ b/l10n/sk_SK/files_versions.po @@ -3,14 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# georg , 2013. +# Marián Hvolka , 2013. # , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 13:10+0000\n" +"Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,10 +20,45 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Nemožno obnoviť: %s" + +#: history.php:40 +msgid "success" +msgstr "úspech" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Súbor %s bol obnovený na verziu %s" + +#: history.php:49 +msgid "failure" +msgstr "chyba" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Súbor %s nemohol byť obnovený na verziu %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Nie sú dostupné žiadne staršie verzie" + +#: history.php:73 +msgid "No path specified" +msgstr "Nevybrali ste cestu" + #: js/versions.js:16 msgid "History" msgstr "História" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Obnovte súbor do predošlej verzie kliknutím na tlačítko obnoviť" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Vytváranie verzií súborov" diff --git a/l10n/sk_SK/lib.po b/l10n/sk_SK/lib.po index 693d9535e4..ea523d5244 100644 --- a/l10n/sk_SK/lib.po +++ b/l10n/sk_SK/lib.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-30 00:23+0100\n" -"PO-Revision-Date: 2013-01-29 16:07+0000\n" -"Last-Translator: mhh \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,47 +21,47 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Pomoc" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Osobné" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Nastavenia" -#: app.php:318 +#: app.php:356 msgid "Users" -msgstr "Užívatelia" +msgstr "Používatelia" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Aplikácie" -#: app.php:327 +#: app.php:365 msgid "Admin" -msgstr "Správca" +msgstr "Administrátor" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Sťahovanie súborov ZIP je vypnuté." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Súbory musia byť nahrávané jeden za druhým." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Späť na súbory" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." -msgstr "Zvolené súbory sú príliž veľké na vygenerovanie zip súboru." +msgstr "Zvolené súbory sú príliš veľké na vygenerovanie zip súboru." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "nedá sa zistiť" @@ -89,6 +89,103 @@ msgstr "Text" msgid "Images" msgstr "Obrázky" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Váš webový server nie je správne nastavený na synchronizáciu, pretože rozhranie WebDAV je poškodené." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Prosím skontrolujte inštalačnú príručku." + #: template.php:113 msgid "seconds ago" msgstr "pred sekundami" @@ -144,7 +241,7 @@ msgstr "pred rokmi" #: updater.php:75 #, php-format msgid "%s is available. Get more information" -msgstr "%s je dostupné. Získať viac informácií" +msgstr "%s je dostupné. Získať pre viac informácií" #: updater.php:77 msgid "up to date" diff --git a/l10n/sk_SK/settings.po b/l10n/sk_SK/settings.po index 3ba6310290..5a3a319d82 100644 --- a/l10n/sk_SK/settings.po +++ b/l10n/sk_SK/settings.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -27,14 +27,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Nie je možné nahrať zoznam z App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Chyba pri autentifikácii" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Nemožno zmeniť zobrazované meno" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -79,14 +79,14 @@ msgstr "Administrátori nesmú odstrániť sami seba zo skupiny admin" #: ajax/togglegroups.php:28 #, php-format msgid "Unable to add user to group %s" -msgstr "Nie je možné pridať užívateľa do skupiny %s" +msgstr "Nie je možné pridať používateľa do skupiny %s" #: ajax/togglegroups.php:34 #, php-format msgid "Unable to remove user from group %s" msgstr "Nie je možné odstrániť používateľa zo skupiny %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Nemožno aktualizovať aplikáciu." @@ -112,7 +112,7 @@ msgstr "Aktualizujem..." #: js/apps.js:87 msgid "Error while updating app" -msgstr "hyba pri aktualizácii aplikácie" +msgstr "chyba pri aktualizácii aplikácie" #: js/apps.js:87 msgid "Error" @@ -160,7 +160,7 @@ msgstr "Príručka používateľa" #: templates/help.php:4 msgid "Administrator Documentation" -msgstr "Príručka správcu" +msgstr "Príručka administrátora" #: templates/help.php:6 msgid "Online Documentation" @@ -183,99 +183,87 @@ msgstr "Komerčná podpora" msgid "You have used %s of the available %s" msgstr "Použili ste %s z %s dostupných " -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klienti" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Stiahnuť desktopového klienta" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Stiahnuť Android klienta" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Stiahnuť iOS klienta" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Znovu zobraziť sprievodcu prvým spustením" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Heslo" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Heslo bolo zmenené" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Nie je možné zmeniť vaše heslo" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Aktuálne heslo" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nové heslo" -#: templates/personal.php:28 -msgid "show" -msgstr "zobraziť" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Zmeniť heslo" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Zobrazované meno" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Vaše zobrazované meno bolo zmenené" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Nemožno zmeniť Vaše zobrazované meno" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Zmeniť zobrazované meno" + +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Vaša emailová adresa" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Vyplňte emailovú adresu pre aktivovanie obnovy hesla" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Jazyk" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Pomôcť s prekladom" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Použite túto adresu pre pripojenie vášho ownCloud k súborovému správcovi" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Verzia" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -76,13 +76,13 @@ msgid "" "Warning: Apps user_ldap and user_webdavauth are incompatible. You may" " experience unexpected behaviour. Please ask your system administrator to " "disable one of them." -msgstr "Upozornenie: Aplikácie user_ldap a user_webdavauth nie sú kompatibilné. Môže nastávať neočakávané správanie. Požiadajte správcu systému aby jednu z nich zakázal." +msgstr "Upozornenie: Aplikácie user_ldap a user_webdavauth nie sú kompatibilné. Môže nastávať neočakávané správanie. Požiadajte administrátora systému aby jednu z nich zakázal." #: templates/settings.php:11 msgid "" "Warning: The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "Upozornenie: nie je nainštalovaný LDAP modul pre PHP, backend vrstva nebude fungovať. Požádejte správcu systému aby ho nainštaloval." +msgstr "Upozornenie: nie je nainštalovaný LDAP modul pre PHP, backend vrstva nebude fungovať. Požádejte administrátora systému aby ho nainštaloval." #: templates/settings.php:15 msgid "Server configuration" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Použi TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Nepoužívajte pre pripojenie SSL, pripojenie zlyhá." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "Nepoužívajte pre pripojenie LDAPS, zlyhá." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" @@ -290,7 +290,7 @@ msgstr "Atribúty vyhľadávania skupín" #: templates/settings.php:51 msgid "Group-Member association" -msgstr "Asociácia člena skupiny" +msgstr "Priradenie člena skupiny" #: templates/settings.php:53 msgid "Special Attributes" diff --git a/l10n/sl/core.po b/l10n/sl/core.po index d6247a7bb7..8f861f48a3 100644 --- a/l10n/sl/core.po +++ b/l10n/sl/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -54,8 +54,9 @@ msgid "No category to add?" msgstr "Ni kategorije za dodajanje?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Ta kategorija že obstaja:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -159,59 +160,59 @@ msgstr "november" msgid "December" msgstr "december" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Nastavitve" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "pred nekaj sekundami" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "pred minuto" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "pred {minutes} minutami" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "pred 1 uro" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "pred {hours} urami" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "danes" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "včeraj" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "pred {days} dnevi" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "zadnji mesec" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "pred {months} meseci" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "mesecev nazaj" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "lansko leto" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "let nazaj" @@ -470,7 +471,7 @@ msgstr "Uredi kategorije" msgid "Add" msgstr "Dodaj" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Varnostno opozorilo" @@ -480,71 +481,75 @@ msgid "" "OpenSSL extension." msgstr "Na voljo ni varnega generatorja naključnih števil. Prosimo, če omogočite PHP OpenSSL razširitev." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Brez varnega generatorja naključnih števil lahko napadalec napove žetone za ponastavitev gesla, kar mu omogoča, da prevzame vaš ​​račun." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Trenutno je dostop do podatkovne mape in datotek najverjetneje omogočen vsem uporabnikom na omrežju. Datoteka .htaccess, vključena v ownCloud namreč ni omogočena. Močno priporočamo nastavitev spletnega strežnika tako, da mapa podatkov ne bo javno dostopna ali pa, da jo prestavite ven iz korenske mape spletnega strežnika." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Ustvari skrbniški račun" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Napredne možnosti" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Mapa s podatki" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Nastavi podatkovno zbirko" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "bo uporabljen" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Uporabnik zbirke" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Geslo podatkovne zbirke" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Ime podatkovne zbirke" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Razpredelnica podatkovne zbirke" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Gostitelj podatkovne zbirke" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Dokončaj namestitev" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "spletne storitve pod vašim nadzorom" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Odjava" diff --git a/l10n/sl/files.po b/l10n/sl/files.po index 14da2bd6e2..3482d91388 100644 --- a/l10n/sl/files.po +++ b/l10n/sl/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -21,6 +21,20 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Nobena datoteka ni naložena. Neznana napaka." @@ -57,7 +71,7 @@ msgid "Failed to write to disk" msgstr "Pisanje na disk je spodletelo" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -68,51 +82,52 @@ msgstr "" msgid "Files" msgstr "Datoteke" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Odstrani iz souporabe" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Izbriši" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Preimenuj" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "V čakanju ..." + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} že obstaja" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "zamenjaj" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "predlagaj ime" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "prekliči" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "zamenjano je ime {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "razveljavi" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "zamenjano ime {new_name} z imenom {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -152,64 +167,60 @@ msgstr "Pošiljanje ni mogoče, saj gre za mapo, ali pa je datoteka velikosti 0 msgid "Upload Error" msgstr "Napaka med nalaganjem" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Zapri" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "V čakanju ..." - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "Pošiljanje 1 datoteke" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "nalagam {count} datotek" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Pošiljanje je preklicano." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "Naslov URL ne sme biti prazen." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Ime" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Velikost" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Spremenjeno" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 mapa" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} map" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 datoteka" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} datotek" @@ -266,7 +277,7 @@ msgid "From link" msgstr "Iz povezave" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -281,6 +292,10 @@ msgstr "Tukaj ni ničesar. Naložite kaj!" msgid "Download" msgstr "Prejmi" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Odstrani iz souporabe" + #: templates/index.php:105 msgid "Upload too large" msgstr "Nalaganje ni mogoče, ker je preveliko" diff --git a/l10n/sl/files_encryption.po b/l10n/sl/files_encryption.po index da59ca9a47..86d2a0d7d3 100644 --- a/l10n/sl/files_encryption.po +++ b/l10n/sl/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -19,28 +19,6 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Šifriranje" diff --git a/l10n/sl/files_trashbin.po b/l10n/sl/files_trashbin.po index 7e459a7391..525f304069 100644 --- a/l10n/sl/files_trashbin.po +++ b/l10n/sl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/sl/files_versions.po b/l10n/sl/files_versions.po index 1a4d2854d9..dad9f10280 100644 --- a/l10n/sl/files_versions.po +++ b/l10n/sl/files_versions.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -19,10 +19,45 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Zgodovina" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Sledenje različicam" diff --git a/l10n/sl/lib.po b/l10n/sl/lib.po index 4af090e968..e3f61a640a 100644 --- a/l10n/sl/lib.po +++ b/l10n/sl/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Pomoč" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Osebno" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Nastavitve" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Uporabniki" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Programi" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Skrbništvo" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Prejem datotek ZIP je onemogočen." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Datoteke je mogoče prejeti le posamič." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Nazaj na datoteke" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Izbrane datoteke so prevelike za ustvarjanje datoteke arhiva zip." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -87,6 +87,103 @@ msgstr "Besedilo" msgid "Images" msgstr "Slike" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "pred nekaj sekundami" diff --git a/l10n/sl/settings.po b/l10n/sl/settings.po index 9046223ab3..ab5a76c3f1 100644 --- a/l10n/sl/settings.po +++ b/l10n/sl/settings.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -25,12 +25,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Ni mogoče naložiti seznama iz App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Napaka overitve" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -84,7 +84,7 @@ msgstr "Uporabnika ni mogoče dodati k skupini %s" msgid "Unable to remove user from group %s" msgstr "Uporabnika ni mogoče odstraniti iz skupine %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -181,99 +181,87 @@ msgstr "Komercialna podpora" msgid "You have used %s of the available %s" msgstr "Uporabljate %s od razpoložljivih %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Stranka" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Prenesi namizne odjemalce" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Prenesi Android odjemalec" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Prenesi iOS odjemalec" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Geslo" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Vaše geslo je spremenjeno" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Gesla ni mogoče spremeniti." -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Trenutno geslo" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Novo geslo" -#: templates/personal.php:28 -msgid "show" -msgstr "pokaži" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Spremeni geslo" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Elektronska pošta" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Vaš elektronski poštni naslov" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Vpišite vaš elektronski naslov in s tem omogočite obnovitev gesla" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Jezik" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Pomagajte pri prevajanju" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Uporabite ta naslov za povezavo do ownCloud v vašem upravljalniku datotek." -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Različica" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "Uporabi TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Uporaba SSL za povezave bo spodletela." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/sr/core.po b/l10n/sr/core.po index ff68075f6f..c74ef339d8 100644 --- a/l10n/sr/core.po +++ b/l10n/sr/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -53,8 +53,9 @@ msgid "No category to add?" msgstr "Додати још неку категорију?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Категорија већ постоји:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -158,59 +159,59 @@ msgstr "Новембар" msgid "December" msgstr "Децембар" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Подешавања" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "пре неколико секунди" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "пре 1 минут" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "пре {minutes} минута" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "Пре једног сата" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "Пре {hours} сата (сати)" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "данас" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "јуче" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "пре {days} дана" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "прошлог месеца" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "Пре {months} месеца (месеци)" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "месеци раније" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "прошле године" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "година раније" @@ -469,7 +470,7 @@ msgstr "Измени категорије" msgid "Add" msgstr "Додај" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Сигурносно упозорење" @@ -479,71 +480,75 @@ msgid "" "OpenSSL extension." msgstr "Поуздан генератор случајних бројева није доступан, предлажемо да укључите PHP проширење OpenSSL." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Без поузданог генератора случајнох бројева нападач лако може предвидети лозинку за поништавање кључа шифровања и отети вам налог." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Тренутно су ваши подаци и датотеке доступне са интернета. Датотека .htaccess коју је обезбедио пакет ownCloud не функционише. Саветујемо вам да подесите веб сервер тако да директоријум са подацима не буде изложен или да га преместите изван коренског директоријума веб сервера." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Направи административни налог" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Напредно" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Фацикла података" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Подешавање базе" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "ће бити коришћен" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Корисник базе" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Лозинка базе" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Име базе" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Радни простор базе података" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Домаћин базе" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Заврши подешавање" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "веб сервиси под контролом" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Одјава" diff --git a/l10n/sr/files.po b/l10n/sr/files.po index 2a3bb82934..23342d8cef 100644 --- a/l10n/sr/files.po +++ b/l10n/sr/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -20,6 +20,20 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -56,7 +70,7 @@ msgid "Failed to write to disk" msgstr "Не могу да пишем на диск" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -67,51 +81,52 @@ msgstr "" msgid "Files" msgstr "Датотеке" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Укини дељење" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Обриши" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Преименуј" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "На чекању" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} већ постоји" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "замени" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "предложи назив" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "откажи" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "замењено {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "опозови" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "замењено {new_name} са {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -151,64 +166,60 @@ msgstr "Не могу да отпремим датотеку као фасцик msgid "Upload Error" msgstr "Грешка при отпремању" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Затвори" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "На чекању" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "Отпремам 1 датотеку" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "Отпремам {count} датотеке/а" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Отпремање је прекинуто." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Отпремање датотеке је у току. Ако сада напустите страницу, прекинућете отпремање." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Назив" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Величина" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Измењено" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 фасцикла" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} фасцикле/и" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 датотека" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} датотеке/а" @@ -265,7 +276,7 @@ msgid "From link" msgstr "Са везе" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -280,6 +291,10 @@ msgstr "Овде нема ничег. Отпремите нешто!" msgid "Download" msgstr "Преузми" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Укини дељење" + #: templates/index.php:105 msgid "Upload too large" msgstr "Датотека је превелика" diff --git a/l10n/sr/files_encryption.po b/l10n/sr/files_encryption.po index 4578d74732..4f38bb711f 100644 --- a/l10n/sr/files_encryption.po +++ b/l10n/sr/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -19,28 +19,6 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Шифровање" diff --git a/l10n/sr/files_trashbin.po b/l10n/sr/files_trashbin.po index fb4b9633bc..58c3430bb9 100644 --- a/l10n/sr/files_trashbin.po +++ b/l10n/sr/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,16 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "врати у претходно стање" diff --git a/l10n/sr/files_versions.po b/l10n/sr/files_versions.po index 84371b6554..74719197c5 100644 --- a/l10n/sr/files_versions.po +++ b/l10n/sr/files_versions.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-02 00:06+0100\n" -"PO-Revision-Date: 2013-02-01 14:10+0000\n" -"Last-Translator: Rancher \n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,10 +18,45 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Историја" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Прављење верзија датотека" diff --git a/l10n/sr/lib.po b/l10n/sr/lib.po index 5f6cad797a..ac54addda5 100644 --- a/l10n/sr/lib.po +++ b/l10n/sr/lib.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 17:30+0000\n" -"Last-Translator: Rancher \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +20,27 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:313 +#: app.php:339 msgid "Help" msgstr "Помоћ" -#: app.php:320 +#: app.php:346 msgid "Personal" msgstr "Лично" -#: app.php:325 +#: app.php:351 msgid "Settings" msgstr "Поставке" -#: app.php:330 +#: app.php:356 msgid "Users" msgstr "Корисници" -#: app.php:337 +#: app.php:363 msgid "Apps" msgstr "Апликације" -#: app.php:339 +#: app.php:365 msgid "Admin" msgstr "Администратор" @@ -88,6 +88,103 @@ msgstr "Текст" msgid "Images" msgstr "Слике" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "пре неколико секунди" diff --git a/l10n/sr/settings.po b/l10n/sr/settings.po index 57f48decd5..7bb0c0221b 100644 --- a/l10n/sr/settings.po +++ b/l10n/sr/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -23,12 +23,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Грешка приликом учитавања списка из Складишта Програма" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Грешка при аутентификацији" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -82,7 +82,7 @@ msgstr "Не могу да додам корисника у групу %s" msgid "Unable to remove user from group %s" msgstr "Не могу да уклоним корисника из групе %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -179,99 +179,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "Искористили сте %s од дозвољених %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Клијенти" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Поново прикажи чаробњак за прво покретање" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Лозинка" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Лозинка је промењена" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Не могу да изменим вашу лозинку" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Тренутна лозинка" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Нова лозинка" -#: templates/personal.php:28 -msgid "show" -msgstr "прикажи" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Измени лозинку" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Е-пошта" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Ваша адреса е-поште" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Ун" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Језик" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr " Помозите у превођењу" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "Користи TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Не користите за SSL везе јер неће радити." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/sr@latin/core.po b/l10n/sr@latin/core.po index 57d7af27d1..dea4d27d06 100644 --- a/l10n/sr@latin/core.po +++ b/l10n/sr@latin/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -51,7 +51,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -156,59 +157,59 @@ msgstr "Novembar" msgid "December" msgstr "Decembar" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Podešavanja" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "" @@ -467,7 +468,7 @@ msgstr "" msgid "Add" msgstr "" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -477,71 +478,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Napravi administrativni nalog" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Napredno" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Facikla podataka" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Podešavanje baze" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "će biti korišćen" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Korisnik baze" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Lozinka baze" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Ime baze" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Domaćin baze" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Završi podešavanje" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Odjava" diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po index 1b5ac038d1..b1035f141d 100644 --- a/l10n/sr@latin/files.po +++ b/l10n/sr@latin/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,20 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -54,7 +68,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -65,51 +79,52 @@ msgstr "" msgid "Files" msgstr "Fajlovi" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Obriši" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -149,64 +164,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Zatvori" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Ime" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Veličina" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Zadnja izmena" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -263,7 +274,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -278,6 +289,10 @@ msgstr "Ovde nema ničeg. Pošaljite nešto!" msgid "Download" msgstr "Preuzmi" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "Pošiljka je prevelika" diff --git a/l10n/sr@latin/files_encryption.po b/l10n/sr@latin/files_encryption.po index 55b2d059ad..a34c90f6c0 100644 --- a/l10n/sr@latin/files_encryption.po +++ b/l10n/sr@latin/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/sr@latin/files_trashbin.po b/l10n/sr@latin/files_trashbin.po index da3cf064a6..1c241fa05a 100644 --- a/l10n/sr@latin/files_trashbin.po +++ b/l10n/sr@latin/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/sr@latin/files_versions.po b/l10n/sr@latin/files_versions.po index a35cd43237..d049a5e55b 100644 --- a/l10n/sr@latin/files_versions.po +++ b/l10n/sr@latin/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/sr@latin/lib.po b/l10n/sr@latin/lib.po index 264724c091..602dcf7883 100644 --- a/l10n/sr@latin/lib.po +++ b/l10n/sr@latin/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Pomoć" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Lično" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Podešavanja" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Korisnici" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "Tekst" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/sr@latin/settings.po b/l10n/sr@latin/settings.po index f5f05886b6..fa71e64abc 100644 --- a/l10n/sr@latin/settings.po +++ b/l10n/sr@latin/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -22,12 +22,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Greška pri autentifikaciji" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -178,99 +178,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Klijenti" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "Lozinka" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "Lozinka" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Ne mogu da izmenim vašu lozinku" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Trenutna lozinka" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nova lozinka" -#: templates/personal.php:28 -msgid "show" -msgstr "prikaži" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Izmeni lozinku" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "E-mail" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Jezik" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/sv/core.po b/l10n/sv/core.po index 5d9d7db303..82e4d717ad 100644 --- a/l10n/sv/core.po +++ b/l10n/sv/core.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:07+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 07:00+0000\n" +"Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,8 +57,9 @@ msgid "No category to add?" msgstr "Ingen kategori att lägga till?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Denna kategori finns redan:" +#, php-format +msgid "This category already exists: %s" +msgstr "Denna kategori finns redan: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -162,59 +163,59 @@ msgstr "November" msgid "December" msgstr "December" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Inställningar" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "sekunder sedan" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "1 minut sedan" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "{minutes} minuter sedan" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "1 timme sedan" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "{hours} timmar sedan" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "i dag" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "i går" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "{days} dagar sedan" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "förra månaden" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "{months} månader sedan" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "månader sedan" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "förra året" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "år sedan" @@ -244,8 +245,8 @@ msgid "The object type is not specified." msgstr "Objekttypen är inte specificerad." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Fel" @@ -265,7 +266,7 @@ msgstr "Dela" msgid "Shared" msgstr "Delad" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Fel vid delning" @@ -361,23 +362,23 @@ msgstr "radera" msgid "share" msgstr "dela" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Lösenordsskyddad" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Fel vid borttagning av utgångsdatum" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Fel vid sättning av utgångsdatum" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Skickar ..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "E-post skickat" @@ -473,7 +474,7 @@ msgstr "Redigera kategorier" msgid "Add" msgstr "Lägg till" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Säkerhetsvarning" @@ -483,71 +484,75 @@ msgid "" "OpenSSL extension." msgstr "Ingen säker slumptalsgenerator finns tillgänglig. Du bör aktivera PHP OpenSSL-tillägget." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Utan en säker slumptalsgenerator kan angripare få möjlighet att förutsäga lösenordsåterställningar och ta över ditt konto." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Din datakatalog och filer är förmodligen tillgängliga från Internet, eftersom .htaccess-filen inte fungerar." + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Din datakatalog och dina filer är förmodligen tillgängliga från Internet. Den .htaccess-fil som ownCloud tillhandahåller fungerar inte. Vi rekommenderar starkt att du konfigurerar webbservern så att datakatalogen inte längre är tillgänglig eller att du flyttar datakatalogen utanför webbserverns dokument-root." +"For information how to properly configure your server, please see the documentation." +msgstr "För information hur man korrekt konfigurera servern, var god se documentation." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Skapa ett administratörskonto" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Avancerat" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Datamapp" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Konfigurera databasen" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "kommer att användas" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Databasanvändare" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Lösenord till databasen" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Databasnamn" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Databas tabellutrymme" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Databasserver" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Avsluta installation" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "webbtjänster under din kontroll" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Logga ut" @@ -579,7 +584,7 @@ msgstr "Logga in" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Alternativa inloggningar" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/sv/files.po b/l10n/sv/files.po index 1abbf3debc..b22a0cb981 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/files.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 07:00+0000\n" +"Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,6 +24,20 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Kunde inte flytta %s - Det finns redan en fil med detta namn" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Kan inte flytta %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Kan inte byta namn på filen" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Ingen fil uppladdad. Okänt fel" @@ -60,8 +74,8 @@ msgid "Failed to write to disk" msgstr "Misslyckades spara till disk" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Inte tillräckligt med utrymme tillgängligt" +msgid "Not enough storage available" +msgstr "Inte tillräckligt med lagringsutrymme tillgängligt" #: ajax/upload.php:83 msgid "Invalid directory." @@ -71,51 +85,52 @@ msgstr "Felaktig mapp." msgid "Files" msgstr "Filer" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Sluta dela" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Radera permanent" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Radera" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Byt namn" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Väntar" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} finns redan" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "ersätt" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "föreslå namn" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "avbryt" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "ersatt {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "ångra" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "ersatt {new_name} med {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "utför raderingen" @@ -155,64 +170,60 @@ msgstr "Kunde inte ladda upp dina filer eftersom det antingen är en mapp eller msgid "Upload Error" msgstr "Uppladdningsfel" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Stäng" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Väntar" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 filuppladdning" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} filer laddas upp" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Uppladdning avbruten." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL kan inte vara tom." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Ogiltigt mappnamn. Användande av 'Shared' är reserverat av ownCloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "Namn" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "Storlek" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "Ändrad" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 mapp" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} mappar" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 fil" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} filer" @@ -269,8 +280,8 @@ msgid "From link" msgstr "Från länk" #: templates/index.php:40 -msgid "Trash" -msgstr "Papperskorgen" +msgid "Trash bin" +msgstr "Papperskorg" #: templates/index.php:46 msgid "Cancel upload" @@ -284,6 +295,10 @@ msgstr "Ingenting här. Ladda upp något!" msgid "Download" msgstr "Ladda ner" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Sluta dela" + #: templates/index.php:105 msgid "Upload too large" msgstr "För stor uppladdning" diff --git a/l10n/sv/files_encryption.po b/l10n/sv/files_encryption.po index 3c52fd7278..b401db609d 100644 --- a/l10n/sv/files_encryption.po +++ b/l10n/sv/files_encryption.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 02:41+0000\n" -"Last-Translator: Lokal_Profil \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,28 +19,6 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "Vänligen växla till ownCloud klienten och ändra ditt krypteringslösenord för att slutföra omvandlingen." - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "Bytte till kryptering på klientsidan" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "Ändra krypteringslösenord till loginlösenord" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "Kontrollera dina lösenord och försök igen." - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "Kunde inte ändra ditt filkrypteringslösenord till ditt loginlösenord" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Kryptering" diff --git a/l10n/sv/files_trashbin.po b/l10n/sv/files_trashbin.po index 897bddc00e..625d864e93 100644 --- a/l10n/sv/files_trashbin.po +++ b/l10n/sv/files_trashbin.po @@ -4,13 +4,14 @@ # # Translators: # André , 2013. +# Magnus Höglund , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 07:10+0000\n" +"Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,13 +19,23 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Kunde inte radera %s permanent" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Kunde inte återställa %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "utför återställning" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "radera filen permanent" #: js/trash.js:125 templates/index.php:17 msgid "Name" diff --git a/l10n/sv/files_versions.po b/l10n/sv/files_versions.po index 5f3d273b38..3930feca0f 100644 --- a/l10n/sv/files_versions.po +++ b/l10n/sv/files_versions.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Magnus Höglund , 2012. +# Magnus Höglund , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 07:20+0000\n" +"Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,10 +18,45 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Kunde inte återställa: %s" + +#: history.php:40 +msgid "success" +msgstr "lyckades" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "Filen %s återställdes till version %s" + +#: history.php:49 +msgid "failure" +msgstr "misslyckades" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "Filen %s kunde inte återställas till version %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Inga gamla versioner finns tillgängliga" + +#: history.php:73 +msgid "No path specified" +msgstr "Ingen sökväg angiven" + #: js/versions.js:16 msgid "History" msgstr "Historik" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Återställ en fil till en tidigare version genom att klicka på knappen" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Versionshantering av filer" diff --git a/l10n/sv/lib.po b/l10n/sv/lib.po index 3fea987f13..591d546eab 100644 --- a/l10n/sv/lib.po +++ b/l10n/sv/lib.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-21 14:32+0000\n" -"Last-Translator: Magnus Höglund \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +19,47 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Hjälp" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Personligt" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Inställningar" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Användare" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Program" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Admin" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Nerladdning av ZIP är avstängd." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Filer laddas ner en åt gången." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Tillbaka till Filer" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Valda filer är för stora för att skapa zip-fil." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "kunde inte bestämmas" @@ -87,6 +87,103 @@ msgstr "Text" msgid "Images" msgstr "Bilder" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "Din webbserver är inte korrekt konfigurerad för att tillåta filsynkronisering eftersom WebDAV inte verkar fungera." + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "Var god kontrollera installationsguiden." + #: template.php:113 msgid "seconds ago" msgstr "sekunder sedan" diff --git a/l10n/sv/settings.po b/l10n/sv/settings.po index c51345d430..32a4046020 100644 --- a/l10n/sv/settings.po +++ b/l10n/sv/settings.po @@ -7,7 +7,7 @@ # Christer Eriksson , 2012. # Daniel Sandman , 2012. # , 2011. -# Magnus Höglund , 2012. +# Magnus Höglund , 2012-2013. # , 2012. # , 2012. # , 2011, 2012. @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -30,14 +30,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Kan inte ladda listan från App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Autentiseringsfel" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Kan inte ändra visningsnamn" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -89,7 +89,7 @@ msgstr "Kan inte lägga till användare i gruppen %s" msgid "Unable to remove user from group %s" msgstr "Kan inte radera användare från gruppen %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "Kunde inte uppdatera appen" @@ -186,99 +186,87 @@ msgstr "Kommersiell support" msgid "You have used %s of the available %s" msgstr "Du har använt %s av tillgängliga %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Kunder" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Ladda ner skrivbordsklienter" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Ladda ner klient för Android" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Ladda ner klient för iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Visa Första uppstarts-guiden igen" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Lösenord" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Ditt lösenord har ändrats" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Kunde inte ändra ditt lösenord" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Nuvarande lösenord" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Nytt lösenord" -#: templates/personal.php:28 -msgid "show" -msgstr "visa" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Ändra lösenord" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "Visat namn" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Ditt visningsnamn har ändrats" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Kan inte ändra ditt visningsnamn" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Ändra visningsnamn" + +#: templates/personal.php:68 msgid "Email" msgstr "E-post" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Din e-postadress" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Fyll i en e-postadress för att aktivera återställning av lösenord" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Språk" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Hjälp att översätta" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Använd denna adress för att ansluta till ownCloud i din filhanterare" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Version" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 07:00+0000\n" +"Last-Translator: Magnus Höglund \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -216,8 +216,8 @@ msgid "Use TLS" msgstr "Använd TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Använd inte för SSL-anslutningar, det kommer inte att fungera." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "Använd inte för LDAPS-anslutningar, det kommer inte att fungera." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/sw_KE/core.po b/l10n/sw_KE/core.po new file mode 100644 index 0000000000..e6919ac84d --- /dev/null +++ b/l10n/sw_KE/core.po @@ -0,0 +1,593 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/share.php:85 +#, php-format +msgid "User %s shared a file with you" +msgstr "" + +#: ajax/share.php:87 +#, php-format +msgid "User %s shared a folder with you" +msgstr "" + +#: ajax/share.php:89 +#, php-format +msgid "" +"User %s shared the file \"%s\" with you. It is available for download here: " +"%s" +msgstr "" + +#: ajax/share.php:91 +#, php-format +msgid "" +"User %s shared the folder \"%s\" with you. It is available for download " +"here: %s" +msgstr "" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "" + +#: ajax/vcategories/add.php:37 +#, php-format +msgid "This category already exists: %s" +msgstr "" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/config.php:32 +msgid "Sunday" +msgstr "" + +#: js/config.php:32 +msgid "Monday" +msgstr "" + +#: js/config.php:32 +msgid "Tuesday" +msgstr "" + +#: js/config.php:32 +msgid "Wednesday" +msgstr "" + +#: js/config.php:32 +msgid "Thursday" +msgstr "" + +#: js/config.php:32 +msgid "Friday" +msgstr "" + +#: js/config.php:32 +msgid "Saturday" +msgstr "" + +#: js/config.php:33 +msgid "January" +msgstr "" + +#: js/config.php:33 +msgid "February" +msgstr "" + +#: js/config.php:33 +msgid "March" +msgstr "" + +#: js/config.php:33 +msgid "April" +msgstr "" + +#: js/config.php:33 +msgid "May" +msgstr "" + +#: js/config.php:33 +msgid "June" +msgstr "" + +#: js/config.php:33 +msgid "July" +msgstr "" + +#: js/config.php:33 +msgid "August" +msgstr "" + +#: js/config.php:33 +msgid "September" +msgstr "" + +#: js/config.php:33 +msgid "October" +msgstr "" + +#: js/config.php:33 +msgid "November" +msgstr "" + +#: js/config.php:33 +msgid "December" +msgstr "" + +#: js/js.js:284 +msgid "Settings" +msgstr "" + +#: js/js.js:764 +msgid "seconds ago" +msgstr "" + +#: js/js.js:765 +msgid "1 minute ago" +msgstr "" + +#: js/js.js:766 +msgid "{minutes} minutes ago" +msgstr "" + +#: js/js.js:767 +msgid "1 hour ago" +msgstr "" + +#: js/js.js:768 +msgid "{hours} hours ago" +msgstr "" + +#: js/js.js:769 +msgid "today" +msgstr "" + +#: js/js.js:770 +msgid "yesterday" +msgstr "" + +#: js/js.js:771 +msgid "{days} days ago" +msgstr "" + +#: js/js.js:772 +msgid "last month" +msgstr "" + +#: js/js.js:773 +msgid "{months} months ago" +msgstr "" + +#: js/js.js:774 +msgid "months ago" +msgstr "" + +#: js/js.js:775 +msgid "last year" +msgstr "" + +#: js/js.js:776 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:126 +msgid "Choose" +msgstr "" + +#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:162 +msgid "No" +msgstr "" + +#: js/oc-dialogs.js:163 +msgid "Yes" +msgstr "" + +#: js/oc-dialogs.js:180 +msgid "Ok" +msgstr "" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" + +#: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 +#: js/share.js:583 +msgid "Error" +msgstr "" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Share" +msgstr "" + +#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +msgid "Shared" +msgstr "" + +#: js/share.js:141 js/share.js:611 +msgid "Error while sharing" +msgstr "" + +#: js/share.js:152 +msgid "Error while unsharing" +msgstr "" + +#: js/share.js:159 +msgid "Error while changing permissions" +msgstr "" + +#: js/share.js:168 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" + +#: js/share.js:170 +msgid "Shared with you by {owner}" +msgstr "" + +#: js/share.js:175 +msgid "Share with" +msgstr "" + +#: js/share.js:180 +msgid "Share with link" +msgstr "" + +#: js/share.js:183 +msgid "Password protect" +msgstr "" + +#: js/share.js:185 templates/installation.php:44 templates/login.php:35 +msgid "Password" +msgstr "" + +#: js/share.js:189 +msgid "Email link to person" +msgstr "" + +#: js/share.js:190 +msgid "Send" +msgstr "" + +#: js/share.js:194 +msgid "Set expiration date" +msgstr "" + +#: js/share.js:195 +msgid "Expiration date" +msgstr "" + +#: js/share.js:227 +msgid "Share via email:" +msgstr "" + +#: js/share.js:229 +msgid "No people found" +msgstr "" + +#: js/share.js:256 +msgid "Resharing is not allowed" +msgstr "" + +#: js/share.js:292 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:313 +msgid "Unshare" +msgstr "" + +#: js/share.js:325 +msgid "can edit" +msgstr "" + +#: js/share.js:327 +msgid "access control" +msgstr "" + +#: js/share.js:330 +msgid "create" +msgstr "" + +#: js/share.js:333 +msgid "update" +msgstr "" + +#: js/share.js:336 +msgid "delete" +msgstr "" + +#: js/share.js:339 +msgid "share" +msgstr "" + +#: js/share.js:373 js/share.js:558 +msgid "Password protected" +msgstr "" + +#: js/share.js:571 +msgid "Error unsetting expiration date" +msgstr "" + +#: js/share.js:583 +msgid "Error setting expiration date" +msgstr "" + +#: js/share.js:598 +msgid "Sending ..." +msgstr "" + +#: js/share.js:609 +msgid "Email sent" +msgstr "" + +#: js/update.js:14 +msgid "" +"The update was unsuccessful. Please report this issue to the ownCloud " +"community." +msgstr "" + +#: js/update.js:18 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "" + +#: lostpassword/controller.php:47 +msgid "ownCloud password reset" +msgstr "" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "" + +#: lostpassword/templates/lostpassword.php:5 +msgid "Reset email send." +msgstr "" + +#: lostpassword/templates/lostpassword.php:8 +msgid "Request failed!" +msgstr "" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:39 +#: templates/login.php:28 +msgid "Username" +msgstr "" + +#: lostpassword/templates/lostpassword.php:14 +msgid "Request reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "" + +#: strings.php:5 +msgid "Personal" +msgstr "" + +#: strings.php:6 +msgid "Users" +msgstr "" + +#: strings.php:7 +msgid "Apps" +msgstr "" + +#: strings.php:8 +msgid "Admin" +msgstr "" + +#: strings.php:9 +msgid "Help" +msgstr "" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "" + +#: templates/installation.php:23 templates/installation.php:30 +msgid "Security Warning" +msgstr "" + +#: templates/installation.php:24 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:25 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"For information how to properly configure your server, please see the documentation." +msgstr "" + +#: templates/installation.php:36 +msgid "Create an admin account" +msgstr "" + +#: templates/installation.php:52 +msgid "Advanced" +msgstr "" + +#: templates/installation.php:54 +msgid "Data folder" +msgstr "" + +#: templates/installation.php:61 +msgid "Configure the database" +msgstr "" + +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 +msgid "will be used" +msgstr "" + +#: templates/installation.php:109 +msgid "Database user" +msgstr "" + +#: templates/installation.php:113 +msgid "Database password" +msgstr "" + +#: templates/installation.php:117 +msgid "Database name" +msgstr "" + +#: templates/installation.php:125 +msgid "Database tablespace" +msgstr "" + +#: templates/installation.php:131 +msgid "Database host" +msgstr "" + +#: templates/installation.php:136 +msgid "Finish setup" +msgstr "" + +#: templates/layout.guest.php:33 +msgid "web services under your control" +msgstr "" + +#: templates/layout.user.php:48 +msgid "Log out" +msgstr "" + +#: templates/login.php:10 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:11 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:13 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:19 +msgid "Lost your password?" +msgstr "" + +#: templates/login.php:41 +msgid "remember" +msgstr "" + +#: templates/login.php:43 +msgid "Log in" +msgstr "" + +#: templates/login.php:49 +msgid "Alternative Logins" +msgstr "" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "" + +#: templates/update.php:3 +#, php-format +msgid "Updating ownCloud to version %s, this may take a while." +msgstr "" diff --git a/l10n/sw_KE/files.po b/l10n/sw_KE/files.po new file mode 100644 index 0000000000..742adbe87b --- /dev/null +++ b/l10n/sw_KE/files.po @@ -0,0 +1,315 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + +#: ajax/upload.php:19 +msgid "No file was uploaded. Unknown error" +msgstr "" + +#: ajax/upload.php:26 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:27 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:29 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:31 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:32 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:33 +msgid "Missing a temporary folder" +msgstr "" + +#: ajax/upload.php:34 +msgid "Failed to write to disk" +msgstr "" + +#: ajax/upload.php:52 +msgid "Not enough storage available" +msgstr "" + +#: ajax/upload.php:83 +msgid "Invalid directory." +msgstr "" + +#: appinfo/app.php:10 +msgid "Files" +msgstr "" + +#: js/fileactions.js:116 +msgid "Delete permanently" +msgstr "" + +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 +msgid "Delete" +msgstr "" + +#: js/fileactions.js:184 +msgid "Rename" +msgstr "" + +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 +msgid "undo" +msgstr "" + +#: js/filelist.js:297 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:322 +msgid "perform delete operation" +msgstr "" + +#: js/files.js:52 +msgid "'.' is an invalid file name." +msgstr "" + +#: js/files.js:56 +msgid "File name cannot be empty." +msgstr "" + +#: js/files.js:64 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "" + +#: js/files.js:224 +msgid "" +"Your download is being prepared. This might take some time if the files are " +"big." +msgstr "" + +#: js/files.js:261 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "" + +#: js/files.js:261 +msgid "Upload Error" +msgstr "" + +#: js/files.js:272 +msgid "Close" +msgstr "" + +#: js/files.js:311 +msgid "1 file uploading" +msgstr "" + +#: js/files.js:314 js/files.js:369 js/files.js:384 +msgid "{count} files uploading" +msgstr "" + +#: js/files.js:387 js/files.js:422 +msgid "Upload cancelled." +msgstr "" + +#: js/files.js:496 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "" + +#: js/files.js:569 +msgid "URL cannot be empty." +msgstr "" + +#: js/files.js:574 +msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" +msgstr "" + +#: js/files.js:947 templates/index.php:67 +msgid "Name" +msgstr "" + +#: js/files.js:948 templates/index.php:78 +msgid "Size" +msgstr "" + +#: js/files.js:949 templates/index.php:80 +msgid "Modified" +msgstr "" + +#: js/files.js:968 +msgid "1 folder" +msgstr "" + +#: js/files.js:970 +msgid "{count} folders" +msgstr "" + +#: js/files.js:978 +msgid "1 file" +msgstr "" + +#: js/files.js:980 +msgid "{count} files" +msgstr "" + +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "" + +#: templates/admin.php:10 +msgid "max. possible: " +msgstr "" + +#: templates/admin.php:15 +msgid "Needed for multi-file and folder downloads." +msgstr "" + +#: templates/admin.php:17 +msgid "Enable ZIP-download" +msgstr "" + +#: templates/admin.php:20 +msgid "0 is unlimited" +msgstr "" + +#: templates/admin.php:22 +msgid "Maximum input size for ZIP files" +msgstr "" + +#: templates/admin.php:26 +msgid "Save" +msgstr "" + +#: templates/index.php:7 +msgid "New" +msgstr "" + +#: templates/index.php:10 +msgid "Text file" +msgstr "" + +#: templates/index.php:12 +msgid "Folder" +msgstr "" + +#: templates/index.php:14 +msgid "From link" +msgstr "" + +#: templates/index.php:40 +msgid "Trash bin" +msgstr "" + +#: templates/index.php:46 +msgid "Cancel upload" +msgstr "" + +#: templates/index.php:59 +msgid "Nothing in here. Upload something!" +msgstr "" + +#: templates/index.php:73 +msgid "Download" +msgstr "" + +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + +#: templates/index.php:105 +msgid "Upload too large" +msgstr "" + +#: templates/index.php:107 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + +#: templates/index.php:112 +msgid "Files are being scanned, please wait." +msgstr "" + +#: templates/index.php:115 +msgid "Current scanning" +msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/sw_KE/files_encryption.po b/l10n/sw_KE/files_encryption.po new file mode 100644 index 0000000000..210f1a0455 --- /dev/null +++ b/l10n/sw_KE/files_encryption.po @@ -0,0 +1,38 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings-personal.php:4 templates/settings.php:5 +msgid "Encryption" +msgstr "" + +#: templates/settings-personal.php:7 +msgid "File encryption is enabled." +msgstr "" + +#: templates/settings-personal.php:11 +msgid "The following file types will not be encrypted:" +msgstr "" + +#: templates/settings.php:7 +msgid "Exclude the following file types from encryption:" +msgstr "" + +#: templates/settings.php:12 +msgid "None" +msgstr "" diff --git a/l10n/sw_KE/files_external.po b/l10n/sw_KE/files_external.po new file mode 100644 index 0000000000..0c02d8edc5 --- /dev/null +++ b/l10n/sw_KE/files_external.po @@ -0,0 +1,120 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-08 00:09+0100\n" +"PO-Revision-Date: 2012-08-12 22:34+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +msgid "Access granted" +msgstr "" + +#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +msgid "Error configuring Dropbox storage" +msgstr "" + +#: js/dropbox.js:34 js/dropbox.js:45 js/google.js:31 js/google.js:40 +msgid "Grant access" +msgstr "" + +#: js/dropbox.js:73 js/google.js:72 +msgid "Fill out all required fields" +msgstr "" + +#: js/dropbox.js:85 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "" + +#: js/google.js:26 js/google.js:73 js/google.js:78 +msgid "Error configuring Google Drive storage" +msgstr "" + +#: lib/config.php:405 +msgid "" +"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares " +"is not possible. Please ask your system administrator to install it." +msgstr "" + +#: lib/config.php:406 +msgid "" +"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." +msgstr "" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "" + +#: templates/settings.php:8 templates/settings.php:22 +msgid "Mount point" +msgstr "" + +#: templates/settings.php:9 +msgid "Backend" +msgstr "" + +#: templates/settings.php:10 +msgid "Configuration" +msgstr "" + +#: templates/settings.php:11 +msgid "Options" +msgstr "" + +#: templates/settings.php:12 +msgid "Applicable" +msgstr "" + +#: templates/settings.php:27 +msgid "Add mount point" +msgstr "" + +#: templates/settings.php:85 +msgid "None set" +msgstr "" + +#: templates/settings.php:86 +msgid "All Users" +msgstr "" + +#: templates/settings.php:87 +msgid "Groups" +msgstr "" + +#: templates/settings.php:95 +msgid "Users" +msgstr "" + +#: templates/settings.php:108 templates/settings.php:109 +#: templates/settings.php:144 templates/settings.php:145 +msgid "Delete" +msgstr "" + +#: templates/settings.php:124 +msgid "Enable User External Storage" +msgstr "" + +#: templates/settings.php:125 +msgid "Allow users to mount their own external storage" +msgstr "" + +#: templates/settings.php:136 +msgid "SSL root certificates" +msgstr "" + +#: templates/settings.php:153 +msgid "Import Root Certificate" +msgstr "" diff --git a/l10n/sw_KE/files_sharing.po b/l10n/sw_KE/files_sharing.po new file mode 100644 index 0000000000..adbbc6c0f0 --- /dev/null +++ b/l10n/sw_KE/files_sharing.po @@ -0,0 +1,48 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2012-08-12 22:35+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/authenticate.php:4 +msgid "Password" +msgstr "" + +#: templates/authenticate.php:6 +msgid "Submit" +msgstr "" + +#: templates/public.php:9 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "" + +#: templates/public.php:11 +#, php-format +msgid "%s shared the file %s with you" +msgstr "" + +#: templates/public.php:14 templates/public.php:30 +msgid "Download" +msgstr "" + +#: templates/public.php:29 +msgid "No preview available for" +msgstr "" + +#: templates/public.php:35 +msgid "web services under your control" +msgstr "" diff --git a/l10n/sw_KE/files_trashbin.po b/l10n/sw_KE/files_trashbin.po new file mode 100644 index 0000000000..91113e58ba --- /dev/null +++ b/l10n/sw_KE/files_trashbin.po @@ -0,0 +1,68 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + +#: js/trash.js:7 js/trash.js:94 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:33 +msgid "delete file permanently" +msgstr "" + +#: js/trash.js:125 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:126 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:135 +msgid "1 folder" +msgstr "" + +#: js/trash.js:137 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:145 +msgid "1 file" +msgstr "" + +#: js/trash.js:147 +msgid "{count} files" +msgstr "" + +#: templates/index.php:9 +msgid "Nothing in here. Your trash bin is empty!" +msgstr "" + +#: templates/index.php:20 templates/index.php:22 +msgid "Restore" +msgstr "" diff --git a/l10n/sw_KE/files_versions.po b/l10n/sw_KE/files_versions.po new file mode 100644 index 0000000000..1194d23a78 --- /dev/null +++ b/l10n/sw_KE/files_versions.po @@ -0,0 +1,65 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + +#: js/versions.js:16 +msgid "History" +msgstr "" + +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + +#: templates/settings.php:3 +msgid "Files Versioning" +msgstr "" + +#: templates/settings.php:4 +msgid "Enable" +msgstr "" diff --git a/l10n/sw_KE/lib.po b/l10n/sw_KE/lib.po new file mode 100644 index 0000000000..803852d429 --- /dev/null +++ b/l10n/sw_KE/lib.po @@ -0,0 +1,253 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: app.php:339 +msgid "Help" +msgstr "" + +#: app.php:346 +msgid "Personal" +msgstr "" + +#: app.php:351 +msgid "Settings" +msgstr "" + +#: app.php:356 +msgid "Users" +msgstr "" + +#: app.php:363 +msgid "Apps" +msgstr "" + +#: app.php:365 +msgid "Admin" +msgstr "" + +#: files.php:202 +msgid "ZIP download is turned off." +msgstr "" + +#: files.php:203 +msgid "Files need to be downloaded one by one." +msgstr "" + +#: files.php:203 files.php:228 +msgid "Back to Files" +msgstr "" + +#: files.php:227 +msgid "Selected files too large to generate zip file." +msgstr "" + +#: helper.php:226 +msgid "couldn't be determined" +msgstr "" + +#: json.php:28 +msgid "Application is not enabled" +msgstr "" + +#: json.php:39 json.php:62 json.php:73 +msgid "Authentication error" +msgstr "" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "" + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + +#: template.php:113 +msgid "seconds ago" +msgstr "" + +#: template.php:114 +msgid "1 minute ago" +msgstr "" + +#: template.php:115 +#, php-format +msgid "%d minutes ago" +msgstr "" + +#: template.php:116 +msgid "1 hour ago" +msgstr "" + +#: template.php:117 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:118 +msgid "today" +msgstr "" + +#: template.php:119 +msgid "yesterday" +msgstr "" + +#: template.php:120 +#, php-format +msgid "%d days ago" +msgstr "" + +#: template.php:121 +msgid "last month" +msgstr "" + +#: template.php:122 +#, php-format +msgid "%d months ago" +msgstr "" + +#: template.php:123 +msgid "last year" +msgstr "" + +#: template.php:124 +msgid "years ago" +msgstr "" + +#: updater.php:75 +#, php-format +msgid "%s is available. Get more information" +msgstr "" + +#: updater.php:77 +msgid "up to date" +msgstr "" + +#: updater.php:80 +msgid "updates check is disabled" +msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/sw_KE/settings.po b/l10n/sw_KE/settings.po new file mode 100644 index 0000000000..d3c967e603 --- /dev/null +++ b/l10n/sw_KE/settings.po @@ -0,0 +1,316 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "" + +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/changedisplayname.php:32 +msgid "Unable to change display name" +msgstr "" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "" + +#: ajax/enableapp.php:11 +msgid "Could not enable app. " +msgstr "" + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "" + +#: ajax/removeuser.php:24 +msgid "Unable to delete user" +msgstr "" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "" + +#: ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:28 +#, php-format +msgid "Unable to add user to group %s" +msgstr "" + +#: ajax/togglegroups.php:34 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "" + +#: ajax/updateapp.php:14 +msgid "Couldn't update app." +msgstr "" + +#: js/apps.js:30 +msgid "Update to {appversion}" +msgstr "" + +#: js/apps.js:36 js/apps.js:76 +msgid "Disable" +msgstr "" + +#: js/apps.js:36 js/apps.js:64 +msgid "Enable" +msgstr "" + +#: js/apps.js:55 +msgid "Please wait...." +msgstr "" + +#: js/apps.js:84 +msgid "Updating...." +msgstr "" + +#: js/apps.js:87 +msgid "Error while updating app" +msgstr "" + +#: js/apps.js:87 +msgid "Error" +msgstr "" + +#: js/apps.js:90 +msgid "Updated" +msgstr "" + +#: js/personal.js:96 +msgid "Saving..." +msgstr "" + +#: personal.php:34 personal.php:35 +msgid "__language_name__" +msgstr "" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "" + +#: templates/apps.php:11 +msgid "More Apps" +msgstr "" + +#: templates/apps.php:24 +msgid "Select an App" +msgstr "" + +#: templates/apps.php:28 +msgid "See application page at apps.owncloud.com" +msgstr "" + +#: templates/apps.php:29 +msgid "-licensed by " +msgstr "" + +#: templates/apps.php:31 +msgid "Update" +msgstr "" + +#: templates/help.php:3 +msgid "User Documentation" +msgstr "" + +#: templates/help.php:4 +msgid "Administrator Documentation" +msgstr "" + +#: templates/help.php:6 +msgid "Online Documentation" +msgstr "" + +#: templates/help.php:7 +msgid "Forum" +msgstr "" + +#: templates/help.php:9 +msgid "Bugtracker" +msgstr "" + +#: templates/help.php:11 +msgid "Commercial Support" +msgstr "" + +#: templates/personal.php:8 +#, php-format +msgid "You have used %s of the available %s" +msgstr "" + +#: templates/personal.php:14 +msgid "Get the apps to sync your files" +msgstr "" + +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:39 +msgid "Current password" +msgstr "" + +#: templates/personal.php:40 +msgid "New password" +msgstr "" + +#: templates/personal.php:42 +msgid "Change password" +msgstr "" + +#: templates/personal.php:54 templates/users.php:80 +msgid "Display Name" +msgstr "" + +#: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "" + +#: templates/personal.php:68 +msgid "Email" +msgstr "" + +#: templates/personal.php:69 +msgid "Your email address" +msgstr "" + +#: templates/personal.php:70 +msgid "Fill in an email address to enable password recovery" +msgstr "" + +#: templates/personal.php:76 templates/personal.php:77 +msgid "Language" +msgstr "" + +#: templates/personal.php:82 +msgid "Help translate" +msgstr "" + +#: templates/personal.php:87 +msgid "WebDAV" +msgstr "" + +#: templates/personal.php:89 +msgid "Use this address to connect to your ownCloud in your file manager" +msgstr "" + +#: templates/personal.php:98 +msgid "Version" +msgstr "" + +#: templates/personal.php:100 +msgid "" +"Developed by the ownCloud community, the source code is " +"licensed under the AGPL." +msgstr "" + +#: templates/users.php:21 templates/users.php:79 +msgid "Login Name" +msgstr "" + +#: templates/users.php:26 templates/users.php:82 templates/users.php:107 +msgid "Groups" +msgstr "" + +#: templates/users.php:32 +msgid "Create" +msgstr "" + +#: templates/users.php:35 +msgid "Default Storage" +msgstr "" + +#: templates/users.php:42 templates/users.php:142 +msgid "Unlimited" +msgstr "" + +#: templates/users.php:60 templates/users.php:157 +msgid "Other" +msgstr "" + +#: templates/users.php:84 templates/users.php:121 +msgid "Group Admin" +msgstr "" + +#: templates/users.php:86 +msgid "Storage" +msgstr "" + +#: templates/users.php:97 +msgid "change display name" +msgstr "" + +#: templates/users.php:101 +msgid "set new password" +msgstr "" + +#: templates/users.php:137 +msgid "Default" +msgstr "" + +#: templates/users.php:165 +msgid "Delete" +msgstr "" diff --git a/l10n/sw_KE/user_ldap.po b/l10n/sw_KE/user_ldap.po new file mode 100644 index 0000000000..2ef2872dc3 --- /dev/null +++ b/l10n/sw_KE/user_ldap.po @@ -0,0 +1,309 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/deleteConfiguration.php:34 +msgid "Failed to delete the server configuration" +msgstr "" + +#: ajax/testConfiguration.php:35 +msgid "The configuration is valid and the connection could be established!" +msgstr "" + +#: ajax/testConfiguration.php:37 +msgid "" +"The configuration is valid, but the Bind failed. Please check the server " +"settings and credentials." +msgstr "" + +#: ajax/testConfiguration.php:40 +msgid "" +"The configuration is invalid. Please look in the ownCloud log for further " +"details." +msgstr "" + +#: js/settings.js:66 +msgid "Deletion failed" +msgstr "" + +#: js/settings.js:82 +msgid "Take over settings from recent server configuration?" +msgstr "" + +#: js/settings.js:83 +msgid "Keep settings?" +msgstr "" + +#: js/settings.js:97 +msgid "Cannot add server configuration" +msgstr "" + +#: js/settings.js:121 +msgid "Connection test succeeded" +msgstr "" + +#: js/settings.js:126 +msgid "Connection test failed" +msgstr "" + +#: js/settings.js:136 +msgid "Do you really want to delete the current Server Configuration?" +msgstr "" + +#: js/settings.js:137 +msgid "Confirm Deletion" +msgstr "" + +#: templates/settings.php:8 +msgid "" +"Warning: Apps user_ldap and user_webdavauth are incompatible. You may" +" experience unexpected behaviour. Please ask your system administrator to " +"disable one of them." +msgstr "" + +#: templates/settings.php:11 +msgid "" +"Warning: The PHP LDAP module is not installed, the backend will not " +"work. Please ask your system administrator to install it." +msgstr "" + +#: templates/settings.php:15 +msgid "Server configuration" +msgstr "" + +#: templates/settings.php:17 +msgid "Add Server Configuration" +msgstr "" + +#: templates/settings.php:21 +msgid "Host" +msgstr "" + +#: templates/settings.php:21 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "" + +#: templates/settings.php:22 +msgid "Base DN" +msgstr "" + +#: templates/settings.php:22 +msgid "One Base DN per line" +msgstr "" + +#: templates/settings.php:22 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "" + +#: templates/settings.php:23 +msgid "User DN" +msgstr "" + +#: templates/settings.php:23 +msgid "" +"The DN of the client user with which the bind shall be done, e.g. " +"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " +"empty." +msgstr "" + +#: templates/settings.php:24 +msgid "Password" +msgstr "" + +#: templates/settings.php:24 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/settings.php:25 +msgid "User Login Filter" +msgstr "" + +#: templates/settings.php:25 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action." +msgstr "" + +#: templates/settings.php:25 +#, php-format +msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" +msgstr "" + +#: templates/settings.php:26 +msgid "User List Filter" +msgstr "" + +#: templates/settings.php:26 +msgid "Defines the filter to apply, when retrieving users." +msgstr "" + +#: templates/settings.php:26 +msgid "without any placeholder, e.g. \"objectClass=person\"." +msgstr "" + +#: templates/settings.php:27 +msgid "Group Filter" +msgstr "" + +#: templates/settings.php:27 +msgid "Defines the filter to apply, when retrieving groups." +msgstr "" + +#: templates/settings.php:27 +msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." +msgstr "" + +#: templates/settings.php:31 +msgid "Connection Settings" +msgstr "" + +#: templates/settings.php:33 +msgid "Configuration Active" +msgstr "" + +#: templates/settings.php:33 +msgid "When unchecked, this configuration will be skipped." +msgstr "" + +#: templates/settings.php:34 +msgid "Port" +msgstr "" + +#: templates/settings.php:35 +msgid "Backup (Replica) Host" +msgstr "" + +#: templates/settings.php:35 +msgid "" +"Give an optional backup host. It must be a replica of the main LDAP/AD " +"server." +msgstr "" + +#: templates/settings.php:36 +msgid "Backup (Replica) Port" +msgstr "" + +#: templates/settings.php:37 +msgid "Disable Main Server" +msgstr "" + +#: templates/settings.php:37 +msgid "When switched on, ownCloud will only connect to the replica server." +msgstr "" + +#: templates/settings.php:38 +msgid "Use TLS" +msgstr "" + +#: templates/settings.php:38 +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" + +#: templates/settings.php:39 +msgid "Case insensitve LDAP server (Windows)" +msgstr "" + +#: templates/settings.php:40 +msgid "Turn off SSL certificate validation." +msgstr "" + +#: templates/settings.php:40 +msgid "" +"If connection only works with this option, import the LDAP server's SSL " +"certificate in your ownCloud server." +msgstr "" + +#: templates/settings.php:40 +msgid "Not recommended, use for testing only." +msgstr "" + +#: templates/settings.php:41 +msgid "in seconds. A change empties the cache." +msgstr "" + +#: templates/settings.php:43 +msgid "Directory Settings" +msgstr "" + +#: templates/settings.php:45 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:45 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "" + +#: templates/settings.php:46 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:46 +msgid "One User Base DN per line" +msgstr "" + +#: templates/settings.php:47 +msgid "User Search Attributes" +msgstr "" + +#: templates/settings.php:47 templates/settings.php:50 +msgid "Optional; one attribute per line" +msgstr "" + +#: templates/settings.php:48 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:48 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "" + +#: templates/settings.php:49 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:49 +msgid "One Group Base DN per line" +msgstr "" + +#: templates/settings.php:50 +msgid "Group Search Attributes" +msgstr "" + +#: templates/settings.php:51 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:53 +msgid "Special Attributes" +msgstr "" + +#: templates/settings.php:56 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:58 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "" + +#: templates/settings.php:62 +msgid "Help" +msgstr "" diff --git a/l10n/sw_KE/user_webdavauth.po b/l10n/sw_KE/user_webdavauth.po new file mode 100644 index 0000000000..1e07c21030 --- /dev/null +++ b/l10n/sw_KE/user_webdavauth.po @@ -0,0 +1,33 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:3 +msgid "WebDAV Authentication" +msgstr "" + +#: templates/settings.php:4 +msgid "URL: http://" +msgstr "" + +#: templates/settings.php:7 +msgid "" +"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." +msgstr "" diff --git a/l10n/ta_LK/core.po b/l10n/ta_LK/core.po index ff63ed2170..a7f267a577 100644 --- a/l10n/ta_LK/core.po +++ b/l10n/ta_LK/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -51,8 +51,9 @@ msgid "No category to add?" msgstr "சேர்ப்பதற்கான வகைகள் இல்லையா?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "இந்த வகை ஏற்கனவே உள்ளது:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -156,59 +157,59 @@ msgstr "கார்த்திகை" msgid "December" msgstr "மார்கழி" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "அமைப்புகள்" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "செக்கன்களுக்கு முன்" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 நிமிடத்திற்கு முன் " -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{நிமிடங்கள்} நிமிடங்களுக்கு முன் " -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 மணித்தியாலத்திற்கு முன்" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{மணித்தியாலங்கள்} மணித்தியாலங்களிற்கு முன்" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "இன்று" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "நேற்று" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{நாட்கள்} நாட்களுக்கு முன்" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "கடந்த மாதம்" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{மாதங்கள்} மாதங்களிற்கு முன்" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "மாதங்களுக்கு முன்" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "கடந்த வருடம்" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "வருடங்களுக்கு முன்" @@ -467,7 +468,7 @@ msgstr "வகைகளை தொகுக்க" msgid "Add" msgstr "சேர்க்க" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "பாதுகாப்பு எச்சரிக்கை" @@ -477,71 +478,75 @@ msgid "" "OpenSSL extension." msgstr "குறிப்பிட்ட எண்ணிக்கை பாதுகாப்பான புறப்பாக்கி / உண்டாக்கிகள் இல்லை, தயவுசெய்து PHP OpenSSL நீட்சியை இயலுமைப்படுத்துக. " -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "பாதுகாப்பான சீரற்ற எண்ணிக்கையான புறப்பாக்கி இல்லையெனின், தாக்குனரால் கடவுச்சொல் மீளமைப்பு அடையாளவில்லைகள் முன்மொழியப்பட்டு உங்களுடைய கணக்கை கைப்பற்றலாம்." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "உங்களுடைய தரவு அடைவு மற்றும் உங்களுடைய கோப்புக்களை பெரும்பாலும் இணையத்தினூடாக அணுகலாம். ownCloud இனால் வழங்கப்படுகின்ற .htaccess கோப்பு வேலை செய்யவில்லை. தரவு அடைவை நீண்ட நேரத்திற்கு அணுகக்கூடியதாக உங்களுடைய வலைய சேவையகத்தை தகவமைக்குமாறு நாங்கள் உறுதியாக கூறுகிறோம் அல்லது தரவு அடைவை வலைய சேவையக மூல ஆவணத்திலிருந்து வெளியே அகற்றுக. " +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr " நிர்வாக கணக்கொன்றை உருவாக்குக" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "மேம்பட்ட" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "தரவு கோப்புறை" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "தரவுத்தளத்தை தகவமைக்க" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "பயன்படுத்தப்படும்" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "தரவுத்தள பயனாளர்" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "தரவுத்தள கடவுச்சொல்" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "தரவுத்தள பெயர்" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "தரவுத்தள அட்டவணை" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "தரவுத்தள ஓம்புனர்" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "அமைப்பை முடிக்க" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "உங்கள் கட்டுப்பாட்டின் கீழ் இணைய சேவைகள்" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "விடுபதிகை செய்க" diff --git a/l10n/ta_LK/files.po b/l10n/ta_LK/files.po index 981b7fbcc8..a6ead449b9 100644 --- a/l10n/ta_LK/files.po +++ b/l10n/ta_LK/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,20 @@ msgstr "" "Language: ta_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "ஒரு கோப்பும் பதிவேற்றப்படவில்லை. அறியப்படாத வழு" @@ -54,7 +68,7 @@ msgid "Failed to write to disk" msgstr "வட்டில் எழுத முடியவில்லை" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -65,51 +79,52 @@ msgstr "" msgid "Files" msgstr "கோப்புகள்" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "பகிரப்படாதது" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "அழிக்க" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "பெயர்மாற்றம்" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "நிலுவையிலுள்ள" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} ஏற்கனவே உள்ளது" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "மாற்றிடுக" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "பெயரை பரிந்துரைக்க" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "இரத்து செய்க" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "மாற்றப்பட்டது {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "முன் செயல் நீக்கம் " -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} ஆனது {old_name} இனால் மாற்றப்பட்டது" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -149,64 +164,60 @@ msgstr "அடைவு அல்லது 0 bytes ஐ கொண்டுள் msgid "Upload Error" msgstr "பதிவேற்றல் வழு" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "மூடுக" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "நிலுவையிலுள்ள" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 கோப்பு பதிவேற்றப்படுகிறது" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{எண்ணிக்கை} கோப்புகள் பதிவேற்றப்படுகின்றது" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "பதிவேற்றல் இரத்து செய்யப்பட்டுள்ளது" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "கோப்பு பதிவேற்றம் செயல்பாட்டில் உள்ளது. இந்தப் பக்கத்திலிருந்து வெறியேறுவதானது பதிவேற்றலை இரத்து செய்யும்." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL வெறுமையாக இருக்கமுடியாது." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "பெயர்" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "அளவு" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "மாற்றப்பட்டது" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 கோப்புறை" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{எண்ணிக்கை} கோப்புறைகள்" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 கோப்பு" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{எண்ணிக்கை} கோப்புகள்" @@ -263,7 +274,7 @@ msgid "From link" msgstr "இணைப்பிலிருந்து" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -278,6 +289,10 @@ msgstr "இங்கு ஒன்றும் இல்லை. ஏதாவத msgid "Download" msgstr "பதிவிறக்குக" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "பகிரப்படாதது" + #: templates/index.php:105 msgid "Upload too large" msgstr "பதிவேற்றல் மிகப்பெரியது" diff --git a/l10n/ta_LK/files_encryption.po b/l10n/ta_LK/files_encryption.po index dc06118a3e..fbd878dfe5 100644 --- a/l10n/ta_LK/files_encryption.po +++ b/l10n/ta_LK/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: ta_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "மறைக்குறியீடு" diff --git a/l10n/ta_LK/files_trashbin.po b/l10n/ta_LK/files_trashbin.po index 885b8e84a2..731846dde0 100644 --- a/l10n/ta_LK/files_trashbin.po +++ b/l10n/ta_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: ta_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/ta_LK/files_versions.po b/l10n/ta_LK/files_versions.po index ed417e5828..971b58bc8e 100644 --- a/l10n/ta_LK/files_versions.po +++ b/l10n/ta_LK/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: ta_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "வரலாறு" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "கோப்பு பதிப்புகள்" diff --git a/l10n/ta_LK/lib.po b/l10n/ta_LK/lib.po index febb5ad328..80358acada 100644 --- a/l10n/ta_LK/lib.po +++ b/l10n/ta_LK/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: ta_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "உதவி" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "தனிப்பட்ட" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "அமைப்புகள்" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "பயனாளர்கள்" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "செயலிகள்" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "நிர்வாகம்" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "வீசொலிப் பூட்டு பதிவிறக்கம் நிறுத்தப்பட்டுள்ளது." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "கோப்புகள்ஒன்றன் பின் ஒன்றாக பதிவிறக்கப்படவேண்டும்." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "கோப்புகளுக்கு செல்க" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "வீ சொலிக் கோப்புகளை உருவாக்குவதற்கு தெரிவுசெய்யப்பட்ட கோப்புகள் மிகப்பெரியவை" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -86,6 +86,103 @@ msgstr "உரை" msgid "Images" msgstr "படங்கள்" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "செக்கன்களுக்கு முன்" diff --git a/l10n/ta_LK/settings.po b/l10n/ta_LK/settings.po index 6e3983c95c..f7bb0ba28b 100644 --- a/l10n/ta_LK/settings.po +++ b/l10n/ta_LK/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -22,12 +22,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "செயலி சேமிப்பிலிருந்து பட்டியலை ஏற்றமுடியாதுள்ளது" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "அத்தாட்சிப்படுத்தலில் வழு" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -81,7 +81,7 @@ msgstr "குழு %s இல் பயனாளரை சேர்க்க msgid "Unable to remove user from group %s" msgstr "குழு %s இலிருந்து பயனாளரை நீக்கமுடியாது" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -178,99 +178,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "நீங்கள் %s இலுள்ள %sபயன்படுத்தியுள்ளீர்கள்" -#: templates/personal.php:12 -msgid "Clients" -msgstr "வாடிக்கையாளர்கள்" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "கடவுச்சொல்" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "உங்களுடைய கடவுச்சொல் மாற்றப்பட்டுள்ளது" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "உங்களுடைய கடவுச்சொல்லை மாற்றமுடியாது" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "தற்போதைய கடவுச்சொல்" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "புதிய கடவுச்சொல்" -#: templates/personal.php:28 -msgid "show" -msgstr "காட்டு" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "கடவுச்சொல்லை மாற்றுக" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "மின்னஞ்சல்" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "உங்களுடைய மின்னஞ்சல் முகவரி" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "கடவுச்சொல் மீள் பெறுவதை இயலுமைப்படுத்துவதற்கு மின்னஞ்சல் முகவரியை இயலுமைப்படுத்துக" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "மொழி" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "மொழிபெயர்க்க உதவி" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "TLS ஐ பயன்படுத்தவும்" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "SSL இணைப்பிற்கு பயன்படுத்தவேண்டாம், அது தோல்வியடையும்." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 7d0512dba9..ef95bd521c 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -50,7 +50,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -155,59 +156,59 @@ msgstr "" msgid "December" msgstr "" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "" @@ -237,8 +238,8 @@ msgid "The object type is not specified." msgstr "" #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "" @@ -250,15 +251,15 @@ msgstr "" msgid "The required file {file} is not installed!" msgstr "" -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 -msgid "Share" -msgstr "" - -#: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 +#: js/share.js:29 js/share.js:43 js/share.js:90 msgid "Shared" msgstr "" -#: js/share.js:141 js/share.js:611 +#: js/share.js:93 +msgid "Share" +msgstr "" + +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "" @@ -354,23 +355,23 @@ msgstr "" msgid "share" msgstr "" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "" -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "" @@ -466,7 +467,7 @@ msgstr "" msgid "Add" msgstr "" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -476,71 +477,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the " -"webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 82ec8fdc4c..64871c6a4d 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,6 +17,20 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -53,7 +67,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -64,51 +78,52 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:125 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:127 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:187 +#: js/fileactions.js:193 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -148,64 +163,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "" @@ -262,7 +273,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -277,6 +288,10 @@ msgstr "" msgid "Download" msgstr "" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 4065f83e88..a00d367b39 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,28 +17,6 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to " -"complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index 70f6f01fe7..f991f0997d 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,13 +41,13 @@ msgstr "" msgid "Error configuring Google Drive storage" msgstr "" -#: lib/config.php:405 +#: lib/config.php:413 msgid "" "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares " "is not possible. Please ask your system administrator to install it." msgstr "" -#: lib/config.php:406 +#: lib/config.php:414 msgid "" "Warning: The FTP support in PHP is not enabled or installed. Mounting " "of FTP shares is not possible. Please ask your system administrator to " diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index fdaa852edc..1a25ed5f6e 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index bf75a1b15d..b2d0cc16ba 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,6 +17,16 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index c15d3679e2..02ac453904 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,10 +17,45 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index d9cae265ed..e194892ec3 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,27 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: app.php:313 +#: app.php:339 msgid "Help" msgstr "" -#: app.php:320 +#: app.php:346 msgid "Personal" msgstr "" -#: app.php:325 +#: app.php:351 msgid "Settings" msgstr "" -#: app.php:330 +#: app.php:356 msgid "Users" msgstr "" -#: app.php:337 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:339 +#: app.php:365 msgid "Admin" msgstr "" @@ -85,6 +85,103 @@ msgstr "" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index bd244208d5..3c711d9798 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,12 +21,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -80,7 +80,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -178,99 +178,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "" -#: templates/personal.php:28 -msgid "show" -msgstr "" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: LANGUAGE \n" @@ -212,7 +212,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index af5e2100c2..2f1fa4a2e3 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/th_TH/core.po b/l10n/th_TH/core.po index 967a5a57f6..ae9a012536 100644 --- a/l10n/th_TH/core.po +++ b/l10n/th_TH/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -52,8 +52,9 @@ msgid "No category to add?" msgstr "ไม่มีหมวดหมู่ที่ต้องการเพิ่ม?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "หมวดหมู่นี้มีอยู่แล้ว: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +158,59 @@ msgstr "พฤศจิกายน" msgid "December" msgstr "ธันวาคม" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "ตั้งค่า" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "วินาที ก่อนหน้านี้" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 นาทีก่อนหน้านี้" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} นาทีก่อนหน้านี้" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 ชั่วโมงก่อนหน้านี้" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} ชั่วโมงก่อนหน้านี้" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "วันนี้" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "เมื่อวานนี้" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{day} วันก่อนหน้านี้" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "เดือนที่แล้ว" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} เดือนก่อนหน้านี้" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "เดือน ที่ผ่านมา" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "ปีที่แล้ว" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "ปี ที่ผ่านมา" @@ -468,7 +469,7 @@ msgstr "แก้ไขหมวดหมู่" msgid "Add" msgstr "เพิ่ม" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "คำเตือนเกี่ยวกับความปลอดภัย" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "ยังไม่มีตัวสร้างหมายเลขแบบสุ่มให้ใช้งาน, กรุณาเปิดใช้งานส่วนเสริม PHP OpenSSL" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "หากปราศจากตัวสร้างหมายเลขแบบสุ่มที่ช่วยป้องกันความปลอดภัย ผู้บุกรุกอาจสามารถที่จะคาดคะเนรหัสยืนยันการเข้าถึงเพื่อรีเซ็ตรหัสผ่าน และเอาบัญชีของคุณไปเป็นของตนเองได้" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "ไดเร็กทอรี่ข้อมูลและไฟล์ของคุณสามารถเข้าถึงได้จากอินเทอร์เน็ต ไฟล์ .htaccess ที่ ownCloud มีให้ไม่สามารถทำงานได้อย่างเหมาะสม เราขอแนะนำให้คุณกำหนดค่าเว็บเซิร์ฟเวอร์ใหม่ในรูปแบบที่ไดเร็กทอรี่เก็บข้อมูลไม่สามารถเข้าถึงได้อีกต่อไป หรือคุณได้ย้ายไดเร็กทอรี่ที่ใช้เก็บข้อมูลไปอยู่ภายนอกตำแหน่ง root ของเว็บเซิร์ฟเวอร์แล้ว" +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "สร้าง บัญชีผู้ดูแลระบบ" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "ขั้นสูง" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "โฟลเดอร์เก็บข้อมูล" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "กำหนดค่าฐานข้อมูล" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "จะถูกใช้" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "ชื่อผู้ใช้งานฐานข้อมูล" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "รหัสผ่านฐานข้อมูล" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "ชื่อฐานข้อมูล" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "พื้นที่ตารางในฐานข้อมูล" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Database host" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "ติดตั้งเรียบร้อยแล้ว" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "web services under your control" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "ออกจากระบบ" diff --git a/l10n/th_TH/files.po b/l10n/th_TH/files.po index 5b83ba04ba..2104d5cd25 100644 --- a/l10n/th_TH/files.po +++ b/l10n/th_TH/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -19,6 +19,20 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "ไม่สามารถย้าย %s ได้ - ไฟล์ที่ใช้ชื่อนี้มีอยู่แล้ว" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "ไม่สามารถย้าย %s ได้" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "ไม่สามารถเปลี่ยนชื่อไฟล์ได้" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "ยังไม่มีไฟล์ใดที่ถูกอัพโหลด เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ" @@ -55,8 +69,8 @@ msgid "Failed to write to disk" msgstr "เขียนข้อมูลลงแผ่นดิสก์ล้มเหลว" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "มีพื้นที่เหลือไม่เพียงพอ" +msgid "Not enough storage available" +msgstr "เหลือพื้นที่ไม่เพียงสำหรับใช้งาน" #: ajax/upload.php:83 msgid "Invalid directory." @@ -66,51 +80,52 @@ msgstr "ไดเร็กทอรี่ไม่ถูกต้อง" msgid "Files" msgstr "ไฟล์" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "ยกเลิกการแชร์ข้อมูล" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "ลบ" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "เปลี่ยนชื่อ" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "อยู่ระหว่างดำเนินการ" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} มีอยู่แล้วในระบบ" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "แทนที่" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "แนะนำชื่อ" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "ยกเลิก" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "แทนที่ {new_name} แล้ว" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "เลิกทำ" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "แทนที่ {new_name} ด้วย {old_name} แล้ว" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "ดำเนินการตามคำสั่งลบ" @@ -150,64 +165,60 @@ msgstr "ไม่สามารถอัพโหลดไฟล์ของค msgid "Upload Error" msgstr "เกิดข้อผิดพลาดในการอัพโหลด" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "ปิด" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "อยู่ระหว่างดำเนินการ" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "กำลังอัพโหลดไฟล์ 1 ไฟล์" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "กำลังอัพโหลด {count} ไฟล์" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "การอัพโหลดถูกยกเลิก" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "การอัพโหลดไฟล์กำลังอยู่ในระหว่างดำเนินการ การออกจากหน้าเว็บนี้จะทำให้การอัพโหลดถูกยกเลิก" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL ไม่สามารถเว้นว่างได้" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "ชื่อโฟลเดอร์ไม่ถูกต้อง การใช้งาน 'แชร์' สงวนไว้สำหรับ Owncloud เท่านั้น" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "ชื่อ" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "ขนาด" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "ปรับปรุงล่าสุด" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 โฟลเดอร์" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} โฟลเดอร์" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 ไฟล์" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} ไฟล์" @@ -264,8 +275,8 @@ msgid "From link" msgstr "จากลิงก์" #: templates/index.php:40 -msgid "Trash" -msgstr "ถังขยะ" +msgid "Trash bin" +msgstr "" #: templates/index.php:46 msgid "Cancel upload" @@ -279,6 +290,10 @@ msgstr "ยังไม่มีไฟล์ใดๆอยู่ที่นี msgid "Download" msgstr "ดาวน์โหลด" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "ยกเลิกการแชร์ข้อมูล" + #: templates/index.php:105 msgid "Upload too large" msgstr "ไฟล์ที่อัพโหลดมีขนาดใหญ่เกินไป" diff --git a/l10n/th_TH/files_encryption.po b/l10n/th_TH/files_encryption.po index 5131a396a5..0f055b572f 100644 --- a/l10n/th_TH/files_encryption.po +++ b/l10n/th_TH/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "กรุณาสลับไปที่โปรแกรมไคลเอนต์ ownCloud ของคุณ แล้วเปลี่ยนรหัสผ่านสำหรับการเข้ารหัสเพื่อแปลงข้อมูลให้เสร็จสมบูรณ์" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "สลับไปใช้การเข้ารหัสจากโปรแกรมไคลเอนต์" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "เปลี่ยนรหัสผ่านสำหรับเข้ารหัสไปเป็นรหัสผ่านสำหรับการเข้าสู่ระบบ" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "กรุณาตรวจสอบรหัสผ่านของคุณแล้วลองใหม่อีกครั้ง" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "ไม่สามารถเปลี่ยนรหัสผ่านสำหรับการเข้ารหัสไฟล์ของคุณไปเป็นรหัสผ่านสำหรับการเข้าสู่ระบบของคุณได้" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "การเข้ารหัส" diff --git a/l10n/th_TH/files_trashbin.po b/l10n/th_TH/files_trashbin.po index 0232d63d0b..45c363a10a 100644 --- a/l10n/th_TH/files_trashbin.po +++ b/l10n/th_TH/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -18,6 +18,16 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "ดำเนินการคืนค่า" diff --git a/l10n/th_TH/files_versions.po b/l10n/th_TH/files_versions.po index c36c1b5941..4d724184b1 100644 --- a/l10n/th_TH/files_versions.po +++ b/l10n/th_TH/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "ประวัติ" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "การกำหนดเวอร์ชั่นของไฟล์" diff --git a/l10n/th_TH/lib.po b/l10n/th_TH/lib.po index ab2e313276..b7a10f4fd2 100644 --- a/l10n/th_TH/lib.po +++ b/l10n/th_TH/lib.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-22 00:44+0000\n" -"Last-Translator: AriesAnywhere Anywhere \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,47 +18,47 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "ช่วยเหลือ" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "ส่วนตัว" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "ตั้งค่า" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "ผู้ใช้งาน" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "แอปฯ" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "ผู้ดูแล" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "คุณสมบัติการดาวน์โหลด zip ถูกปิดการใช้งานไว้" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "ไฟล์สามารถดาวน์โหลดได้ทีละครั้งเท่านั้น" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "กลับไปที่ไฟล์" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "ไฟล์ที่เลือกมีขนาดใหญ่เกินกว่าที่จะสร้างเป็นไฟล์ zip" -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "ไม่สามารถกำหนดได้" @@ -86,6 +86,103 @@ msgstr "ข้อความ" msgid "Images" msgstr "รูปภาพ" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "วินาทีที่ผ่านมา" diff --git a/l10n/th_TH/settings.po b/l10n/th_TH/settings.po index a04a575b53..d5b1e473a6 100644 --- a/l10n/th_TH/settings.po +++ b/l10n/th_TH/settings.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "ไม่สามารถโหลดรายการจาก App Store ได้" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "เกิดข้อผิดพลาดเกี่ยวกับสิทธิ์การเข้าใช้งาน" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -83,7 +83,7 @@ msgstr "ไม่สามารถเพิ่มผู้ใช้งานเ msgid "Unable to remove user from group %s" msgstr "ไม่สามารถลบผู้ใช้งานออกจากกลุ่ม %s ได้" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "ไม่สามารถอัพเดทแอปฯ" @@ -180,99 +180,87 @@ msgstr "บริการลูกค้าแบบเสียค่าใช msgid "You have used %s of the available %s" msgstr "คุณได้ใช้งานไปแล้ว %s จากจำนวนที่สามารถใช้ได้ %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "ลูกค้า" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "ดาวน์โหลดโปรแกรมไคลเอนต์สำหรับเครื่องเดสก์ท็อป" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "ดาวน์โหลดโปรแกรมไคลเอนต์สำหรับแอนดรอยด์" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "ดาวน์โหลดโปรแกรมไคลเอนต์สำหรับ iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "แสดงหน้าจอวิซาร์ดนำทางครั้งแรกอีกครั้ง" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "รหัสผ่าน" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "รหัสผ่านของคุณถูกเปลี่ยนแล้ว" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "ไม่สามารถเปลี่ยนรหัสผ่านของคุณได้" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "รหัสผ่านปัจจุบัน" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "รหัสผ่านใหม่" -#: templates/personal.php:28 -msgid "show" -msgstr "แสดง" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "เปลี่ยนรหัสผ่าน" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "ชื่อที่ต้องการแสดง" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "อีเมล์" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "ที่อยู่อีเมล์ของคุณ" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "กรอกที่อยู่อีเมล์ของคุณเพื่อเปิดให้มีการกู้คืนรหัสผ่านได้" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "ภาษา" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "ช่วยกันแปล" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "ใช้ที่อยู่นี้เพื่อเชื่อมต่อกับ ownCloud ในโปรแกรมจัดการไฟล์ของคุณ" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "รุ่น" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "ใช้ TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "กรุณาอย่าใช้การเชื่อมต่อแบบ SSL การเชื่อมต่อจะเกิดการล้มเหลว" +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/tr/core.po b/l10n/tr/core.po index f11dd8854e..e6ef436731 100644 --- a/l10n/tr/core.po +++ b/l10n/tr/core.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -55,8 +55,9 @@ msgid "No category to add?" msgstr "Eklenecek kategori yok?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Bu kategori zaten mevcut: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -160,59 +161,59 @@ msgstr "Kasım" msgid "December" msgstr "Aralık" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Ayarlar" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "saniye önce" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 dakika önce" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} dakika önce" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 saat önce" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} saat önce" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "bugün" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "dün" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} gün önce" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "geçen ay" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} ay önce" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "ay önce" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "geçen yıl" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "yıl önce" @@ -471,7 +472,7 @@ msgstr "Kategorileri düzenle" msgid "Add" msgstr "Ekle" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Güvenlik Uyarisi" @@ -481,71 +482,75 @@ msgid "" "OpenSSL extension." msgstr "Güvenli rasgele sayı üreticisi bulunamadı. Lütfen PHP OpenSSL eklentisini etkinleştirin." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Güvenli rasgele sayı üreticisi olmadan saldırganlar parola sıfırlama simgelerini tahmin edip hesabınızı ele geçirebilir." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "data dizininiz ve dosyalarınız büyük ihtimalle internet üzerinden erişilebilir. Owncloud tarafından sağlanan .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak data dizinine erişimi kapatmanızı veya data dizinini web sunucu döküman dizini dışına almanızı şiddetle tavsiye ederiz." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Bir yönetici hesabı oluşturun" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Gelişmiş" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Veri klasörü" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Veritabanını ayarla" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "kullanılacak" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Veritabanı kullanıcı adı" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Veritabanı parolası" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Veritabanı adı" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Veritabanı tablo alanı" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Veritabanı sunucusu" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Kurulumu tamamla" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "kontrolünüzdeki web servisleri" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Çıkış yap" diff --git a/l10n/tr/files.po b/l10n/tr/files.po index b02309d994..611384113c 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/files.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -23,6 +23,20 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "%s taşınamadı. Bu isimde dosya zaten var." + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "%s taşınamadı" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Dosya adı değiştirilemedi" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Dosya yüklenmedi. Bilinmeyen hata" @@ -59,8 +73,8 @@ msgid "Failed to write to disk" msgstr "Diske yazılamadı" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "Yeterli disk alanı yok" +msgid "Not enough storage available" +msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." @@ -70,51 +84,52 @@ msgstr "Geçersiz dizin." msgid "Files" msgstr "Dosyalar" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Paylaşılmayan" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Sil" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "İsim değiştir." -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Bekliyor" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} zaten mevcut" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "değiştir" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "Öneri ad" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "iptal" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "değiştirilen {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "geri al" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} ismi {old_name} ile değiştirildi" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -154,64 +169,60 @@ msgstr "Dosyanızın boyutu 0 byte olduğundan veya bir dizin olduğundan yükle msgid "Upload Error" msgstr "Yükleme hatası" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Kapat" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Bekliyor" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 dosya yüklendi" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} dosya yükleniyor" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Yükleme iptal edildi." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Dosya yükleme işlemi sürüyor. Şimdi sayfadan ayrılırsanız işleminiz iptal olur." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL boş olamaz." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "Geçersiz dizin adı. Shared isminin kullanımı Owncloud tarafından rezerver edilmiştir." -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Ad" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Boyut" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Değiştirilme" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 dizin" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} dizin" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 dosya" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} dosya" @@ -268,7 +279,7 @@ msgid "From link" msgstr "Bağlantıdan" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -283,6 +294,10 @@ msgstr "Burada hiçbir şey yok. Birşeyler yükleyin!" msgid "Download" msgstr "İndir" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Paylaşılmayan" + #: templates/index.php:105 msgid "Upload too large" msgstr "Yüklemeniz çok büyük" diff --git a/l10n/tr/files_encryption.po b/l10n/tr/files_encryption.po index d8297b19c3..fec3cbfb0b 100644 --- a/l10n/tr/files_encryption.po +++ b/l10n/tr/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Şifreleme" diff --git a/l10n/tr/files_trashbin.po b/l10n/tr/files_trashbin.po index af04cb4549..fff563d2bf 100644 --- a/l10n/tr/files_trashbin.po +++ b/l10n/tr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/tr/files_versions.po b/l10n/tr/files_versions.po index 6f30f6794a..73c00cd9cf 100644 --- a/l10n/tr/files_versions.po +++ b/l10n/tr/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Geçmiş" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Dosya Sürümleri" diff --git a/l10n/tr/lib.po b/l10n/tr/lib.po index fadb1957cf..0694caefa4 100644 --- a/l10n/tr/lib.po +++ b/l10n/tr/lib.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-23 00:05+0100\n" -"PO-Revision-Date: 2013-01-22 09:28+0000\n" -"Last-Translator: ismail yenigül \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +19,47 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Yardı" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Kişisel" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Ayarlar" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Kullanıcılar" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Uygulamalar" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Yönetici" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP indirmeleri kapatılmıştır." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Dosyaların birer birer indirilmesi gerekmektedir." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Dosyalara dön" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Seçilen dosyalar bir zip dosyası oluşturmak için fazla büyüktür." -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "tespit edilemedi" @@ -87,6 +87,103 @@ msgstr "Metin" msgid "Images" msgstr "Resimler" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "saniye önce" diff --git a/l10n/tr/settings.po b/l10n/tr/settings.po index 0b51576c5a..eb9e58d145 100644 --- a/l10n/tr/settings.po +++ b/l10n/tr/settings.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -25,12 +25,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "App Store'dan liste yüklenemiyor" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Eşleşme hata" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -84,7 +84,7 @@ msgstr "Kullanıcı %s grubuna eklenemiyor" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -181,99 +181,87 @@ msgstr "Ticari Destek" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Müşteriler" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Masaüstü İstemcilerini İndir" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Android İstemcisini İndir" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "iOS İstemcisini İndir" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Parola" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Şifreniz değiştirildi" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Parolanız değiştirilemiyor" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Mevcut parola" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Yeni parola" -#: templates/personal.php:28 -msgid "show" -msgstr "göster" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Parola değiştir" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Eposta" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Eposta adresiniz" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Parola sıfırlamayı aktifleştirmek için eposta adresi girin" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Dil" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Çevirilere yardım edin" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Sürüm" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "TLS kullan" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "SSL bağlantıları ile kullanmayın, başarısız olacaktır." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/uk/core.po b/l10n/uk/core.po index 60d1f1f6f1..78e4e2d04c 100644 --- a/l10n/uk/core.po +++ b/l10n/uk/core.po @@ -8,12 +8,13 @@ # Soul Kim , 2012. # , 2012. # , 2013. +# пан Володимир , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -55,8 +56,9 @@ msgid "No category to add?" msgstr "Відсутні категорії для додавання?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Ця категорія вже існує: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -160,59 +162,59 @@ msgstr "Листопад" msgid "December" msgstr "Грудень" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "Налаштування" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "секунди тому" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 хвилину тому" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} хвилин тому" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1 годину тому" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} години тому" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "сьогодні" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "вчора" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} днів тому" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "минулого місяця" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} місяців тому" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "місяці тому" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "минулого року" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "роки тому" @@ -261,7 +263,7 @@ msgstr "Поділитися" #: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 msgid "Shared" -msgstr "" +msgstr "Опубліковано" #: js/share.js:141 js/share.js:611 msgid "Error while sharing" @@ -384,11 +386,11 @@ msgid "" "The update was unsuccessful. Please report this issue to the ownCloud " "community." -msgstr "" +msgstr "Оновлення виконалось неуспішно. Будь ласка, повідомте про цю проблему в спільноті ownCloud." #: js/update.js:18 msgid "The update was successful. Redirecting you to ownCloud now." -msgstr "" +msgstr "Оновлення виконалось успішно. Перенаправляємо вас на ownCloud." #: lostpassword/controller.php:47 msgid "ownCloud password reset" @@ -471,7 +473,7 @@ msgstr "Редагувати категорії" msgid "Add" msgstr "Додати" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Попередження про небезпеку" @@ -481,71 +483,75 @@ msgid "" "OpenSSL extension." msgstr "Не доступний безпечний генератор випадкових чисел, будь ласка, активуйте PHP OpenSSL додаток." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Без безпечного генератора випадкових чисел зловмисник може визначити токени скидання пароля і заволодіти Вашим обліковим записом." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Ваш каталог з даними та Ваші файли можливо доступні з Інтернету. Файл .htaccess, наданий з ownCloud, не працює. Ми наполегливо рекомендуємо Вам налаштувати свій веб-сервер таким чином, щоб каталог data більше не був доступний, або перемістити каталог data за межі кореневого каталогу документів веб-сервера." +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "Створити обліковий запис адміністратора" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Додатково" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Каталог даних" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Налаштування бази даних" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "буде використано" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Користувач бази даних" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Пароль для бази даних" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Назва бази даних" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Таблиця бази даних" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Хост бази даних" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Завершити налаштування" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "веб-сервіс під вашим контролем" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Вихід" @@ -577,7 +583,7 @@ msgstr "Вхід" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Альтернативні Логіни" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/uk/files.po b/l10n/uk/files.po index 021cefdc45..fd21387526 100644 --- a/l10n/uk/files.po +++ b/l10n/uk/files.po @@ -6,12 +6,13 @@ # , 2012. # , 2012. # Soul Kim , 2012. +# пан Володимир , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -20,6 +21,20 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Не завантажено жодного файлу. Невідома помилка" @@ -56,72 +71,73 @@ msgid "Failed to write to disk" msgstr "Невдалося записати на диск" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." -msgstr "" +msgstr "Невірний каталог." #: appinfo/app.php:10 msgid "Files" msgstr "Файли" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Заборонити доступ" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Видалити назавжди" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Видалити" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Перейменувати" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Очікування" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} вже існує" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "заміна" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "запропонуйте назву" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "відміна" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "замінено {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "відмінити" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "замінено {new_name} на {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" -msgstr "" +msgstr "виконати операцію видалення" #: js/files.js:52 msgid "'.' is an invalid file name." -msgstr "" +msgstr "'.' це невірне ім'я файлу." #: js/files.js:56 msgid "File name cannot be empty." -msgstr "" +msgstr " Ім'я файлу не може бути порожнім." #: js/files.js:64 msgid "" @@ -131,17 +147,17 @@ msgstr "Невірне ім'я, '\\', '/', '<', '>', ':', '\"', '|', '?' та '* #: js/files.js:78 msgid "Your storage is full, files can not be updated or synced anymore!" -msgstr "" +msgstr "Ваше сховище переповнене, файли більше не можуть бути оновлені або синхронізовані !" #: js/files.js:82 msgid "Your storage is almost full ({usedSpacePercent}%)" -msgstr "" +msgstr "Ваше сховище майже повне ({usedSpacePercent}%)" #: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." -msgstr "" +msgstr "Ваше завантаження готується. Це може зайняти деякий час, якщо файли завеликі." #: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" @@ -151,64 +167,60 @@ msgstr "Неможливо завантажити ваш файл тому, що msgid "Upload Error" msgstr "Помилка завантаження" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Закрити" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Очікування" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 файл завантажується" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} файлів завантажується" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Завантаження перервано." -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Виконується завантаження файлу. Закриття цієї сторінки приведе до відміни завантаження." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL не може бути пустим." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -msgstr "" +msgstr "Невірне ім'я теки. Використання \"Shared\" зарезервовано Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Ім'я" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Розмір" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Змінено" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 папка" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} папок" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 файл" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} файлів" @@ -265,7 +277,7 @@ msgid "From link" msgstr "З посилання" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -280,6 +292,10 @@ msgstr "Тут нічого немає. Відвантажте що-небудь msgid "Download" msgstr "Завантажити" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Заборонити доступ" + #: templates/index.php:105 msgid "Upload too large" msgstr "Файл занадто великий" @@ -300,4 +316,4 @@ msgstr "Поточне сканування" #: templates/upgrade.php:2 msgid "Upgrading filesystem cache..." -msgstr "" +msgstr "Оновлення кеша файлової системи..." diff --git a/l10n/uk/files_encryption.po b/l10n/uk/files_encryption.po index 535f306855..1ee5660980 100644 --- a/l10n/uk/files_encryption.po +++ b/l10n/uk/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Шифрування" diff --git a/l10n/uk/files_trashbin.po b/l10n/uk/files_trashbin.po index 299cd809b9..b33723c870 100644 --- a/l10n/uk/files_trashbin.po +++ b/l10n/uk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/uk/files_versions.po b/l10n/uk/files_versions.po index 1a8bb981db..a511f9ae55 100644 --- a/l10n/uk/files_versions.po +++ b/l10n/uk/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:03+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "Історія" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Версії файлів" diff --git a/l10n/uk/lib.po b/l10n/uk/lib.po index 8d1708aa24..6380af6fb3 100644 --- a/l10n/uk/lib.po +++ b/l10n/uk/lib.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-18 00:03+0100\n" -"PO-Revision-Date: 2013-01-17 13:24+0000\n" -"Last-Translator: volodya327 \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,47 +21,47 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Допомога" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Особисте" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Налаштування" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Користувачі" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Додатки" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Адмін" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP завантаження вимкнено." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Файли повинні бути завантаженні послідовно." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Повернутися до файлів" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Вибрані фали завеликі для генерування zip файлу." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "не може бути визначено" @@ -89,6 +89,103 @@ msgstr "Текст" msgid "Images" msgstr "Зображення" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "секунди тому" diff --git a/l10n/uk/settings.po b/l10n/uk/settings.po index 7d6f148c4e..e4c718c3f1 100644 --- a/l10n/uk/settings.po +++ b/l10n/uk/settings.po @@ -6,12 +6,13 @@ # , 2012. # , 2012. # , 2012-2013. +# пан Володимир , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -24,14 +25,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Не вдалося завантажити список з App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Помилка автентифікації" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Не вдалося змінити зображене ім'я" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -83,13 +84,13 @@ msgstr "Не вдалося додати користувача у групу %s msgid "Unable to remove user from group %s" msgstr "Не вдалося видалити користувача із групи %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." -msgstr "" +msgstr "Не вдалося оновити програму. " #: js/apps.js:30 msgid "Update to {appversion}" -msgstr "" +msgstr "Оновити до {appversion}" #: js/apps.js:36 js/apps.js:76 msgid "Disable" @@ -101,15 +102,15 @@ msgstr "Включити" #: js/apps.js:55 msgid "Please wait...." -msgstr "" +msgstr "Зачекайте, будь ласка..." #: js/apps.js:84 msgid "Updating...." -msgstr "" +msgstr "Оновлюється..." #: js/apps.js:87 msgid "Error while updating app" -msgstr "" +msgstr "Помилка при оновленні програми" #: js/apps.js:87 msgid "Error" @@ -117,7 +118,7 @@ msgstr "Помилка" #: js/apps.js:90 msgid "Updated" -msgstr "" +msgstr "Оновлено" #: js/personal.js:96 msgid "Saving..." @@ -180,99 +181,87 @@ msgstr "Комерційна підтримка" msgid "You have used %s of the available %s" msgstr "Ви використали %s із доступних %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "Клієнти" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "Завантажити клієнт для ПК" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "Завантажити клієнт для Android" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "Завантажити клієнт для iOS" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Пароль" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Ваш пароль змінено" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Не вдалося змінити Ваш пароль" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Поточний пароль" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Новий пароль" -#: templates/personal.php:28 -msgid "show" -msgstr "показати" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Змінити пароль" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" -msgstr "" - -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" +msgstr "Показати Ім'я" #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Ваше ім'я було змінене" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Неможливо змінити ваше зображене ім'я" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Змінити зображене ім'я" + +#: templates/personal.php:68 msgid "Email" msgstr "Ел.пошта" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Ваша адреса електронної пошти" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Введіть адресу електронної пошти для відновлення паролю" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Мова" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Допомогти з перекладом" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Використовуйте цю адресу для під'єднання до вашого ownCloud у вашому файловому менеджері" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "Версія" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the , 2012. # , 2012. +# пан Володимир , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-03 00:04+0100\n" -"PO-Revision-Date: 2013-02-02 23:05+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -21,23 +22,23 @@ msgstr "" #: ajax/deleteConfiguration.php:34 msgid "Failed to delete the server configuration" -msgstr "" +msgstr "Не вдалося видалити конфігурацію сервера" #: ajax/testConfiguration.php:35 msgid "The configuration is valid and the connection could be established!" -msgstr "" +msgstr "Конфігурація вірна і зв'язок може бути встановлений ​​!" #: ajax/testConfiguration.php:37 msgid "" "The configuration is valid, but the Bind failed. Please check the server " "settings and credentials." -msgstr "" +msgstr "Конфігурація вірна, але встановити зв'язок не вдалося. Будь ласка, перевірте налаштування сервера і облікові дані." #: ajax/testConfiguration.php:40 msgid "" "The configuration is invalid. Please look in the ownCloud log for further " "details." -msgstr "" +msgstr "Конфігурація невірна. Подробиці подивіться, будь ласка, в журналі ownCloud." #: js/settings.js:66 msgid "Deletion failed" @@ -45,31 +46,31 @@ msgstr "Видалення не було виконано" #: js/settings.js:82 msgid "Take over settings from recent server configuration?" -msgstr "" +msgstr "Застосувати налаштування з останньої конфігурації сервера ?" #: js/settings.js:83 msgid "Keep settings?" -msgstr "" +msgstr "Зберегти налаштування ?" #: js/settings.js:97 msgid "Cannot add server configuration" -msgstr "" +msgstr "Неможливо додати конфігурацію сервера" #: js/settings.js:121 msgid "Connection test succeeded" -msgstr "" +msgstr "Перевірка з'єднання пройшла успішно" #: js/settings.js:126 msgid "Connection test failed" -msgstr "" +msgstr "Перевірка з'єднання завершилась неуспішно" #: js/settings.js:136 msgid "Do you really want to delete the current Server Configuration?" -msgstr "" +msgstr "Ви дійсно бажаєте видалити поточну конфігурацію сервера ?" #: js/settings.js:137 msgid "Confirm Deletion" -msgstr "" +msgstr "Підтвердіть Видалення" #: templates/settings.php:8 msgid "" @@ -82,15 +83,15 @@ msgstr "Увага: Застосунки user_ldap та user_webdavauth msgid "" "Warning: The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." -msgstr "" +msgstr "Увага: Потрібний модуль PHP LDAP не встановлено, базова програма працювати не буде. Будь ласка, зверніться до системного адміністратора, щоб встановити його." #: templates/settings.php:15 msgid "Server configuration" -msgstr "" +msgstr "Налаштування Сервера" #: templates/settings.php:17 msgid "Add Server Configuration" -msgstr "" +msgstr "Додати налаштування Сервера" #: templates/settings.php:21 msgid "Host" @@ -107,7 +108,7 @@ msgstr "Базовий DN" #: templates/settings.php:22 msgid "One Base DN per line" -msgstr "" +msgstr "Один Base DN на одній строчці" #: templates/settings.php:22 msgid "You can specify Base DN for users and groups in the Advanced tab" @@ -178,11 +179,11 @@ msgstr "" #: templates/settings.php:33 msgid "Configuration Active" -msgstr "" +msgstr "Налаштування Активне" #: templates/settings.php:33 msgid "When unchecked, this configuration will be skipped." -msgstr "" +msgstr "Якщо \"галочка\" знята, ця конфігурація буде пропущена." #: templates/settings.php:34 msgid "Port" @@ -215,8 +216,8 @@ msgid "Use TLS" msgstr "Використовуйте TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Не використовуйте його для SSL з'єднань, це не буде виконано." +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" @@ -258,7 +259,7 @@ msgstr "Основне Дерево Користувачів" #: templates/settings.php:46 msgid "One User Base DN per line" -msgstr "" +msgstr "Один Користувач Base DN на одній строчці" #: templates/settings.php:47 msgid "User Search Attributes" @@ -282,7 +283,7 @@ msgstr "Основне Дерево Груп" #: templates/settings.php:49 msgid "One Group Base DN per line" -msgstr "" +msgstr "Одна Група Base DN на одній строчці" #: templates/settings.php:50 msgid "Group Search Attributes" diff --git a/l10n/vi/core.po b/l10n/vi/core.po index 643d941604..24cd51e054 100644 --- a/l10n/vi/core.po +++ b/l10n/vi/core.po @@ -6,15 +6,16 @@ # , 2012. # , 2012. # , 2012. +# sao sang , 2013. # Son Nguyen , 2012. # Sơn Nguyễn , 2012-2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 18:20+0000\n" +"Last-Translator: saosangm \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -55,8 +56,9 @@ msgid "No category to add?" msgstr "Không có danh mục được thêm?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "Danh mục này đã được tạo :" +#, php-format +msgid "This category already exists: %s" +msgstr "Danh mục này đã tồn tại: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -160,59 +162,59 @@ msgstr "Tháng 11" msgid "December" msgstr "Tháng 12" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "Cài đặt" -#: js/js.js:760 +#: js/js.js:766 msgid "seconds ago" msgstr "vài giây trước" -#: js/js.js:761 +#: js/js.js:767 msgid "1 minute ago" msgstr "1 phút trước" -#: js/js.js:762 +#: js/js.js:768 msgid "{minutes} minutes ago" msgstr "{minutes} phút trước" -#: js/js.js:763 +#: js/js.js:769 msgid "1 hour ago" msgstr "1 giờ trước" -#: js/js.js:764 +#: js/js.js:770 msgid "{hours} hours ago" msgstr "{hours} giờ trước" -#: js/js.js:765 +#: js/js.js:771 msgid "today" msgstr "hôm nay" -#: js/js.js:766 +#: js/js.js:772 msgid "yesterday" msgstr "hôm qua" -#: js/js.js:767 +#: js/js.js:773 msgid "{days} days ago" msgstr "{days} ngày trước" -#: js/js.js:768 +#: js/js.js:774 msgid "last month" msgstr "tháng trước" -#: js/js.js:769 +#: js/js.js:775 msgid "{months} months ago" msgstr "{months} tháng trước" -#: js/js.js:770 +#: js/js.js:776 msgid "months ago" msgstr "tháng trước" -#: js/js.js:771 +#: js/js.js:777 msgid "last year" msgstr "năm trước" -#: js/js.js:772 +#: js/js.js:778 msgid "years ago" msgstr "năm trước" @@ -242,8 +244,8 @@ msgid "The object type is not specified." msgstr "Loại đối tượng không được chỉ định." #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "Lỗi" @@ -261,9 +263,9 @@ msgstr "Chia sẻ" #: js/share.js:29 js/share.js:43 js/share.js:90 js/share.js:93 msgid "Shared" -msgstr "" +msgstr "Được chia sẻ" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "Lỗi trong quá trình chia sẻ" @@ -301,7 +303,7 @@ msgstr "Mật khẩu" #: js/share.js:189 msgid "Email link to person" -msgstr "" +msgstr "Liên kết email tới cá nhân" #: js/share.js:190 msgid "Send" @@ -359,25 +361,25 @@ msgstr "xóa" msgid "share" msgstr "chia sẻ" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "Mật khẩu bảo vệ" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "Lỗi không thiết lập ngày kết thúc" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "Lỗi cấu hình ngày kết thúc" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "Đang gởi ..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" -msgstr "" +msgstr "Email đã được gửi" #: js/update.js:14 msgid "" @@ -471,7 +473,7 @@ msgstr "Sửa thể loại" msgid "Add" msgstr "Thêm" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "Cảnh bảo bảo mật" @@ -481,71 +483,75 @@ msgid "" "OpenSSL extension." msgstr "Không an toàn ! chức năng random number generator đã có sẵn ,vui lòng bật PHP OpenSSL extension." -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "Nếu không có random number generator , Hacker có thể thiết lập lại mật khẩu và chiếm tài khoản của bạn." +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "Thư mục và file dữ liệu của bạn có thể được truy cập từ internet bởi vì file .htaccess không hoạt động" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "Thư mục dữ liệu và những tập tin của bạn có thể dễ dàng bị truy cập từ mạng. Tập tin .htaccess do ownCloud cung cấp không hoạt động. Chúng tôi đề nghị bạn nên cấu hình lại máy chủ web để thư mục dữ liệu không còn bị truy cập hoặc bạn nên di chuyển thư mục dữ liệu ra bên ngoài thư mục gốc của máy chủ." +"For information how to properly configure your server, please see the documentation." +msgstr "Để biết thêm cách cấu hình máy chủ của bạn, xin xem tài liệu." #: templates/installation.php:36 msgid "Create an admin account" msgstr "Tạo một tài khoản quản trị" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "Nâng cao" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "Thư mục dữ liệu" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "Cấu hình cơ sở dữ liệu" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "được sử dụng" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "Người dùng cơ sở dữ liệu" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "Mật khẩu cơ sở dữ liệu" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "Tên cơ sở dữ liệu" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "Cơ sở dữ liệu tablespace" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "Database host" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "Cài đặt hoàn tất" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "các dịch vụ web dưới sự kiểm soát của bạn" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "Đăng xuất" @@ -577,7 +583,7 @@ msgstr "Đăng nhập" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "Đăng nhập khác" #: templates/part.pagenavi.php:3 msgid "prev" @@ -590,4 +596,4 @@ msgstr "Kế tiếp" #: templates/update.php:3 #, php-format msgid "Updating ownCloud to version %s, this may take a while." -msgstr "" +msgstr "Cập nhật ownCloud lên phiên bản %s, có thể sẽ mất thời gian" diff --git a/l10n/vi/files.po b/l10n/vi/files.po index 609e4ff590..eeabcf3ec5 100644 --- a/l10n/vi/files.po +++ b/l10n/vi/files.po @@ -6,13 +6,14 @@ # , 2012. # , 2012. # , 2012. +# sao sang , 2013. # Sơn Nguyễn , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -21,6 +22,20 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "Không thể di chuyển %s - Đã có tên file này trên hệ thống" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "Không thể di chuyển %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "Không thể đổi tên file" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "Không có tập tin nào được tải lên. Lỗi không xác định" @@ -32,7 +47,7 @@ msgstr "Không có lỗi, các tập tin đã được tải lên thành công" #: ajax/upload.php:27 msgid "" "The uploaded file exceeds the upload_max_filesize directive in php.ini: " -msgstr "" +msgstr "The uploaded file exceeds the upload_max_filesize directive in php.ini: " #: ajax/upload.php:29 msgid "" @@ -57,72 +72,73 @@ msgid "Failed to write to disk" msgstr "Không thể ghi " #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "" +msgid "Not enough storage available" +msgstr "Không đủ không gian lưu trữ" #: ajax/upload.php:83 msgid "Invalid directory." -msgstr "" +msgstr "Thư mục không hợp lệ" #: appinfo/app.php:10 msgid "Files" msgstr "Tập tin" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "Không chia sẽ" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "Xóa vĩnh vễn" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "Xóa" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "Sửa tên" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Chờ" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} đã tồn tại" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "thay thế" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "tên gợi ý" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "hủy" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "đã thay thế {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "lùi lại" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "đã thay thế {new_name} bằng {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" -msgstr "" +msgstr "thực hiện việc xóa" #: js/files.js:52 msgid "'.' is an invalid file name." -msgstr "" +msgstr "'.' là một tên file không hợp lệ" #: js/files.js:56 msgid "File name cannot be empty." -msgstr "" +msgstr "Tên file không được rỗng" #: js/files.js:64 msgid "" @@ -132,17 +148,17 @@ msgstr "Tên không hợp lệ, '\\', '/', '<', '>', ':', '\"', '|', '?' và '*' #: js/files.js:78 msgid "Your storage is full, files can not be updated or synced anymore!" -msgstr "" +msgstr "Your storage is full, files can not be updated or synced anymore!" #: js/files.js:82 msgid "Your storage is almost full ({usedSpacePercent}%)" -msgstr "" +msgstr "Your storage is almost full ({usedSpacePercent}%)" #: js/files.js:224 msgid "" "Your download is being prepared. This might take some time if the files are " "big." -msgstr "" +msgstr "Your download is being prepared. This might take some time if the files are big." #: js/files.js:261 msgid "Unable to upload your file as it is a directory or has 0 bytes" @@ -152,64 +168,60 @@ msgstr "Không thể tải lên tập tin này do nó là một thư mục hoặ msgid "Upload Error" msgstr "Tải lên lỗi" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "Đóng" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Chờ" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 tệp tin đang được tải lên" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} tập tin đang tải lên" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "Hủy tải lên" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Tập tin tải lên đang được xử lý. Nếu bạn rời khỏi trang bây giờ sẽ hủy quá trình này." -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL không được để trống." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -msgstr "" +msgstr "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "Tên" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "Kích cỡ" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "Thay đổi" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 thư mục" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} thư mục" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 tập tin" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} tập tin" @@ -266,7 +278,7 @@ msgid "From link" msgstr "Từ liên kết" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -281,6 +293,10 @@ msgstr "Không có gì ở đây .Hãy tải lên một cái gì đó !" msgid "Download" msgstr "Tải xuống" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "Không chia sẽ" + #: templates/index.php:105 msgid "Upload too large" msgstr "Tập tin tải lên quá lớn" @@ -301,4 +317,4 @@ msgstr "Hiện tại đang quét" #: templates/upgrade.php:2 msgid "Upgrading filesystem cache..." -msgstr "" +msgstr "Upgrading filesystem cache..." diff --git a/l10n/vi/files_encryption.po b/l10n/vi/files_encryption.po index a845b05ea1..af199ade99 100644 --- a/l10n/vi/files_encryption.po +++ b/l10n/vi/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# sao sang , 2013. # Sơn Nguyễn , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -18,43 +19,21 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "Mã hóa" #: templates/settings-personal.php:7 msgid "File encryption is enabled." -msgstr "" +msgstr "Mã hóa file đã mở" #: templates/settings-personal.php:11 msgid "The following file types will not be encrypted:" -msgstr "" +msgstr "Loại file sau sẽ không được mã hóa" #: templates/settings.php:7 msgid "Exclude the following file types from encryption:" -msgstr "" +msgstr "Việc mã hóa không bao gồm loại file sau" #: templates/settings.php:12 msgid "None" diff --git a/l10n/vi/files_external.po b/l10n/vi/files_external.po index 72b1138b2b..6dbeed35de 100644 --- a/l10n/vi/files_external.po +++ b/l10n/vi/files_external.po @@ -4,14 +4,15 @@ # # Translators: # , 2012. +# sao sang , 2013. # Sơn Nguyễn , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-12-13 00:17+0100\n" -"PO-Revision-Date: 2012-12-11 23:22+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 18:40+0000\n" +"Last-Translator: saosangm \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -43,18 +44,18 @@ msgstr "Xin vui lòng cung cấp một ứng dụng Dropbox hợp lệ và mã b msgid "Error configuring Google Drive storage" msgstr "Lỗi cấu hình lưu trữ Google Drive" -#: lib/config.php:434 +#: lib/config.php:405 msgid "" "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares " "is not possible. Please ask your system administrator to install it." -msgstr "" +msgstr "Cảnh báo: \"smbclient\" chưa được cài đặt. Mount CIFS/SMB shares là không thể thực hiện được. Hãy hỏi người quản trị hệ thống để cài đặt nó." -#: lib/config.php:435 +#: lib/config.php:406 msgid "" "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." -msgstr "" +msgstr "Cảnh báo: FTP trong PHP chưa được cài đặt hoặc chưa được mở. Mount FTP shares là không thể. Xin hãy yêu cầu quản trị hệ thống của bạn cài đặt nó." #: templates/settings.php:3 msgid "External Storage" @@ -101,7 +102,7 @@ msgid "Users" msgstr "Người dùng" #: templates/settings.php:108 templates/settings.php:109 -#: templates/settings.php:149 templates/settings.php:150 +#: templates/settings.php:144 templates/settings.php:145 msgid "Delete" msgstr "Xóa" @@ -113,10 +114,10 @@ msgstr "Kích hoạt tính năng lưu trữ ngoài" msgid "Allow users to mount their own external storage" msgstr "Cho phép người dùng kết nối với lưu trữ riêng bên ngoài của họ" -#: templates/settings.php:139 +#: templates/settings.php:136 msgid "SSL root certificates" msgstr "Chứng chỉ SSL root" -#: templates/settings.php:158 +#: templates/settings.php:153 msgid "Import Root Certificate" msgstr "Nhập Root Certificate" diff --git a/l10n/vi/files_trashbin.po b/l10n/vi/files_trashbin.po index 4882b64008..9293b13b7d 100644 --- a/l10n/vi/files_trashbin.po +++ b/l10n/vi/files_trashbin.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# sao sang , 2013. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 19:10+0000\n" +"Last-Translator: saosangm \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,13 +18,23 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "Không thể óa %s vĩnh viễn" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "Không thể khôi phục %s" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" -msgstr "" +msgstr "thực hiện phục hồi" #: js/trash.js:33 msgid "delete file permanently" -msgstr "" +msgstr "xóa file vĩnh viễn" #: js/trash.js:125 templates/index.php:17 msgid "Name" @@ -31,7 +42,7 @@ msgstr "Tên" #: js/trash.js:126 templates/index.php:27 msgid "Deleted" -msgstr "" +msgstr "Đã xóa" #: js/trash.js:135 msgid "1 folder" @@ -51,8 +62,8 @@ msgstr "{count} tập tin" #: templates/index.php:9 msgid "Nothing in here. Your trash bin is empty!" -msgstr "" +msgstr "Không có gì ở đây. Thùng rác của bạn rỗng!" #: templates/index.php:20 templates/index.php:22 msgid "Restore" -msgstr "" +msgstr "Khôi phục" diff --git a/l10n/vi/files_versions.po b/l10n/vi/files_versions.po index 4de9dbf846..86b6d7a998 100644 --- a/l10n/vi/files_versions.po +++ b/l10n/vi/files_versions.po @@ -4,14 +4,15 @@ # # Translators: # , 2012. +# sao sang , 2013. # Sơn Nguyễn , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 18:30+0000\n" +"Last-Translator: saosangm \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +20,45 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "Không thể khôi phục: %s" + +#: history.php:40 +msgid "success" +msgstr "thành công" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "File %s đã được khôi phục về phiên bản %s" + +#: history.php:49 +msgid "failure" +msgstr "Thất bại" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "File %s không thể khôi phục về phiên bản %s" + +#: history.php:68 +msgid "No old versions available" +msgstr "Không có phiên bản cũ nào" + +#: history.php:73 +msgid "No path specified" +msgstr "Không chỉ ra đường dẫn rõ ràng" + #: js/versions.js:16 msgid "History" msgstr "Lịch sử" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "Khôi phục một file về phiên bản trước đó bằng cách click vào nút Khôi phục tương ứng" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "Phiên bản tập tin" diff --git a/l10n/vi/lib.po b/l10n/vi/lib.po index d838960fd9..c8185ef509 100644 --- a/l10n/vi/lib.po +++ b/l10n/vi/lib.po @@ -5,13 +5,14 @@ # Translators: # , 2012. # , 2012. +# sao sang , 2013. # Sơn Nguyễn , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -20,49 +21,49 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "Giúp đỡ" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "Cá nhân" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "Cài đặt" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "Người dùng" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "Ứng dụng" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "Quản trị" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "Tải về ZIP đã bị tắt." -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "Tập tin cần phải được tải về từng người một." -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "Trở lại tập tin" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "Tập tin được chọn quá lớn để tạo tập tin ZIP." -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" -msgstr "" +msgstr "không thể phát hiện được" #: json.php:28 msgid "Application is not enabled" @@ -88,6 +89,103 @@ msgstr "Văn bản" msgid "Images" msgstr "Hình ảnh" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "1 giây trước" diff --git a/l10n/vi/settings.po b/l10n/vi/settings.po index a8cdfa2fbb..b1776dc292 100644 --- a/l10n/vi/settings.po +++ b/l10n/vi/settings.po @@ -6,6 +6,7 @@ # , 2012. # , 2012. # , 2012. +# sao sang , 2013. # Son Nguyen , 2012. # Sơn Nguyễn , 2012. # , 2012. @@ -13,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -27,14 +28,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "Không thể tải danh sách ứng dụng từ App Store" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "Lỗi xác thực" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "Không thể thay đổi tên hiển thị" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -86,13 +87,13 @@ msgstr "Không thể thêm người dùng vào nhóm %s" msgid "Unable to remove user from group %s" msgstr "Không thể xóa người dùng từ nhóm %s" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." -msgstr "" +msgstr "Không thể cập nhật ứng dụng" #: js/apps.js:30 msgid "Update to {appversion}" -msgstr "" +msgstr "Cập nhật lên {appversion}" #: js/apps.js:36 js/apps.js:76 msgid "Disable" @@ -104,15 +105,15 @@ msgstr "Bật" #: js/apps.js:55 msgid "Please wait...." -msgstr "" +msgstr "Xin hãy đợi..." #: js/apps.js:84 msgid "Updating...." -msgstr "" +msgstr "Đang cập nhật..." #: js/apps.js:87 msgid "Error while updating app" -msgstr "" +msgstr "Lỗi khi cập nhật ứng dụng" #: js/apps.js:87 msgid "Error" @@ -120,7 +121,7 @@ msgstr "Lỗi" #: js/apps.js:90 msgid "Updated" -msgstr "" +msgstr "Đã cập nhật" #: js/personal.js:96 msgid "Saving..." @@ -156,126 +157,114 @@ msgstr "Cập nhật" #: templates/help.php:3 msgid "User Documentation" -msgstr "" +msgstr "Tài liệu người sử dụng" #: templates/help.php:4 msgid "Administrator Documentation" -msgstr "" +msgstr "Tài liệu quản trị" #: templates/help.php:6 msgid "Online Documentation" -msgstr "" +msgstr "Tài liệu trực tuyến" #: templates/help.php:7 msgid "Forum" -msgstr "" +msgstr "Diễn đàn" #: templates/help.php:9 msgid "Bugtracker" -msgstr "" +msgstr "Hệ ghi nhận lỗi" #: templates/help.php:11 msgid "Commercial Support" -msgstr "" +msgstr "Hỗ trợ có phí" #: templates/personal.php:8 #, php-format msgid "You have used %s of the available %s" msgstr "Bạn đã sử dụng %s có sẵn %s " -#: templates/personal.php:12 -msgid "Clients" -msgstr "Khách hàng" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "Hiện lại việc chạy đồ thuật khởi đầu" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "Mật khẩu" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "Mật khẩu của bạn đã được thay đổi." -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "Không thể đổi mật khẩu" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "Mật khẩu cũ" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "Mật khẩu mới " -#: templates/personal.php:28 -msgid "show" -msgstr "Hiện" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "Đổi mật khẩu" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" -msgstr "" - -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" +msgstr "Tên hiển thị" #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "Tên hiển thị của bạn đã được thay đổi" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "Không thể thay đổi tên hiển thị của bạn" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "Thay đổi tên hiển thị" + +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "Email của bạn" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "Nhập địa chỉ email của bạn để khôi phục lại mật khẩu" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "Ngôn ngữ" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "Hỗ trợ dịch thuật" -#: templates/personal.php:74 -msgid "WebDAV" -msgstr "" - -#: templates/personal.php:76 -msgid "Use this address to connect to your ownCloud in your file manager" -msgstr "" - -#: templates/personal.php:85 -msgid "Version" -msgstr "" - #: templates/personal.php:87 +msgid "WebDAV" +msgstr "WebDAV" + +#: templates/personal.php:89 +msgid "Use this address to connect to your ownCloud in your file manager" +msgstr "Sử dụng địa chỉ này để kết nối ownCloud của bạn trong trình quản lý file của bạn" + +#: templates/personal.php:98 +msgid "Version" +msgstr "Phiên bản" + +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the , 2012. +# sao sang , 2013. # Sơn Nguyễn , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-03 00:04+0100\n" -"PO-Revision-Date: 2013-02-02 23:05+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 19:00+0000\n" +"Last-Translator: saosangm \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -174,7 +175,7 @@ msgstr "mà không giữ chỗ nào, ví dụ như \"objectClass = osixGroup\"." #: templates/settings.php:31 msgid "Connection Settings" -msgstr "" +msgstr "Connection Settings" #: templates/settings.php:33 msgid "Configuration Active" @@ -200,23 +201,23 @@ msgstr "" #: templates/settings.php:36 msgid "Backup (Replica) Port" -msgstr "" +msgstr "Cổng sao lưu (Replica)" #: templates/settings.php:37 msgid "Disable Main Server" -msgstr "" +msgstr "Tắt máy chủ chính" #: templates/settings.php:37 msgid "When switched on, ownCloud will only connect to the replica server." -msgstr "" +msgstr "When switched on, ownCloud will only connect to the replica server." #: templates/settings.php:38 msgid "Use TLS" msgstr "Sử dụng TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "Kết nối SSL bị lỗi. " +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "Do not use it additionally for LDAPS connections, it will fail." #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" @@ -242,7 +243,7 @@ msgstr "trong vài giây. Một sự thay đổi bộ nhớ cache." #: templates/settings.php:43 msgid "Directory Settings" -msgstr "" +msgstr "Directory Settings" #: templates/settings.php:45 msgid "User Display Name Field" @@ -262,11 +263,11 @@ msgstr "" #: templates/settings.php:47 msgid "User Search Attributes" -msgstr "" +msgstr "User Search Attributes" #: templates/settings.php:47 templates/settings.php:50 msgid "Optional; one attribute per line" -msgstr "" +msgstr "Optional; one attribute per line" #: templates/settings.php:48 msgid "Group Display Name Field" @@ -286,7 +287,7 @@ msgstr "" #: templates/settings.php:50 msgid "Group Search Attributes" -msgstr "" +msgstr "Group Search Attributes" #: templates/settings.php:51 msgid "Group-Member association" @@ -294,7 +295,7 @@ msgstr "Nhóm thành viên Cộng đồng" #: templates/settings.php:53 msgid "Special Attributes" -msgstr "" +msgstr "Special Attributes" #: templates/settings.php:56 msgid "in bytes" diff --git a/l10n/vi/user_webdavauth.po b/l10n/vi/user_webdavauth.po index 5442bdaff4..57c796e00d 100644 --- a/l10n/vi/user_webdavauth.po +++ b/l10n/vi/user_webdavauth.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# sao sang , 2013. # Sơn Nguyễn , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 18:30+0000\n" +"Last-Translator: saosangm \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,15 +21,15 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "" +msgstr "Xác thực WebDAV" #: templates/settings.php:4 msgid "URL: http://" -msgstr "" +msgstr "URL: http://" -#: templates/settings.php:6 +#: templates/settings.php:7 msgid "" "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." -msgstr "" +msgstr "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/l10n/zh_CN.GB2312/core.po b/l10n/zh_CN.GB2312/core.po index 4a6e721e77..1d9bf29559 100644 --- a/l10n/zh_CN.GB2312/core.po +++ b/l10n/zh_CN.GB2312/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -52,8 +52,9 @@ msgid "No category to add?" msgstr "没有分类添加了?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "这个分类已经存在了:" +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -157,59 +158,59 @@ msgstr "十一月" msgid "December" msgstr "十二月" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "设置" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "秒前" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "1 分钟前" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} 分钟前" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "今天" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "昨天" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} 天前" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "上个月" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "月前" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "去年" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "年前" @@ -468,7 +469,7 @@ msgstr "编辑分类" msgid "Add" msgstr "添加" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "安全警告" @@ -478,71 +479,75 @@ msgid "" "OpenSSL extension." msgstr "没有安全随机码生成器,请启用 PHP OpenSSL 扩展。" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "没有安全随机码生成器,黑客可以预测密码重置令牌并接管你的账户。" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "您的数据文件夹和您的文件或许能够从互联网访问。ownCloud 提供的 .htaccesss 文件未其作用。我们强烈建议您配置网络服务器以使数据文件夹不能从互联网访问,或将移动数据文件夹移出网络服务器文档根目录。" +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "建立一个 管理帐户" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "进阶" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "数据存放文件夹" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "配置数据库" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "将会使用" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "数据库用户" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "数据库密码" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "数据库用户名" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "数据库表格空间" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "数据库主机" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "完成安装" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "你控制下的网络服务" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "注销" diff --git a/l10n/zh_CN.GB2312/files.po b/l10n/zh_CN.GB2312/files.po index 31b335db11..009c2cf362 100644 --- a/l10n/zh_CN.GB2312/files.po +++ b/l10n/zh_CN.GB2312/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -19,6 +19,20 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "没有上传文件。未知错误" @@ -55,7 +69,7 @@ msgid "Failed to write to disk" msgstr "写磁盘失败" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -66,51 +80,52 @@ msgstr "" msgid "Files" msgstr "文件" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "取消共享" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "删除" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "重命名" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "Pending" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} 已存在" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "替换" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "推荐名称" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "取消" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "已替换 {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "撤销" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "已用 {old_name} 替换 {new_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -150,64 +165,60 @@ msgstr "不能上传你指定的文件,可能因为它是个文件夹或者大 msgid "Upload Error" msgstr "上传错误" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "关闭" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "Pending" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 个文件正在上传" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} 个文件正在上传" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "上传取消了" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "文件正在上传。关闭页面会取消上传。" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "网址不能为空。" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "名字" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "大小" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "修改日期" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1 个文件夹" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} 个文件夹" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 个文件" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} 个文件" @@ -264,7 +275,7 @@ msgid "From link" msgstr "来自链接" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -279,6 +290,10 @@ msgstr "这里没有东西.上传点什么!" msgid "Download" msgstr "下载" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "取消共享" + #: templates/index.php:105 msgid "Upload too large" msgstr "上传的文件太大了" diff --git a/l10n/zh_CN.GB2312/files_encryption.po b/l10n/zh_CN.GB2312/files_encryption.po index bacd5c9294..262bed13b5 100644 --- a/l10n/zh_CN.GB2312/files_encryption.po +++ b/l10n/zh_CN.GB2312/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "加密" diff --git a/l10n/zh_CN.GB2312/files_trashbin.po b/l10n/zh_CN.GB2312/files_trashbin.po index 9add0d0faa..cc9c96f2f0 100644 --- a/l10n/zh_CN.GB2312/files_trashbin.po +++ b/l10n/zh_CN.GB2312/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/zh_CN.GB2312/files_versions.po b/l10n/zh_CN.GB2312/files_versions.po index 7676ba278c..97402cab1a 100644 --- a/l10n/zh_CN.GB2312/files_versions.po +++ b/l10n/zh_CN.GB2312/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "历史" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "文件版本" diff --git a/l10n/zh_CN.GB2312/lib.po b/l10n/zh_CN.GB2312/lib.po index d03b24aa3a..79d527ff6d 100644 --- a/l10n/zh_CN.GB2312/lib.po +++ b/l10n/zh_CN.GB2312/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "帮助" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "私人" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "设置" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "用户" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "程序" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "管理员" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP 下载已关闭" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "需要逐个下载文件。" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "返回到文件" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "选择的文件太大而不能生成 zip 文件。" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -86,6 +86,103 @@ msgstr "文本" msgid "Images" msgstr "图片" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "秒前" diff --git a/l10n/zh_CN.GB2312/settings.po b/l10n/zh_CN.GB2312/settings.po index 3335b00012..f58a1429cc 100644 --- a/l10n/zh_CN.GB2312/settings.po +++ b/l10n/zh_CN.GB2312/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -23,12 +23,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "不能从App Store 中加载列表" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "认证错误" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -82,7 +82,7 @@ msgstr "未能添加用户到群组 %s" msgid "Unable to remove user from group %s" msgstr "未能将用户从群组 %s 移除" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -179,99 +179,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "客户" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "密码" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "您的密码以变更" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "不能改变你的密码" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "现在的密码" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "新密码" -#: templates/personal.php:28 -msgid "show" -msgstr "展示" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "改变密码" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "Email" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "你的email地址" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "输入一个邮箱地址以激活密码恢复功能" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "语言" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "帮助翻译" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -214,8 +214,8 @@ msgid "Use TLS" msgstr "使用 TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "不要使用它进行 SSL 连接,会失败的。" +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 6070c36097..be5884a277 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/core.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -56,8 +56,9 @@ msgid "No category to add?" msgstr "没有可添加分类?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "此分类已存在: " +#, php-format +msgid "This category already exists: %s" +msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -161,59 +162,59 @@ msgstr "十一月" msgid "December" msgstr "十二月" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "设置" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "秒前" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "一分钟前" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "{minutes} 分钟前" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "1小时前" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "{hours} 小时前" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "今天" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "昨天" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "{days} 天前" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "上月" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "{months} 月前" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "月前" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "去年" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "年前" @@ -472,7 +473,7 @@ msgstr "编辑分类" msgid "Add" msgstr "添加" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "安全警告" @@ -482,71 +483,75 @@ msgid "" "OpenSSL extension." msgstr "随机数生成器无效,请启用PHP的OpenSSL扩展" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "没有安全随机码生成器,攻击者可能会猜测密码重置信息从而窃取您的账户" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "您的数据文件夹和文件可由互联网访问。OwnCloud提供的.htaccess文件未生效。我们强烈建议您配置服务器,以使数据文件夹不可被访问,或者将数据文件夹移到web服务器根目录以外。" +"For information how to properly configure your server, please see the documentation." +msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "创建管理员账号" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "高级" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "数据目录" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "配置数据库" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "将被使用" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "数据库用户" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "数据库密码" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "数据库名" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "数据库表空间" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "数据库主机" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "安装完成" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "由您掌控的网络服务" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "注销" diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index 1f00755a80..adec54ddf3 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/files.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -24,6 +24,20 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "无法移动 %s - 同名文件已存在" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "无法移动 %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "无法重命名文件" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "没有文件被上传。未知错误" @@ -60,8 +74,8 @@ msgid "Failed to write to disk" msgstr "写入磁盘失败" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "没有足够可用空间" +msgid "Not enough storage available" +msgstr "" #: ajax/upload.php:83 msgid "Invalid directory." @@ -71,51 +85,52 @@ msgstr "无效文件夹。" msgid "Files" msgstr "文件" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "取消分享" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "删除" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "重命名" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "操作等待中" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} 已存在" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "替换" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "建议名称" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "取消" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "替换 {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "撤销" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "已将 {old_name}替换成 {new_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -155,64 +170,60 @@ msgstr "无法上传文件,因为它是一个目录或者大小为 0 字节" msgid "Upload Error" msgstr "上传错误" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "关闭" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "操作等待中" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1个文件上传中" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} 个文件上传中" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "上传已取消" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "文件正在上传中。现在离开此页会导致上传动作被取消。" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL不能为空" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "无效文件夹名。'共享' 是 Owncloud 预留的文件夹名。" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "名称" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "大小" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "修改日期" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "1个文件夹" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "{count} 个文件夹" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "1 个文件" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "{count} 个文件" @@ -269,7 +280,7 @@ msgid "From link" msgstr "来自链接" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -284,6 +295,10 @@ msgstr "这里还什么都没有。上传些东西吧!" msgid "Download" msgstr "下载" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "取消分享" + #: templates/index.php:105 msgid "Upload too large" msgstr "上传文件过大" diff --git a/l10n/zh_CN/files_encryption.po b/l10n/zh_CN/files_encryption.po index f7e50a5ccc..b9d48e1dce 100644 --- a/l10n/zh_CN/files_encryption.po +++ b/l10n/zh_CN/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -18,28 +18,6 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "加密" diff --git a/l10n/zh_CN/files_trashbin.po b/l10n/zh_CN/files_trashbin.po index 151921754f..2d95abe67e 100644 --- a/l10n/zh_CN/files_trashbin.po +++ b/l10n/zh_CN/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/zh_CN/files_versions.po b/l10n/zh_CN/files_versions.po index 8427a53caa..fef8172901 100644 --- a/l10n/zh_CN/files_versions.po +++ b/l10n/zh_CN/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "历史" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "文件版本" diff --git a/l10n/zh_CN/lib.po b/l10n/zh_CN/lib.po index 7dd9eb3837..a1f1c46842 100644 --- a/l10n/zh_CN/lib.po +++ b/l10n/zh_CN/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "帮助" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "个人" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "设置" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "用户" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "应用" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "管理" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP 下载已经关闭" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "需要逐一下载文件" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "回到文件" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "选择的文件太大,无法生成 zip 文件。" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -87,6 +87,103 @@ msgstr "文本" msgid "Images" msgstr "图像" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "几秒前" diff --git a/l10n/zh_CN/settings.po b/l10n/zh_CN/settings.po index 51c13db879..8c5e0d1de9 100644 --- a/l10n/zh_CN/settings.po +++ b/l10n/zh_CN/settings.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:39+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -27,12 +27,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "无法从应用商店载入列表" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "认证错误" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -86,7 +86,7 @@ msgstr "无法把用户添加到组 %s" msgid "Unable to remove user from group %s" msgstr "无法从组%s中移除用户" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -183,99 +183,87 @@ msgstr "商业支持" msgid "You have used %s of the available %s" msgstr "你已使用 %s,有效空间 %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "客户" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "下载桌面客户端" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "下载 Android 客户端" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "下载 iOS 客户端" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "密码" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "密码已修改" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "无法修改密码" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "当前密码" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "新密码" -#: templates/personal.php:28 -msgid "show" -msgstr "显示" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "修改密码" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "电子邮件" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "您的电子邮件" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "填写电子邮件地址以启用密码恢复功能" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "语言" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "帮助翻译" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "用该地址来连接文件管理器中的 ownCloud" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "版本" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -215,8 +215,8 @@ msgid "Use TLS" msgstr "使用TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." -msgstr "不要在SSL链接中使用此选项,会导致失败。" +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" #: templates/settings.php:39 msgid "Case insensitve LDAP server (Windows)" diff --git a/l10n/zh_HK/core.po b/l10n/zh_HK/core.po index a61b851c75..65b41b0aee 100644 --- a/l10n/zh_HK/core.po +++ b/l10n/zh_HK/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-09 00:12+0100\n" +"PO-Revision-Date: 2013-02-08 23:12+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -51,7 +51,8 @@ msgid "No category to add?" msgstr "" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " +#, php-format +msgid "This category already exists: %s" msgstr "" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 @@ -156,59 +157,59 @@ msgstr "" msgid "December" msgstr "" -#: js/js.js:280 +#: js/js.js:284 msgid "Settings" msgstr "" -#: js/js.js:760 +#: js/js.js:764 msgid "seconds ago" msgstr "" -#: js/js.js:761 +#: js/js.js:765 msgid "1 minute ago" msgstr "" -#: js/js.js:762 +#: js/js.js:766 msgid "{minutes} minutes ago" msgstr "" -#: js/js.js:763 +#: js/js.js:767 msgid "1 hour ago" msgstr "" -#: js/js.js:764 +#: js/js.js:768 msgid "{hours} hours ago" msgstr "" -#: js/js.js:765 +#: js/js.js:769 msgid "today" msgstr "" -#: js/js.js:766 +#: js/js.js:770 msgid "yesterday" msgstr "" -#: js/js.js:767 +#: js/js.js:771 msgid "{days} days ago" msgstr "" -#: js/js.js:768 +#: js/js.js:772 msgid "last month" msgstr "" -#: js/js.js:769 +#: js/js.js:773 msgid "{months} months ago" msgstr "" -#: js/js.js:770 +#: js/js.js:774 msgid "months ago" msgstr "" -#: js/js.js:771 +#: js/js.js:775 msgid "last year" msgstr "" -#: js/js.js:772 +#: js/js.js:776 msgid "years ago" msgstr "" @@ -467,7 +468,7 @@ msgstr "" msgid "Add" msgstr "" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "" @@ -477,71 +478,75 @@ msgid "" "OpenSSL extension." msgstr "" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." +"For information how to properly configure your server, please see the documentation." msgstr "" #: templates/installation.php:36 msgid "Create an admin account" msgstr "" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "" diff --git a/l10n/zh_HK/files.po b/l10n/zh_HK/files.po index 3679a52e34..215528e327 100644 --- a/l10n/zh_HK/files.po +++ b/l10n/zh_HK/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:08+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,20 @@ msgstr "" "Language: zh_HK\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "" @@ -53,7 +67,7 @@ msgid "Failed to write to disk" msgstr "" #: ajax/upload.php:52 -msgid "Not enough space available" +msgid "Not enough storage available" msgstr "" #: ajax/upload.php:83 @@ -64,51 +78,52 @@ msgstr "" msgid "Files" msgstr "" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "" -#: js/filelist.js:208 js/filelist.js:210 -msgid "{new_name} already exists" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "replace" -msgstr "" - -#: js/filelist.js:208 -msgid "suggest name" -msgstr "" - -#: js/filelist.js:208 js/filelist.js:210 -msgid "cancel" -msgstr "" - -#: js/filelist.js:253 -msgid "replaced {new_name}" +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" msgstr "" #: js/filelist.js:253 js/filelist.js:255 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "replace" +msgstr "" + +#: js/filelist.js:253 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:253 js/filelist.js:255 +msgid "cancel" +msgstr "" + +#: js/filelist.js:295 +msgid "replaced {new_name}" +msgstr "" + +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "" @@ -148,64 +163,60 @@ msgstr "" msgid "Upload Error" msgstr "" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "" -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:947 templates/index.php:67 msgid "Name" msgstr "" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:948 templates/index.php:78 msgid "Size" msgstr "" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:949 templates/index.php:80 msgid "Modified" msgstr "" -#: js/files.js:974 +#: js/files.js:968 msgid "1 folder" msgstr "" -#: js/files.js:976 +#: js/files.js:970 msgid "{count} folders" msgstr "" -#: js/files.js:984 +#: js/files.js:978 msgid "1 file" msgstr "" -#: js/files.js:986 +#: js/files.js:980 msgid "{count} files" msgstr "" @@ -262,7 +273,7 @@ msgid "From link" msgstr "" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "" #: templates/index.php:46 @@ -277,6 +288,10 @@ msgstr "" msgid "Download" msgstr "" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "" + #: templates/index.php:105 msgid "Upload too large" msgstr "" diff --git a/l10n/zh_HK/files_encryption.po b/l10n/zh_HK/files_encryption.po index c8652a2cde..b213e0bbd8 100644 --- a/l10n/zh_HK/files_encryption.po +++ b/l10n/zh_HK/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -17,28 +17,6 @@ msgstr "" "Language: zh_HK\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "" diff --git a/l10n/zh_HK/files_trashbin.po b/l10n/zh_HK/files_trashbin.po index 61f53da0ef..4d46282475 100644 --- a/l10n/zh_HK/files_trashbin.po +++ b/l10n/zh_HK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: zh_HK\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/zh_HK/files_versions.po b/l10n/zh_HK/files_versions.po index 4859a33c5a..0b4229496a 100644 --- a/l10n/zh_HK/files_versions.po +++ b/l10n/zh_HK/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -17,10 +17,45 @@ msgstr "" "Language: zh_HK\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "" diff --git a/l10n/zh_HK/lib.po b/l10n/zh_HK/lib.po index f3bc0dc6e1..9962c21630 100644 --- a/l10n/zh_HK/lib.po +++ b/l10n/zh_HK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-17 00:26+0100\n" -"PO-Revision-Date: 2013-01-16 23:26+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:41+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -17,47 +17,47 @@ msgstr "" "Language: zh_HK\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "" -#: helper.php:228 +#: helper.php:226 msgid "couldn't be determined" msgstr "" @@ -85,6 +85,103 @@ msgstr "" msgid "Images" msgstr "" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + #: template.php:113 msgid "seconds ago" msgstr "" diff --git a/l10n/zh_HK/settings.po b/l10n/zh_HK/settings.po index e9501109c5..9dc37b8910 100644 --- a/l10n/zh_HK/settings.po +++ b/l10n/zh_HK/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -21,12 +21,12 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" msgstr "" @@ -80,7 +80,7 @@ msgstr "" msgid "Unable to remove user from group %s" msgstr "" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "" @@ -177,99 +177,87 @@ msgstr "" msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Clients" -msgstr "" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "" - -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "" - -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 -msgid "Password" -msgstr "" - -#: templates/personal.php:24 -msgid "Your password was changed" +msgid "Get the apps to sync your files" msgstr "" #: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 +msgid "Password" +msgstr "" + +#: templates/personal.php:37 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "" -#: templates/personal.php:28 -msgid "show" -msgstr "" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "" -#: templates/personal.php:42 +#: templates/personal.php:55 msgid "Your display name was changed" msgstr "" -#: templates/personal.php:43 +#: templates/personal.php:56 msgid "Unable to change your display name" msgstr "" -#: templates/personal.php:46 +#: templates/personal.php:59 msgid "Change display name" msgstr "" -#: templates/personal.php:55 +#: templates/personal.php:68 msgid "Email" msgstr "" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -213,7 +213,7 @@ msgid "Use TLS" msgstr "" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/l10n/zh_TW/core.po b/l10n/zh_TW/core.po index 5886158a82..183982cbe9 100644 --- a/l10n/zh_TW/core.po +++ b/l10n/zh_TW/core.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 06:20+0000\n" +"Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -55,8 +55,9 @@ msgid "No category to add?" msgstr "沒有可增加的分類?" #: ajax/vcategories/add.php:37 -msgid "This category already exists: " -msgstr "此分類已經存在:" +#, php-format +msgid "This category already exists: %s" +msgstr "分類已經存在: %s" #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/favorites.php:24 @@ -160,59 +161,59 @@ msgstr "十一月" msgid "December" msgstr "十二月" -#: js/js.js:280 +#: js/js.js:286 msgid "Settings" msgstr "設定" -#: js/js.js:760 +#: js/js.js:767 msgid "seconds ago" msgstr "幾秒前" -#: js/js.js:761 +#: js/js.js:768 msgid "1 minute ago" msgstr "1 分鐘前" -#: js/js.js:762 +#: js/js.js:769 msgid "{minutes} minutes ago" msgstr "{minutes} 分鐘前" -#: js/js.js:763 +#: js/js.js:770 msgid "1 hour ago" msgstr "1 個小時前" -#: js/js.js:764 +#: js/js.js:771 msgid "{hours} hours ago" msgstr "{hours} 小時前" -#: js/js.js:765 +#: js/js.js:772 msgid "today" msgstr "今天" -#: js/js.js:766 +#: js/js.js:773 msgid "yesterday" msgstr "昨天" -#: js/js.js:767 +#: js/js.js:774 msgid "{days} days ago" msgstr "{days} 天前" -#: js/js.js:768 +#: js/js.js:775 msgid "last month" msgstr "上個月" -#: js/js.js:769 +#: js/js.js:776 msgid "{months} months ago" msgstr "{months} 個月前" -#: js/js.js:770 +#: js/js.js:777 msgid "months ago" msgstr "幾個月前" -#: js/js.js:771 +#: js/js.js:778 msgid "last year" msgstr "去年" -#: js/js.js:772 +#: js/js.js:779 msgid "years ago" msgstr "幾年前" @@ -242,8 +243,8 @@ msgid "The object type is not specified." msgstr "未指定物件類型。" #: js/oc-vcategories.js:95 js/oc-vcategories.js:125 js/oc-vcategories.js:136 -#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:571 -#: js/share.js:583 +#: js/oc-vcategories.js:195 js/share.js:152 js/share.js:159 js/share.js:582 +#: js/share.js:594 msgid "Error" msgstr "錯誤" @@ -263,7 +264,7 @@ msgstr "分享" msgid "Shared" msgstr "已分享" -#: js/share.js:141 js/share.js:611 +#: js/share.js:141 js/share.js:622 msgid "Error while sharing" msgstr "分享時發生錯誤" @@ -359,23 +360,23 @@ msgstr "刪除" msgid "share" msgstr "分享" -#: js/share.js:373 js/share.js:558 +#: js/share.js:373 js/share.js:569 msgid "Password protected" msgstr "受密碼保護" -#: js/share.js:571 +#: js/share.js:582 msgid "Error unsetting expiration date" msgstr "解除過期日設定失敗" -#: js/share.js:583 +#: js/share.js:594 msgid "Error setting expiration date" msgstr "錯誤的到期日設定" -#: js/share.js:598 +#: js/share.js:609 msgid "Sending ..." msgstr "正在寄出..." -#: js/share.js:609 +#: js/share.js:620 msgid "Email sent" msgstr "Email 已寄出" @@ -471,7 +472,7 @@ msgstr "編輯分類" msgid "Add" msgstr "增加" -#: templates/installation.php:23 templates/installation.php:31 +#: templates/installation.php:23 templates/installation.php:30 msgid "Security Warning" msgstr "安全性警告" @@ -481,71 +482,75 @@ msgid "" "OpenSSL extension." msgstr "沒有可用的亂數產生器,請啟用 PHP 中的 OpenSSL 擴充功能。" -#: templates/installation.php:26 +#: templates/installation.php:25 msgid "" "Without a secure random number generator an attacker may be able to predict " "password reset tokens and take over your account." msgstr "若沒有安全的亂數產生器,攻擊者可能可以預測密碼重設信物,然後控制您的帳戶。" +#: templates/installation.php:31 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "您的資料目錄看起來可以被 Internet 公開存取,因為 .htaccess 設定並未生效。" + #: templates/installation.php:32 msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file that ownCloud provides is not working. We " -"strongly suggest that you configure your webserver in a way that the data " -"directory is no longer accessible or you move the data directory outside the" -" webserver document root." -msgstr "您的資料目錄 (Data Directory) 和檔案可能可以由網際網路上面公開存取。Owncloud 所提供的 .htaccess 設定檔並未生效,我們強烈建議您設定您的網頁伺服器以防止資料目錄被公開存取,或將您的資料目錄移出網頁伺服器的 document root 。" +"For information how to properly configure your server, please see the documentation." +msgstr "請參考說明文件以瞭解如何正確設定您的伺服器。" #: templates/installation.php:36 msgid "Create an admin account" msgstr "建立一個管理者帳號" -#: templates/installation.php:50 +#: templates/installation.php:52 msgid "Advanced" msgstr "進階" -#: templates/installation.php:52 +#: templates/installation.php:54 msgid "Data folder" msgstr "資料夾" -#: templates/installation.php:59 +#: templates/installation.php:61 msgid "Configure the database" msgstr "設定資料庫" -#: templates/installation.php:64 templates/installation.php:75 -#: templates/installation.php:85 templates/installation.php:95 +#: templates/installation.php:66 templates/installation.php:77 +#: templates/installation.php:87 templates/installation.php:97 msgid "will be used" msgstr "將會使用" -#: templates/installation.php:107 +#: templates/installation.php:109 msgid "Database user" msgstr "資料庫使用者" -#: templates/installation.php:111 +#: templates/installation.php:113 msgid "Database password" msgstr "資料庫密碼" -#: templates/installation.php:115 +#: templates/installation.php:117 msgid "Database name" msgstr "資料庫名稱" -#: templates/installation.php:123 +#: templates/installation.php:125 msgid "Database tablespace" msgstr "資料庫 tablespace" -#: templates/installation.php:129 +#: templates/installation.php:131 msgid "Database host" msgstr "資料庫主機" -#: templates/installation.php:134 +#: templates/installation.php:136 msgid "Finish setup" msgstr "完成設定" -#: templates/layout.guest.php:34 +#: templates/layout.guest.php:33 msgid "web services under your control" msgstr "網路服務在您控制之下" -#: templates/layout.user.php:49 +#: templates/layout.user.php:48 msgid "Log out" msgstr "登出" @@ -577,7 +582,7 @@ msgstr "登入" #: templates/login.php:49 msgid "Alternative Logins" -msgstr "" +msgstr "替代登入方法" #: templates/part.pagenavi.php:3 msgid "prev" diff --git a/l10n/zh_TW/files.po b/l10n/zh_TW/files.po index 0db332c721..0ff4e1b4dd 100644 --- a/l10n/zh_TW/files.po +++ b/l10n/zh_TW/files.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-02-11 00:03+0100\n" +"PO-Revision-Date: 2013-02-10 06:20+0000\n" +"Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,6 +23,20 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "無法移動 %s - 同名的檔案已經存在" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "無法移動 %s" + +#: ajax/rename.php:22 ajax/rename.php:25 +msgid "Unable to rename file" +msgstr "無法重新命名檔案" + #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" msgstr "沒有檔案被上傳。未知的錯誤。" @@ -59,8 +73,8 @@ msgid "Failed to write to disk" msgstr "寫入硬碟失敗" #: ajax/upload.php:52 -msgid "Not enough space available" -msgstr "沒有足夠的可用空間" +msgid "Not enough storage available" +msgstr "儲存空間不足" #: ajax/upload.php:83 msgid "Invalid directory." @@ -70,51 +84,52 @@ msgstr "無效的資料夾。" msgid "Files" msgstr "檔案" -#: js/fileactions.js:117 templates/index.php:85 templates/index.php:86 -msgid "Unshare" -msgstr "取消共享" - -#: js/fileactions.js:119 +#: js/fileactions.js:116 msgid "Delete permanently" -msgstr "" +msgstr "永久刪除" -#: js/fileactions.js:121 templates/index.php:91 templates/index.php:92 +#: js/fileactions.js:118 templates/index.php:91 templates/index.php:92 msgid "Delete" msgstr "刪除" -#: js/fileactions.js:187 +#: js/fileactions.js:184 msgid "Rename" msgstr "重新命名" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:49 js/filelist.js:52 js/files.js:291 js/files.js:407 +#: js/files.js:438 +msgid "Pending" +msgstr "等候中" + +#: js/filelist.js:253 js/filelist.js:255 msgid "{new_name} already exists" msgstr "{new_name} 已經存在" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "replace" msgstr "取代" -#: js/filelist.js:208 +#: js/filelist.js:253 msgid "suggest name" msgstr "建議檔名" -#: js/filelist.js:208 js/filelist.js:210 +#: js/filelist.js:253 js/filelist.js:255 msgid "cancel" msgstr "取消" -#: js/filelist.js:253 +#: js/filelist.js:295 msgid "replaced {new_name}" msgstr "已取代 {new_name}" -#: js/filelist.js:253 js/filelist.js:255 +#: js/filelist.js:295 js/filelist.js:297 msgid "undo" msgstr "復原" -#: js/filelist.js:255 +#: js/filelist.js:297 msgid "replaced {new_name} with {old_name}" msgstr "使用 {new_name} 取代 {old_name}" -#: js/filelist.js:280 +#: js/filelist.js:322 msgid "perform delete operation" msgstr "進行刪除動作" @@ -154,64 +169,60 @@ msgstr "無法上傳您的檔案因為它可能是一個目錄或檔案大小為 msgid "Upload Error" msgstr "上傳發生錯誤" -#: js/files.js:278 +#: js/files.js:272 msgid "Close" msgstr "關閉" -#: js/files.js:297 js/files.js:413 js/files.js:444 -msgid "Pending" -msgstr "等候中" - -#: js/files.js:317 +#: js/files.js:311 msgid "1 file uploading" msgstr "1 個檔案正在上傳" -#: js/files.js:320 js/files.js:375 js/files.js:390 +#: js/files.js:314 js/files.js:369 js/files.js:384 msgid "{count} files uploading" msgstr "{count} 個檔案正在上傳" -#: js/files.js:393 js/files.js:428 +#: js/files.js:387 js/files.js:422 msgid "Upload cancelled." msgstr "上傳取消" -#: js/files.js:502 +#: js/files.js:496 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "檔案上傳中。離開此頁面將會取消上傳。" -#: js/files.js:575 +#: js/files.js:569 msgid "URL cannot be empty." msgstr "URL 不能為空白." -#: js/files.js:580 +#: js/files.js:574 msgid "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" msgstr "無效的資料夾名稱,'Shared' 的使用被 Owncloud 保留" -#: js/files.js:953 templates/index.php:67 +#: js/files.js:948 templates/index.php:67 msgid "Name" msgstr "名稱" -#: js/files.js:954 templates/index.php:78 +#: js/files.js:949 templates/index.php:78 msgid "Size" msgstr "大小" -#: js/files.js:955 templates/index.php:80 +#: js/files.js:950 templates/index.php:80 msgid "Modified" msgstr "修改" -#: js/files.js:974 +#: js/files.js:969 msgid "1 folder" msgstr "1 個資料夾" -#: js/files.js:976 +#: js/files.js:971 msgid "{count} folders" msgstr "{count} 個資料夾" -#: js/files.js:984 +#: js/files.js:979 msgid "1 file" msgstr "1 個檔案" -#: js/files.js:986 +#: js/files.js:981 msgid "{count} files" msgstr "{count} 個檔案" @@ -268,7 +279,7 @@ msgid "From link" msgstr "從連結" #: templates/index.php:40 -msgid "Trash" +msgid "Trash bin" msgstr "回收筒" #: templates/index.php:46 @@ -283,6 +294,10 @@ msgstr "沒有任何東西。請上傳內容!" msgid "Download" msgstr "下載" +#: templates/index.php:85 templates/index.php:86 +msgid "Unshare" +msgstr "取消共享" + #: templates/index.php:105 msgid "Upload too large" msgstr "上傳過大" diff --git a/l10n/zh_TW/files_encryption.po b/l10n/zh_TW/files_encryption.po index 785876bb0f..a07b9404ea 100644 --- a/l10n/zh_TW/files_encryption.po +++ b/l10n/zh_TW/files_encryption.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-06 00:05+0100\n" -"PO-Revision-Date: 2013-02-05 23:05+0000\n" +"POT-Creation-Date: 2013-02-10 00:08+0100\n" +"PO-Revision-Date: 2013-02-09 23:09+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -19,28 +19,6 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: js/settings-personal.js:17 -msgid "" -"Please switch to your ownCloud client and change your encryption password to" -" complete the conversion." -msgstr "請至您的 ownCloud 客戶端程式修改您的加密密碼以完成轉換。" - -#: js/settings-personal.js:17 -msgid "switched to client side encryption" -msgstr "已切換為客戶端加密" - -#: js/settings-personal.js:21 -msgid "Change encryption password to login password" -msgstr "將加密密碼修改為登入密碼" - -#: js/settings-personal.js:25 -msgid "Please check your passwords and try again." -msgstr "請檢查您的密碼並再試一次。" - -#: js/settings-personal.js:25 -msgid "Could not change your file encryption password to your login password" -msgstr "無法變更您的檔案加密密碼為登入密碼" - #: templates/settings-personal.php:4 templates/settings.php:5 msgid "Encryption" msgstr "加密" diff --git a/l10n/zh_TW/files_trashbin.po b/l10n/zh_TW/files_trashbin.po index 0f6d6a4b1f..ffbd5fd24e 100644 --- a/l10n/zh_TW/files_trashbin.po +++ b/l10n/zh_TW/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:09+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -17,6 +17,16 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/delete.php:22 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:41 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + #: js/trash.js:7 js/trash.js:94 msgid "perform restore operation" msgstr "" diff --git a/l10n/zh_TW/files_versions.po b/l10n/zh_TW/files_versions.po index 1d41bf764b..2855967dae 100644 --- a/l10n/zh_TW/files_versions.po +++ b/l10n/zh_TW/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-15 00:03+0100\n" -"PO-Revision-Date: 2013-01-14 23:04+0000\n" +"POT-Creation-Date: 2013-02-08 00:10+0100\n" +"PO-Revision-Date: 2013-02-07 23:11+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,45 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: history.php:40 +msgid "success" +msgstr "" + +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:68 +msgid "No old versions available" +msgstr "" + +#: history.php:73 +msgid "No path specified" +msgstr "" + #: js/versions.js:16 msgid "History" msgstr "歷史" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" +msgstr "" + #: templates/settings.php:3 msgid "Files Versioning" msgstr "檔案版本化中..." diff --git a/l10n/zh_TW/lib.po b/l10n/zh_TW/lib.po index 8a76773c07..9ce151b9df 100644 --- a/l10n/zh_TW/lib.po +++ b/l10n/zh_TW/lib.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-01-24 00:06+0100\n" -"PO-Revision-Date: 2013-01-23 10:07+0000\n" -"Last-Translator: pellaeon \n" +"POT-Creation-Date: 2013-02-11 15:39+0100\n" +"PO-Revision-Date: 2013-02-11 14:40+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,47 +21,47 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:301 +#: app.php:339 msgid "Help" msgstr "說明" -#: app.php:308 +#: app.php:346 msgid "Personal" msgstr "個人" -#: app.php:313 +#: app.php:351 msgid "Settings" msgstr "設定" -#: app.php:318 +#: app.php:356 msgid "Users" msgstr "使用者" -#: app.php:325 +#: app.php:363 msgid "Apps" msgstr "應用程式" -#: app.php:327 +#: app.php:365 msgid "Admin" msgstr "管理" -#: files.php:365 +#: files.php:202 msgid "ZIP download is turned off." msgstr "ZIP 下載已關閉" -#: files.php:366 +#: files.php:203 msgid "Files need to be downloaded one by one." msgstr "檔案需要逐一下載" -#: files.php:366 files.php:391 +#: files.php:203 files.php:228 msgid "Back to Files" msgstr "回到檔案列表" -#: files.php:390 +#: files.php:227 msgid "Selected files too large to generate zip file." msgstr "選擇的檔案太大以致於無法產生壓縮檔" -#: helper.php:229 +#: helper.php:226 msgid "couldn't be determined" msgstr "無法判斷" @@ -89,6 +89,103 @@ msgstr "文字" msgid "Images" msgstr "圖片" +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:40 +msgid "Specify a data folder." +msgstr "" + +#: setup.php:53 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:56 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:59 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:62 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:126 setup.php:291 setup.php:336 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:127 setup.php:150 setup.php:204 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:149 setup.php:423 setup.php:489 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:203 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:255 setup.php:357 setup.php:366 setup.php:384 setup.php:394 +#: setup.php:403 setup.php:430 setup.php:496 setup.php:522 setup.php:529 +#: setup.php:540 setup.php:547 setup.php:556 setup.php:564 setup.php:573 +#: setup.php:579 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:256 setup.php:358 setup.php:367 setup.php:385 setup.php:395 +#: setup.php:404 setup.php:431 setup.php:497 setup.php:523 setup.php:530 +#: setup.php:541 setup.php:557 setup.php:565 setup.php:574 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:270 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:271 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:276 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:277 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:548 setup.php:580 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "您的網頁伺服器尚未被正確設定來進行檔案同步,因為您的 WebDAV 界面似乎無法使用。" + +#: setup.php:645 +#, php-format +msgid "Please double check the installation guides." +msgstr "請參考安裝指南。" + #: template.php:113 msgid "seconds ago" msgstr "幾秒前" diff --git a/l10n/zh_TW/settings.po b/l10n/zh_TW/settings.po index b1edf5e539..fff4d3d9d0 100644 --- a/l10n/zh_TW/settings.po +++ b/l10n/zh_TW/settings.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-02-07 00:07+0100\n" -"PO-Revision-Date: 2013-02-06 23:08+0000\n" +"POT-Creation-Date: 2013-02-12 00:20+0100\n" +"PO-Revision-Date: 2013-02-11 15:01+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -29,14 +29,14 @@ msgstr "" msgid "Unable to load list from App Store" msgstr "無法從 App Store 讀取清單" -#: ajax/changedisplayname.php:19 ajax/removeuser.php:15 ajax/setquota.php:15 +#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/togglegroups.php:18 msgid "Authentication error" msgstr "認證錯誤" -#: ajax/changedisplayname.php:28 +#: ajax/changedisplayname.php:32 msgid "Unable to change display name" -msgstr "" +msgstr "無法更改顯示名稱" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -88,7 +88,7 @@ msgstr "使用者加入群組%s錯誤" msgid "Unable to remove user from group %s" msgstr "使用者移出群組%s錯誤" -#: ajax/updateapp.php:13 +#: ajax/updateapp.php:14 msgid "Couldn't update app." msgstr "無法更新應用程式" @@ -185,99 +185,87 @@ msgstr "商用支援" msgid "You have used %s of the available %s" msgstr "您已經使用了 %s ,目前可用空間為 %s" -#: templates/personal.php:12 -msgid "Clients" -msgstr "客戶" - -#: templates/personal.php:13 -msgid "Download Desktop Clients" -msgstr "下載桌面客戶端" - #: templates/personal.php:14 -msgid "Download Android Client" -msgstr "下載 Android 客戶端" +msgid "Get the apps to sync your files" +msgstr "" -#: templates/personal.php:15 -msgid "Download iOS Client" -msgstr "下載 iOS 客戶端" +#: templates/personal.php:25 +msgid "Show First Run Wizard again" +msgstr "再次顯示首次使用精靈" -#: templates/personal.php:23 templates/users.php:23 templates/users.php:81 +#: templates/personal.php:36 templates/users.php:23 templates/users.php:81 msgid "Password" msgstr "密碼" -#: templates/personal.php:24 +#: templates/personal.php:37 msgid "Your password was changed" msgstr "你的密碼已更改" -#: templates/personal.php:25 +#: templates/personal.php:38 msgid "Unable to change your password" msgstr "無法變更你的密碼" -#: templates/personal.php:26 +#: templates/personal.php:39 msgid "Current password" msgstr "目前密碼" -#: templates/personal.php:27 +#: templates/personal.php:40 msgid "New password" msgstr "新密碼" -#: templates/personal.php:28 -msgid "show" -msgstr "顯示" - -#: templates/personal.php:29 +#: templates/personal.php:42 msgid "Change password" msgstr "變更密碼" -#: templates/personal.php:41 templates/users.php:80 +#: templates/personal.php:54 templates/users.php:80 msgid "Display Name" msgstr "顯示名稱" -#: templates/personal.php:42 -msgid "Your display name was changed" -msgstr "" - -#: templates/personal.php:43 -msgid "Unable to change your display name" -msgstr "" - -#: templates/personal.php:46 -msgid "Change display name" -msgstr "" - #: templates/personal.php:55 +msgid "Your display name was changed" +msgstr "已更改顯示名稱" + +#: templates/personal.php:56 +msgid "Unable to change your display name" +msgstr "無法更改您的顯示名稱" + +#: templates/personal.php:59 +msgid "Change display name" +msgstr "更改顯示名稱" + +#: templates/personal.php:68 msgid "Email" msgstr "電子郵件" -#: templates/personal.php:56 +#: templates/personal.php:69 msgid "Your email address" msgstr "你的電子郵件信箱" -#: templates/personal.php:57 +#: templates/personal.php:70 msgid "Fill in an email address to enable password recovery" msgstr "請填入電子郵件信箱以便回復密碼" -#: templates/personal.php:63 templates/personal.php:64 +#: templates/personal.php:76 templates/personal.php:77 msgid "Language" msgstr "語言" -#: templates/personal.php:69 +#: templates/personal.php:82 msgid "Help translate" msgstr "幫助翻譯" -#: templates/personal.php:74 +#: templates/personal.php:87 msgid "WebDAV" msgstr "WebDAV" -#: templates/personal.php:76 +#: templates/personal.php:89 msgid "Use this address to connect to your ownCloud in your file manager" msgstr "在您的檔案管理員中使用這個地址來連線到 ownCloud" -#: templates/personal.php:85 +#: templates/personal.php:98 msgid "Version" msgstr "版本" -#: templates/personal.php:87 +#: templates/personal.php:100 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -214,7 +214,7 @@ msgid "Use TLS" msgstr "使用TLS" #: templates/settings.php:38 -msgid "Do not use it for SSL connections, it will fail." +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" #: templates/settings.php:39 diff --git a/lib/app.php b/lib/app.php index 3a4e21e8cd..bf7eeef018 100644 --- a/lib/app.php +++ b/lib/app.php @@ -38,6 +38,15 @@ class OC_App{ static private $checkedApps = array(); static private $altLogin = array(); + /** + * @brief clean the appid + * @param $app Appid that needs to be cleaned + * @return string + */ + public static function cleanAppId($app) { + return str_replace(array('\0', '/', '\\', '..'), '', $app); + } + /** * @brief loads all apps * @param array $types @@ -285,6 +294,23 @@ class OC_App{ return true; } + /** + * @brief Get the navigation entries for the $app + * @param string $app app + * @return array of the $data added with addNavigationEntry + */ + public static function getAppNavigationEntries($app) { + if(is_file(self::getAppPath($app).'/appinfo/app.php')) { + $save = self::$navigation; + self::$navigation = array(); + require $app.'/appinfo/app.php'; + $app_entries = self::$navigation; + self::$navigation = $save; + return $app_entries; + } + return array(); + } + /** * @brief gets the active Menu entry * @return string id or empty string @@ -645,7 +671,7 @@ class OC_App{ $info['update']=false; } else { $info['internal']=false; - $info['internallabel']='3rd Party App'; + $info['internallabel']='3rd Party'; $info['internalclass']='externalapp'; $info['update']=OC_Installer::isUpdateAvailable($app); } @@ -683,10 +709,10 @@ class OC_App{ * @return array, multi-dimensional array of apps. Keys: id, name, type, typename, personid, license, detailpage, preview, changed, description */ public static function getAppstoreApps( $filter = 'approved' ) { - $catagoryNames = OC_OCSClient::getCategories(); - if ( is_array( $catagoryNames ) ) { + $categoryNames = OC_OCSClient::getCategories(); + if ( is_array( $categoryNames ) ) { // Check that categories of apps were retrieved correctly - if ( ! $categories = array_keys( $catagoryNames ) ) { + if ( ! $categories = array_keys( $categoryNames ) ) { return false; } diff --git a/lib/archive/tar.php b/lib/archive/tar.php index 117d88e5f4..e7c8138961 100644 --- a/lib/archive/tar.php +++ b/lib/archive/tar.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -require_once 'Archive/Tar.php'; +require_once OC::$THIRDPARTYROOT . '/3rdparty/Archive/Tar.php'; class OC_Archive_TAR extends OC_Archive{ const PLAIN=0; diff --git a/lib/base.php b/lib/base.php index b432f282aa..c60a97100f 100644 --- a/lib/base.php +++ b/lib/base.php @@ -346,7 +346,7 @@ class OC { public static function init() { // register autoloader spl_autoload_register(array('OC', 'autoload')); - setlocale(LC_ALL, 'en_US.UTF-8'); + OC_Util::issetlocaleworking(); // set some stuff //ob_start(); @@ -468,7 +468,7 @@ class OC { register_shutdown_function(array('OC_Helper', 'cleanTmp')); //parse the given parameters - self::$REQUESTEDAPP = (isset($_GET['app']) && trim($_GET['app']) != '' && !is_null($_GET['app']) ? str_replace(array('\0', '/', '\\', '..'), '', strip_tags($_GET['app'])) : OC_Config::getValue('defaultapp', 'files')); + self::$REQUESTEDAPP = (isset($_GET['app']) && trim($_GET['app']) != '' && !is_null($_GET['app']) ? OC_App::cleanAppId(strip_tags($_GET['app'])) : OC_Config::getValue('defaultapp', 'files')); if (substr_count(self::$REQUESTEDAPP, '?') != 0) { $app = substr(self::$REQUESTEDAPP, 0, strpos(self::$REQUESTEDAPP, '?')); $param = substr($_GET['app'], strpos($_GET['app'], '?') + 1); @@ -498,7 +498,7 @@ class OC { // write error into log if locale can't be set if (OC_Util::issetlocaleworking() == false) { - OC_Log::write('core', 'setting locale to en_US.UTF-8 failed. Support is probably not installed on your system', OC_Log::ERROR); + OC_Log::write('core', 'setting locale to en_US.UTF-8/en_US.UTF8 failed. Support is probably not installed on your system', OC_Log::ERROR); } if (OC_Config::getValue('installed', false)) { if (OC_Appconfig::getValue('core', 'backgroundjobs_mode', 'ajax') == 'ajax') { @@ -548,20 +548,24 @@ class OC { require_once 'core/setup.php'; exit(); } + $request = OC_Request::getPathInfo(); if(substr($request, -3) !== '.js'){// we need these files during the upgrade self::checkMaintenanceMode(); self::checkUpgrade(); } - try { - OC::getRouter()->match(OC_Request::getPathInfo()); - return; - } catch (Symfony\Component\Routing\Exception\ResourceNotFoundException $e) { - //header('HTTP/1.0 404 Not Found'); - } catch (Symfony\Component\Routing\Exception\MethodNotAllowedException $e) { - OC_Response::setStatus(405); - return; + if (!self::$CLI) { + try { + OC_App::loadApps(); + OC::getRouter()->match(OC_Request::getPathInfo()); + return; + } catch (Symfony\Component\Routing\Exception\ResourceNotFoundException $e) { + //header('HTTP/1.0 404 Not Found'); + } catch (Symfony\Component\Routing\Exception\MethodNotAllowedException $e) { + OC_Response::setStatus(405); + return; + } } $app = OC::$REQUESTEDAPP; diff --git a/lib/connector/sabre/directory.php b/lib/connector/sabre/directory.php index b210602bbf..e29059d039 100644 --- a/lib/connector/sabre/directory.php +++ b/lib/connector/sabre/directory.php @@ -62,7 +62,36 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa } } else { $newPath = $this->path . '/' . $name; - \OC\Files\Filesystem::file_put_contents($newPath, $data); + + // mark file as partial while uploading (ignored by the scanner) + $partpath = $newPath . '.part'; + + \OC\Files\Filesystem::file_put_contents($partpath, $data); + + //detect aborted upload + if (isset ($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'PUT' ) { + if (isset($_SERVER['CONTENT_LENGTH'])) { + $expected = $_SERVER['CONTENT_LENGTH']; + $actual = \OC\Files\Filesystem::filesize($partpath); + if ($actual != $expected) { + \OC\Files\Filesystem::unlink($partpath); + throw new Sabre_DAV_Exception_BadRequest( + 'expected filesize ' . $expected . ' got ' . $actual); + } + } + } + + // rename to correct path + \OC\Files\Filesystem::rename($partpath, $newPath); + + // allow sync clients to send the mtime along in a header + $mtime = OC_Request::hasModificationTime(); + if ($mtime !== false) { + if(\OC\Files\Filesystem::touch($newPath, $mtime)) { + header('X-OC-MTime: accepted'); + } + } + return OC_Connector_Sabre_Node::getETagPropertyForPath($newPath); } @@ -121,7 +150,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa $paths = array(); foreach($folder_content as $info) { $paths[] = $this->path.'/'.$info['name']; - $properties[$this->path.'/'.$info['name']][self::GETETAG_PROPERTYNAME] = $info['etag']; + $properties[$this->path.'/'.$info['name']][self::GETETAG_PROPERTYNAME] = '"' . $info['etag'] . '"'; } if(count($paths)>0) { // diff --git a/lib/connector/sabre/file.php b/lib/connector/sabre/file.php index 1c18a39174..61165d9956 100644 --- a/lib/connector/sabre/file.php +++ b/lib/connector/sabre/file.php @@ -45,7 +45,34 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D */ public function put($data) { - \OC\Files\Filesystem::file_put_contents($this->path,$data); + // mark file as partial while uploading (ignored by the scanner) + $partpath = $this->path . '.part'; + + \OC\Files\Filesystem::file_put_contents($partpath, $data); + + //detect aborted upload + if (isset ($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'PUT' ) { + if (isset($_SERVER['CONTENT_LENGTH'])) { + $expected = $_SERVER['CONTENT_LENGTH']; + $actual = \OC\Files\Filesystem::filesize($partpath); + if ($actual != $expected) { + \OC\Files\Filesystem::unlink($partpath); + throw new Sabre_DAV_Exception_BadRequest( + 'expected filesize ' . $expected . ' got ' . $actual); + } + } + } + + // rename to correct path + \OC\Files\Filesystem::rename($partpath, $this->path); + + //allow sync clients to send the mtime along in a header + $mtime = OC_Request::hasModificationTime(); + if ($mtime !== false) { + if(\OC\Files\Filesystem::touch($this->path, $mtime)) { + header('X-OC-MTime: accepted'); + } + } return OC_Connector_Sabre_Node::getETagPropertyForPath($this->path); } diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php index 8d504af616..5a9a119458 100644 --- a/lib/files/cache/scanner.php +++ b/lib/files/cache/scanner.php @@ -97,7 +97,7 @@ class Scanner { if ($this->storage->is_dir($path) && ($dh = $this->storage->opendir($path))) { \OC_DB::beginTransaction(); while ($file = readdir($dh)) { - if ($file !== '.' and $file !== '..') { + if (!$this->isIgnoredFile($file)) { $child = ($path) ? $path . '/' . $file : $file; $data = $this->scanFile($child); if ($data) { @@ -133,12 +133,28 @@ class Scanner { } return $size; } + + /** + * @brief check if the file should be ignored when scanning + * NOTE: files with a '.part' extension are ignored as well! + * prevents unfinished put requests to be scanned + * @param String $file + * @return boolean + */ + private function isIgnoredFile($file) { + if ($file === '.' || $file === '..' + || pathinfo($file,PATHINFO_EXTENSION) === 'part') + { + return true; + } + return false; + } /** * walk over any folders that are not fully scanned yet and scan them */ public function backgroundScan() { - while ($path = $this->cache->getIncomplete()) { + while (($path = $this->cache->getIncomplete()) !== false) { $this->scan($path); $this->cache->correctFolderSize($path); } diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index 71bf3d8708..a0c3c4b9b7 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -190,14 +190,14 @@ class Filesystem { } } - static public function init($root) { + static public function init($user, $root) { if (self::$defaultInstance) { return false; } self::$defaultInstance = new View($root); //load custom mount config - self::initMountPoints(); + self::initMountPoints($user); self::$loaded = true; diff --git a/lib/files/mapper.php b/lib/files/mapper.php new file mode 100644 index 0000000000..71b665e49b --- /dev/null +++ b/lib/files/mapper.php @@ -0,0 +1,216 @@ +resolveLogicPath($logicPath); + if ($physicalPath !== null) { + return $physicalPath; + } + + return $this->create($logicPath, $create); + } + + /** + * @param string $physicalPath + * @return string|null + */ + public function physicalToLogic($physicalPath) { + $logicPath = $this->resolvePhysicalPath($physicalPath); + if ($logicPath !== null) { + return $logicPath; + } + + $this->insert($physicalPath, $physicalPath); + return $physicalPath; + } + + /** + * @param string $path + * @param bool $isLogicPath indicates if $path is logical or physical + * @param $recursive + */ + public function removePath($path, $isLogicPath, $recursive) { + if ($recursive) { + $path=$path.'%'; + } + + if ($isLogicPath) { + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*file_map` WHERE `logic_path` LIKE ?'); + $query->execute(array($path)); + } else { + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*file_map` WHERE `physic_path` LIKE ?'); + $query->execute(array($path)); + } + } + + /** + * @param $path1 + * @param $path2 + * @throws \Exception + */ + public function copy($path1, $path2) + { + $path1 = $this->stripLast($path1); + $path2 = $this->stripLast($path2); + $physicPath1 = $this->logicToPhysical($path1, true); + $physicPath2 = $this->logicToPhysical($path2, true); + + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*file_map` WHERE `logic_path` LIKE ?'); + $result = $query->execute(array($path1.'%')); + $updateQuery = \OC_DB::prepare('UPDATE `*PREFIX*file_map`' + .' SET `logic_path` = ?' + .' AND `physic_path` = ?' + .' WHERE `logic_path` = ?'); + while( $row = $result->fetchRow()) { + $currentLogic = $row['logic_path']; + $currentPhysic = $row['physic_path']; + $newLogic = $path2.$this->stripRootFolder($currentLogic, $path1); + $newPhysic = $physicPath2.$this->stripRootFolder($currentPhysic, $physicPath1); + if ($path1 !== $currentLogic) { + try { + $updateQuery->execute(array($newLogic, $newPhysic, $currentLogic)); + } catch (\Exception $e) { + error_log('Mapper::Copy failed '.$currentLogic.' -> '.$newLogic.'\n'.$e); + throw $e; + } + } + } + } + + /** + * @param $path + * @param $root + * @return bool|string + */ + public function stripRootFolder($path, $root) { + if (strpos($path, $root) !== 0) { + // throw exception ??? + return false; + } + if (strlen($path) > strlen($root)) { + return substr($path, strlen($root)); + } + + return ''; + } + + private function stripLast($path) { + if (substr($path, -1) == '/') { + $path = substr_replace($path ,'',-1); + } + return $path; + } + + private function resolveLogicPath($logicPath) { + $logicPath = $this->stripLast($logicPath); + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*file_map` WHERE `logic_path_hash` = ?'); + $result = $query->execute(array(md5($logicPath))); + $result = $result->fetchRow(); + + return $result['physic_path']; + } + + private function resolvePhysicalPath($physicalPath) { + $physicalPath = $this->stripLast($physicalPath); + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*file_map` WHERE `physic_path_hash` = ?'); + $result = $query->execute(array(md5($physicalPath))); + $result = $result->fetchRow(); + + return $result['logic_path']; + } + + private function create($logicPath, $store) { + $logicPath = $this->stripLast($logicPath); + $index = 0; + + // create the slugified path + $physicalPath = $this->slugifyPath($logicPath); + + // detect duplicates + while ($this->resolvePhysicalPath($physicalPath) !== null) { + $physicalPath = $this->slugifyPath($physicalPath, $index++); + } + + // insert the new path mapping if requested + if ($store) { + $this->insert($logicPath, $physicalPath); + } + + return $physicalPath; + } + + private function insert($logicPath, $physicalPath) { + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*file_map`(`logic_path`, `physic_path`, `logic_path_hash`, `physic_path_hash`) VALUES(?, ?, ?, ?)'); + $query->execute(array($logicPath, $physicalPath, md5($logicPath), md5($physicalPath))); + } + + private function slugifyPath($path, $index=null) { + $pathElements = explode('/', $path); + $sluggedElements = array(); + + // skip slugging the drive letter on windows - TODO: test if local path + if (strpos(strtolower(php_uname('s')), 'win') !== false) { + $sluggedElements[]= $pathElements[0]; + array_shift($pathElements); + } + foreach ($pathElements as $pathElement) { + // TODO: remove file ext before slugify on last element + $sluggedElements[] = self::slugify($pathElement); + } + + // + // TODO: add the index before the file extension + // + if ($index !== null) { + $last= end($sluggedElements); + array_pop($sluggedElements); + array_push($sluggedElements, $last.'-'.$index); + } + return implode(DIRECTORY_SEPARATOR, $sluggedElements); + } + + /** + * Modifies a string to remove all non ASCII characters and spaces. + * + * @param string $text + * @return string + */ + private function slugify($text) + { + // replace non letter or digits by - + $text = preg_replace('~[^\\pL\d]+~u', '-', $text); + + // trim + $text = trim($text, '-'); + + // transliterate + if (function_exists('iconv')) { + $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); + } + + // lowercase + $text = strtolower($text); + + // remove unwanted characters + $text = preg_replace('~[^-\w]+~', '', $text); + + if (empty($text)) + { + // TODO: we better generate a guid in this case + return 'n-a'; + } + + return $text; + } +} diff --git a/lib/files/storage/common.php b/lib/files/storage/common.php index 591803f044..ce9e7ead6d 100644 --- a/lib/files/storage/common.php +++ b/lib/files/storage/common.php @@ -277,4 +277,27 @@ abstract class Common implements \OC\Files\Storage\Storage { return uniqid(); } } + + /** + * clean a path, i.e. remove all redundant '.' and '..' + * making sure that it can't point to higher than '/' + * @param $path The path to clean + * @return string cleaned path + */ + public function cleanPath($path) { + if (strlen($path) == 0 or $path[0] != '/') { + $path = '/' . $path; + } + + $output = array(); + foreach (explode('/', $path) as $chunk) { + if ($chunk == '..') { + array_pop($output); + } else if ($chunk == '.') { + } else { + $output[] = $chunk; + } + } + return implode('/', $output); + } } diff --git a/lib/files/storage/local.php b/lib/files/storage/local.php index a5db4ba919..9fe0113586 100644 --- a/lib/files/storage/local.php +++ b/lib/files/storage/local.php @@ -8,6 +8,10 @@ namespace OC\Files\Storage; +if (\OC_Util::runningOnWindows()) { + require_once 'mappedlocal.php'; +} else { + /** * for local filestore, we only have to map the paths */ @@ -19,6 +23,8 @@ class Local extends \OC\Files\Storage\Common{ $this->datadir.='/'; } } + public function __destruct() { + } public function getId(){ return 'local::'.$this->datadir; } @@ -245,3 +251,4 @@ class Local extends \OC\Files\Storage\Common{ return $this->filemtime($path)>$time; } } +} diff --git a/lib/files/storage/mappedlocal.php b/lib/files/storage/mappedlocal.php new file mode 100644 index 0000000000..80dd79bc41 --- /dev/null +++ b/lib/files/storage/mappedlocal.php @@ -0,0 +1,335 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +namespace OC\Files\Storage; + +/** + * for local filestore, we only have to map the paths + */ +class Local extends \OC\Files\Storage\Common{ + protected $datadir; + private $mapper; + + public function __construct($arguments) { + $this->datadir=$arguments['datadir']; + if(substr($this->datadir, -1)!=='/') { + $this->datadir.='/'; + } + + $this->mapper= new \OC\Files\Mapper(); + } + public function __destruct() { + if (defined('PHPUNIT_RUN')) { + $this->mapper->removePath($this->datadir, true, true); + } + } + public function getId(){ + return 'local::'.$this->datadir; + } + public function mkdir($path) { + return @mkdir($this->buildPath($path)); + } + public function rmdir($path) { + if ($result = @rmdir($this->buildPath($path))) { + $this->cleanMapper($path); + } + return $result; + } + public function opendir($path) { + $files = array('.', '..'); + $physicalPath= $this->buildPath($path); + + $logicalPath = $this->mapper->physicalToLogic($physicalPath); + $dh = opendir($physicalPath); + while ($file = readdir($dh)) { + if ($file === '.' or $file === '..') { + continue; + } + + $logicalFilePath = $this->mapper->physicalToLogic($physicalPath.DIRECTORY_SEPARATOR.$file); + + $file= $this->mapper->stripRootFolder($logicalFilePath, $logicalPath); + $file = $this->stripLeading($file); + $files[]= $file; + } + + \OC\Files\Stream\Dir::register('local-win32'.$path, $files); + return opendir('fakedir://local-win32'.$path); + } + public function is_dir($path) { + if(substr($path,-1)=='/') { + $path=substr($path, 0, -1); + } + return is_dir($this->buildPath($path)); + } + public function is_file($path) { + return is_file($this->buildPath($path)); + } + public function stat($path) { + $fullPath = $this->buildPath($path); + $statResult = stat($fullPath); + + if ($statResult['size'] < 0) { + $size = self::getFileSizeFromOS($fullPath); + $statResult['size'] = $size; + $statResult[7] = $size; + } + return $statResult; + } + public function filetype($path) { + $filetype=filetype($this->buildPath($path)); + if($filetype=='link') { + $filetype=filetype(realpath($this->buildPath($path))); + } + return $filetype; + } + public function filesize($path) { + if($this->is_dir($path)) { + return 0; + }else{ + $fullPath = $this->buildPath($path); + $fileSize = filesize($fullPath); + if ($fileSize < 0) { + return self::getFileSizeFromOS($fullPath); + } + + return $fileSize; + } + } + public function isReadable($path) { + return is_readable($this->buildPath($path)); + } + public function isUpdatable($path) { + return is_writable($this->buildPath($path)); + } + public function file_exists($path) { + return file_exists($this->buildPath($path)); + } + public function filemtime($path) { + return filemtime($this->buildPath($path)); + } + public function touch($path, $mtime=null) { + // sets the modification time of the file to the given value. + // If mtime is nil the current time is set. + // note that the access time of the file always changes to the current time. + if(!is_null($mtime)) { + $result=touch( $this->buildPath($path), $mtime ); + }else{ + $result=touch( $this->buildPath($path)); + } + if( $result ) { + clearstatcache( true, $this->buildPath($path) ); + } + + return $result; + } + public function file_get_contents($path) { + return file_get_contents($this->buildPath($path)); + } + public function file_put_contents($path, $data) {//trigger_error("$path = ".var_export($path, 1)); + return file_put_contents($this->buildPath($path), $data); + } + public function unlink($path) { + return $this->delTree($path); + } + public function rename($path1, $path2) { + if (!$this->isUpdatable($path1)) { + \OC_Log::write('core','unable to rename, file is not writable : '.$path1,\OC_Log::ERROR); + return false; + } + if(! $this->file_exists($path1)) { + \OC_Log::write('core','unable to rename, file does not exists : '.$path1,\OC_Log::ERROR); + return false; + } + + $physicPath1 = $this->buildPath($path1); + $physicPath2 = $this->buildPath($path2); + if($return=rename($physicPath1, $physicPath2)) { + // mapper needs to create copies or all children + $this->copyMapping($path1, $path2); + $this->cleanMapper($physicPath1, false, true); + } + return $return; + } + public function copy($path1, $path2) { + if($this->is_dir($path2)) { + if(!$this->file_exists($path2)) { + $this->mkdir($path2); + } + $source=substr($path1, strrpos($path1, '/')+1); + $path2.=$source; + } + if($return=copy($this->buildPath($path1), $this->buildPath($path2))) { + // mapper needs to create copies or all children + $this->copyMapping($path1, $path2); + } + return $return; + } + public function fopen($path, $mode) { + if($return=fopen($this->buildPath($path), $mode)) { + switch($mode) { + case 'r': + break; + case 'r+': + case 'w+': + case 'x+': + case 'a+': + break; + case 'w': + case 'x': + case 'a': + break; + } + } + return $return; + } + + public function getMimeType($path) { + if($this->isReadable($path)) { + return \OC_Helper::getMimeType($this->buildPath($path)); + }else{ + return false; + } + } + + private function delTree($dir, $isLogicPath=true) { + $dirRelative=$dir; + if ($isLogicPath) { + $dir=$this->buildPath($dir); + } + if (!file_exists($dir)) { + return true; + } + if (!is_dir($dir) || is_link($dir)) { + if($return=unlink($dir)) { + $this->cleanMapper($dir, false); + return $return; + } + } + foreach (scandir($dir) as $item) { + if ($item == '.' || $item == '..') { + continue; + } + if(is_file($dir.'/'.$item)) { + if(unlink($dir.'/'.$item)) { + $this->cleanMapper($dir.'/'.$item, false); + } + }elseif(is_dir($dir.'/'.$item)) { + if (!$this->delTree($dir. "/" . $item, false)) { + return false; + }; + } + } + if($return=rmdir($dir)) { + $this->cleanMapper($dir, false); + } + return $return; + } + + private static function getFileSizeFromOS($fullPath) { + $name = strtolower(php_uname('s')); + // Windows OS: we use COM to access the filesystem + if (strpos($name, 'win') !== false) { + if (class_exists('COM')) { + $fsobj = new \COM("Scripting.FileSystemObject"); + $f = $fsobj->GetFile($fullPath); + return $f->Size; + } + } else if (strpos($name, 'bsd') !== false) { + if (\OC_Helper::is_function_enabled('exec')) { + return (float)exec('stat -f %z ' . escapeshellarg($fullPath)); + } + } else if (strpos($name, 'linux') !== false) { + if (\OC_Helper::is_function_enabled('exec')) { + return (float)exec('stat -c %s ' . escapeshellarg($fullPath)); + } + } else { + \OC_Log::write('core', 'Unable to determine file size of "'.$fullPath.'". Unknown OS: '.$name, \OC_Log::ERROR); + } + + return 0; + } + + public function hash($path, $type, $raw=false) { + return hash_file($type, $this->buildPath($path), $raw); + } + + public function free_space($path) { + return @disk_free_space($this->buildPath($path)); + } + + public function search($query) { + return $this->searchInDir($query); + } + public function getLocalFile($path) { + return $this->buildPath($path); + } + public function getLocalFolder($path) { + return $this->buildPath($path); + } + + protected function searchInDir($query, $dir='', $isLogicPath=true) { + $files=array(); + $physicalDir = $this->buildPath($dir); + foreach (scandir($physicalDir) as $item) { + if ($item == '.' || $item == '..') + continue; + $physicalItem = $this->mapper->physicalToLogic($physicalDir.DIRECTORY_SEPARATOR.$item); + $item = substr($physicalItem, strlen($physicalDir)+1); + + if(strstr(strtolower($item), strtolower($query)) !== false) { + $files[]=$dir.'/'.$item; + } + if(is_dir($physicalItem)) { + $files=array_merge($files, $this->searchInDir($query, $physicalItem, false)); + } + } + return $files; + } + + /** + * check if a file or folder has been updated since $time + * @param string $path + * @param int $time + * @return bool + */ + public function hasUpdated($path, $time) { + return $this->filemtime($path)>$time; + } + + private function buildPath($path, $create=true) { + $path = $this->stripLeading($path); + $fullPath = $this->datadir.$path; + return $this->mapper->logicToPhysical($fullPath, $create); + } + + private function cleanMapper($path, $isLogicPath=true, $recursive=true) { + $fullPath = $path; + if ($isLogicPath) { + $fullPath = $this->datadir.$path; + } + $this->mapper->removePath($fullPath, $isLogicPath, $recursive); + } + + private function copyMapping($path1, $path2) { + $path1 = $this->stripLeading($path1); + $path2 = $this->stripLeading($path2); + + $fullPath1 = $this->datadir.$path1; + $fullPath2 = $this->datadir.$path2; + + $this->mapper->copy($fullPath1, $fullPath2); + } + + private function stripLeading($path) { + if(strpos($path, '/') === 0) { + $path = substr($path, 1); + } + + return $path; + } +} diff --git a/lib/files/storage/temporary.php b/lib/files/storage/temporary.php index 542d2cd9f4..d84dbda2e3 100644 --- a/lib/files/storage/temporary.php +++ b/lib/files/storage/temporary.php @@ -21,6 +21,7 @@ class Temporary extends Local{ } public function __destruct() { + parent::__destruct(); $this->cleanUp(); } } diff --git a/lib/files/view.php b/lib/files/view.php index dfcb770328..1a234228ea 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -509,11 +509,7 @@ class View { if (Filesystem::isValidPath($path)) { $source = $this->fopen($path, 'r'); if ($source) { - $extension = ''; - $extOffset = strpos($path, '.'); - if ($extOffset !== false) { - $extension = substr($path, strrpos($path, '.')); - } + $extension = pathinfo($path, PATHINFO_EXTENSION); $tmpFile = \OC_Helper::tmpFile($extension); file_put_contents($tmpFile, $source); return $tmpFile; diff --git a/lib/filesystem.php b/lib/filesystem.php index 57cca90230..e86bea6bff 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -58,8 +58,8 @@ class OC_Filesystem { /** * @deprecated OC_Filesystem is replaced by \OC\Files\Filesystem */ - static public function init($root) { - return \OC\Files\Filesystem::init($root); + static public function init($user, $root) { + return \OC\Files\Filesystem::init($user, $root); } /** diff --git a/lib/helper.php b/lib/helper.php index 0e549d006a..2713ffed45 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -394,13 +394,12 @@ class OC_Helper { // it looks like we have a 'file' command, // lets see if it does have mime support $path=escapeshellarg($path); - $fp = popen("file -i -b $path 2>/dev/null", "r"); + $fp = popen("file -b --mime-type $path 2>/dev/null", "r"); $reply = fgets($fp); pclose($fp); - // we have smth like 'text/x-c++; charset=us-ascii\n' - // and need to eliminate everything starting with semicolon including trailing LF - $mimeType = preg_replace('/;.*/ms', '', trim($reply)); + //trim the newline + $mimeType = trim($reply); } return $mimeType; @@ -437,8 +436,9 @@ class OC_Helper { //FIXME: should also check for value validation (i.e. the email is an email). public static function init_var($s, $d="") { $r = $d; - if(isset($_REQUEST[$s]) && !empty($_REQUEST[$s])) - $r = stripslashes(htmlspecialchars($_REQUEST[$s])); + if(isset($_REQUEST[$s]) && !empty($_REQUEST[$s])) { + $r = OC_Util::sanitizeHTML($_REQUEST[$s]); + } return $r; } diff --git a/lib/l10n.php b/lib/l10n.php index ee87900926..e272bcd79f 100644 --- a/lib/l10n.php +++ b/lib/l10n.php @@ -97,7 +97,7 @@ class OC_L10N{ if ($this->app === true) { return; } - $app = $this->app; + $app = OC_App::cleanAppId($this->app); $lang = $this->lang; $this->app = true; // Find the right language diff --git a/lib/l10n/bg_BG.php b/lib/l10n/bg_BG.php index 31f37458b8..fed7f29cbb 100644 --- a/lib/l10n/bg_BG.php +++ b/lib/l10n/bg_BG.php @@ -9,6 +9,7 @@ "Files need to be downloaded one by one." => "Файловете трябва да се изтеглят един по един.", "Back to Files" => "Назад към файловете", "Selected files too large to generate zip file." => "Избраните файлове са прекалено големи за генерирането на ZIP архив.", +"couldn't be determined" => "не може да се определи", "Application is not enabled" => "Приложението не е включено.", "Authentication error" => "Възникна проблем с идентификацията", "Token expired. Please reload page." => "Ключът е изтекъл, моля презаредете страницата", diff --git a/lib/l10n/ca.php b/lib/l10n/ca.php index f6401fa39b..3e3938aa6c 100644 --- a/lib/l10n/ca.php +++ b/lib/l10n/ca.php @@ -16,6 +16,26 @@ "Files" => "Fitxers", "Text" => "Text", "Images" => "Imatges", +"Set an admin username." => "Establiu un nom d'usuari per l'administrador.", +"Set an admin password." => "Establiu una contrasenya per l'administrador.", +"Specify a data folder." => "Especifiqueu una carpeta de dades.", +"%s enter the database username." => "%s escriviu el nom d'usuari de la base de dades.", +"%s enter the database name." => "%s escriviu el nom de la base de dades.", +"%s you may not use dots in the database name" => "%s no podeu usar punts en el nom de la base de dades", +"%s set the database host." => "%s establiu l'ordinador central de la base de dades.", +"PostgreSQL username and/or password not valid" => "Nom d'usuari i/o contrasenya PostgreSQL no vàlids", +"You need to enter either an existing account or the administrator." => "Heu d'escriure un compte existent o el d'administrador.", +"Oracle username and/or password not valid" => "Nom d'usuari i/o contrasenya Oracle no vàlids", +"MySQL username and/or password not valid" => "Nom d'usuari i/o contrasenya MySQL no vàlids", +"DB Error: \"%s\"" => "Error DB: \"%s\"", +"Offending command was: \"%s\"" => "L'ordre en conflicte és: \"%s\"", +"MySQL user '%s'@'localhost' exists already." => "L'usuari MySQL '%s'@'localhost' ja existeix.", +"Drop this user from MySQL" => "Elimina aquest usuari de MySQL", +"MySQL user '%s'@'%%' already exists" => "L'usuari MySQL '%s'@'%%' ja existeix", +"Drop this user from MySQL." => "Elimina aquest usuari de MySQL.", +"Offending command was: \"%s\", name: %s, password: %s" => "L'ordre en conflicte és: \"%s\", nom: %s, contrasenya: %s", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.", +"Please double check the installation guides." => "Comproveu les guies d'instal·lació.", "seconds ago" => "segons enrere", "1 minute ago" => "fa 1 minut", "%d minutes ago" => "fa %d minuts", diff --git a/lib/l10n/cs_CZ.php b/lib/l10n/cs_CZ.php index 2c823194b9..d99f259cb0 100644 --- a/lib/l10n/cs_CZ.php +++ b/lib/l10n/cs_CZ.php @@ -16,6 +16,26 @@ "Files" => "Soubory", "Text" => "Text", "Images" => "Obrázky", +"Set an admin username." => "Zadejte uživatelské jméno správce.", +"Set an admin password." => "Zadejte heslo správce.", +"Specify a data folder." => "Určete složku dat.", +"%s enter the database username." => "Zadejte uživatelské jméno %s databáze.", +"%s enter the database name." => "Zadejte název databáze pro %s databáze.", +"%s you may not use dots in the database name" => "V názvu databáze %s nesmíte používat tečky.", +"%s set the database host." => "Zadejte název počítače s databází %s.", +"PostgreSQL username and/or password not valid" => "Uživatelské jméno, či heslo PostgreSQL není platné", +"You need to enter either an existing account or the administrator." => "Musíte zadat existující účet, či správce.", +"Oracle username and/or password not valid" => "Uživatelské jméno, či heslo Oracle není platné", +"MySQL username and/or password not valid" => "Uživatelské jméno, či heslo MySQL není platné", +"DB Error: \"%s\"" => "Chyba DB: \"%s\"", +"Offending command was: \"%s\"" => "Podezřelý příkaz byl: \"%s\"", +"MySQL user '%s'@'localhost' exists already." => "Uživatel '%s'@'localhost' již v MySQL existuje.", +"Drop this user from MySQL" => "Zahodit uživatele z MySQL", +"MySQL user '%s'@'%%' already exists" => "Uživatel '%s'@'%%' již v MySQL existuje", +"Drop this user from MySQL." => "Zahodit uživatele z MySQL.", +"Offending command was: \"%s\", name: %s, password: %s" => "Podezřelý příkaz byl: \"%s\", jméno: %s, heslo: %s", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Váš webový server není správně nastaven pro umožnění synchronizace, protože rozhraní WebDAV je rozbité.", +"Please double check the installation guides." => "Zkonzultujte, prosím, průvodce instalací.", "seconds ago" => "před vteřinami", "1 minute ago" => "před 1 minutou", "%d minutes ago" => "před %d minutami", diff --git a/lib/l10n/da.php b/lib/l10n/da.php index 8f22be5e82..e61fba30ff 100644 --- a/lib/l10n/da.php +++ b/lib/l10n/da.php @@ -16,6 +16,26 @@ "Files" => "Filer", "Text" => "SMS", "Images" => "Billeder", +"Set an admin username." => "Angiv et admin brugernavn.", +"Set an admin password." => "Angiv et admin kodeord.", +"Specify a data folder." => "Specificer en data mappe.", +"%s enter the database username." => "%s indtast database brugernavnet.", +"%s enter the database name." => "%s indtast database navnet.", +"%s you may not use dots in the database name" => "%s du må ikke bruge punktummer i databasenavnet.", +"%s set the database host." => "%s sæt database værten.", +"PostgreSQL username and/or password not valid" => "PostgreSQL brugernavn og/eller kodeord er ikke gyldigt.", +"You need to enter either an existing account or the administrator." => "Du bliver nødt til at indtaste en eksisterende bruger eller en administrator.", +"Oracle username and/or password not valid" => "Oracle brugernavn og/eller kodeord er ikke gyldigt.", +"MySQL username and/or password not valid" => "MySQL brugernavn og/eller kodeord er ikke gyldigt.", +"DB Error: \"%s\"" => "Databasefejl: \"%s\"", +"Offending command was: \"%s\"" => "Fejlende kommando var: \"%s\"", +"MySQL user '%s'@'localhost' exists already." => "MySQL brugeren '%s'@'localhost' eksisterer allerede.", +"Drop this user from MySQL" => "Slet denne bruger fra MySQL", +"MySQL user '%s'@'%%' already exists" => "MySQL brugeren '%s'@'%%' eksisterer allerede.", +"Drop this user from MySQL." => "Slet denne bruger fra MySQL", +"Offending command was: \"%s\", name: %s, password: %s" => "Fejlende kommando var: \"%s\", navn: %s, password: %s", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Din webserver er endnu ikke sat op til at tillade fil synkronisering fordi WebDAV grænsefladen virker ødelagt.", +"Please double check the installation guides." => "Dobbelttjek venligst installations vejledningerne.", "seconds ago" => "sekunder siden", "1 minute ago" => "1 minut siden", "%d minutes ago" => "%d minutter siden", diff --git a/lib/l10n/es.php b/lib/l10n/es.php index 8bbc8a8f7b..f3b03b5665 100644 --- a/lib/l10n/es.php +++ b/lib/l10n/es.php @@ -16,6 +16,8 @@ "Files" => "Archivos", "Text" => "Texto", "Images" => "Imágenes", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Su servidor web aún no está configurado adecuadamente para permitir sincronización de archivos ya que la interfaz WebDAV parece no estar funcionando.", +"Please double check the installation guides." => "Por favor, vuelva a comprobar las guías de instalación.", "seconds ago" => "hace segundos", "1 minute ago" => "hace 1 minuto", "%d minutes ago" => "hace %d minutos", diff --git a/lib/l10n/es_AR.php b/lib/l10n/es_AR.php index c32017a10f..8e3f3d5e90 100644 --- a/lib/l10n/es_AR.php +++ b/lib/l10n/es_AR.php @@ -16,6 +16,11 @@ "Files" => "Archivos", "Text" => "Texto", "Images" => "Imágenes", +"Set an admin username." => "Configurar un nombre de administrador", +"Set an admin password." => "Configurar una palabra clave de administrador", +"Specify a data folder." => "Especificar un directorio de datos", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Tu servidor web no está configurado todavía para permitir sincronización de archivos porque la interfaz WebDAV parece no funcionar.", +"Please double check the installation guides." => "Por favor, comprobá nuevamente la guía de instalación.", "seconds ago" => "hace unos segundos", "1 minute ago" => "hace 1 minuto", "%d minutes ago" => "hace %d minutos", diff --git a/lib/l10n/fi_FI.php b/lib/l10n/fi_FI.php index b8d4b13743..fb94dd8404 100644 --- a/lib/l10n/fi_FI.php +++ b/lib/l10n/fi_FI.php @@ -16,6 +16,7 @@ "Files" => "Tiedostot", "Text" => "Teksti", "Images" => "Kuvat", +"Please double check the installation guides." => "Lue tarkasti asennusohjeet.", "seconds ago" => "sekuntia sitten", "1 minute ago" => "1 minuutti sitten", "%d minutes ago" => "%d minuuttia sitten", diff --git a/lib/l10n/fr.php b/lib/l10n/fr.php index c6bf8f7f9c..852fe1ddc4 100644 --- a/lib/l10n/fr.php +++ b/lib/l10n/fr.php @@ -16,6 +16,8 @@ "Files" => "Fichiers", "Text" => "Texte", "Images" => "Images", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Votre serveur web, n'est pas correctement configuré pour permettre la synchronisation des fichiers, car l'interface WebDav ne fonctionne pas comme il faut.", +"Please double check the installation guides." => "Veuillez vous référer au guide d'installation.", "seconds ago" => "à l'instant", "1 minute ago" => "il y a 1 minute", "%d minutes ago" => "il y a %d minutes", diff --git a/lib/l10n/gl.php b/lib/l10n/gl.php index 532b3443b4..c49e8134af 100644 --- a/lib/l10n/gl.php +++ b/lib/l10n/gl.php @@ -5,18 +5,20 @@ "Users" => "Usuarios", "Apps" => "Aplicativos", "Admin" => "Administración", -"ZIP download is turned off." => "As descargas ZIP están desactivadas", +"ZIP download is turned off." => "As descargas ZIP están desactivadas.", "Files need to be downloaded one by one." => "Os ficheiros necesitan seren descargados de un en un.", "Back to Files" => "Volver aos ficheiros", "Selected files too large to generate zip file." => "Os ficheiros seleccionados son demasiado grandes como para xerar un ficheiro zip.", -"couldn't be determined" => "non puido ser determinado", +"couldn't be determined" => "non foi posíbel determinalo", "Application is not enabled" => "O aplicativo non está activado", "Authentication error" => "Produciuse un erro na autenticación", "Token expired. Please reload page." => "Testemuña caducada. Recargue a páxina.", "Files" => "Ficheiros", "Text" => "Texto", "Images" => "Imaxes", -"seconds ago" => "hai segundos", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "O seu servidor web non está aínda configurado adecuadamente para permitir a sincronización de ficheiros xa que semella que a interface WebDAV non está a funcionar.", +"Please double check the installation guides." => "Volva comprobar as guías de instalación", +"seconds ago" => "segundos atrás", "1 minute ago" => "hai 1 minuto", "%d minutes ago" => "hai %d minutos", "1 hour ago" => "Vai 1 hora", diff --git a/lib/l10n/it.php b/lib/l10n/it.php index eb404db7fb..fa4bac8ec4 100644 --- a/lib/l10n/it.php +++ b/lib/l10n/it.php @@ -16,6 +16,26 @@ "Files" => "File", "Text" => "Testo", "Images" => "Immagini", +"Set an admin username." => "Imposta un nome utente di amministrazione.", +"Set an admin password." => "Imposta una password di amministrazione.", +"Specify a data folder." => "Specifica una cartella dei dati.", +"%s enter the database username." => "%s digita il nome utente del database.", +"%s enter the database name." => "%s digita il nome del database.", +"%s you may not use dots in the database name" => "%s non dovresti utilizzare punti nel nome del database", +"%s set the database host." => "%s imposta l'host del database.", +"PostgreSQL username and/or password not valid" => "Nome utente e/o password di PostgreSQL non validi", +"You need to enter either an existing account or the administrator." => "È necessario inserire un account esistente o l'amministratore.", +"Oracle username and/or password not valid" => "Nome utente e/o password di Oracle non validi", +"MySQL username and/or password not valid" => "Nome utente e/o password di MySQL non validi", +"DB Error: \"%s\"" => "Errore DB: \"%s\"", +"Offending command was: \"%s\"" => "Il comando non consentito era: \"%s\"", +"MySQL user '%s'@'localhost' exists already." => "L'utente MySQL '%s'@'localhost' esiste già.", +"Drop this user from MySQL" => "Elimina questo utente da MySQL", +"MySQL user '%s'@'%%' already exists" => "L'utente MySQL '%s'@'%%' esiste già", +"Drop this user from MySQL." => "Elimina questo utente da MySQL.", +"Offending command was: \"%s\", name: %s, password: %s" => "Il comando non consentito era: \"%s\", nome: %s, password: %s", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Il tuo server web non è configurato correttamente per consentire la sincronizzazione dei file poiché l'interfaccia WebDAV sembra essere danneggiata.", +"Please double check the installation guides." => "Leggi attentamente le guide d'installazione.", "seconds ago" => "secondi fa", "1 minute ago" => "1 minuto fa", "%d minutes ago" => "%d minuti fa", diff --git a/lib/l10n/lv.php b/lib/l10n/lv.php index 9f2a0dea74..5ec9ddd969 100644 --- a/lib/l10n/lv.php +++ b/lib/l10n/lv.php @@ -16,6 +16,26 @@ "Files" => "Datnes", "Text" => "Teksts", "Images" => "Attēli", +"Set an admin username." => "Iestatiet administratora lietotājvārdu.", +"Set an admin password." => "Iestatiet administratora paroli.", +"Specify a data folder." => "Norādiet datu mapi.", +"%s enter the database username." => "%s ievadiet datubāzes lietotājvārdu.", +"%s enter the database name." => "%s ievadiet datubāzes nosaukumu.", +"%s you may not use dots in the database name" => "%s datubāžu nosaukumos nedrīkst izmantot punktus", +"%s set the database host." => "%s iestatiet datubāžu serveri.", +"PostgreSQL username and/or password not valid" => "Nav derīga PostgreSQL parole un/vai lietotājvārds", +"You need to enter either an existing account or the administrator." => "Jums jāievada vai nu esošs vai administratora konts.", +"Oracle username and/or password not valid" => "Nav derīga Oracle parole un/vai lietotājvārds", +"MySQL username and/or password not valid" => "Nav derīga MySQL parole un/vai lietotājvārds", +"DB Error: \"%s\"" => "DB kļūda — “%s”", +"Offending command was: \"%s\"" => "Vainīgā komanda bija “%s”", +"MySQL user '%s'@'localhost' exists already." => "MySQL lietotājs %s'@'localhost' jau eksistē.", +"Drop this user from MySQL" => "Izmest šo lietotāju no MySQL", +"MySQL user '%s'@'%%' already exists" => "MySQL lietotājs '%s'@'%%' jau eksistē", +"Drop this user from MySQL." => "Izmest šo lietotāju no MySQL.", +"Offending command was: \"%s\", name: %s, password: %s" => "Vainīgā komanda bija \"%s\", vārds: %s, parole: %s", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Jūsu serveris vēl nav pareizi iestatīts, lai ļautu sinhronizēt datnes, jo izskatās, ka WebDAV saskarne ir salauzta.", +"Please double check the installation guides." => "Lūdzu, vēlreiz pārbaudiet instalēšanas palīdzību.", "seconds ago" => "sekundes atpakaļ", "1 minute ago" => "pirms 1 minūtes", "%d minutes ago" => "pirms %d minūtēm", diff --git a/lib/l10n/nl.php b/lib/l10n/nl.php index 7ce134e362..4a357889fd 100644 --- a/lib/l10n/nl.php +++ b/lib/l10n/nl.php @@ -16,6 +16,26 @@ "Files" => "Bestanden", "Text" => "Tekst", "Images" => "Afbeeldingen", +"Set an admin username." => "Stel de gebruikersnaam van de beheerder in.", +"Set an admin password." => "Stel een beheerderswachtwoord in.", +"Specify a data folder." => "Geef een datamap op.", +"%s enter the database username." => "%s opgeven database gebruikersnaam.", +"%s enter the database name." => "%s opgeven databasenaam.", +"%s you may not use dots in the database name" => "%s er mogen geen puntjes in de databasenaam voorkomen", +"%s set the database host." => "%s instellen databaseservernaam.", +"PostgreSQL username and/or password not valid" => "PostgreSQL gebruikersnaam en/of wachtwoord ongeldig", +"You need to enter either an existing account or the administrator." => "Geef of een bestaand account op of het beheerdersaccount.", +"Oracle username and/or password not valid" => "Oracle gebruikersnaam en/of wachtwoord ongeldig", +"MySQL username and/or password not valid" => "MySQL gebruikersnaam en/of wachtwoord ongeldig", +"DB Error: \"%s\"" => "DB Fout: \"%s\"", +"Offending command was: \"%s\"" => "Onjuiste commande was: \"%s\"", +"MySQL user '%s'@'localhost' exists already." => "MySQL gebruiker '%s'@'localhost' bestaat al.", +"Drop this user from MySQL" => "Verwijder deze gebruiker uit MySQL", +"MySQL user '%s'@'%%' already exists" => "MySQL gebruiker '%s'@'%%' bestaat al", +"Drop this user from MySQL." => "Verwijder deze gebruiker uit MySQL.", +"Offending command was: \"%s\", name: %s, password: %s" => "Onjuiste commando was: \"%s\", naam: %s, wachtwoord: %s", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Uw webserver is nog niet goed ingesteld voor bestandssynchronisatie omdat de WebDAV interface verbroken lijkt.", +"Please double check the installation guides." => "Conntroleer de installatie handleiding goed.", "seconds ago" => "seconden geleden", "1 minute ago" => "1 minuut geleden", "%d minutes ago" => "%d minuten geleden", diff --git a/lib/l10n/pt_PT.php b/lib/l10n/pt_PT.php index e35bb489c4..67b8078ddf 100644 --- a/lib/l10n/pt_PT.php +++ b/lib/l10n/pt_PT.php @@ -16,6 +16,8 @@ "Files" => "Ficheiros", "Text" => "Texto", "Images" => "Imagens", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "O seu servidor web não está configurado correctamente para autorizar sincronização de ficheiros, pois o interface WebDAV parece estar com problemas.", +"Please double check the installation guides." => "Por favor verifique installation guides.", "seconds ago" => "há alguns segundos", "1 minute ago" => "há 1 minuto", "%d minutes ago" => "há %d minutos", diff --git a/lib/l10n/ru_RU.php b/lib/l10n/ru_RU.php index 03da09236e..de77056366 100644 --- a/lib/l10n/ru_RU.php +++ b/lib/l10n/ru_RU.php @@ -16,6 +16,8 @@ "Files" => "Файлы", "Text" => "Текст", "Images" => "Изображения", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Ваш веб сервер ещё не достаточно точно настроен для возможности синхронизации, т.к. похоже, что интерфейс WebDAV сломан.", +"Please double check the installation guides." => "Пожалуйста проверте дважды гиды по установке.", "seconds ago" => "секунд назад", "1 minute ago" => "1 минуту назад", "%d minutes ago" => "%d минут назад", diff --git a/lib/l10n/sk_SK.php b/lib/l10n/sk_SK.php index 81f23ffdc5..16df7f2e19 100644 --- a/lib/l10n/sk_SK.php +++ b/lib/l10n/sk_SK.php @@ -2,13 +2,13 @@ "Help" => "Pomoc", "Personal" => "Osobné", "Settings" => "Nastavenia", -"Users" => "Užívatelia", +"Users" => "Používatelia", "Apps" => "Aplikácie", -"Admin" => "Správca", +"Admin" => "Administrátor", "ZIP download is turned off." => "Sťahovanie súborov ZIP je vypnuté.", "Files need to be downloaded one by one." => "Súbory musia byť nahrávané jeden za druhým.", "Back to Files" => "Späť na súbory", -"Selected files too large to generate zip file." => "Zvolené súbory sú príliž veľké na vygenerovanie zip súboru.", +"Selected files too large to generate zip file." => "Zvolené súbory sú príliš veľké na vygenerovanie zip súboru.", "couldn't be determined" => "nedá sa zistiť", "Application is not enabled" => "Aplikácia nie je zapnutá", "Authentication error" => "Chyba autentifikácie", @@ -16,6 +16,8 @@ "Files" => "Súbory", "Text" => "Text", "Images" => "Obrázky", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Váš webový server nie je správne nastavený na synchronizáciu, pretože rozhranie WebDAV je poškodené.", +"Please double check the installation guides." => "Prosím skontrolujte inštalačnú príručku.", "seconds ago" => "pred sekundami", "1 minute ago" => "pred 1 minútou", "%d minutes ago" => "pred %d minútami", @@ -28,7 +30,7 @@ "%d months ago" => "Pred %d mesiacmi.", "last year" => "minulý rok", "years ago" => "pred rokmi", -"%s is available. Get more information" => "%s je dostupné. Získať viac informácií", +"%s is available. Get more information" => "%s je dostupné. Získať pre viac informácií", "up to date" => "aktuálny", "updates check is disabled" => "sledovanie aktualizácií je vypnuté", "Could not find category \"%s\"" => "Nemožno nájsť danú kategóriu \"%s\"" diff --git a/lib/l10n/sv.php b/lib/l10n/sv.php index 36f00636b2..63ca60e89c 100644 --- a/lib/l10n/sv.php +++ b/lib/l10n/sv.php @@ -16,6 +16,8 @@ "Files" => "Filer", "Text" => "Text", "Images" => "Bilder", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Din webbserver är inte korrekt konfigurerad för att tillåta filsynkronisering eftersom WebDAV inte verkar fungera.", +"Please double check the installation guides." => "Var god kontrollera installationsguiden.", "seconds ago" => "sekunder sedan", "1 minute ago" => "1 minut sedan", "%d minutes ago" => "%d minuter sedan", diff --git a/lib/l10n/vi.php b/lib/l10n/vi.php index 8b7242ae61..ea9660093a 100644 --- a/lib/l10n/vi.php +++ b/lib/l10n/vi.php @@ -9,6 +9,7 @@ "Files need to be downloaded one by one." => "Tập tin cần phải được tải về từng người một.", "Back to Files" => "Trở lại tập tin", "Selected files too large to generate zip file." => "Tập tin được chọn quá lớn để tạo tập tin ZIP.", +"couldn't be determined" => "không thể phát hiện được", "Application is not enabled" => "Ứng dụng không được BẬT", "Authentication error" => "Lỗi xác thực", "Token expired. Please reload page." => "Mã Token đã hết hạn. Hãy tải lại trang.", diff --git a/lib/l10n/zh_TW.php b/lib/l10n/zh_TW.php index 62ab8fedd5..91b0329e24 100644 --- a/lib/l10n/zh_TW.php +++ b/lib/l10n/zh_TW.php @@ -16,6 +16,8 @@ "Files" => "檔案", "Text" => "文字", "Images" => "圖片", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "您的網頁伺服器尚未被正確設定來進行檔案同步,因為您的 WebDAV 界面似乎無法使用。", +"Please double check the installation guides." => "請參考安裝指南。", "seconds ago" => "幾秒前", "1 minute ago" => "1 分鐘前", "%d minutes ago" => "%d 分鐘前", diff --git a/lib/mimetypes.list.php b/lib/mimetypes.list.php index fc87d011ec..86ce9c6c23 100644 --- a/lib/mimetypes.list.php +++ b/lib/mimetypes.list.php @@ -97,4 +97,6 @@ return array( 'ai' => 'application/illustrator', 'epub' => 'application/epub+zip', 'mobi' => 'application/x-mobipocket-ebook', + 'exe' => 'application', + 'msi' => 'application' ); diff --git a/lib/ocs/cloud.php b/lib/ocs/cloud.php index 179ed8f310..820d24a8e0 100644 --- a/lib/ocs/cloud.php +++ b/lib/ocs/cloud.php @@ -45,7 +45,7 @@ class OC_OCS_Cloud { if(OC_User::userExists($parameters['user'])) { // calculate the disc space $userDir = '/'.$parameters['user'].'/files'; - \OC\Files\Filesystem::init($useDir); + \OC\Files\Filesystem::init($parameters['user'], $userDir); $rootInfo = \OC\Files\Filesystem::getFileInfo(''); $sharedInfo = \OC\Files\Filesystem::getFileInfo('/Shared'); $used = $rootInfo['size'] - $sharedInfo['size']; diff --git a/lib/public/share.php b/lib/public/share.php index d46bee26dd..af2a538e25 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -704,7 +704,7 @@ class Share { $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `uid_owner`, ' .'`share_type`, `share_with`, `file_source`, `path`, `file_target`, ' .'`permissions`, `expiration`, `storage`, `*PREFIX*filecache`.`parent` as `file_parent`, ' - .'`name` `mtime`, `mimetype`, `mimepart`, `size`, `encrypted`, `etag`'; + .'`name`, `mtime`, `mimetype`, `mimepart`, `size`, `encrypted`, `etag`'; } else { $select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `item_target`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `uid_owner`, `file_source`, `path`, `file_target`, `permissions`, `stime`, `expiration`, `token`'; } diff --git a/lib/public/util.php b/lib/public/util.php index 968ca891b4..5f6ede4460 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -147,6 +147,20 @@ class Util { return \OC_Helper::linkToPublic($service); } + /** + * @brief Creates an url using a defined route + * @param $route + * @param array $parameters + * @return + * @internal param array $args with param=>value, will be appended to the returned url + * @returns the url + * + * Returns a url to the given app and file. + */ + public static function linkToRoute( $route, $parameters = array() ) { + return \OC_Helper::linkToRoute($route, $parameters); + } + /** * @brief Creates an url * @param string $app app diff --git a/lib/request.php b/lib/request.php index 1661a1406c..3c668b02c5 100755 --- a/lib/request.php +++ b/lib/request.php @@ -149,4 +149,16 @@ class OC_Request { return 'gzip'; return false; } + + /** + * @brief Check if the requester sent along an mtime + * @returns false or an mtime + */ + static public function hasModificationTime () { + if (isset($_SERVER['HTTP_X_OC_MTIME'])) { + return $_SERVER['HTTP_X_OC_MTIME']; + } else { + return false; + } + } } diff --git a/lib/router.php b/lib/router.php index 746b68c2c0..dbaca9e0d5 100644 --- a/lib/router.php +++ b/lib/router.php @@ -23,7 +23,11 @@ class OC_Router { public function __construct() { $baseUrl = OC_Helper::linkTo('', 'index.php'); - $method = $_SERVER['REQUEST_METHOD']; + if ( !OC::$CLI) { + $method = $_SERVER['REQUEST_METHOD']; + }else{ + $method = 'GET'; + } $host = OC_Request::serverHost(); $schema = OC_Request::serverProtocol(); $this->context = new RequestContext($baseUrl, $method, $host, $schema); diff --git a/lib/setup.php b/lib/setup.php index 3efad79cfa..893e0121ff 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -19,18 +19,25 @@ class DatabaseSetupException extends Exception } class OC_Setup { + + public static function getTrans(){ + return OC_L10N::get('lib'); + } + public static function install($options) { + $l = self::getTrans(); + $error = array(); $dbtype = $options['dbtype']; if(empty($options['adminlogin'])) { - $error[] = 'Set an admin username.'; + $error[] = $l->t('Set an admin username.'); } if(empty($options['adminpass'])) { - $error[] = 'Set an admin password.'; + $error[] = $l->t('Set an admin password.'); } if(empty($options['directory'])) { - $error[] = 'Specify a data folder.'; + $error[] = $l->t('Specify a data folder.'); } if($dbtype == 'mysql' or $dbtype == 'pgsql' or $dbtype == 'oci' or $dbtype == 'mssql') { //mysql and postgresql needs more config options @@ -45,16 +52,16 @@ class OC_Setup { if(empty($options['dbuser'])) { - $error[] = "$dbprettyname enter the database username."; + $error[] = $l->t("%s enter the database username.", array($dbprettyname)); } if(empty($options['dbname'])) { - $error[] = "$dbprettyname enter the database name."; + $error[] = $l->t("%s enter the database name.", array($dbprettyname)); } if(substr_count($options['dbname'], '.') >= 1) { - $error[] = "$dbprettyname you may not use dots in the database name"; + $error[] = $l->t("%s you may not use dots in the database name", array($dbprettyname)); } if($dbtype != 'oci' && empty($options['dbhost'])) { - $error[] = "$dbprettyname set the database host."; + $error[] = $l->t("%s set the database host.", array($dbprettyname)); } } @@ -118,8 +125,8 @@ class OC_Setup { self::setupPostgreSQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username); } catch (Exception $e) { $error[] = array( - 'error' => 'PostgreSQL username and/or password not valid', - 'hint' => 'You need to enter either an existing account or the administrator.' + 'error' => $l->t('PostgreSQL username and/or password not valid'), + 'hint' => $l->t('You need to enter either an existing account or the administrator.') ); return $error; } @@ -141,8 +148,8 @@ class OC_Setup { self::setupOCIDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $dbtablespace, $username); } catch (Exception $e) { $error[] = array( - 'error' => 'Oracle username and/or password not valid', - 'hint' => 'You need to enter either an existing account or the administrator.' + 'error' => $l->t('Oracle username and/or password not valid'), + 'hint' => $l->t('You need to enter either an existing account or the administrator.') ); return $error; } @@ -215,9 +222,11 @@ class OC_Setup { private static function setupMySQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $username) { //check if the database user has admin right + $l = self::getTrans(); $connection = @mysql_connect($dbhost, $dbuser, $dbpass); if(!$connection) { - throw new DatabaseSetupException('MySQL username and/or password not valid','You need to enter either an existing account or the administrator.'); + throw new DatabaseSetupException($l->t('MySQL username and/or password not valid'), + $l->t('You need to enter either an existing account or the administrator.')); } $oldUser=OC_Config::getValue('dbuser', false); @@ -264,11 +273,12 @@ class OC_Setup { private static function createMySQLDatabase($name, $user, $connection) { //we cant use OC_BD functions here because we need to connect as the administrative user. + $l = self::getTrans(); $query = "CREATE DATABASE IF NOT EXISTS `$name`"; $result = mysql_query($query, $connection); if(!$result) { - $entry='DB Error: "'.mysql_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(mysql_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } $query="GRANT ALL PRIVILEGES ON `$name` . * TO '$user'"; @@ -278,15 +288,18 @@ class OC_Setup { private static function createDBUser($name, $password, $connection) { // we need to create 2 accounts, one for global use and one for local user. if we don't specify the local one, // the anonymous user would take precedence when there is one. + $l = self::getTrans(); $query = "CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'"; $result = mysql_query($query, $connection); if (!$result) { - throw new DatabaseSetupException("MySQL user '" . "$name" . "'@'localhost' already exists","Delete this user from MySQL."); + throw new DatabaseSetupException($l->t("MySQL user '%s'@'localhost' exists already.", + array($name)), $l->t("Drop this user from MySQL", array($name))); } $query = "CREATE USER '$name'@'%' IDENTIFIED BY '$password'"; $result = mysql_query($query, $connection); if (!$result) { - throw new DatabaseSetupException("MySQL user '" . "$name" . "'@'%' already exists","Delete this user from MySQL."); + throw new DatabaseSetupException($l->t("MySQL user '%s'@'%%' already exists", array($name)), + $l->t("Drop this user from MySQL.")); } } @@ -294,12 +307,13 @@ class OC_Setup { $e_host = addslashes($dbhost); $e_user = addslashes($dbuser); $e_password = addslashes($dbpass); + $l = self::getTrans(); //check if the database user has admin rights $connection_string = "host='$e_host' dbname=postgres user='$e_user' password='$e_password'"; $connection = @pg_connect($connection_string); if(!$connection) { - throw new Exception('PostgreSQL username and/or password not valid'); + throw new Exception($l->t('PostgreSQL username and/or password not valid')); } $e_user = pg_escape_string($dbuser); //check for roles creation rights in postgresql @@ -344,7 +358,7 @@ class OC_Setup { $connection_string = "host='$e_host' dbname='$e_dbname' user='$e_user' password='$e_password'"; $connection = @pg_connect($connection_string); if(!$connection) { - throw new Exception('PostgreSQL username and/or password not valid'); + throw new Exception($l->t('PostgreSQL username and/or password not valid')); } $query = "select count(*) FROM pg_class WHERE relname='{$dbtableprefix}users' limit 1"; $result = pg_query($connection, $query); @@ -357,14 +371,16 @@ class OC_Setup { } private static function pg_createDatabase($name, $user, $connection) { + //we cant use OC_BD functions here because we need to connect as the administrative user. + $l = self::getTrans(); $e_name = pg_escape_string($name); $e_user = pg_escape_string($user); $query = "select datname from pg_database where datname = '$e_name'"; $result = pg_query($connection, $query); if(!$result) { - $entry='DB Error: "'.pg_last_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } if(! pg_fetch_row($result)) { @@ -372,8 +388,8 @@ class OC_Setup { $query = "CREATE DATABASE \"$e_name\" OWNER \"$e_user\""; $result = pg_query($connection, $query); if(!$result) { - $entry='DB Error: "'.pg_last_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } else { @@ -384,13 +400,14 @@ class OC_Setup { } private static function pg_createDBUser($name, $password, $connection) { + $l = self::getTrans(); $e_name = pg_escape_string($name); $e_password = pg_escape_string($password); $query = "select * from pg_roles where rolname='$e_name';"; $result = pg_query($connection, $query); if(!$result) { - $entry='DB Error: "'.pg_last_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } @@ -399,8 +416,8 @@ class OC_Setup { $query = "CREATE USER \"$e_name\" CREATEDB PASSWORD '$e_password';"; $result = pg_query($connection, $query); if(!$result) { - $entry='DB Error: "'.pg_last_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } } @@ -408,14 +425,15 @@ class OC_Setup { $query = "ALTER ROLE \"$e_name\" WITH PASSWORD '$e_password';"; $result = pg_query($connection, $query); if(!$result) { - $entry='DB Error: "'.pg_last_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } } } private static function setupOCIDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $dbtablespace, $username) { + $l = self::getTrans(); $e_host = addslashes($dbhost); $e_dbname = addslashes($dbname); //check if the database user has admin right @@ -427,15 +445,15 @@ class OC_Setup { $connection = @oci_connect($dbuser, $dbpass, $easy_connect_string); if(!$connection) { $e = oci_error(); - throw new Exception('Oracle username and/or password not valid'); + throw new Exception($l->t('Oracle username and/or password not valid')); } //check for roles creation rights in oracle $query="SELECT count(*) FROM user_role_privs, role_sys_privs WHERE user_role_privs.granted_role = role_sys_privs.role AND privilege = 'CREATE ROLE'"; $stmt = oci_parse($connection, $query); if (!$stmt) { - $entry='DB Error: "'.oci_last_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_last_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } $result = oci_execute($stmt); @@ -493,15 +511,15 @@ class OC_Setup { } $connection = @oci_connect($dbuser, $dbpass, $easy_connect_string); if(!$connection) { - throw new Exception('Oracle username and/or password not valid'); + throw new Exception($l->t('Oracle username and/or password not valid')); } $query = "SELECT count(*) FROM user_tables WHERE table_name = :un"; $stmt = oci_parse($connection, $query); $un = $dbtableprefix.'users'; oci_bind_by_name($stmt, ':un', $un); if (!$stmt) { - $entry='DB Error: "'.oci_last_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_last_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } $result = oci_execute($stmt); @@ -522,19 +540,19 @@ class OC_Setup { * @param resource $connection */ private static function oci_createDBUser($name, $password, $tablespace, $connection) { - + $l = self::getTrans(); $query = "SELECT * FROM all_users WHERE USERNAME = :un"; $stmt = oci_parse($connection, $query); if (!$stmt) { - $entry='DB Error: "'.oci_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } oci_bind_by_name($stmt, ':un', $name); $result = oci_execute($stmt); if(!$result) { - $entry='DB Error: "'.oci_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } @@ -544,31 +562,32 @@ class OC_Setup { $query = 'CREATE USER '.$name.' IDENTIFIED BY "'.$password.'" DEFAULT TABLESPACE '.$tablespace; //TODO set default tablespace $stmt = oci_parse($connection, $query); if (!$stmt) { - $entry='DB Error: "'.oci_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } //oci_bind_by_name($stmt, ':un', $name); $result = oci_execute($stmt); if(!$result) { - $entry='DB Error: "'.oci_error($connection).'"
'; - $entry.='Offending command was: '.$query.', name:'.$name.', password:'.$password.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s", name: %s, password: %s', + array($query, $name, $password)) . '
'; echo($entry); } } else { // change password of the existing role $query = "ALTER USER :un IDENTIFIED BY :pw"; $stmt = oci_parse($connection, $query); if (!$stmt) { - $entry='DB Error: "'.oci_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } oci_bind_by_name($stmt, ':un', $name); oci_bind_by_name($stmt, ':pw', $password); $result = oci_execute($stmt); if(!$result) { - $entry='DB Error: "'.oci_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } } @@ -576,14 +595,15 @@ class OC_Setup { $query = 'GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER, UNLIMITED TABLESPACE TO '.$name; $stmt = oci_parse($connection, $query); if (!$stmt) { - $entry='DB Error: "'.oci_error($connection).'"
'; - $entry.='Offending command was: '.$query.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s"', array($query)) . '
'; echo($entry); } $result = oci_execute($stmt); if(!$result) { - $entry='DB Error: "'.oci_error($connection).'"
'; - $entry.='Offending command was: '.$query.', name:'.$name.', password:'.$password.'
'; + $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '
'; + $entry .= $l->t('Offending command was: "%s", name: %s, password: %s', + array($query, $name, $password)) . '
'; echo($entry); } } @@ -807,4 +827,24 @@ class OC_Setup { file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/.htaccess', $content); file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/index.html', ''); } + + /** + * @brief Post installation checks + */ + public static function postSetupCheck($params) { + // setup was successful -> webdav testing now + $l = self::getTrans(); + if (OC_Util::isWebDAVWorking()) { + header("Location: ".OC::$WEBROOT.'/'); + } else { + + $error = $l->t('Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.'); + $hint = $l->t('Please double check the installation guides.', 'http://doc.owncloud.org/server/5.0/admin_manual/installation.html'); + + $tmpl = new OC_Template('', 'error', 'guest'); + $tmpl->assign('errors', array(1 => array('error' => $error, 'hint' => $hint)), false); + $tmpl->printPage(); + exit(); + } + } } diff --git a/lib/templatelayout.php b/lib/templatelayout.php index 37ece91047..345f540af0 100644 --- a/lib/templatelayout.php +++ b/lib/templatelayout.php @@ -19,6 +19,7 @@ class OC_TemplateLayout extends OC_Template { } // Add navigation entry + $this->assign( 'application', '', false ); $navigation = OC_App::getNavigation(); $this->assign( 'navigation', $navigation, false); $this->assign( 'settingsnavigation', OC_App::getSettingsNavigation(), false); @@ -28,6 +29,8 @@ class OC_TemplateLayout extends OC_Template { break; } } + $user_displayname = OC_User::getDisplayName(); + $this->assign( 'user_displayname', $user_displayname ); } else if ($renderas == 'guest') { parent::__construct('core', 'layout.guest'); } else { @@ -36,6 +39,9 @@ class OC_TemplateLayout extends OC_Template { // Add the js files $jsfiles = self::findJavascriptFiles(OC_Util::$scripts); $this->assign('jsfiles', array(), false); + if (OC_Config::getValue('installed', false)) { + $this->append( 'jsfiles', OC_Helper::linkToRoute('js_config')); + } if (!empty(OC_Util::$core_scripts)) { $this->append( 'jsfiles', OC_Helper::linkToRemoteBase('core.js', false)); } diff --git a/lib/user.php b/lib/user.php index 9dc8cca97a..f58b6673f7 100644 --- a/lib/user.php +++ b/lib/user.php @@ -445,10 +445,12 @@ class OC_User { * Check whether a specified user can change his display name */ public static function canUserChangeDisplayName($uid) { - foreach(self::$_usedBackends as $backend) { - if($backend->implementsActions(OC_USER_BACKEND_SET_DISPLAYNAME)) { - if($backend->userExists($uid)) { - return true; + if (OC_Config::getValue('allow_user_to_change_display_name', true)) { + foreach(self::$_usedBackends as $backend) { + if($backend->implementsActions(OC_USER_BACKEND_SET_DISPLAYNAME)) { + if($backend->userExists($uid)) { + return true; + } } } } @@ -485,7 +487,7 @@ class OC_User { */ public static function getHome($uid) { foreach(self::$_usedBackends as $backend) { - if($backend->implementsActions(OC_USER_BACKEND_GET_HOME)) { + if($backend->implementsActions(OC_USER_BACKEND_GET_HOME) && $backend->userExists($uid)) { $result=$backend->getHome($uid); if($result) { return $result; diff --git a/lib/util.php b/lib/util.php index faa1a549e6..81ad2df3ac 100755 --- a/lib/util.php +++ b/lib/util.php @@ -51,7 +51,7 @@ class OC_Util { mkdir( $userdirectory, 0755, true ); } //jail the user into his "home" directory - \OC\Files\Filesystem::init($user_dir); + \OC\Files\Filesystem::init($user, $user_dir); $quotaProxy=new OC_FileProxy_Quota(); $fileOperationProxy = new OC_FileProxy_FileOperations(); @@ -74,7 +74,7 @@ class OC_Util { */ public static function getVersion() { // hint: We only can count up. So the internal version number of ownCloud 4.5 will be 4.90.0. This is not visible to the user - return array(4, 91, 9); + return array(4, 91, 10); } /** @@ -516,6 +516,40 @@ class OC_Util { } } + /** + * we test if webDAV is working properly + * + * The basic assumption is that if the server returns 401/Not Authenticated for an unauthenticated PROPFIND + * the web server it self is setup properly. + * + * Why not an authenticated PROFIND and other verbs? + * - We don't have the password available + * - We have no idea about other auth methods implemented (e.g. OAuth with Bearer header) + * + */ + public static function isWebDAVWorking() { + if (!function_exists('curl_init')) { + return; + } + + $settings = array( + 'baseUri' => OC_Helper::linkToRemote('webdav'), + ); + + $client = new \Sabre_DAV_Client($settings); + + $return = true; + try { + // test PROPFIND + $client->propfind('', array('{DAV:}resourcetype')); + } catch(\Sabre_DAV_Exception_NotAuthenticated $e) { + $return = true; + } catch(\Exception $e) { + $return = false; + } + + return $return; + } /** * Check if the setlocal call doesn't work. This can happen if the right local packages are not available on the server. @@ -526,12 +560,11 @@ class OC_Util { return true; } - $result=setlocale(LC_ALL, 'en_US.UTF-8'); - if($result==false) { - return(false); - }else{ - return(true); - } + $result = setlocale(LC_ALL, 'en_US.UTF-8', 'en_US.UTF8'); + if($result == false) { + return false; + } + return true; } /** @@ -654,6 +687,9 @@ class OC_Util { curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($curl, CURLOPT_MAXREDIRS, 10); + curl_setopt($curl, CURLOPT_USERAGENT, "ownCloud Server Crawler"); if(OC_Config::getValue('proxy','')<>'') { curl_setopt($curl, CURLOPT_PROXY, OC_Config::getValue('proxy')); diff --git a/settings/admin.php b/settings/admin.php index 7cca716515..c784880309 100755 --- a/settings/admin.php +++ b/settings/admin.php @@ -31,6 +31,7 @@ $tmpl->assign('entriesremain', $entriesremain); $tmpl->assign('htaccessworking', $htaccessworking); $tmpl->assign('internetconnectionworking', OC_Util::isinternetconnectionworking()); $tmpl->assign('islocaleworking', OC_Util::issetlocaleworking()); +$tmpl->assign('isWebDavWorking', OC_Util::isWebDAVWorking()); $tmpl->assign('has_fileinfo', OC_Util::fileInfoLoaded()); $tmpl->assign('backgroundjobs_mode', OC_Appconfig::getValue('core', 'backgroundjobs_mode', 'ajax')); $tmpl->assign('shareAPIEnabled', OC_Appconfig::getValue('core', 'shareapi_enabled', 'yes')); diff --git a/settings/ajax/apps/ocs.php b/settings/ajax/apps/ocs.php index d0205a1ba3..9c5adfcfef 100644 --- a/settings/ajax/apps/ocs.php +++ b/settings/ajax/apps/ocs.php @@ -23,9 +23,9 @@ if(is_null($enabledApps)) { $apps=array(); // apps from external repo via OCS -$catagoryNames=OC_OCSClient::getCategories(); -if(is_array($catagoryNames)) { - $categories=array_keys($catagoryNames); +$categoryNames=OC_OCSClient::getCategories(); +if(is_array($categoryNames)) { + $categories=array_keys($categoryNames); $page=0; $filter='approved'; $externalApps=OC_OCSClient::getApplications($categories, $page, $filter); @@ -45,7 +45,7 @@ if(is_array($catagoryNames)) { $pre=$app['preview']; } if($app['label']=='recommended') { - $label='3rd Party App'; + $label='3rd Party'; } else { $label='Recommended'; } diff --git a/settings/ajax/changedisplayname.php b/settings/ajax/changedisplayname.php index 8f2ff865bd..6946233076 100644 --- a/settings/ajax/changedisplayname.php +++ b/settings/ajax/changedisplayname.php @@ -15,6 +15,10 @@ if(OC_SubAdmin::isUserAccessible(OC_User::getUser(), $username)) { $userstatus = 'subadmin'; } +if ($username == OC_User::getUser() && OC_User::canUserChangeDisplayName($username)) { + $userstatus = 'changeOwnDisplayName'; +} + if(is_null($userstatus)) { OC_JSON::error( array( "data" => array( "message" => $l->t("Authentication error") ))); exit(); diff --git a/settings/ajax/disableapp.php b/settings/ajax/disableapp.php index e89de928ea..466a719157 100644 --- a/settings/ajax/disableapp.php +++ b/settings/ajax/disableapp.php @@ -2,6 +2,6 @@ OC_JSON::checkAdminUser(); OCP\JSON::callCheck(); -OC_App::disable($_POST['appid']); +OC_App::disable(OC_App::cleanAppId($_POST['appid'])); OC_JSON::success(); diff --git a/settings/ajax/enableapp.php b/settings/ajax/enableapp.php index 18202dc39e..ab84aee516 100644 --- a/settings/ajax/enableapp.php +++ b/settings/ajax/enableapp.php @@ -3,7 +3,7 @@ OC_JSON::checkAdminUser(); OCP\JSON::callCheck(); -$appid = OC_App::enable($_POST['appid']); +$appid = OC_App::enable(OC_App::cleanAppId($_POST['appid'])); if($appid !== false) { OC_JSON::success(array('data' => array('appid' => $appid))); } else { diff --git a/settings/ajax/navigationdetect.php b/settings/ajax/navigationdetect.php index 93acb50dc2..7f961eb9bc 100644 --- a/settings/ajax/navigationdetect.php +++ b/settings/ajax/navigationdetect.php @@ -4,11 +4,9 @@ OC_Util::checkAdminUser(); OCP\JSON::callCheck(); $app = $_GET['app']; +$app = OC_App::cleanAppId($app); -//load the one app and see what it adds to the navigation -OC_App::loadApp($app); - -$navigation = OC_App::getNavigation(); +$navigation = OC_App::getAppNavigationEntries($app); $navIds = array(); foreach ($navigation as $nav) { diff --git a/settings/ajax/updateapp.php b/settings/ajax/updateapp.php index 77c0bbc3e3..300e864251 100644 --- a/settings/ajax/updateapp.php +++ b/settings/ajax/updateapp.php @@ -4,6 +4,7 @@ OC_JSON::checkAdminUser(); OCP\JSON::callCheck(); $appid = $_POST['appid']; +$appid = OC_App::cleanAppId($appid); $result = OC_Installer::updateApp($appid); if($result !== false) { @@ -11,7 +12,4 @@ if($result !== false) { } else { $l = OC_L10N::get('settings'); OC_JSON::error(array("data" => array( "message" => $l->t("Couldn't update app.") ))); -} - - - +} \ No newline at end of file diff --git a/settings/css/settings.css b/settings/css/settings.css index 9dd17daaeb..d18a2657c8 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -5,7 +5,15 @@ select#languageinput, select#timezone { width:15em; } input#openid, input#webdav { width:20em; } + /* PERSONAL */ + +/* Sync clients */ +.clientsbox { margin:12px; text-align:center; } +.clientsbox h1 { font-size:40px; font-weight:bold; margin:50px 0 20px; } +.clientsbox h2 { font-size:20px; font-weight:bold; margin:35px 0 10px; } +.clientsbox center { margin-top:10px; } + #passworderror { display:none; } #passwordchanged { display:none; } #displaynameerror { display:none; } @@ -75,3 +83,4 @@ table.shareAPI td { padding-bottom: 0.8em; } /* HELP */ .pressed {background-color:#DDD;} + diff --git a/settings/js/apps-custom.php b/settings/js/apps-custom.php index 9ec2a758ee..d827dfc705 100644 --- a/settings/js/apps-custom.php +++ b/settings/js/apps-custom.php @@ -23,4 +23,4 @@ foreach($combinedApps as $app) { echo("\n"); } -echo ("var appid =\"".$_GET['appid']."\";"); \ No newline at end of file +echo ("var appid =".json_encode($_GET['appid']).";"); \ No newline at end of file diff --git a/settings/l10n/ar.php b/settings/l10n/ar.php index 499c237eb7..509e7918f5 100644 --- a/settings/l10n/ar.php +++ b/settings/l10n/ar.php @@ -31,16 +31,11 @@ "Bugtracker" => "تعقب علة", "Commercial Support" => "دعم تجاري", "You have used %s of the available %s" => "تم إستهلاك %s من المتوفر %s", -"Clients" => "الزبائن", -"Download Desktop Clients" => "تحميل عملاء سطح المكتب", -"Download Android Client" => "تحميل عميل آندرويد", -"Download iOS Client" => "تحميل عميل آي أو أس", "Password" => "كلمات السر", "Your password was changed" => "لقد تم تغيير كلمة السر", "Unable to change your password" => "لم يتم تعديل كلمة السر بنجاح", "Current password" => "كلمات السر الحالية", "New password" => "كلمات سر جديدة", -"show" => "أظهر", "Change password" => "عدل كلمة السر", "Email" => "العنوان البريدي", "Your email address" => "عنوانك البريدي", diff --git a/settings/l10n/bg_BG.php b/settings/l10n/bg_BG.php index 1cbbd5321c..13ad03564d 100644 --- a/settings/l10n/bg_BG.php +++ b/settings/l10n/bg_BG.php @@ -1,11 +1,25 @@ "Възникна проблем с идентификацията", +"Language changed" => "Езикът е променен", "Invalid request" => "Невалидна заявка", "Enable" => "Включено", "Error" => "Грешка", +"__language_name__" => "__language_name__", +"Add your App" => "Добавете Ваше приложение", +"Select an App" => "Изберете приложение", "Update" => "Обновяване", +"Show First Run Wizard again" => "Покажи настройките за първоначално зареждане отново", "Password" => "Парола", +"Unable to change your password" => "Промяната на паролата не беше извършена", +"Current password" => "Текуща парола", +"New password" => "Нова парола", +"Change password" => "Промяна на паролата", "Email" => "E-mail", +"Your email address" => "Вашия email адрес", +"Language" => "Език", +"Help translate" => "Помогнете с превода", "Groups" => "Групи", +"Create" => "Създаване", +"Other" => "Други", "Delete" => "Изтриване" ); diff --git a/settings/l10n/bn_BD.php b/settings/l10n/bn_BD.php index fc90036536..78a28c07e5 100644 --- a/settings/l10n/bn_BD.php +++ b/settings/l10n/bn_BD.php @@ -31,16 +31,12 @@ "Bugtracker" => "বাগট্র্যাকার", "Commercial Support" => "বাণিজ্যিক সাপোর্ট", "You have used %s of the available %s" => "আপনি ব্যবহার করছেন %s, সুলভ %s এর মধ্যে।", -"Clients" => "ক্লায়েন্ট", -"Download Desktop Clients" => "ডেস্কটপ ক্লায়েন্ট ডাউনলোড করুন", -"Download Android Client" => "অ্যান্ড্রয়েড ক্লায়েন্ট ডাউনলোড করুন", -"Download iOS Client" => "iOS ক্লায়েন্ট ডাউনলোড করুন", +"Show First Run Wizard again" => "প্রথমবার চালানোর যাদুকর পূনরায় প্রদর্শন কর", "Password" => "কূটশব্দ", "Your password was changed" => "আপনার কূটশব্দটি পরিবর্তন করা হয়েছে ", "Unable to change your password" => "আপনার কূটশব্দটি পরিবর্তন করতে সক্ষম নয়", "Current password" => "বর্তমান কূটশব্দ", "New password" => "নতুন কূটশব্দ", -"show" => "প্রদর্শন", "Change password" => "কূটশব্দ পরিবর্তন করুন", "Email" => "ই-মেইল ", "Your email address" => "আপনার ই-মেইল ঠিকানা", diff --git a/settings/l10n/ca.php b/settings/l10n/ca.php index e5df7b4ecd..7319d05f7e 100644 --- a/settings/l10n/ca.php +++ b/settings/l10n/ca.php @@ -1,6 +1,7 @@ "No s'ha pogut carregar la llista des de l'App Store", "Authentication error" => "Error d'autenticació", +"Unable to change display name" => "No s'ha pogut canviar el nom a mostrar", "Group already exists" => "El grup ja existeix", "Unable to add group" => "No es pot afegir el grup", "Could not enable app. " => "No s'ha pogut activar l'apliació", @@ -37,18 +38,18 @@ "Bugtracker" => "Seguiment d'errors", "Commercial Support" => "Suport comercial", "You have used %s of the available %s" => "Heu utilitzat %s d'un total disponible de %s", -"Clients" => "Clients", -"Download Desktop Clients" => "Baixa clients d'escriptori", -"Download Android Client" => " Baixa el client per Android", -"Download iOS Client" => "Baixa el client per iOS", +"Get the apps to sync your files" => "Obtén les aplicacions per sincronitzar fitxers", +"Show First Run Wizard again" => "Torna a mostrar l'assistent de primera execució", "Password" => "Contrasenya", "Your password was changed" => "La seva contrasenya s'ha canviat", "Unable to change your password" => "No s'ha pogut canviar la contrasenya", "Current password" => "Contrasenya actual", "New password" => "Contrasenya nova", -"show" => "mostra", "Change password" => "Canvia la contrasenya", "Display Name" => "Nom a mostrar", +"Your display name was changed" => "El vostre nom a mostrar ha canviat", +"Unable to change your display name" => "No s'ha pogut canviar el vostre nom a mostrar", +"Change display name" => "Canvia el nom a mostrar", "Email" => "Correu electrònic", "Your email address" => "Correu electrònic", "Fill in an email address to enable password recovery" => "Ompliu el correu electrònic per activar la recuperació de contrasenya", diff --git a/settings/l10n/cs_CZ.php b/settings/l10n/cs_CZ.php index 91c7c48115..93bddac377 100644 --- a/settings/l10n/cs_CZ.php +++ b/settings/l10n/cs_CZ.php @@ -1,6 +1,7 @@ "Nelze načíst seznam z App Store", "Authentication error" => "Chyba ověření", +"Unable to change display name" => "Nelze změnit zobrazované jméno", "Group already exists" => "Skupina již existuje", "Unable to add group" => "Nelze přidat skupinu", "Could not enable app. " => "Nelze povolit aplikaci.", @@ -37,18 +38,18 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Placená podpora", "You have used %s of the available %s" => "Používáte %s z %s dostupných", -"Clients" => "Klienti", -"Download Desktop Clients" => "Stáhnout klienty pro počítač", -"Download Android Client" => "Stáhnout klienta pro android", -"Download iOS Client" => "Stáhnout klienta pro iOS", +"Get the apps to sync your files" => "Získat aplikace pro synchronizaci vašich souborů", +"Show First Run Wizard again" => "Znovu zobrazit průvodce prvním spuštěním", "Password" => "Heslo", "Your password was changed" => "Vaše heslo bylo změněno", "Unable to change your password" => "Vaše heslo nelze změnit", "Current password" => "Současné heslo", "New password" => "Nové heslo", -"show" => "zobrazit", "Change password" => "Změnit heslo", "Display Name" => "Zobrazované jméno", +"Your display name was changed" => "Vaše zobrazované jméno bylo změněno", +"Unable to change your display name" => "Nelze změnit vaše zobrazované jméno", +"Change display name" => "Změnit zobrazované jméno", "Email" => "E-mail", "Your email address" => "Vaše e-mailová adresa", "Fill in an email address to enable password recovery" => "Pro povolení změny hesla vyplňte adresu e-mailu", diff --git a/settings/l10n/da.php b/settings/l10n/da.php index 294bd91821..8e59ac318e 100644 --- a/settings/l10n/da.php +++ b/settings/l10n/da.php @@ -1,6 +1,7 @@ "Kunne ikke indlæse listen fra App Store", "Authentication error" => "Adgangsfejl", +"Unable to change display name" => "Kunne ikke skifte skærmnavn", "Group already exists" => "Gruppen findes allerede", "Unable to add group" => "Gruppen kan ikke oprettes", "Could not enable app. " => "Applikationen kunne ikke aktiveres.", @@ -13,9 +14,15 @@ "Admins can't remove themself from the admin group" => "Administratorer kan ikke fjerne dem selv fra admin gruppen", "Unable to add user to group %s" => "Brugeren kan ikke tilføjes til gruppen %s", "Unable to remove user from group %s" => "Brugeren kan ikke fjernes fra gruppen %s", +"Couldn't update app." => "Kunne ikke opdatere app'en.", +"Update to {appversion}" => "Opdatér til {appversion}", "Disable" => "Deaktiver", "Enable" => "Aktiver", +"Please wait...." => "Vent venligst...", +"Updating...." => "Opdaterer....", +"Error while updating app" => "Der opstod en fejl under app opgraderingen", "Error" => "Fejl", +"Updated" => "Opdateret", "Saving..." => "Gemmer...", "__language_name__" => "Dansk", "Add your App" => "Tilføj din App", @@ -31,17 +38,18 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Kommerciel support", "You have used %s of the available %s" => "Du har brugt %s af den tilgængelige %s", -"Clients" => "Klienter", -"Download Desktop Clients" => "Hent Desktop Klienter", -"Download Android Client" => "Hent Android Klient", -"Download iOS Client" => "Hent iOS Klient", +"Get the apps to sync your files" => "Hent applikationerne for at synkronisere dine filer", +"Show First Run Wizard again" => "Vis Første Kørsel Guiden igen", "Password" => "Kodeord", "Your password was changed" => "Din adgangskode blev ændret", "Unable to change your password" => "Ude af stand til at ændre dit kodeord", "Current password" => "Nuværende adgangskode", "New password" => "Ny adgangskode", -"show" => "vis", "Change password" => "Skift kodeord", +"Display Name" => "Skærmnavn", +"Your display name was changed" => "Dit skærmnavn blev ændret", +"Unable to change your display name" => "Kunne ikke skifte dit skærmnavn", +"Change display name" => "Skift skærmnavn", "Email" => "Email", "Your email address" => "Din emailadresse", "Fill in an email address to enable password recovery" => "Indtast en emailadresse for at kunne få påmindelse om adgangskode", @@ -51,6 +59,7 @@ "Use this address to connect to your ownCloud in your file manager" => "Brug denne adresse til at oprette forbindelse til din ownCloud i din filstyring", "Version" => "Version", "Developed by the ownCloud community, the source code is licensed under the AGPL." => "Udviklet af ownClouds community, og kildekoden er underlagt licensen AGPL.", +"Login Name" => "Loginnavn", "Groups" => "Grupper", "Create" => "Ny", "Default Storage" => "Standard opbevaring", @@ -58,6 +67,8 @@ "Other" => "Andet", "Group Admin" => "Gruppe Administrator", "Storage" => "Opbevaring", +"change display name" => "skift skærmnavn", +"set new password" => "skift kodeord", "Default" => "Standard", "Delete" => "Slet" ); diff --git a/settings/l10n/de.php b/settings/l10n/de.php index b7ace81cf5..3e08ae85ac 100644 --- a/settings/l10n/de.php +++ b/settings/l10n/de.php @@ -32,16 +32,12 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Kommerzieller Support", "You have used %s of the available %s" => "Du verwendest %s der verfügbaren %s", -"Clients" => "Clients", -"Download Desktop Clients" => "Desktop-Client herunterladen", -"Download Android Client" => "Android-Client herunterladen", -"Download iOS Client" => "iOS-Client herunterladen", +"Show First Run Wizard again" => "Erstinstallation erneut durchführen", "Password" => "Passwort", "Your password was changed" => "Dein Passwort wurde geändert.", "Unable to change your password" => "Passwort konnte nicht geändert werden", "Current password" => "Aktuelles Passwort", "New password" => "Neues Passwort", -"show" => "zeigen", "Change password" => "Passwort ändern", "Display Name" => "Anzeigename", "Email" => "E-Mail", diff --git a/settings/l10n/de_DE.php b/settings/l10n/de_DE.php index 463ccdbd15..718d3aa174 100644 --- a/settings/l10n/de_DE.php +++ b/settings/l10n/de_DE.php @@ -1,6 +1,7 @@ "Die Liste der Anwendungen im Store konnte nicht geladen werden.", "Authentication error" => "Fehler bei der Anmeldung", +"Unable to change display name" => "Das Ändern des Anzeigenamens ist nicht möglich", "Group already exists" => "Die Gruppe existiert bereits", "Unable to add group" => "Die Gruppe konnte nicht angelegt werden", "Could not enable app. " => "Die Anwendung konnte nicht aktiviert werden.", @@ -37,18 +38,17 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Kommerzieller Support", "You have used %s of the available %s" => "Sie verwenden %s der verfügbaren %s", -"Clients" => "Clients", -"Download Desktop Clients" => "Desktop-Client herunterladen", -"Download Android Client" => "Android-Client herunterladen", -"Download iOS Client" => "iOS-Client herunterladen", +"Show First Run Wizard again" => "Zeige den Einrichtungsassistenten erneut", "Password" => "Passwort", "Your password was changed" => "Ihr Passwort wurde geändert.", "Unable to change your password" => "Das Passwort konnte nicht geändert werden", "Current password" => "Aktuelles Passwort", "New password" => "Neues Passwort", -"show" => "zeigen", "Change password" => "Passwort ändern", "Display Name" => "Anzeigename", +"Your display name was changed" => "Dein Anzeigename wurde geändert", +"Unable to change your display name" => "Das Ändern deines Anzeigenamens ist nicht möglich", +"Change display name" => "Anzeigenamen ändern", "Email" => "E-Mail", "Your email address" => "Ihre E-Mail-Adresse", "Fill in an email address to enable password recovery" => "Bitte tragen Sie eine E-Mail-Adresse ein, um die Passwort-Wiederherstellung zu aktivieren.", diff --git a/settings/l10n/el.php b/settings/l10n/el.php index 925ecf695a..6493f2761b 100644 --- a/settings/l10n/el.php +++ b/settings/l10n/el.php @@ -31,16 +31,12 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Εμπορική Υποστήριξη", "You have used %s of the available %s" => "Χρησιμοποιήσατε %s από διαθέσιμα %s", -"Clients" => "Πελάτες", -"Download Desktop Clients" => "Λήψη Προγραμμάτων για Σταθερούς Υπολογιστές", -"Download Android Client" => "Λήψη Προγράμματος Android", -"Download iOS Client" => "Λήψη Προγράμματος iOS", +"Show First Run Wizard again" => "Προβολή Πρώτης Εκτέλεσης Οδηγού πάλι", "Password" => "Συνθηματικό", "Your password was changed" => "Το συνθηματικό σας έχει αλλάξει", "Unable to change your password" => "Δεν ήταν δυνατή η αλλαγή του κωδικού πρόσβασης", "Current password" => "Τρέχων συνθηματικό", "New password" => "Νέο συνθηματικό", -"show" => "εμφάνιση", "Change password" => "Αλλαγή συνθηματικού", "Email" => "Email", "Your email address" => "Η διεύθυνση ηλεκτρονικού ταχυδρομείου σας", diff --git a/settings/l10n/eo.php b/settings/l10n/eo.php index f84526c3c9..e43aaa673f 100644 --- a/settings/l10n/eo.php +++ b/settings/l10n/eo.php @@ -31,16 +31,11 @@ "Bugtracker" => "Cimoraportejo", "Commercial Support" => "Komerca subteno", "You have used %s of the available %s" => "Vi uzas %s el la haveblaj %s", -"Clients" => "Klientoj", -"Download Desktop Clients" => "Elŝuti labortablajn klientojn", -"Download Android Client" => "Elŝuti Android-klienton", -"Download iOS Client" => "Elŝuti iOS-klienton", "Password" => "Pasvorto", "Your password was changed" => "Via pasvorto ŝanĝiĝis", "Unable to change your password" => "Ne eblis ŝanĝi vian pasvorton", "Current password" => "Nuna pasvorto", "New password" => "Nova pasvorto", -"show" => "montri", "Change password" => "Ŝanĝi la pasvorton", "Email" => "Retpoŝto", "Your email address" => "Via retpoŝta adreso", diff --git a/settings/l10n/es.php b/settings/l10n/es.php index 7d1d1f7be5..da2196ce15 100644 --- a/settings/l10n/es.php +++ b/settings/l10n/es.php @@ -1,6 +1,7 @@ "Imposible cargar la lista desde el App Store", "Authentication error" => "Error de autenticación", +"Unable to change display name" => "Incapaz de cambiar el nombre", "Group already exists" => "El grupo ya existe", "Unable to add group" => "No se pudo añadir el grupo", "Could not enable app. " => "No puedo habilitar la app.", @@ -37,18 +38,17 @@ "Bugtracker" => "Rastreador de Bugs", "Commercial Support" => "Soporte Comercial", "You have used %s of the available %s" => "Ha usado %s de %s disponibles", -"Clients" => "Clientes", -"Download Desktop Clients" => "Descargar clientes de escritorio", -"Download Android Client" => "Descargar cliente para android", -"Download iOS Client" => "Descargar cliente para iOS", +"Show First Run Wizard again" => "Mostrar asistente para iniciar otra vez", "Password" => "Contraseña", "Your password was changed" => "Su contraseña ha sido cambiada", "Unable to change your password" => "No se ha podido cambiar tu contraseña", "Current password" => "Contraseña actual", "New password" => "Nueva contraseña:", -"show" => "mostrar", "Change password" => "Cambiar contraseña", "Display Name" => "Nombre a mostrar", +"Your display name was changed" => "Su nombre fue cambiado", +"Unable to change your display name" => "Incapaz de cambiar su nombre", +"Change display name" => "Cambiar nombre", "Email" => "Correo electrónico", "Your email address" => "Tu dirección de correo", "Fill in an email address to enable password recovery" => "Escribe una dirección de correo electrónico para restablecer la contraseña", diff --git a/settings/l10n/es_AR.php b/settings/l10n/es_AR.php index a33d9e8063..d925e4abde 100644 --- a/settings/l10n/es_AR.php +++ b/settings/l10n/es_AR.php @@ -1,6 +1,7 @@ "Imposible cargar la lista desde el App Store", "Authentication error" => "Error al autenticar", +"Unable to change display name" => "No fue posible cambiar el nombre mostrado", "Group already exists" => "El grupo ya existe", "Unable to add group" => "No fue posible añadir el grupo", "Could not enable app. " => "No se puede habilitar la aplicación.", @@ -13,9 +14,15 @@ "Admins can't remove themself from the admin group" => "Los administradores no se pueden quitar a ellos mismos del grupo administrador. ", "Unable to add user to group %s" => "No fue posible añadir el usuario al grupo %s", "Unable to remove user from group %s" => "No es posible eliminar al usuario del grupo %s", +"Couldn't update app." => "No se pudo actualizar la aplicación.", +"Update to {appversion}" => "Actualizado a {appversion}", "Disable" => "Desactivar", "Enable" => "Activar", +"Please wait...." => "Por favor, esperá....", +"Updating...." => "Actualizando....", +"Error while updating app" => "Error al actualizar", "Error" => "Error", +"Updated" => "Actualizado", "Saving..." => "Guardando...", "__language_name__" => "Castellano (Argentina)", "Add your App" => "Añadí tu aplicación", @@ -31,18 +38,18 @@ "Bugtracker" => "Informar errores", "Commercial Support" => "Soporte comercial", "You have used %s of the available %s" => "Usaste %s de los %s disponibles", -"Clients" => "Clientes", -"Download Desktop Clients" => "Descargar clientes de escritorio", -"Download Android Client" => "Descargar cliente de Android", -"Download iOS Client" => "Descargar cliente de iOS", +"Get the apps to sync your files" => "Obtené aplicaciones para sincronizar tus archivos", +"Show First Run Wizard again" => "Mostrar de nuevo el asistente de primera ejecución", "Password" => "Contraseña", "Your password was changed" => "Tu contraseña fue cambiada", "Unable to change your password" => "No fue posible cambiar tu contraseña", "Current password" => "Contraseña actual", "New password" => "Nueva contraseña:", -"show" => "mostrar", "Change password" => "Cambiar contraseña", "Display Name" => "Nombre a mostrar", +"Your display name was changed" => "El nombre mostrado fue cambiado", +"Unable to change your display name" => "No fue posible cambiar tu nombre", +"Change display name" => "Cambiar nombre", "Email" => "Correo electrónico", "Your email address" => "Tu dirección de e-mail", "Fill in an email address to enable password recovery" => "Escribí una dirección de correo electrónico para restablecer la contraseña", @@ -60,6 +67,8 @@ "Other" => "Otro", "Group Admin" => "Grupo Administrador", "Storage" => "Almacenamiento", +"change display name" => "Cambiar el nombre que se muestra", +"set new password" => "Configurar nueva contraseña", "Default" => "Predeterminado", "Delete" => "Borrar" ); diff --git a/settings/l10n/et_EE.php b/settings/l10n/et_EE.php index df5b707fcd..3822dc594d 100644 --- a/settings/l10n/et_EE.php +++ b/settings/l10n/et_EE.php @@ -23,13 +23,11 @@ "See application page at apps.owncloud.com" => "Vaata rakenduste lehte aadressil apps.owncloud.com", "-licensed by " => "-litsenseeritud ", "Update" => "Uuenda", -"Clients" => "Kliendid", "Password" => "Parool", "Your password was changed" => "Sinu parooli on muudetud", "Unable to change your password" => "Sa ei saa oma parooli muuta", "Current password" => "Praegune parool", "New password" => "Uus parool", -"show" => "näita", "Change password" => "Muuda parooli", "Email" => "E-post", "Your email address" => "Sinu e-posti aadress", diff --git a/settings/l10n/eu.php b/settings/l10n/eu.php index 1be2c7940b..ed675ac90e 100644 --- a/settings/l10n/eu.php +++ b/settings/l10n/eu.php @@ -31,16 +31,12 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Babes komertziala", "You have used %s of the available %s" => "Dagoeneko %s erabili duzu eskuragarri duzun %setatik", -"Clients" => "Bezeroak", -"Download Desktop Clients" => "Deskargatu mahaigainerako bezeroak", -"Download Android Client" => "Deskargatu Android bezeroa", -"Download iOS Client" => "Deskargatu iOS bezeroa", +"Show First Run Wizard again" => "Erakutsi berriz Lehenengo Aldiko Morroia", "Password" => "Pasahitza", "Your password was changed" => "Zere pasahitza aldatu da", "Unable to change your password" => "Ezin izan da zure pasahitza aldatu", "Current password" => "Uneko pasahitza", "New password" => "Pasahitz berria", -"show" => "erakutsi", "Change password" => "Aldatu pasahitza", "Display Name" => "Bistaratze Izena", "Email" => "E-Posta", diff --git a/settings/l10n/fa.php b/settings/l10n/fa.php index d4290f6dee..e901a7f521 100644 --- a/settings/l10n/fa.php +++ b/settings/l10n/fa.php @@ -1,6 +1,7 @@ "قادر به بارگذاری لیست از فروشگاه اپ نیستم", "Authentication error" => "خطا در اعتبار سنجی", +"Unable to change display name" => "امکان تغییر نام نمایشی شما وجود ندارد", "Group already exists" => "این گروه در حال حاضر موجود است", "Unable to add group" => "افزودن گروه امکان پذیر نیست", "Email saved" => "ایمیل ذخیره شد", @@ -9,6 +10,7 @@ "Unable to delete user" => "حذف کاربر امکان پذیر نیست", "Language changed" => "زبان تغییر کرد", "Invalid request" => "درخواست غیر قابل قبول", +"Admins can't remove themself from the admin group" => "مدیران نمی توانند خود را از گروه مدیریت حذف کنند", "Disable" => "غیرفعال", "Enable" => "فعال", "Please wait...." => "لطفا صبر کنید ...", @@ -22,27 +24,36 @@ "Select an App" => "یک برنامه انتخاب کنید", "See application page at apps.owncloud.com" => "صفحه این اٌپ را در apps.owncloud.com ببینید", "Update" => "به روز رسانی", +"User Documentation" => "مستندات کاربر", +"Administrator Documentation" => "مستندات مدیر", "Forum" => "انجمن", -"Clients" => "مشتریان", +"Commercial Support" => "پشتیبانی تجاری", +"Show First Run Wizard again" => "راهبری کمکی اجرای اول را دوباره نمایش بده", "Password" => "گذرواژه", "Your password was changed" => "رمز عبور شما تغییر یافت", "Unable to change your password" => "ناتوان در تغییر گذرواژه", "Current password" => "گذرواژه کنونی", "New password" => "گذرواژه جدید", -"show" => "نمایش", "Change password" => "تغییر گذر واژه", +"Display Name" => "نام نمایشی", +"Your display name was changed" => "نام نمایشی شما تغییر یافت", +"Unable to change your display name" => "امکان تغییر نام نمایشی شما وجود ندارد", +"Change display name" => "تغییر نام نمایشی", "Email" => "پست الکترونیکی", "Your email address" => "پست الکترونیکی شما", "Fill in an email address to enable password recovery" => "پست الکترونیکی را پرکنید تا بازیابی گذرواژه فعال شود", "Language" => "زبان", "Help translate" => "به ترجمه آن کمک کنید", "Version" => "نسخه", +"Login Name" => "نام کاربری", "Groups" => "گروه ها", "Create" => "ایجاد کردن", "Default Storage" => "ذخیره سازی پیش فرض", "Unlimited" => "نامحدود", "Other" => "سایر", "Storage" => "حافظه", +"change display name" => "تغییر نام نمایشی", +"set new password" => "تنظیم کلمه عبور جدید", "Default" => "پیش فرض", "Delete" => "پاک کردن" ); diff --git a/settings/l10n/fi_FI.php b/settings/l10n/fi_FI.php index 9f1feb74a1..b883659836 100644 --- a/settings/l10n/fi_FI.php +++ b/settings/l10n/fi_FI.php @@ -1,6 +1,7 @@ "Ei pystytä lataamaan listaa sovellusvarastosta (App Store)", "Authentication error" => "Todennusvirhe", +"Unable to change display name" => "Näyttönimen muuttaminen epäonnistui", "Group already exists" => "Ryhmä on jo olemassa", "Unable to add group" => "Ryhmän lisäys epäonnistui", "Could not enable app. " => "Sovelluksen käyttöönotto epäonnistui.", @@ -37,18 +38,17 @@ "Bugtracker" => "Ohjelmistovirheiden jäljitys", "Commercial Support" => "Kaupallinen tuki", "You have used %s of the available %s" => "Käytössäsi on %s/%s", -"Clients" => "Asiakkaat", -"Download Desktop Clients" => "Lataa työpöytäsovelluksia", -"Download Android Client" => "Lataa Android-sovellus", -"Download iOS Client" => "Lataa iOS-sovellus", +"Show First Run Wizard again" => "Näytä ensimmäisen käyttökerran avustaja uudelleen", "Password" => "Salasana", "Your password was changed" => "Salasanasi vaihdettiin", "Unable to change your password" => "Salasanaasi ei voitu vaihtaa", "Current password" => "Nykyinen salasana", "New password" => "Uusi salasana", -"show" => "näytä", "Change password" => "Vaihda salasana", "Display Name" => "Näyttönimi", +"Your display name was changed" => "Näyttönimesi muutettiin", +"Unable to change your display name" => "Näyttönimen muuttaminen epäonnistui", +"Change display name" => "Muuta näyttönimeä", "Email" => "Sähköposti", "Your email address" => "Sähköpostiosoitteesi", "Fill in an email address to enable password recovery" => "Anna sähköpostiosoitteesi, jotta unohdettu salasana on mahdollista palauttaa", diff --git a/settings/l10n/fr.php b/settings/l10n/fr.php index 7ada83f424..a19998e9c9 100644 --- a/settings/l10n/fr.php +++ b/settings/l10n/fr.php @@ -1,6 +1,7 @@ "Impossible de charger la liste depuis l'App Store", "Authentication error" => "Erreur d'authentification", +"Unable to change display name" => "Impossible de modifier le nom d'affichage", "Group already exists" => "Ce groupe existe déjà", "Unable to add group" => "Impossible d'ajouter le groupe", "Could not enable app. " => "Impossible d'activer l'Application", @@ -37,18 +38,17 @@ "Bugtracker" => "Suivi de bugs", "Commercial Support" => "Support commercial", "You have used %s of the available %s" => "Vous avez utilisé %s des %s disponibles", -"Clients" => "Clients", -"Download Desktop Clients" => "Télécharger le client de synchronisation pour votre ordinateur", -"Download Android Client" => "Télécharger le client Android", -"Download iOS Client" => "Télécharger le client iOS", +"Show First Run Wizard again" => "Revoir le premier lancement de l'installeur", "Password" => "Mot de passe", "Your password was changed" => "Votre mot de passe a été changé", "Unable to change your password" => "Impossible de changer votre mot de passe", "Current password" => "Mot de passe actuel", "New password" => "Nouveau mot de passe", -"show" => "Afficher", "Change password" => "Changer de mot de passe", "Display Name" => "Nom affiché", +"Your display name was changed" => "Votre nom d'affichage a bien été modifié", +"Unable to change your display name" => "Impossible de modifier votre nom d'affichage", +"Change display name" => "Changer le nom affiché", "Email" => "E-mail", "Your email address" => "Votre adresse e-mail", "Fill in an email address to enable password recovery" => "Entrez votre adresse e-mail pour permettre la réinitialisation du mot de passe", diff --git a/settings/l10n/gl.php b/settings/l10n/gl.php index 997ac53de7..52a5cd6388 100644 --- a/settings/l10n/gl.php +++ b/settings/l10n/gl.php @@ -31,16 +31,12 @@ "Bugtracker" => "Seguemento de fallos", "Commercial Support" => "Asistencia comercial", "You have used %s of the available %s" => "Te en uso %s do total dispoñíbel de %s", -"Clients" => "Clientes", -"Download Desktop Clients" => "Descargar clientes para escritorio", -"Download Android Client" => "Descargar clientes para Android", -"Download iOS Client" => "Descargar clientes ra iOS", +"Show First Run Wizard again" => "Amosar o axudante da primeira execución outra vez", "Password" => "Contrasinal", "Your password was changed" => "O seu contrasinal foi cambiado", "Unable to change your password" => "Non é posíbel cambiar o seu contrasinal", "Current password" => "Contrasinal actual", "New password" => "Novo contrasinal", -"show" => "amosar", "Change password" => "Cambiar o contrasinal", "Email" => "Correo", "Your email address" => "O seu enderezo de correo", diff --git a/settings/l10n/he.php b/settings/l10n/he.php index be776d4fa2..40f8210087 100644 --- a/settings/l10n/he.php +++ b/settings/l10n/he.php @@ -30,16 +30,11 @@ "Forum" => "פורום", "Commercial Support" => "תמיכה בתשלום", "You have used %s of the available %s" => "השתמשת ב־%s מתוך %s הזמינים לך", -"Clients" => "לקוחות", -"Download Desktop Clients" => "הורד לתוכנה למחשב", -"Download Android Client" => "הורד תוכנה לאנדרואיד", -"Download iOS Client" => "הורד תוכנה לiOS", "Password" => "ססמה", "Your password was changed" => "הססמה שלך הוחלפה", "Unable to change your password" => "לא ניתן לשנות את הססמה שלך", "Current password" => "ססמה נוכחית", "New password" => "ססמה חדשה", -"show" => "הצגה", "Change password" => "שינוי ססמה", "Email" => "דוא״ל", "Your email address" => "כתובת הדוא״ל שלך", diff --git a/settings/l10n/hr.php b/settings/l10n/hr.php index f55cdcc687..32175bbb74 100644 --- a/settings/l10n/hr.php +++ b/settings/l10n/hr.php @@ -13,12 +13,10 @@ "Add your App" => "Dodajte vašu aplikaciju", "Select an App" => "Odaberite Aplikaciju", "See application page at apps.owncloud.com" => "Pogledajte stranicu s aplikacijama na apps.owncloud.com", -"Clients" => "Klijenti", "Password" => "Lozinka", "Unable to change your password" => "Nemoguće promijeniti lozinku", "Current password" => "Trenutna lozinka", "New password" => "Nova lozinka", -"show" => "prikaz", "Change password" => "Izmjena lozinke", "Email" => "e-mail adresa", "Your email address" => "Vaša e-mail adresa", diff --git a/settings/l10n/hu_HU.php b/settings/l10n/hu_HU.php index 23d6c3f5f7..ae1a179b58 100644 --- a/settings/l10n/hu_HU.php +++ b/settings/l10n/hu_HU.php @@ -31,16 +31,11 @@ "Bugtracker" => "Hibabejelentések", "Commercial Support" => "Megvásárolható támogatás", "You have used %s of the available %s" => "Az Ön tárterület-felhasználása jelenleg: %s. Maximálisan ennyi áll rendelkezésére: %s", -"Clients" => "Kliensek", -"Download Desktop Clients" => "Desktop kliensprogramok letöltése", -"Download Android Client" => "Android kliens letöltése", -"Download iOS Client" => "iOS kliens letöltése", "Password" => "Jelszó", "Your password was changed" => "A jelszava megváltozott", "Unable to change your password" => "A jelszó nem változtatható meg", "Current password" => "A jelenlegi jelszó", "New password" => "Az új jelszó", -"show" => "lássam", "Change password" => "A jelszó megváltoztatása", "Email" => "Email", "Your email address" => "Az Ön email címe", diff --git a/settings/l10n/ia.php b/settings/l10n/ia.php index fe26eea5e2..502dbfefab 100644 --- a/settings/l10n/ia.php +++ b/settings/l10n/ia.php @@ -5,12 +5,10 @@ "Add your App" => "Adder tu application", "Select an App" => "Selectionar un app", "Update" => "Actualisar", -"Clients" => "Clientes", "Password" => "Contrasigno", "Unable to change your password" => "Non pote cambiar tu contrasigno", "Current password" => "Contrasigno currente", "New password" => "Nove contrasigno", -"show" => "monstrar", "Change password" => "Cambiar contrasigno", "Email" => "E-posta", "Your email address" => "Tu adresse de e-posta", diff --git a/settings/l10n/id.php b/settings/l10n/id.php index 181450e58b..8b0b280796 100644 --- a/settings/l10n/id.php +++ b/settings/l10n/id.php @@ -13,12 +13,10 @@ "Select an App" => "Pilih satu aplikasi", "See application page at apps.owncloud.com" => "Lihat halaman aplikasi di apps.owncloud.com", "Update" => "Pembaruan", -"Clients" => "Klien", "Password" => "Password", "Unable to change your password" => "Tidak dapat merubah password anda", "Current password" => "Password saat ini", "New password" => "kata kunci baru", -"show" => "perlihatkan", "Change password" => "Rubah password", "Email" => "Email", "Your email address" => "Alamat email anda", diff --git a/settings/l10n/is.php b/settings/l10n/is.php index 75f46a0192..fffd8124d3 100644 --- a/settings/l10n/is.php +++ b/settings/l10n/is.php @@ -31,16 +31,11 @@ "Bugtracker" => "Villubókhald", "Commercial Support" => "Borgaður stuðningur", "You have used %s of the available %s" => "Þú hefur notað %s af tiltæku %s", -"Clients" => "Notendahugbúnaður", -"Download Desktop Clients" => "Hlaða niður notendahugbúnaði", -"Download Android Client" => "Hlaða niður Andoid hugbúnaði", -"Download iOS Client" => "Hlaða niður iOS hugbúnaði", "Password" => "Lykilorð", "Your password was changed" => "Lykilorði þínu hefur verið breytt", "Unable to change your password" => "Ekki tókst að breyta lykilorðinu þínu", "Current password" => "Núverandi lykilorð", "New password" => "Nýtt lykilorð", -"show" => "sýna", "Change password" => "Breyta lykilorði", "Email" => "Netfang", "Your email address" => "Netfangið þitt", diff --git a/settings/l10n/it.php b/settings/l10n/it.php index 2af8615508..843b636d76 100644 --- a/settings/l10n/it.php +++ b/settings/l10n/it.php @@ -1,6 +1,7 @@ "Impossibile caricare l'elenco dall'App Store", "Authentication error" => "Errore di autenticazione", +"Unable to change display name" => "Impossibile cambiare il nome visualizzato", "Group already exists" => "Il gruppo esiste già", "Unable to add group" => "Impossibile aggiungere il gruppo", "Could not enable app. " => "Impossibile abilitare l'applicazione.", @@ -37,18 +38,18 @@ "Bugtracker" => "Sistema di tracciamento bug", "Commercial Support" => "Supporto commerciale", "You have used %s of the available %s" => "Hai utilizzato %s dei %s disponibili", -"Clients" => "Client", -"Download Desktop Clients" => "Scarica client desktop", -"Download Android Client" => "Scarica client Android", -"Download iOS Client" => "Scarica client iOS", +"Get the apps to sync your files" => "Scarica le applicazioni per sincronizzare i tuoi file", +"Show First Run Wizard again" => "Mostra nuovamente la procedura di primo avvio", "Password" => "Password", "Your password was changed" => "La tua password è cambiata", "Unable to change your password" => "Modifica password non riuscita", "Current password" => "Password attuale", "New password" => "Nuova password", -"show" => "mostra", "Change password" => "Modifica password", "Display Name" => "Nome visualizzato", +"Your display name was changed" => "Il tuo nome visualizzato è stato cambiato", +"Unable to change your display name" => "Impossibile cambiare il tuo nome visualizzato", +"Change display name" => "Cambia il nome visualizzato", "Email" => "Email", "Your email address" => "Il tuo indirizzo email", "Fill in an email address to enable password recovery" => "Inserisci il tuo indirizzo email per abilitare il recupero della password", diff --git a/settings/l10n/ja_JP.php b/settings/l10n/ja_JP.php index 2e96739ac2..0f6311f7ba 100644 --- a/settings/l10n/ja_JP.php +++ b/settings/l10n/ja_JP.php @@ -1,6 +1,7 @@ "アプリストアからリストをロードできません", "Authentication error" => "認証エラー", +"Unable to change display name" => "表示名を変更できません", "Group already exists" => "グループは既に存在しています", "Unable to add group" => "グループを追加できません", "Could not enable app. " => "アプリを有効にできませんでした。", @@ -37,18 +38,17 @@ "Bugtracker" => "バグトラッカー", "Commercial Support" => "コマーシャルサポート", "You have used %s of the available %s" => "現在、%s / %s を利用しています", -"Clients" => "顧客", -"Download Desktop Clients" => "デスクトップクライアントをダウンロード", -"Download Android Client" => "Androidクライアントをダウンロード", -"Download iOS Client" => "iOSクライアントをダウンロード", +"Show First Run Wizard again" => "初回実行ウィザードを再度表示する", "Password" => "パスワード", "Your password was changed" => "パスワードを変更しました", "Unable to change your password" => "パスワードを変更することができません", "Current password" => "現在のパスワード", "New password" => "新しいパスワード", -"show" => "表示", "Change password" => "パスワードを変更", "Display Name" => "表示名", +"Your display name was changed" => "あなたの表示名を変更しました", +"Unable to change your display name" => "あなたの表示名を変更できません", +"Change display name" => "表示名を変更", "Email" => "Email", "Your email address" => "あなたのメールアドレス", "Fill in an email address to enable password recovery" => "※パスワード回復を有効にするにはメールアドレスの入力が必要です", diff --git a/settings/l10n/ka_GE.php b/settings/l10n/ka_GE.php index 0fc42d4272..5f33972a80 100644 --- a/settings/l10n/ka_GE.php +++ b/settings/l10n/ka_GE.php @@ -23,13 +23,11 @@ "See application page at apps.owncloud.com" => "ნახეთ აპლიკაციის გვერდი apps.owncloud.com –ზე", "-licensed by " => "-ლიცენსირებულია ", "Update" => "განახლება", -"Clients" => "კლიენტები", "Password" => "პაროლი", "Your password was changed" => "თქვენი პაროლი შეიცვალა", "Unable to change your password" => "თქვენი პაროლი არ შეიცვალა", "Current password" => "მიმდინარე პაროლი", "New password" => "ახალი პაროლი", -"show" => "გამოაჩინე", "Change password" => "პაროლის შეცვლა", "Email" => "იმეილი", "Your email address" => "თქვენი იმეილ მისამართი", diff --git a/settings/l10n/ko.php b/settings/l10n/ko.php index a542b35fee..115fb55e6b 100644 --- a/settings/l10n/ko.php +++ b/settings/l10n/ko.php @@ -31,16 +31,12 @@ "Bugtracker" => "버그 트래커", "Commercial Support" => "상업용 지원", "You have used %s of the available %s" => "현재 공간 %s/%s을(를) 사용 중입니다", -"Clients" => "클라이언트", -"Download Desktop Clients" => "데스크톱 클라이언트 다운로드", -"Download Android Client" => "안드로이드 클라이언트 다운로드", -"Download iOS Client" => "iOS 클라이언트 다운로드", +"Show First Run Wizard again" => "첫 실행 마법사 다시 보이기", "Password" => "암호", "Your password was changed" => "암호가 변경되었습니다", "Unable to change your password" => "암호를 변경할 수 없음", "Current password" => "현재 암호", "New password" => "새 암호", -"show" => "보이기", "Change password" => "암호 변경", "Display Name" => "표시 이름", "Email" => "이메일", diff --git a/settings/l10n/lb.php b/settings/l10n/lb.php index 5ef88f2789..eec8994913 100644 --- a/settings/l10n/lb.php +++ b/settings/l10n/lb.php @@ -13,12 +13,10 @@ "Add your App" => "Setz deng App bei", "Select an App" => "Wiel eng Applikatioun aus", "See application page at apps.owncloud.com" => "Kuck dir d'Applicatioun's Säit op apps.owncloud.com un", -"Clients" => "Clienten", "Password" => "Passwuert", "Unable to change your password" => "Konnt däin Passwuert net änneren", "Current password" => "Momentan 't Passwuert", "New password" => "Neit Passwuert", -"show" => "weisen", "Change password" => "Passwuert änneren", "Email" => "Email", "Your email address" => "Deng Email Adress", diff --git a/settings/l10n/lt_LT.php b/settings/l10n/lt_LT.php index e514e7f775..d86b4eff9b 100644 --- a/settings/l10n/lt_LT.php +++ b/settings/l10n/lt_LT.php @@ -16,13 +16,11 @@ "Select an App" => "Pasirinkite programą", "-licensed by " => "- autorius", "Update" => "Atnaujinti", -"Clients" => "Klientai", "Password" => "Slaptažodis", "Your password was changed" => "Jūsų slaptažodis buvo pakeistas", "Unable to change your password" => "Neįmanoma pakeisti slaptažodžio", "Current password" => "Dabartinis slaptažodis", "New password" => "Naujas slaptažodis", -"show" => "rodyti", "Change password" => "Pakeisti slaptažodį", "Email" => "El. paštas", "Your email address" => "Jūsų el. pašto adresas", diff --git a/settings/l10n/lv.php b/settings/l10n/lv.php index f05ee1d749..1224c7c04b 100644 --- a/settings/l10n/lv.php +++ b/settings/l10n/lv.php @@ -1,6 +1,7 @@ "Nevar lejupielādēt sarakstu no lietotņu veikala", "Authentication error" => "Autentifikācijas kļūda", +"Unable to change display name" => "Nevarēja mainīt redzamo vārdu", "Group already exists" => "Grupa jau eksistē", "Unable to add group" => "Nevar pievienot grupu", "Could not enable app. " => "Nevarēja aktivēt lietotni.", @@ -37,18 +38,18 @@ "Bugtracker" => "Kļūdu sekotājs", "Commercial Support" => "Komerciālais atbalsts", "You have used %s of the available %s" => "Jūs lietojat %s no pieejamajiem %s", -"Clients" => "Klienti", -"Download Desktop Clients" => "Lejupielādēt darbvirsmas klientus", -"Download Android Client" => "Lejupielādēt Android klientu", -"Download iOS Client" => "Lejupielādēt iOS klientu", +"Get the apps to sync your files" => "Saņem lietotnes, lai sinhronizētu savas datnes", +"Show First Run Wizard again" => "Vēlreiz rādīt pirmās palaišanas vedni", "Password" => "Parole", "Your password was changed" => "Jūru parole tika nomainīta", "Unable to change your password" => "Nevar nomainīt jūsu paroli", "Current password" => "Pašreizējā parole", "New password" => "Jauna parole", -"show" => "parādīt", "Change password" => "Mainīt paroli", "Display Name" => "Redzamais vārds", +"Your display name was changed" => "Jūsu redzamais vārds tika mainīts", +"Unable to change your display name" => "Nevarēja mainīt jūsu redzamo vārdu", +"Change display name" => "Mainīt redzamo vārdu", "Email" => "E-pasts", "Your email address" => "Jūsu e-pasta adrese", "Fill in an email address to enable password recovery" => "Ievadiet epasta adresi, lai vēlāk varētu atgūt paroli, ja būs nepieciešamība", diff --git a/settings/l10n/mk.php b/settings/l10n/mk.php index aba63bc057..6307a2a1af 100644 --- a/settings/l10n/mk.php +++ b/settings/l10n/mk.php @@ -30,16 +30,11 @@ "Forum" => "Форум", "Commercial Support" => "Комерцијална подршка", "You have used %s of the available %s" => "Имате искористено %s од достапните %s", -"Clients" => "Клиенти", -"Download Desktop Clients" => "Преземи клиенти за десктоп", -"Download Android Client" => "Преземи клиент за Андроид", -"Download iOS Client" => "Преземи iOS клиент", "Password" => "Лозинка", "Your password was changed" => "Вашата лозинка беше променета.", "Unable to change your password" => "Вашата лозинка неможе да се смени", "Current password" => "Моментална лозинка", "New password" => "Нова лозинка", -"show" => "прикажи", "Change password" => "Смени лозинка", "Email" => "Е-пошта", "Your email address" => "Вашата адреса за е-пошта", diff --git a/settings/l10n/ms_MY.php b/settings/l10n/ms_MY.php index 95c1d01e3b..c573979d87 100644 --- a/settings/l10n/ms_MY.php +++ b/settings/l10n/ms_MY.php @@ -13,12 +13,10 @@ "Select an App" => "Pilih aplikasi", "See application page at apps.owncloud.com" => "Lihat halaman applikasi di apps.owncloud.com", "Update" => "Kemaskini", -"Clients" => "klien", "Password" => "Kata laluan ", "Unable to change your password" => "Gagal mengubah kata laluan anda ", "Current password" => "Kata laluan semasa", "New password" => "Kata laluan baru", -"show" => "Papar", "Change password" => "Ubah kata laluan", "Email" => "Emel", "Your email address" => "Alamat emel anda", diff --git a/settings/l10n/nb_NO.php b/settings/l10n/nb_NO.php index caf0a55186..96831eb2d6 100644 --- a/settings/l10n/nb_NO.php +++ b/settings/l10n/nb_NO.php @@ -26,16 +26,11 @@ "Administrator Documentation" => "Administratordokumentasjon", "Commercial Support" => "Kommersiell støtte", "You have used %s of the available %s" => "Du har brukt %s av tilgjengelig %s", -"Clients" => "Klienter", -"Download Desktop Clients" => "Last ned skrivebordsklienter", -"Download Android Client" => "Last ned Android-klient", -"Download iOS Client" => "Last ned iOS-klient", "Password" => "Passord", "Your password was changed" => "Passord har blitt endret", "Unable to change your password" => "Kunne ikke endre passordet ditt", "Current password" => "Nåværende passord", "New password" => "Nytt passord", -"show" => "vis", "Change password" => "Endre passord", "Email" => "E-post", "Your email address" => "Din e-postadresse", diff --git a/settings/l10n/nl.php b/settings/l10n/nl.php index 3488536821..f52728dfd1 100644 --- a/settings/l10n/nl.php +++ b/settings/l10n/nl.php @@ -1,6 +1,7 @@ "Kan de lijst niet van de App store laden", "Authentication error" => "Authenticatie fout", +"Unable to change display name" => "Kon de weergavenaam niet wijzigen", "Group already exists" => "Groep bestaat al", "Unable to add group" => "Niet in staat om groep toe te voegen", "Could not enable app. " => "Kan de app. niet activeren", @@ -18,6 +19,7 @@ "Disable" => "Uitschakelen", "Enable" => "Inschakelen", "Please wait...." => "Even geduld aub....", +"Updating...." => "Bijwerken....", "Error while updating app" => "Fout bij bijwerken app", "Error" => "Fout", "Updated" => "Bijgewerkt", @@ -36,18 +38,18 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Commerciële ondersteuning", "You have used %s of the available %s" => "U heeft %s van de %s beschikbaren gebruikt", -"Clients" => "Klanten", -"Download Desktop Clients" => "Download Desktop Clients", -"Download Android Client" => "Download Android Client", -"Download iOS Client" => "Download iOS Client", +"Get the apps to sync your files" => "Download de apps om bestanden te synchen", +"Show First Run Wizard again" => "Toon de Eerste start Wizard opnieuw", "Password" => "Wachtwoord", "Your password was changed" => "Je wachtwoord is veranderd", "Unable to change your password" => "Niet in staat om uw wachtwoord te wijzigen", "Current password" => "Huidig wachtwoord", "New password" => "Nieuw wachtwoord", -"show" => "weergeven", "Change password" => "Wijzig wachtwoord", "Display Name" => "Weergavenaam", +"Your display name was changed" => "Uw weergavenaam is gewijzigd", +"Unable to change your display name" => "Kon de weergavenaam niet wijzigen", +"Change display name" => "Wijzig weergavenaam", "Email" => "E-mailadres", "Your email address" => "Uw e-mailadres", "Fill in an email address to enable password recovery" => "Vul een e-mailadres in om wachtwoord reset uit te kunnen voeren", diff --git a/settings/l10n/nn_NO.php b/settings/l10n/nn_NO.php index 8faa2d02ca..c3e1c83c99 100644 --- a/settings/l10n/nn_NO.php +++ b/settings/l10n/nn_NO.php @@ -11,12 +11,10 @@ "__language_name__" => "Nynorsk", "Select an App" => "Vel ein applikasjon", "Update" => "Oppdater", -"Clients" => "Klientar", "Password" => "Passord", "Unable to change your password" => "Klarte ikkje å endra passordet", "Current password" => "Passord", "New password" => "Nytt passord", -"show" => "vis", "Change password" => "Endra passord", "Email" => "Epost", "Your email address" => "Din epost addresse", diff --git a/settings/l10n/oc.php b/settings/l10n/oc.php index 9accb3acba..0e09acbd18 100644 --- a/settings/l10n/oc.php +++ b/settings/l10n/oc.php @@ -21,13 +21,11 @@ "Select an App" => "Selecciona una applicacion", "See application page at apps.owncloud.com" => "Agacha la pagina d'applications en cò de apps.owncloud.com", "-licensed by " => "-licençiat per ", -"Clients" => "Practica", "Password" => "Senhal", "Your password was changed" => "Ton senhal a cambiat", "Unable to change your password" => "Pas possible de cambiar ton senhal", "Current password" => "Senhal en cors", "New password" => "Senhal novèl", -"show" => "mòstra", "Change password" => "Cambia lo senhal", "Email" => "Corrièl", "Your email address" => "Ton adreiça de corrièl", diff --git a/settings/l10n/pl.php b/settings/l10n/pl.php index a06b39e7bd..8bccf0132d 100644 --- a/settings/l10n/pl.php +++ b/settings/l10n/pl.php @@ -13,9 +13,15 @@ "Admins can't remove themself from the admin group" => "Administratorzy nie mogą usunąć się sami z grupy administratorów.", "Unable to add user to group %s" => "Nie można dodać użytkownika do grupy %s", "Unable to remove user from group %s" => "Nie można usunąć użytkownika z grupy %s", +"Couldn't update app." => "Nie można uaktualnić aplikacji", +"Update to {appversion}" => "Aktualizacja do {appversion}", "Disable" => "Wyłącz", "Enable" => "Włącz", +"Please wait...." => "Prosze czekać...", +"Updating...." => "Aktualizacja w toku...", +"Error while updating app" => "Błąd podczas aktualizacji aplikacji", "Error" => "Błąd", +"Updated" => "Zaktualizowano", "Saving..." => "Zapisywanie...", "__language_name__" => "Polski", "Add your App" => "Dodaj aplikacje", @@ -31,17 +37,15 @@ "Bugtracker" => "Zgłaszanie błędów", "Commercial Support" => "Wsparcie komercyjne", "You have used %s of the available %s" => "Korzystasz z %s z dostępnych %s", -"Clients" => "Klienci", -"Download Desktop Clients" => "Pobierz klienta dla Komputera", -"Download Android Client" => "Pobierz klienta dla Androida", -"Download iOS Client" => "Pobierz klienta dla iOS", "Password" => "Hasło", "Your password was changed" => "Twoje hasło zostało zmienione", "Unable to change your password" => "Nie można zmienić hasła", "Current password" => "Bieżące hasło", "New password" => "Nowe hasło", -"show" => "Wyświetlanie", "Change password" => "Zmień hasło", +"Display Name" => "Wyświetlana nazwa", +"Unable to change your display name" => "Nie można zmianić wyświetlanej nazwy", +"Change display name" => "Zmiana wyświetlanej nazwy", "Email" => "E-mail", "Your email address" => "Adres e-mail użytkownika", "Fill in an email address to enable password recovery" => "Proszę wprowadzić adres e-mail, aby uzyskać możliwość odzyskania hasła", @@ -51,6 +55,7 @@ "Use this address to connect to your ownCloud in your file manager" => "Użyj tego adresu aby podłączyć zasób ownCloud w menedżerze plików", "Version" => "Wersja", "Developed by the ownCloud community, the source code is licensed under the AGPL." => "Stworzone przez społeczność ownCloud, the kod źródłowy na licencji AGPL.", +"Login Name" => "Login", "Groups" => "Grupy", "Create" => "Utwórz", "Default Storage" => "Domyślny magazyn", @@ -58,6 +63,7 @@ "Other" => "Inne", "Group Admin" => "Grupa Admin", "Storage" => "Magazyn", +"set new password" => "zmień hasło", "Default" => "Domyślny", "Delete" => "Usuń" ); diff --git a/settings/l10n/pt_BR.php b/settings/l10n/pt_BR.php index 5a8281446d..7a290ff040 100644 --- a/settings/l10n/pt_BR.php +++ b/settings/l10n/pt_BR.php @@ -30,16 +30,12 @@ "Forum" => "Fórum", "Commercial Support" => "Suporte Comercial", "You have used %s of the available %s" => "Você usou %s do seu espaço de %s", -"Clients" => "Clientes", -"Download Desktop Clients" => "Baixar Clientes Desktop", -"Download Android Client" => "Baixar Cliente Android", -"Download iOS Client" => "Baixar Cliente iOS", +"Show First Run Wizard again" => "Mostrar este Assistente de novo", "Password" => "Senha", "Your password was changed" => "Sua senha foi alterada", "Unable to change your password" => "Não é possivel alterar a sua senha", "Current password" => "Senha atual", "New password" => "Nova senha", -"show" => "mostrar", "Change password" => "Alterar senha", "Display Name" => "Nome de Exibição", "Email" => "E-mail", diff --git a/settings/l10n/pt_PT.php b/settings/l10n/pt_PT.php index 03982fd5e8..9b6d79fb16 100644 --- a/settings/l10n/pt_PT.php +++ b/settings/l10n/pt_PT.php @@ -1,6 +1,7 @@ "Incapaz de carregar a lista da App Store", "Authentication error" => "Erro de autenticação", +"Unable to change display name" => "Não foi possível alterar o nome", "Group already exists" => "O grupo já existe", "Unable to add group" => "Impossível acrescentar o grupo", "Could not enable app. " => "Não foi possível activar a app.", @@ -37,18 +38,17 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Suporte Comercial", "You have used %s of the available %s" => "Usou %s do disponivel %s", -"Clients" => "Clientes", -"Download Desktop Clients" => "Transferir os clientes de sincronização", -"Download Android Client" => "Transferir o cliente android", -"Download iOS Client" => "Transferir o cliente iOS", +"Show First Run Wizard again" => "Mostrar novamente Wizard de Arranque Inicial", "Password" => "Palavra-chave", "Your password was changed" => "A sua palavra-passe foi alterada", "Unable to change your password" => "Não foi possivel alterar a sua palavra-chave", "Current password" => "Palavra-chave actual", "New password" => "Nova palavra-chave", -"show" => "mostrar", "Change password" => "Alterar palavra-chave", "Display Name" => "Nome público", +"Your display name was changed" => "O seu nome foi alterado", +"Unable to change your display name" => "Não foi possível alterar o seu nome", +"Change display name" => "Alterar nome", "Email" => "endereço de email", "Your email address" => "O seu endereço de email", "Fill in an email address to enable password recovery" => "Preencha com o seu endereço de email para ativar a recuperação da palavra-chave", diff --git a/settings/l10n/ro.php b/settings/l10n/ro.php index dcc55a843d..249395f33f 100644 --- a/settings/l10n/ro.php +++ b/settings/l10n/ro.php @@ -31,16 +31,11 @@ "Bugtracker" => "Urmărire bug-uri", "Commercial Support" => "Suport comercial", "You have used %s of the available %s" => "Ați utilizat %s din %s disponibile", -"Clients" => "Clienți", -"Download Desktop Clients" => "Descarcă client desktop", -"Download Android Client" => "Descarcă client Android", -"Download iOS Client" => "Descarcă client iOS", "Password" => "Parolă", "Your password was changed" => "Parola a fost modificată", "Unable to change your password" => "Imposibil de-ați schimbat parola", "Current password" => "Parola curentă", "New password" => "Noua parolă", -"show" => "afișează", "Change password" => "Schimbă parola", "Email" => "Email", "Your email address" => "Adresa ta de email", diff --git a/settings/l10n/ru.php b/settings/l10n/ru.php index 7f3a114df5..e3be548543 100644 --- a/settings/l10n/ru.php +++ b/settings/l10n/ru.php @@ -1,6 +1,7 @@ "Загрузка из App Store запрещена", "Authentication error" => "Ошибка авторизации", +"Unable to change display name" => "Невозможно изменить отображаемое имя", "Group already exists" => "Группа уже существует", "Unable to add group" => "Невозможно добавить группу", "Could not enable app. " => "Не удалось включить приложение.", @@ -14,10 +15,12 @@ "Unable to add user to group %s" => "Невозможно добавить пользователя в группу %s", "Unable to remove user from group %s" => "Невозможно удалить пользователя из группы %s", "Couldn't update app." => "Невозможно обновить приложение", +"Update to {appversion}" => "Обновить до {версия приложения}", "Disable" => "Выключить", "Enable" => "Включить", "Please wait...." => "Повремени...", "Updating...." => "Обновление...", +"Error while updating app" => "Ошибка в процессе обновления приложения", "Error" => "Ошибка", "Updated" => "Обновлено", "Saving..." => "Сохранение...", @@ -35,18 +38,18 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Коммерческая поддержка", "You have used %s of the available %s" => "Вы использовали %s из доступных %s", -"Clients" => "Клиенты", -"Download Desktop Clients" => "Загрузка приложений для компьютера", -"Download Android Client" => "Загрузка Android-приложения", -"Download iOS Client" => "Загрузка iOS-приложения", +"Get the apps to sync your files" => "Получить приложения для синхронизации ваших файлов", +"Show First Run Wizard again" => "Показать помощник настройки", "Password" => "Пароль", "Your password was changed" => "Ваш пароль изменён", "Unable to change your password" => "Невозможно сменить пароль", "Current password" => "Текущий пароль", "New password" => "Новый пароль", -"show" => "показать", "Change password" => "Сменить пароль", "Display Name" => "Отображаемое имя", +"Your display name was changed" => "Ваше отображаемое имя было изменено", +"Unable to change your display name" => "Невозможно изменить Ваше отображаемое имя", +"Change display name" => "Изменить отображаемое имя", "Email" => "e-mail", "Your email address" => "Ваш адрес электронной почты", "Fill in an email address to enable password recovery" => "Введите адрес электронной почты, чтобы появилась возможность восстановления пароля", diff --git a/settings/l10n/ru_RU.php b/settings/l10n/ru_RU.php index 7dde545e2e..a8d87d7291 100644 --- a/settings/l10n/ru_RU.php +++ b/settings/l10n/ru_RU.php @@ -31,16 +31,12 @@ "Bugtracker" => "Отслеживание ошибок", "Commercial Support" => "Коммерческая поддержка", "You have used %s of the available %s" => "Вы использовали %s из возможных %s", -"Clients" => "Клиенты", -"Download Desktop Clients" => "Загрузка десктопных клиентов", -"Download Android Client" => "Загрузить клиент под Android ", -"Download iOS Client" => "Загрузить клиент под iOS ", +"Show First Run Wizard again" => "Вновь показать помощника первоначальной настройки", "Password" => "Пароль", "Your password was changed" => "Ваш пароль был изменен", "Unable to change your password" => "Невозможно изменить Ваш пароль", "Current password" => "Текущий пароль", "New password" => "Новый пароль", -"show" => "показать", "Change password" => "Изменить пароль", "Email" => "Электронная почта", "Your email address" => "Адрес Вашей электронной почты", diff --git a/settings/l10n/si_LK.php b/settings/l10n/si_LK.php index b2613290f9..a188b13534 100644 --- a/settings/l10n/si_LK.php +++ b/settings/l10n/si_LK.php @@ -19,13 +19,11 @@ "More Apps" => "තවත් යෙදුම්", "Select an App" => "යෙදුමක් තොරන්න", "Update" => "යාවත්කාල කිරීම", -"Clients" => "සේවාලාභීන්", "Password" => "මුරපදය", "Your password was changed" => "ඔබගේ මුර පදය වෙනස් කෙරුණි", "Unable to change your password" => "මුර පදය වෙනස් කළ නොහැකි විය", "Current password" => "වත්මන් මුරපදය", "New password" => "නව මුරපදය", -"show" => "ප්‍රදර්ශනය කිරීම", "Change password" => "මුරපදය වෙනස් කිරීම", "Email" => "විද්‍යුත් තැපෑල", "Your email address" => "ඔබගේ විද්‍යුත් තැපෑල", diff --git a/settings/l10n/sk_SK.php b/settings/l10n/sk_SK.php index 162e4d3d01..07fe6aa4ea 100644 --- a/settings/l10n/sk_SK.php +++ b/settings/l10n/sk_SK.php @@ -1,6 +1,7 @@ "Nie je možné nahrať zoznam z App Store", "Authentication error" => "Chyba pri autentifikácii", +"Unable to change display name" => "Nemožno zmeniť zobrazované meno", "Group already exists" => "Skupina už existuje", "Unable to add group" => "Nie je možné pridať skupinu", "Could not enable app. " => "Nie je možné zapnúť aplikáciu.", @@ -11,7 +12,7 @@ "Language changed" => "Jazyk zmenený", "Invalid request" => "Neplatná požiadavka", "Admins can't remove themself from the admin group" => "Administrátori nesmú odstrániť sami seba zo skupiny admin", -"Unable to add user to group %s" => "Nie je možné pridať užívateľa do skupiny %s", +"Unable to add user to group %s" => "Nie je možné pridať používateľa do skupiny %s", "Unable to remove user from group %s" => "Nie je možné odstrániť používateľa zo skupiny %s", "Couldn't update app." => "Nemožno aktualizovať aplikáciu.", "Update to {appversion}" => "Aktualizovať na {appversion}", @@ -19,7 +20,7 @@ "Enable" => "Povoliť", "Please wait...." => "Čakajte prosím...", "Updating...." => "Aktualizujem...", -"Error while updating app" => "hyba pri aktualizácii aplikácie", +"Error while updating app" => "chyba pri aktualizácii aplikácie", "Error" => "Chyba", "Updated" => "Aktualizované", "Saving..." => "Ukladám...", @@ -31,24 +32,23 @@ "-licensed by " => "-licencované ", "Update" => "Aktualizovať", "User Documentation" => "Príručka používateľa", -"Administrator Documentation" => "Príručka správcu", +"Administrator Documentation" => "Príručka administrátora", "Online Documentation" => "Online príručka", "Forum" => "Fórum", "Bugtracker" => "Bugtracker", "Commercial Support" => "Komerčná podpora", "You have used %s of the available %s" => "Použili ste %s z %s dostupných ", -"Clients" => "Klienti", -"Download Desktop Clients" => "Stiahnuť desktopového klienta", -"Download Android Client" => "Stiahnuť Android klienta", -"Download iOS Client" => "Stiahnuť iOS klienta", +"Show First Run Wizard again" => "Znovu zobraziť sprievodcu prvým spustením", "Password" => "Heslo", "Your password was changed" => "Heslo bolo zmenené", "Unable to change your password" => "Nie je možné zmeniť vaše heslo", "Current password" => "Aktuálne heslo", "New password" => "Nové heslo", -"show" => "zobraziť", "Change password" => "Zmeniť heslo", "Display Name" => "Zobrazované meno", +"Your display name was changed" => "Vaše zobrazované meno bolo zmenené", +"Unable to change your display name" => "Nemožno zmeniť Vaše zobrazované meno", +"Change display name" => "Zmeniť zobrazované meno", "Email" => "Email", "Your email address" => "Vaša emailová adresa", "Fill in an email address to enable password recovery" => "Vyplňte emailovú adresu pre aktivovanie obnovy hesla", diff --git a/settings/l10n/sl.php b/settings/l10n/sl.php index 8f4fb9435e..b545f45522 100644 --- a/settings/l10n/sl.php +++ b/settings/l10n/sl.php @@ -31,16 +31,11 @@ "Bugtracker" => "Sistem za sledenje napakam", "Commercial Support" => "Komercialna podpora", "You have used %s of the available %s" => "Uporabljate %s od razpoložljivih %s", -"Clients" => "Stranka", -"Download Desktop Clients" => "Prenesi namizne odjemalce", -"Download Android Client" => "Prenesi Android odjemalec", -"Download iOS Client" => "Prenesi iOS odjemalec", "Password" => "Geslo", "Your password was changed" => "Vaše geslo je spremenjeno", "Unable to change your password" => "Gesla ni mogoče spremeniti.", "Current password" => "Trenutno geslo", "New password" => "Novo geslo", -"show" => "pokaži", "Change password" => "Spremeni geslo", "Email" => "Elektronska pošta", "Your email address" => "Vaš elektronski poštni naslov", diff --git a/settings/l10n/sr.php b/settings/l10n/sr.php index 1b12a0178d..14ad1cfaf0 100644 --- a/settings/l10n/sr.php +++ b/settings/l10n/sr.php @@ -25,13 +25,12 @@ "-licensed by " => "-лиценцирао ", "Update" => "Ажурирај", "You have used %s of the available %s" => "Искористили сте %s од дозвољених %s", -"Clients" => "Клијенти", +"Show First Run Wizard again" => "Поново прикажи чаробњак за прво покретање", "Password" => "Лозинка", "Your password was changed" => "Лозинка је промењена", "Unable to change your password" => "Не могу да изменим вашу лозинку", "Current password" => "Тренутна лозинка", "New password" => "Нова лозинка", -"show" => "прикажи", "Change password" => "Измени лозинку", "Email" => "Е-пошта", "Your email address" => "Ваша адреса е-поште", diff --git a/settings/l10n/sr@latin.php b/settings/l10n/sr@latin.php index 942594eb02..190e3e5609 100644 --- a/settings/l10n/sr@latin.php +++ b/settings/l10n/sr@latin.php @@ -3,12 +3,10 @@ "Language changed" => "Jezik je izmenjen", "Invalid request" => "Neispravan zahtev", "Select an App" => "Izaberite program", -"Clients" => "Klijenti", "Password" => "Lozinka", "Unable to change your password" => "Ne mogu da izmenim vašu lozinku", "Current password" => "Trenutna lozinka", "New password" => "Nova lozinka", -"show" => "prikaži", "Change password" => "Izmeni lozinku", "Email" => "E-mail", "Language" => "Jezik", diff --git a/settings/l10n/sv.php b/settings/l10n/sv.php index fb8c7854e9..2136e77901 100644 --- a/settings/l10n/sv.php +++ b/settings/l10n/sv.php @@ -1,6 +1,7 @@ "Kan inte ladda listan från App Store", "Authentication error" => "Autentiseringsfel", +"Unable to change display name" => "Kan inte ändra visningsnamn", "Group already exists" => "Gruppen finns redan", "Unable to add group" => "Kan inte lägga till grupp", "Could not enable app. " => "Kunde inte aktivera appen.", @@ -37,18 +38,17 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "Kommersiell support", "You have used %s of the available %s" => "Du har använt %s av tillgängliga %s", -"Clients" => "Kunder", -"Download Desktop Clients" => "Ladda ner skrivbordsklienter", -"Download Android Client" => "Ladda ner klient för Android", -"Download iOS Client" => "Ladda ner klient för iOS", +"Show First Run Wizard again" => "Visa Första uppstarts-guiden igen", "Password" => "Lösenord", "Your password was changed" => "Ditt lösenord har ändrats", "Unable to change your password" => "Kunde inte ändra ditt lösenord", "Current password" => "Nuvarande lösenord", "New password" => "Nytt lösenord", -"show" => "visa", "Change password" => "Ändra lösenord", "Display Name" => "Visat namn", +"Your display name was changed" => "Ditt visningsnamn har ändrats", +"Unable to change your display name" => "Kan inte ändra ditt visningsnamn", +"Change display name" => "Ändra visningsnamn", "Email" => "E-post", "Your email address" => "Din e-postadress", "Fill in an email address to enable password recovery" => "Fyll i en e-postadress för att aktivera återställning av lösenord", diff --git a/settings/l10n/ta_LK.php b/settings/l10n/ta_LK.php index 5e94df0dfb..8811b349aa 100644 --- a/settings/l10n/ta_LK.php +++ b/settings/l10n/ta_LK.php @@ -24,13 +24,11 @@ "-licensed by " => "-அனுமதி பெற்ற ", "Update" => "இற்றைப்படுத்தல்", "You have used %s of the available %s" => "நீங்கள் %s இலுள்ள %sபயன்படுத்தியுள்ளீர்கள்", -"Clients" => "வாடிக்கையாளர்கள்", "Password" => "கடவுச்சொல்", "Your password was changed" => "உங்களுடைய கடவுச்சொல் மாற்றப்பட்டுள்ளது", "Unable to change your password" => "உங்களுடைய கடவுச்சொல்லை மாற்றமுடியாது", "Current password" => "தற்போதைய கடவுச்சொல்", "New password" => "புதிய கடவுச்சொல்", -"show" => "காட்டு", "Change password" => "கடவுச்சொல்லை மாற்றுக", "Email" => "மின்னஞ்சல்", "Your email address" => "உங்களுடைய மின்னஞ்சல் முகவரி", diff --git a/settings/l10n/th_TH.php b/settings/l10n/th_TH.php index 309dbc2657..119d84ac18 100644 --- a/settings/l10n/th_TH.php +++ b/settings/l10n/th_TH.php @@ -37,16 +37,12 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "บริการลูกค้าแบบเสียค่าใช้จ่าย", "You have used %s of the available %s" => "คุณได้ใช้งานไปแล้ว %s จากจำนวนที่สามารถใช้ได้ %s", -"Clients" => "ลูกค้า", -"Download Desktop Clients" => "ดาวน์โหลดโปรแกรมไคลเอนต์สำหรับเครื่องเดสก์ท็อป", -"Download Android Client" => "ดาวน์โหลดโปรแกรมไคลเอนต์สำหรับแอนดรอยด์", -"Download iOS Client" => "ดาวน์โหลดโปรแกรมไคลเอนต์สำหรับ iOS", +"Show First Run Wizard again" => "แสดงหน้าจอวิซาร์ดนำทางครั้งแรกอีกครั้ง", "Password" => "รหัสผ่าน", "Your password was changed" => "รหัสผ่านของคุณถูกเปลี่ยนแล้ว", "Unable to change your password" => "ไม่สามารถเปลี่ยนรหัสผ่านของคุณได้", "Current password" => "รหัสผ่านปัจจุบัน", "New password" => "รหัสผ่านใหม่", -"show" => "แสดง", "Change password" => "เปลี่ยนรหัสผ่าน", "Display Name" => "ชื่อที่ต้องการแสดง", "Email" => "อีเมล์", diff --git a/settings/l10n/tr.php b/settings/l10n/tr.php index db55491612..98a7d41f0a 100644 --- a/settings/l10n/tr.php +++ b/settings/l10n/tr.php @@ -27,16 +27,11 @@ "Forum" => "Forum", "Bugtracker" => "Hata Takip Sistemi", "Commercial Support" => "Ticari Destek", -"Clients" => "Müşteriler", -"Download Desktop Clients" => "Masaüstü İstemcilerini İndir", -"Download Android Client" => "Android İstemcisini İndir", -"Download iOS Client" => "iOS İstemcisini İndir", "Password" => "Parola", "Your password was changed" => "Şifreniz değiştirildi", "Unable to change your password" => "Parolanız değiştirilemiyor", "Current password" => "Mevcut parola", "New password" => "Yeni parola", -"show" => "göster", "Change password" => "Parola değiştir", "Email" => "Eposta", "Your email address" => "Eposta adresiniz", diff --git a/settings/l10n/uk.php b/settings/l10n/uk.php index 54e43b5137..4e8c0aefd0 100644 --- a/settings/l10n/uk.php +++ b/settings/l10n/uk.php @@ -1,6 +1,7 @@ "Не вдалося завантажити список з App Store", "Authentication error" => "Помилка автентифікації", +"Unable to change display name" => "Не вдалося змінити зображене ім'я", "Group already exists" => "Група вже існує", "Unable to add group" => "Не вдалося додати групу", "Could not enable app. " => "Не вдалося активувати програму. ", @@ -13,9 +14,15 @@ "Admins can't remove themself from the admin group" => "Адміністратор не може видалити себе з групи адмінів", "Unable to add user to group %s" => "Не вдалося додати користувача у групу %s", "Unable to remove user from group %s" => "Не вдалося видалити користувача із групи %s", +"Couldn't update app." => "Не вдалося оновити програму. ", +"Update to {appversion}" => "Оновити до {appversion}", "Disable" => "Вимкнути", "Enable" => "Включити", +"Please wait...." => "Зачекайте, будь ласка...", +"Updating...." => "Оновлюється...", +"Error while updating app" => "Помилка при оновленні програми", "Error" => "Помилка", +"Updated" => "Оновлено", "Saving..." => "Зберігаю...", "__language_name__" => "__language_name__", "Add your App" => "Додати свою програму", @@ -31,17 +38,16 @@ "Bugtracker" => "БагТрекер", "Commercial Support" => "Комерційна підтримка", "You have used %s of the available %s" => "Ви використали %s із доступних %s", -"Clients" => "Клієнти", -"Download Desktop Clients" => "Завантажити клієнт для ПК", -"Download Android Client" => "Завантажити клієнт для Android", -"Download iOS Client" => "Завантажити клієнт для iOS", "Password" => "Пароль", "Your password was changed" => "Ваш пароль змінено", "Unable to change your password" => "Не вдалося змінити Ваш пароль", "Current password" => "Поточний пароль", "New password" => "Новий пароль", -"show" => "показати", "Change password" => "Змінити пароль", +"Display Name" => "Показати Ім'я", +"Your display name was changed" => "Ваше ім'я було змінене", +"Unable to change your display name" => "Неможливо змінити ваше зображене ім'я", +"Change display name" => "Змінити зображене ім'я", "Email" => "Ел.пошта", "Your email address" => "Ваша адреса електронної пошти", "Fill in an email address to enable password recovery" => "Введіть адресу електронної пошти для відновлення паролю", @@ -51,6 +57,7 @@ "Use this address to connect to your ownCloud in your file manager" => "Використовуйте цю адресу для під'єднання до вашого ownCloud у вашому файловому менеджері", "Version" => "Версія", "Developed by the ownCloud community, the source code is licensed under the AGPL." => "Розроблено ownCloud громадою, вихідний код має ліцензію AGPL.", +"Login Name" => "Ім'я Логіну", "Groups" => "Групи", "Create" => "Створити", "Default Storage" => "сховище за замовчуванням", @@ -58,6 +65,8 @@ "Other" => "Інше", "Group Admin" => "Адміністратор групи", "Storage" => "Сховище", +"change display name" => "змінити зображене ім'я", +"set new password" => "встановити новий пароль", "Default" => "За замовчуванням", "Delete" => "Видалити" ); diff --git a/settings/l10n/vi.php b/settings/l10n/vi.php index a7682e7ed0..1b0bfe0746 100644 --- a/settings/l10n/vi.php +++ b/settings/l10n/vi.php @@ -1,6 +1,7 @@ "Không thể tải danh sách ứng dụng từ App Store", "Authentication error" => "Lỗi xác thực", +"Unable to change display name" => "Không thể thay đổi tên hiển thị", "Group already exists" => "Nhóm đã tồn tại", "Unable to add group" => "Không thể thêm nhóm", "Could not enable app. " => "không thể kích hoạt ứng dụng.", @@ -13,9 +14,15 @@ "Admins can't remove themself from the admin group" => "Quản trị viên không thể loại bỏ chính họ khỏi nhóm quản lý", "Unable to add user to group %s" => "Không thể thêm người dùng vào nhóm %s", "Unable to remove user from group %s" => "Không thể xóa người dùng từ nhóm %s", +"Couldn't update app." => "Không thể cập nhật ứng dụng", +"Update to {appversion}" => "Cập nhật lên {appversion}", "Disable" => "Tắt", "Enable" => "Bật", +"Please wait...." => "Xin hãy đợi...", +"Updating...." => "Đang cập nhật...", +"Error while updating app" => "Lỗi khi cập nhật ứng dụng", "Error" => "Lỗi", +"Updated" => "Đã cập nhật", "Saving..." => "Đang tiến hành lưu ...", "__language_name__" => "__Ngôn ngữ___", "Add your App" => "Thêm ứng dụng của bạn", @@ -24,24 +31,43 @@ "See application page at apps.owncloud.com" => "Xem nhiều ứng dụng hơn tại apps.owncloud.com", "-licensed by " => "-Giấy phép được cấp bởi ", "Update" => "Cập nhật", +"User Documentation" => "Tài liệu người sử dụng", +"Administrator Documentation" => "Tài liệu quản trị", +"Online Documentation" => "Tài liệu trực tuyến", +"Forum" => "Diễn đàn", +"Bugtracker" => "Hệ ghi nhận lỗi", +"Commercial Support" => "Hỗ trợ có phí", "You have used %s of the available %s" => "Bạn đã sử dụng %s có sẵn %s ", -"Clients" => "Khách hàng", +"Show First Run Wizard again" => "Hiện lại việc chạy đồ thuật khởi đầu", "Password" => "Mật khẩu", "Your password was changed" => "Mật khẩu của bạn đã được thay đổi.", "Unable to change your password" => "Không thể đổi mật khẩu", "Current password" => "Mật khẩu cũ", "New password" => "Mật khẩu mới ", -"show" => "Hiện", "Change password" => "Đổi mật khẩu", +"Display Name" => "Tên hiển thị", +"Your display name was changed" => "Tên hiển thị của bạn đã được thay đổi", +"Unable to change your display name" => "Không thể thay đổi tên hiển thị của bạn", +"Change display name" => "Thay đổi tên hiển thị", "Email" => "Email", "Your email address" => "Email của bạn", "Fill in an email address to enable password recovery" => "Nhập địa chỉ email của bạn để khôi phục lại mật khẩu", "Language" => "Ngôn ngữ", "Help translate" => "Hỗ trợ dịch thuật", +"WebDAV" => "WebDAV", +"Use this address to connect to your ownCloud in your file manager" => "Sử dụng địa chỉ này để kết nối ownCloud của bạn trong trình quản lý file của bạn", +"Version" => "Phiên bản", "Developed by the ownCloud community, the source code is licensed under the AGPL." => "Được phát triển bởi cộng đồng ownCloud, mã nguồn đã được cấp phép theo chuẩn AGPL.", +"Login Name" => "Tên đăng nhập", "Groups" => "Nhóm", "Create" => "Tạo", +"Default Storage" => "Bộ nhớ mặc định", +"Unlimited" => "Không giới hạn", "Other" => "Khác", "Group Admin" => "Nhóm quản trị", +"Storage" => "Bộ nhớ", +"change display name" => "Thay đổi tên hiển thị", +"set new password" => "đặt mật khẩu mới", +"Default" => "Mặc định", "Delete" => "Xóa" ); diff --git a/settings/l10n/zh_CN.GB2312.php b/settings/l10n/zh_CN.GB2312.php index c7d73ae2de..b54a2df555 100644 --- a/settings/l10n/zh_CN.GB2312.php +++ b/settings/l10n/zh_CN.GB2312.php @@ -23,13 +23,11 @@ "See application page at apps.owncloud.com" => "在owncloud.com上查看应用程序", "-licensed by " => "授权协议 ", "Update" => "更新", -"Clients" => "客户", "Password" => "密码", "Your password was changed" => "您的密码以变更", "Unable to change your password" => "不能改变你的密码", "Current password" => "现在的密码", "New password" => "新密码", -"show" => "展示", "Change password" => "改变密码", "Email" => "Email", "Your email address" => "你的email地址", diff --git a/settings/l10n/zh_CN.php b/settings/l10n/zh_CN.php index 40c571a876..ec2a6b28c9 100644 --- a/settings/l10n/zh_CN.php +++ b/settings/l10n/zh_CN.php @@ -31,16 +31,11 @@ "Bugtracker" => "问题跟踪器", "Commercial Support" => "商业支持", "You have used %s of the available %s" => "你已使用 %s,有效空间 %s", -"Clients" => "客户", -"Download Desktop Clients" => "下载桌面客户端", -"Download Android Client" => "下载 Android 客户端", -"Download iOS Client" => "下载 iOS 客户端", "Password" => "密码", "Your password was changed" => "密码已修改", "Unable to change your password" => "无法修改密码", "Current password" => "当前密码", "New password" => "新密码", -"show" => "显示", "Change password" => "修改密码", "Email" => "电子邮件", "Your email address" => "您的电子邮件", diff --git a/settings/l10n/zh_TW.php b/settings/l10n/zh_TW.php index ecff21604f..6b3dd344f0 100644 --- a/settings/l10n/zh_TW.php +++ b/settings/l10n/zh_TW.php @@ -1,6 +1,7 @@ "無法從 App Store 讀取清單", "Authentication error" => "認證錯誤", +"Unable to change display name" => "無法更改顯示名稱", "Group already exists" => "群組已存在", "Unable to add group" => "群組增加失敗", "Could not enable app. " => "未能啟動此app", @@ -37,18 +38,17 @@ "Bugtracker" => "Bugtracker", "Commercial Support" => "商用支援", "You have used %s of the available %s" => "您已經使用了 %s ,目前可用空間為 %s", -"Clients" => "客戶", -"Download Desktop Clients" => "下載桌面客戶端", -"Download Android Client" => "下載 Android 客戶端", -"Download iOS Client" => "下載 iOS 客戶端", +"Show First Run Wizard again" => "再次顯示首次使用精靈", "Password" => "密碼", "Your password was changed" => "你的密碼已更改", "Unable to change your password" => "無法變更你的密碼", "Current password" => "目前密碼", "New password" => "新密碼", -"show" => "顯示", "Change password" => "變更密碼", "Display Name" => "顯示名稱", +"Your display name was changed" => "已更改顯示名稱", +"Unable to change your display name" => "無法更改您的顯示名稱", +"Change display name" => "更改顯示名稱", "Email" => "電子郵件", "Your email address" => "你的電子郵件信箱", "Fill in an email address to enable password recovery" => "請填入電子郵件信箱以便回復密碼", diff --git a/settings/templates/admin.php b/settings/templates/admin.php index 9a9a691dcb..17be339693 100644 --- a/settings/templates/admin.php +++ b/settings/templates/admin.php @@ -22,6 +22,21 @@ if (!$_['htaccessworking']) { +
+ t('Setup Warning');?> + + + t('Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.'); ?> + t('Please double check the installation guides.', 'http://doc.owncloud.org/server/5.0/admin_manual/installation.html'); ?> + + +
+ @@ -36,13 +51,14 @@ if (!$_['has_fileinfo']) {
t('Locale not working');?> - t('This ownCloud server can\'t set system locale to "en_US.UTF-8". This means that there might be problems with certain characters in file names. We strongly suggest to install the required packages on your system to support en_US.UTF-8.'); ?> + t('This ownCloud server can\'t set system locale to "en_US.UTF-8"/"en_US.UTF8". This means that there might be problems with certain characters in file names. We strongly suggest to install the required packages on your system to support en_US.UTF-8/en_US.UTF8.'); ?>
diff --git a/settings/templates/help.php b/settings/templates/help.php index 7383fdcf56..315cbfdb9a 100644 --- a/settings/templates/help.php +++ b/settings/templates/help.php @@ -10,5 +10,6 @@ t( 'Commercial Support' ); ?> -

- \ No newline at end of file +
+ +
diff --git a/settings/templates/personal.php b/settings/templates/personal.php index 398e65c008..6b3e8acbf0 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -8,12 +8,25 @@

t('You have used %s of the available %s', array($_['usage'], $_['total_space']));?>

-
- t('Clients');?> - t('Download Desktop Clients');?> - t('Download Android Client');?> - t('Download iOS Client');?> -
+ + +
+

t('Get the apps to sync your files');?>

+ + + + + + + + + + +
t('Show First Run Wizard again');?>
+ +
+ + t('Your password was changed');?>
t('Unable to change your password');?>
- - + + diff --git a/tests/lib/files/cache/updater.php b/tests/lib/files/cache/updater.php index b83dd0c26e..7a79f45a20 100644 --- a/tests/lib/files/cache/updater.php +++ b/tests/lib/files/cache/updater.php @@ -45,7 +45,7 @@ class Updater extends \PHPUnit_Framework_TestCase { if (!self::$user) { if (!\OC\Files\Filesystem::getView()) { self::$user = uniqid(); - \OC\Files\Filesystem::init('/' . self::$user . '/files'); + \OC\Files\Filesystem::init(self::$user, '/' . self::$user . '/files'); } else { self::$user = \OC_User::getUser(); } diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php index fd116af2d2..6ce45e6178 100644 --- a/tests/lib/files/filesystem.php +++ b/tests/lib/files/filesystem.php @@ -82,7 +82,7 @@ class Filesystem extends \PHPUnit_Framework_TestCase { $user = \OC_User::getUser(); }else{ $user=uniqid(); - \OC\Files\Filesystem::init('/'.$user.'/files'); + \OC\Files\Filesystem::init($user, '/'.$user.'/files'); } \OC_Hook::clear('OC_Filesystem'); \OC_Hook::connect('OC_Filesystem', 'post_write', $this, 'dummyHook'); diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php index 781c0f92c9..c74a16f509 100644 --- a/tests/lib/files/storage/storage.php +++ b/tests/lib/files/storage/storage.php @@ -146,10 +146,19 @@ abstract class Storage extends \PHPUnit_Framework_TestCase { $localFolder = $this->instance->getLocalFolder('/folder'); $this->assertTrue(is_dir($localFolder)); - $this->assertTrue(file_exists($localFolder . '/lorem.txt')); - $this->assertEquals(file_get_contents($localFolder . '/lorem.txt'), file_get_contents($textFile)); - $this->assertEquals(file_get_contents($localFolder . '/bar.txt'), 'asd'); - $this->assertEquals(file_get_contents($localFolder . '/recursive/file.txt'), 'foo'); + + // test below require to use instance->getLocalFile because the physical storage might be different + $localFile = $this->instance->getLocalFile('/folder/lorem.txt'); + $this->assertTrue(file_exists($localFile)); + $this->assertEquals(file_get_contents($localFile), file_get_contents($textFile)); + + $localFile = $this->instance->getLocalFile('/folder/bar.txt'); + $this->assertTrue(file_exists($localFile)); + $this->assertEquals(file_get_contents($localFile), 'asd'); + + $localFile = $this->instance->getLocalFile('/folder/recursive/file.txt'); + $this->assertTrue(file_exists($localFile)); + $this->assertEquals(file_get_contents($localFile), 'foo'); } public function testStat() {